public void BuildAssetsUtils_GenerateProjectRelativeAssetsFilePathInOtherDir() { using (var workingDir = TestDirectory.Create()) { // Arrange var filePath = Path.Combine(workingDir, "obj", "test.props"); var assetsPath = Path.Combine(workingDir, "nuget", "project.assets.json"); var doc = BuildAssetsUtils.GenerateEmptyImportsFile(); var file = new MSBuildOutputFile(filePath, doc); // Act BuildAssetsUtils.AddNuGetPropertiesToFirstImport( new[] { file }, Enumerable.Empty <string>(), string.Empty, ProjectStyle.PackageReference, assetsPath, success: true); var props = TargetsUtility.GetMSBuildProperties(doc); Assert.Equal("$(MSBuildThisFileDirectory)project.assets.json".Replace('/', Path.DirectorySeparatorChar), props["ProjectAssetsFile"]); } }
public void AddNuGetProperty_WithPackageFolders_AddsSourceRootItem() { // Arrange var separator = Path.DirectorySeparatorChar; var packageFolders = $"{separator}tmp{separator}gpf;{separator}tmp{separator}fallbackFolder"; var doc = BuildAssetsUtils.GenerateEmptyImportsFile(); // Act BuildAssetsUtils.AddNuGetProperties( doc, packageFolders: packageFolders.Split(';'), string.Empty, ProjectStyle.PackageReference, "/tmp/test/project.assets.json", success: true); var props = TargetsUtility.GetMSBuildProperties(doc); var items = TargetsUtility.GetMSBuildItems(doc); var sourceRootItems = items.Where(e => e.Item1.Equals("SourceRoot")).Select(e => e.Item2).ToList(); // Assert Assert.Equal(packageFolders, props["NuGetPackageFolders"]); Assert.Equal(2, items.Count); Assert.Equal(2, sourceRootItems.Count); Assert.Equal($"{separator}tmp{separator}gpf{separator}", sourceRootItems[0]["Include"]); Assert.Equal($"{separator}tmp{separator}fallbackFolder{separator}", sourceRootItems[1]["Include"]); }
public void BuildAssetsUtils_GenerateMSBuildAllProjectsProperty() { // Arrange & Act var doc = BuildAssetsUtils.GenerateEmptyImportsFile(); var props = TargetsUtility.GetMSBuildProperties(doc); // Assert Assert.Equal("$(MSBuildAllProjects);$(MSBuildThisFileFullPath)", props["MSBuildAllProjects"]); }
public void BuildAssetsUtils_GenerateProjectAssetsFilePath() { // Arrange var path = "/tmp/test/project.assets.json"; var doc = BuildAssetsUtils.GenerateEmptyImportsFile(); // Act BuildAssetsUtils.AddNuGetProperties( doc, Enumerable.Empty <string>(), string.Empty, ProjectStyle.PackageReference, path, success: true); var props = TargetsUtility.GetMSBuildProperties(doc); // Assert Assert.Equal(path, props["ProjectAssetsFile"]); }
public void AddNuGetProperty_WithPackageFolders_AddsSourceRootItem() { // Arrange var packageFolders = @"/tmp/gpf;/tmp/fallbackFolder"; var doc = BuildAssetsUtils.GenerateEmptyImportsFile(); // Act BuildAssetsUtils.AddNuGetProperties( doc, packageFolders: packageFolders.Split(';'), string.Empty, ProjectStyle.PackageReference, "/tmp/test/project.assets.json", success: true); var props = TargetsUtility.GetMSBuildProperties(doc); var items = TargetsUtility.GetMSBuildItems(doc); // Assert Assert.Equal(packageFolders, props["NuGetPackageFolders"]); Assert.Equal(1, items.Count); Assert.Equal("$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))", items["SourceRoot"]["Include"]); }
public async Task RestoreRunner_BasicRestore_VerifyFailureWritesFiles() { // Arrange var sources = new List <PackageSource>(); var project1Json = @" { ""version"": ""1.0.0"", ""description"": """", ""authors"": [ ""author"" ], ""tags"": [ """" ], ""projectUrl"": """", ""licenseUrl"": """", ""frameworks"": { ""net45"": { ""dependencies"": { ""x"": ""1.0.0"" } } } }"; using (var workingDir = TestDirectory.Create()) { var packagesDir = new DirectoryInfo(Path.Combine(workingDir, "globalPackages")); var packageSource = new DirectoryInfo(Path.Combine(workingDir, "packageSource")); var project1 = new DirectoryInfo(Path.Combine(workingDir, "projects", "project1")); packagesDir.Create(); packageSource.Create(); project1.Create(); sources.Add(new PackageSource(packageSource.FullName)); File.WriteAllText(Path.Combine(project1.FullName, "project.json"), project1Json); var specPath1 = Path.Combine(project1.FullName, "project.json"); var spec1 = JsonPackageSpecReader.GetPackageSpec(project1Json, "project1", specPath1); var logger = new TestLogger(); var lockPath = Path.Combine(project1.FullName, "project.lock.json"); var sourceRepos = sources.Select(source => Repository.Factory.GetCoreV3(source.Source)).ToList(); var packageX = new SimpleTestPackageContext() { Id = "x", Version = "1.0.0" }; packageX.AddFile("build/net45/x.targets"); var packageY = new SimpleTestPackageContext("y"); packageX.Dependencies.Add(packageY); var yPath = SimpleTestPackageUtility.CreateFullPackage(packageSource.FullName, packageY); SimpleTestPackageUtility.CreateFullPackage(packageSource.FullName, packageX); // y does not exist yPath.Delete(); var providerCache = new RestoreCommandProvidersCache(); using (var cacheContext = new SourceCacheContext()) { var restoreContext = new RestoreArgs() { CacheContext = cacheContext, DisableParallel = true, GlobalPackagesFolder = packagesDir.FullName, Sources = new List <string>() { packageSource.FullName }, Inputs = new List <string>() { specPath1 }, Log = logger, CachingSourceProvider = new CachingSourceProvider(new TestPackageSourceProvider(sources)), RequestProviders = new List <IRestoreRequestProvider>() { new ProjectJsonRestoreRequestProvider(providerCache) } }; var targetsPath = Path.Combine(project1.FullName, "project1.nuget.targets"); var propsPath = Path.Combine(project1.FullName, "project1.nuget.props"); // Act var summaries = await RestoreRunner.Run(restoreContext); var summary = summaries.Single(); var targets = TargetsUtility.GetMSBuildPackageImports(targetsPath); // Assert Assert.False(summary.Success); Assert.True(File.Exists(lockPath), lockPath); Assert.True(File.Exists(targetsPath)); Assert.False(File.Exists(propsPath)); Assert.Equal(1, targets.Count); } } }