Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
/ corefx Public archive

Commit

Permalink
Use product version in RuntimeInformation.FrameworkDescription (#35516)
Browse files Browse the repository at this point in the history
* Use product version in RuntimeInformation.FrameworkDescription

* Include FrameworkDescription in the Assert

* Strip the git hash in the fallback
  • Loading branch information
jkotas authored Feb 23, 2019
1 parent ee66a51 commit db95b37
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,20 @@ public static string FrameworkDescription
{
if (s_frameworkDescription == null)
{
AssemblyFileVersionAttribute attr = (AssemblyFileVersionAttribute)(typeof(object).GetTypeInfo().Assembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute)));
Debug.Assert(attr != null);
s_frameworkDescription = $"{FrameworkName} {attr.Version}";
string versionString = (string)AppContext.GetData("FX_PRODUCT_VERSION");

if (versionString == null)
{
// Use AssemblyInformationalVersionAttribute as fallback if the exact product version is not specified by the host
versionString = typeof(object).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;

// Strip the git hash if there is one
int plusIndex = versionString.IndexOf('+');
if (plusIndex != -1)
versionString = versionString.Substring(0, plusIndex);
}

s_frameworkDescription = $"{FrameworkName} {versionString}";
}

return s_frameworkDescription;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,31 +44,17 @@ public void DumpRuntimeInformationToConsole()

[Fact]
[SkipOnTargetFramework(~TargetFrameworkMonikers.Netcoreapp)]
public void VerifyRuntimeDebugNameOnNetCoreApp()
public void VerifyRuntimeNameOnNetCoreApp()
{
AssemblyFileVersionAttribute attr = (AssemblyFileVersionAttribute)(typeof(object).GetTypeInfo().Assembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute)));
string expected = string.Format(".NET Core {0}", attr.Version);
Assert.Equal(expected, RuntimeInformation.FrameworkDescription);
Assert.True(RuntimeInformation.FrameworkDescription.StartsWith(".NET Core"), RuntimeInformation.FrameworkDescription);
Assert.Same(RuntimeInformation.FrameworkDescription, RuntimeInformation.FrameworkDescription);
}

[Fact]
[SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
public void VerifyRuntimeDebugNameOnNetFramework()
[SkipOnTargetFramework(~TargetFrameworkMonikers.UapAot)]
public void VerifyRuntimeNameOnNetNative()
{
AssemblyFileVersionAttribute attr = (AssemblyFileVersionAttribute)(typeof(object).GetTypeInfo().Assembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute)));
string expected = string.Format(".NET Framework {0}", attr.Version);
Assert.Equal(expected, RuntimeInformation.FrameworkDescription);
Assert.Same(RuntimeInformation.FrameworkDescription, RuntimeInformation.FrameworkDescription);
}

[Fact]
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework | TargetFrameworkMonikers.Netcoreapp)]
public void VerifyRuntimeDebugNameOnNetCoreUwp()
{
AssemblyFileVersionAttribute attr = (AssemblyFileVersionAttribute)(typeof(object).GetTypeInfo().Assembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute)));
string expected = string.Format(PlatformDetection.IsNetNative ? ".NET Native {0}" : ".NET Core {0}", attr.Version);
Assert.Equal(expected, RuntimeInformation.FrameworkDescription);
Assert.True(RuntimeInformation.FrameworkDescription.StartsWith(".NET Native"), RuntimeInformation.FrameworkDescription);
Assert.Same(RuntimeInformation.FrameworkDescription, RuntimeInformation.FrameworkDescription);
}

Expand All @@ -87,32 +73,32 @@ public void VerifyWindowsDescriptionDoesNotContainTrailingWhitespace()
Assert.False(RuntimeInformation.OSDescription.EndsWith(" "));
}

[Fact, PlatformSpecific(TestPlatforms.Windows)] // Checks Windows debug name in RuntimeInformation
public void VerifyWindowsDebugName()
[Fact, PlatformSpecific(TestPlatforms.Windows)] // Checks Windows name in RuntimeInformation
public void VerifyWindowsName()
{
Assert.Contains("windows", RuntimeInformation.OSDescription, StringComparison.OrdinalIgnoreCase);
}

[Fact, PlatformSpecific(TestPlatforms.Linux)] // Checks Linux debug name in RuntimeInformation
public void VerifyLinuxDebugName()
[Fact, PlatformSpecific(TestPlatforms.Linux)] // Checks Linux name in RuntimeInformation
public void VerifyLinuxName()
{
Assert.Contains("linux", RuntimeInformation.OSDescription, StringComparison.OrdinalIgnoreCase);
}

[Fact, PlatformSpecific(TestPlatforms.NetBSD)] // Checks NetBSD debug name in RuntimeInformation
public void VerifyNetBSDDebugName()
[Fact, PlatformSpecific(TestPlatforms.NetBSD)] // Checks NetBSD name in RuntimeInformation
public void VerifyNetBSDName()
{
Assert.Contains("netbsd", RuntimeInformation.OSDescription, StringComparison.OrdinalIgnoreCase);
}

[Fact, PlatformSpecific(TestPlatforms.FreeBSD)] // Checks FreeBSD debug name in RuntimeInformation
public void VerifyFreeBSDDebugName()
[Fact, PlatformSpecific(TestPlatforms.FreeBSD)] // Checks FreeBSD name in RuntimeInformation
public void VerifyFreeBSDName()
{
Assert.Contains("FreeBSD", RuntimeInformation.OSDescription, StringComparison.OrdinalIgnoreCase);
}

[Fact, PlatformSpecific(TestPlatforms.OSX)] // Checks OSX debug name in RuntimeInformation
public void VerifyOSXDebugName()
[Fact, PlatformSpecific(TestPlatforms.OSX)] // Checks OSX name in RuntimeInformation
public void VerifyOSXName()
{
Assert.Contains("darwin", RuntimeInformation.OSDescription, StringComparison.OrdinalIgnoreCase);
}
Expand Down

0 comments on commit db95b37

Please sign in to comment.