예제 #1
0
        public void SharedFrameworkAssembliesHaveExpectedAssemblyVersions()
        {
            // Only test managed assemblies from dotnet/aspnetcore.
            var repoAssemblies = TestData.GetSharedFrameworkBinariesFromRepo()
                                 .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                 .ToHashSet();

            var versionStringWithoutPrereleaseTag = TestData.GetMicrosoftNETCoreAppPackageVersion().Split('-', 2)[0];
            var version = Version.Parse(versionStringWithoutPrereleaseTag);
            var dlls    = Directory.GetFiles(_sharedFxRoot, "*.dll", SearchOption.AllDirectories);

            Assert.NotEmpty(dlls);

            Assert.All(dlls, path =>
            {
                // Unlike dotnet/aspnetcore, dotnet/runtime varies the assembly version while in servicing.
                if (!repoAssemblies.Contains(Path.GetFileNameWithoutExtension(path)))
                {
                    return;
                }

                using var fileStream   = File.OpenRead(path);
                using var peReader     = new PEReader(fileStream, PEStreamOptions.Default);
                var reader             = peReader.GetMetadataReader(MetadataReaderOptions.Default);
                var assemblyDefinition = reader.GetAssemblyDefinition();

                // Assembly versions should all match Major.Minor.0.0
                Assert.Equal(version.Major, assemblyDefinition.Version.Major);
                Assert.Equal(version.Minor, assemblyDefinition.Version.Minor);
                Assert.Equal(0, assemblyDefinition.Version.Build);
                Assert.Equal(0, assemblyDefinition.Version.Revision);
            });
        }
예제 #2
0
        public void ItContainsValidRuntimeConfigFile()
        {
            var runtimeConfigFilePath = Path.Combine(_sharedFxRoot, "Microsoft.AspNetCore.App.runtimeconfig.json");

            AssertEx.FileExists(runtimeConfigFilePath);
            AssertEx.FileDoesNotExists(Path.Combine(_sharedFxRoot, "Microsoft.AspNetCore.App.runtimeconfig.dev.json"));

            var runtimeConfig = JObject.Parse(File.ReadAllText(runtimeConfigFilePath));

            Assert.Equal("Microsoft.NETCore.App", (string)runtimeConfig["runtimeOptions"]["framework"]["name"]);
            Assert.Equal(_expectedTfm, (string)runtimeConfig["runtimeOptions"]["tfm"]);

            Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), (string)runtimeConfig["runtimeOptions"]["framework"]["version"]);
        }
예제 #3
0
        public void ItContainsValidRuntimeConfigFile()
        {
            var runtimeConfigFilePath = Path.Combine(GetMetadataOutput(), "Microsoft.AspNetCore.App.runtimeconfig.json");

            AssertEx.FileExists(runtimeConfigFilePath);
            AssertEx.FileDoesNotExists(Path.Combine(GetMetadataOutput(), "Microsoft.AspNetCore.App.runtimeconfig.dev.json"));

            var runtimeConfig = JObject.Parse(File.ReadAllText(runtimeConfigFilePath));

            Assert.Equal("Microsoft.NETCore.App", (string)runtimeConfig["runtimeOptions"]["framework"]["name"]);
            Assert.Equal("netcoreapp" + TestData.GetPackageVersion().Substring(0, 3), (string)runtimeConfig["runtimeOptions"]["tfm"]);

            Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), (string)runtimeConfig["runtimeOptions"]["framework"]["version"]);
        }
예제 #4
0
        public void PackageOverridesContainsCorrectEntries()
        {
            if (!_isTargetingPackBuilding)
            {
                return;
            }

            var packageOverridePath = Path.Combine(_targetingPackRoot, "data", "PackageOverrides.txt");

            AssertEx.FileExists(packageOverridePath);

            var packageOverrideFileLines = File.ReadAllLines(packageOverridePath);
            var runtimeDependencies      = TestData.GetRuntimeTargetingPackDependencies()
                                           .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                           .ToHashSet();
            var aspnetcoreDependencies = TestData.GetAspNetCoreTargetingPackDependencies()
                                         .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                         .ToHashSet();

            Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count);

            foreach (var entry in packageOverrideFileLines)
            {
                var packageOverrideParts = entry.Split("|");
                var packageName          = packageOverrideParts[0];
                var packageVersion       = packageOverrideParts[1];

                if (runtimeDependencies.Contains(packageName))
                {
                    Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), packageVersion);
                }
                else if (aspnetcoreDependencies.Contains(packageName))
                {
                    Assert.Equal(TestData.GetReferencePackSharedFxVersion(), packageVersion);
                }
                else
                {
                    Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
                }
            }
        }
예제 #5
0
 public static TheoryData <SharedFxConfig> GetSharedFxConfig()
 => new TheoryData <SharedFxConfig>
 {
     new SharedFxConfig
     {
         Name    = "Microsoft.AspNetCore.All",
         Version = TestData.GetPackageVersion(),
         // Intentionally assert aspnetcore frameworks align versions with each other and netcore
         BaseSharedFxVersion = TestData.GetPackageVersion(),
         BaseSharedFxName    = "Microsoft.AspNetCore.App",
         RuntimeIdentifier   = TestData.GetSharedFxRuntimeIdentifier(),
     },
     new SharedFxConfig
     {
         Name                = "Microsoft.AspNetCore.App",
         Version             = TestData.GetPackageVersion(),
         BaseSharedFxName    = "Microsoft.NETCore.App",
         BaseSharedFxVersion = TestData.GetMicrosoftNETCoreAppPackageVersion(),
         RuntimeIdentifier   = TestData.GetSharedFxRuntimeIdentifier(),
     },
 };
예제 #6
0
        public void PackageOverridesContainsCorrectEntries()
        {
            if (!_isTargetingPackBuilding)
            {
                return;
            }

            var packageOverridePath = Path.Combine(_targetingPackRoot, "data", "PackageOverrides.txt");

            AssertEx.FileExists(packageOverridePath);

            var packageOverrideFileLines = File.ReadAllLines(packageOverridePath);
            var runtimeDependencies      = TestData.GetRuntimeTargetingPackDependencies()
                                           .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                           .ToHashSet();
            var aspnetcoreDependencies = TestData.GetAspNetCoreTargetingPackDependencies()
                                         .Split(';', StringSplitOptions.RemoveEmptyEntries)
                                         .ToHashSet();

            Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count);

            // PackageOverrides versions should remain at Major.Minor.0 while servicing.
            var netCoreAppPackageVersion = TestData.GetMicrosoftNETCoreAppPackageVersion();

            Assert.True(
                NuGetVersion.TryParse(netCoreAppPackageVersion, out var parsedVersion),
                "MicrosoftNETCoreAppPackageVersion must be convertable to a NuGetVersion.");
            if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease)
            {
                netCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0";
            }

            var aspNetCoreAppPackageVersion = TestData.GetReferencePackSharedFxVersion();

            Assert.True(
                NuGetVersion.TryParse(aspNetCoreAppPackageVersion, out parsedVersion),
                "ReferencePackSharedFxVersion must be convertable to a NuGetVersion.");
            if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease)
            {
                aspNetCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0";
            }

            Assert.All(packageOverrideFileLines, entry =>
            {
                var packageOverrideParts = entry.Split("|");
                Assert.Equal(2, packageOverrideParts.Length);

                var packageName    = packageOverrideParts[0];
                var packageVersion = packageOverrideParts[1];

                if (runtimeDependencies.Contains(packageName))
                {
                    Assert.Equal(netCoreAppPackageVersion, packageVersion);
                }
                else if (aspnetcoreDependencies.Contains(packageName))
                {
                    Assert.Equal(aspNetCoreAppPackageVersion, packageVersion);
                }
                else
                {
                    Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
                }
            });
        }