Merge pull request #4224 from brthor/brthor/remove-nuget
Migration: Remove dependency on lock file and dotnet restore
This commit is contained in:
commit
a04194c0f7
30 changed files with 586 additions and 134 deletions
|
@ -19,7 +19,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
public void It_copies_ProjectDirectory_contents_to_OutputDirectory_when_the_directories_are_different()
|
||||
{
|
||||
var testProjectDirectory = TestAssetsManager.CreateTestInstance("TestAppSimple", callingMethod: "z")
|
||||
.WithLockFiles().Path;
|
||||
.Path;
|
||||
var outputDirectory = Temp.CreateDirectory().Path;
|
||||
|
||||
var projectDirectoryRelativeFilePaths = EnumerateFilesWithRelativePath(testProjectDirectory);
|
||||
|
@ -41,7 +41,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
{
|
||||
var testProjectDirectory =
|
||||
TestAssetsManager.CreateTestInstance("TestLibraryWithDeprecatedProjectFile", callingMethod: "z")
|
||||
.WithLockFiles().Path;
|
||||
.Path;
|
||||
|
||||
var mockProj = ProjectRootElement.Create();
|
||||
var testSettings = new MigrationSettings(testProjectDirectory, testProjectDirectory, "1.0.0", mockProj);
|
||||
|
@ -60,7 +60,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
{
|
||||
var testProjectDirectory =
|
||||
TestAssetsManager.CreateTestInstance("FSharpTestProjects/TestApp", callingMethod: "z")
|
||||
.WithLockFiles().Path;
|
||||
.Path;
|
||||
|
||||
var mockProj = ProjectRootElement.Create();
|
||||
var testSettings = new MigrationSettings(testProjectDirectory, testProjectDirectory, "1.0.0", mockProj);
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
public void If_a_project_dependency_is_present_DesignTimeAutoUnify_and_AutoUnify_are_present()
|
||||
{
|
||||
var solutionDirectory =
|
||||
TestAssetsManager.CreateTestInstance("TestAppWithLibrary", callingMethod: "p").WithLockFiles().Path;
|
||||
TestAssetsManager.CreateTestInstance("TestAppWithLibrary", callingMethod: "p").Path;
|
||||
|
||||
var appDirectory = Path.Combine(solutionDirectory, "TestApp");
|
||||
var libDirectory = Path.Combine(solutionDirectory, "TestLibrary");
|
||||
|
@ -47,13 +47,13 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
public void Project_dependencies_are_migrated_to_ProjectReference()
|
||||
{
|
||||
var solutionDirectory =
|
||||
TestAssetsManager.CreateTestInstance("TestAppWithLibrary", callingMethod: "p").WithLockFiles().Path;
|
||||
TestAssetsManager.CreateTestInstance("TestAppWithLibrary", callingMethod: "p").Path;
|
||||
|
||||
var appDirectory = Path.Combine(solutionDirectory, "TestApp");
|
||||
|
||||
var projectContext = ProjectContext.Create(appDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
||||
var mockProj = ProjectRootElement.Create();
|
||||
var testSettings = new MigrationSettings(appDirectory, appDirectory, "1.0.0", mockProj);
|
||||
var testSettings = new MigrationSettings(appDirectory, appDirectory, "1.0.0", mockProj, null);
|
||||
var testInputs = new MigrationRuleInputs(new[] {projectContext}, mockProj, mockProj.AddItemGroup(),
|
||||
mockProj.AddPropertyGroup());
|
||||
new MigrateProjectDependenciesRule().Apply(testSettings, testInputs);
|
||||
|
@ -72,6 +72,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
TestAssetsManager.CreateTestInstance("TestAppWithLibrary").Path;
|
||||
|
||||
var appDirectory = Path.Combine(solutionDirectory, "TestApp");
|
||||
var libraryDirectory = Path.Combine(solutionDirectory, "TestLibrary");
|
||||
Directory.Delete(libraryDirectory, true);
|
||||
|
||||
var projectContext = ProjectContext.Create(appDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
||||
var mockProj = ProjectRootElement.Create();
|
||||
|
@ -82,5 +84,139 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
action.ShouldThrow<Exception>()
|
||||
.Where(e => e.Message.Contains("MIGRATE1014::Unresolved Dependency: Unresolved project dependency (TestLibrary)"));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(@"some/path/to.cSproj", new [] { @"some/path/to.cSproj" })]
|
||||
[InlineData(@"to.CSPROJ",new [] { @"to.CSPROJ" })]
|
||||
public void It_migrates_csproj_ProjectReference_in_xproj(string projectReference, string[] expectedMigratedReferences)
|
||||
{
|
||||
var xproj = ProjectRootElement.Create();
|
||||
xproj.AddItem("ProjectReference", projectReference);
|
||||
|
||||
var projectReferenceName = Path.GetFileNameWithoutExtension(projectReference);
|
||||
|
||||
var projectJson = @"
|
||||
{
|
||||
""dependencies"": {" +
|
||||
$"\"{projectReferenceName}\"" + @": {
|
||||
""target"" : ""project""
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
var testDirectory = Temp.CreateDirectory().Path;
|
||||
var migratedProj = TemporaryProjectFileRuleRunner.RunRules(new IMigrationRule[]
|
||||
{
|
||||
new MigrateProjectDependenciesRule()
|
||||
}, projectJson, testDirectory, xproj);
|
||||
|
||||
var migratedProjectReferenceItems = migratedProj.Items.Where(i => i.ItemType == "ProjectReference");
|
||||
migratedProjectReferenceItems.Should().HaveCount(expectedMigratedReferences.Length);
|
||||
migratedProjectReferenceItems.Select(m => m.Include).Should().BeEquivalentTo(expectedMigratedReferences);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void It_migrates_csproj_ProjectReference_in_xproj_including_condition_on_ProjectReference()
|
||||
{
|
||||
var projectReference = "some/to.csproj";
|
||||
var xproj = ProjectRootElement.Create();
|
||||
var csprojReferenceItem = xproj.AddItem("ProjectReference", projectReference);
|
||||
csprojReferenceItem.Condition = " '$(Foo)' == 'bar' ";
|
||||
|
||||
var projectReferenceName = Path.GetFileNameWithoutExtension(projectReference);
|
||||
|
||||
var projectJson = @"
|
||||
{
|
||||
""dependencies"": {" +
|
||||
$"\"{projectReferenceName}\"" + @": {
|
||||
""target"" : ""project""
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
var testDirectory = Temp.CreateDirectory().Path;
|
||||
var migratedProj = TemporaryProjectFileRuleRunner.RunRules(new IMigrationRule[]
|
||||
{
|
||||
new MigrateProjectDependenciesRule()
|
||||
}, projectJson, testDirectory, xproj);
|
||||
|
||||
var migratedProjectReferenceItems = migratedProj.Items.Where(i => i.ItemType == "ProjectReference");
|
||||
migratedProjectReferenceItems.Should().HaveCount(1);
|
||||
|
||||
var migratedProjectReferenceItem = migratedProjectReferenceItems.First();
|
||||
migratedProjectReferenceItem.Include.Should().Be(projectReference);
|
||||
migratedProjectReferenceItem.Condition.Should().Be(" '$(Foo)' == 'bar' ");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void It_migrates_csproj_ProjectReference_in_xproj_including_condition_on_ProjectReference_parent()
|
||||
{
|
||||
var projectReference = "some/to.csproj";
|
||||
var xproj = ProjectRootElement.Create();
|
||||
var csprojReferenceItem = xproj.AddItem("ProjectReference", projectReference);
|
||||
csprojReferenceItem.Parent.Condition = " '$(Foo)' == 'bar' ";
|
||||
|
||||
var projectReferenceName = Path.GetFileNameWithoutExtension(projectReference);
|
||||
|
||||
var projectJson = @"
|
||||
{
|
||||
""dependencies"": {" +
|
||||
$"\"{projectReferenceName}\"" + @": {
|
||||
""target"" : ""project""
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
var testDirectory = Temp.CreateDirectory().Path;
|
||||
var migratedProj = TemporaryProjectFileRuleRunner.RunRules(new IMigrationRule[]
|
||||
{
|
||||
new MigrateProjectDependenciesRule()
|
||||
}, projectJson, testDirectory, xproj);
|
||||
|
||||
var migratedProjectReferenceItems = migratedProj.Items.Where(i => i.ItemType == "ProjectReference");
|
||||
migratedProjectReferenceItems.Should().HaveCount(1);
|
||||
|
||||
var migratedProjectReferenceItem = migratedProjectReferenceItems.First();
|
||||
migratedProjectReferenceItem.Include.Should().Be(projectReference);
|
||||
migratedProjectReferenceItem.Condition.Should().Be(" '$(Foo)' == 'bar' ");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void It_migrates_csproj_ProjectReference_in_xproj_including_condition_on_ProjectReference_parent_and_item()
|
||||
{
|
||||
var projectReference = "some/to.csproj";
|
||||
var xproj = ProjectRootElement.Create();
|
||||
var csprojReferenceItem = xproj.AddItem("ProjectReference", projectReference);
|
||||
csprojReferenceItem.Parent.Condition = " '$(Foo)' == 'bar' ";
|
||||
csprojReferenceItem.Condition = " '$(Bar)' == 'foo' ";
|
||||
|
||||
var projectReferenceName = Path.GetFileNameWithoutExtension(projectReference);
|
||||
|
||||
var projectJson = @"
|
||||
{
|
||||
""dependencies"": {" +
|
||||
$"\"{projectReferenceName}\"" + @": {
|
||||
""target"" : ""project""
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
var testDirectory = Temp.CreateDirectory().Path;
|
||||
var migratedProj = TemporaryProjectFileRuleRunner.RunRules(new IMigrationRule[]
|
||||
{
|
||||
new MigrateProjectDependenciesRule()
|
||||
}, projectJson, testDirectory, xproj);
|
||||
|
||||
var migratedProjectReferenceItems = migratedProj.Items.Where(i => i.ItemType == "ProjectReference");
|
||||
migratedProjectReferenceItems.Should().HaveCount(1);
|
||||
|
||||
var migratedProjectReferenceItem = migratedProjectReferenceItems.First();
|
||||
migratedProjectReferenceItem.Include.Should().Be(projectReference);
|
||||
migratedProjectReferenceItem.Condition.Should().Be(" '$(Bar)' == 'foo' and '$(Foo)' == 'bar' ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
[Fact]
|
||||
public void RuntimeOptions_are_copied_from_projectJson_to_runtimeconfig_template_json_file()
|
||||
{
|
||||
var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithRuntimeOptions").WithLockFiles();
|
||||
var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithRuntimeOptions");
|
||||
var projectDir = testInstance.Path;
|
||||
var projectPath = Path.Combine(testInstance.Path, "project.json");
|
||||
|
||||
|
@ -49,7 +49,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
[Fact]
|
||||
public void Migrating_ProjectJson_with_no_RuntimeOptions_produces_no_runtimeconfig_template_json_file()
|
||||
{
|
||||
var testInstance = TestAssetsManager.CreateTestInstance("TestAppSimple").WithLockFiles();
|
||||
var testInstance = TestAssetsManager.CreateTestInstance("TestAppSimple");
|
||||
var projectDir = testInstance.Path;
|
||||
|
||||
var projectContext = ProjectContext.Create(projectDir, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
||||
|
|
|
@ -13,7 +13,7 @@ using Microsoft.DotNet.ProjectJsonMigration.Rules;
|
|||
|
||||
namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
||||
{
|
||||
public class GivenThatIWantToMigrateProjectFramework : TestBase
|
||||
public class GivenThatIWantToMigrateTFMs : TestBase
|
||||
{
|
||||
[Fact(Skip="Emitting this until x-targetting full support is in")]
|
||||
public void Migrating_netcoreapp_project_Does_not_populate_TargetFrameworkIdentifier_and_TargetFrameworkVersion()
|
||||
|
@ -43,6 +43,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
mockProj.Properties.Count(p => p.Name == "TargetFrameworkVersion").Should().Be(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Migrating_MultiTFM_project_Populates_TargetFrameworks_with_short_tfms()
|
||||
{
|
||||
var testDirectory = Temp.CreateDirectory().Path;
|
||||
|
@ -50,12 +51,12 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
.FromTestAssetBase("TestLibraryWithMultipleFrameworks")
|
||||
.SaveToDisk(testDirectory);
|
||||
|
||||
var projectContext = ProjectContext.Create(testDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
||||
var projectContexts = ProjectContext.CreateContextForEachFramework(testDirectory);
|
||||
var mockProj = ProjectRootElement.Create();
|
||||
|
||||
var migrationSettings = new MigrationSettings(testDirectory, testDirectory, "1.0.0", mockProj);
|
||||
var migrationInputs = new MigrationRuleInputs(
|
||||
new[] { projectContext },
|
||||
projectContexts,
|
||||
mockProj,
|
||||
mockProj.AddItemGroup(),
|
||||
mockProj.AddPropertyGroup());
|
||||
|
@ -67,7 +68,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
.Value.Should().Be("net20;net35;net40;net461;netstandard1.5");
|
||||
}
|
||||
|
||||
public void Migrating_Single_TFM_project_Populates_TargetFrameworks_with_short_tfm()
|
||||
[Fact]
|
||||
public void Migrating_Single_TFM_project_does_not_Populate_TargetFrameworks()
|
||||
{
|
||||
var testDirectory = Temp.CreateDirectory().Path;
|
||||
var testPJ = new ProjectJsonBuilder(TestAssetsManager)
|
||||
|
@ -78,21 +80,21 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
})
|
||||
.SaveToDisk(testDirectory);
|
||||
|
||||
var projectContext = ProjectContext.Create(testDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
||||
var projectContexts = ProjectContext.CreateContextForEachFramework(testDirectory);
|
||||
var mockProj = ProjectRootElement.Create();
|
||||
|
||||
// Run BuildOptionsRule
|
||||
var migrationSettings = new MigrationSettings(testDirectory, testDirectory, "1.0.0", mockProj);
|
||||
var migrationInputs = new MigrationRuleInputs(
|
||||
new[] { projectContext },
|
||||
projectContexts,
|
||||
mockProj,
|
||||
mockProj.AddItemGroup(),
|
||||
mockProj.AddPropertyGroup());
|
||||
|
||||
new MigrateTFMRule().Apply(migrationSettings, migrationInputs);
|
||||
Console.WriteLine(mockProj.RawXml);
|
||||
|
||||
mockProj.Properties.Count(p => p.Name == "TargetFrameworks").Should().Be(1);
|
||||
mockProj.Properties.First(p => p.Name == "TargetFrameworks").Value.Should().Be("netcoreapp1.0");
|
||||
mockProj.Properties.Count(p => p.Name == "TargetFrameworks").Should().Be(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
public class TemporaryProjectFileRuleRunner
|
||||
{
|
||||
public static ProjectRootElement RunRules(IEnumerable<IMigrationRule> rules, string projectJson,
|
||||
string testDirectory)
|
||||
string testDirectory, ProjectRootElement xproj=null)
|
||||
{
|
||||
var projectContext = GenerateProjectContextFromString(testDirectory, projectJson);
|
||||
return RunMigrationRulesOnGeneratedProject(rules, projectContext, testDirectory);
|
||||
return RunMigrationRulesOnGeneratedProject(rules, projectContext, testDirectory, xproj);
|
||||
}
|
||||
|
||||
private static ProjectContext GenerateProjectContextFromString(string projectDirectory, string json)
|
||||
|
@ -25,13 +25,14 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
}
|
||||
|
||||
private static ProjectRootElement RunMigrationRulesOnGeneratedProject(IEnumerable<IMigrationRule> rules,
|
||||
ProjectContext projectContext, string testDirectory)
|
||||
ProjectContext projectContext, string testDirectory, ProjectRootElement xproj)
|
||||
{
|
||||
var project = ProjectRootElement.Create();
|
||||
var testSettings = new MigrationSettings(testDirectory, testDirectory, "1.0.0", project);
|
||||
var testInputs = new MigrationRuleInputs(new[] {projectContext}, project,
|
||||
project.AddItemGroup(),
|
||||
project.AddPropertyGroup());
|
||||
project.AddPropertyGroup(),
|
||||
xproj);
|
||||
|
||||
foreach (var rule in rules)
|
||||
{
|
||||
|
|
|
@ -142,6 +142,9 @@ namespace Microsoft.DotNet.Migration.Tests
|
|||
var projectJsonBuildOutputs = new HashSet<string>(CollectBuildOutputs(projectDirectory));
|
||||
CleanBinObj(projectDirectory);
|
||||
|
||||
// Remove lock file for migration
|
||||
File.Delete(Path.Combine(projectDirectory, "project.lock.json"));
|
||||
|
||||
MigrateProject(projectDirectory);
|
||||
Restore(projectDirectory);
|
||||
BuildMSBuild(projectDirectory);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue