// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using FluentAssertions;
using Microsoft.DotNet.Internal.ProjectModel.Utilities;
using Microsoft.DotNet.ProjectJsonMigration;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Xunit;
namespace Microsoft.DotNet.ProjectJsonMigration.Tests
{
public partial class MigrationBackupPlanTests
[Fact]
public void TheBackupDirectoryIsASubfolderOfTheMigratedProject()
var workspaceDirectory = Path.Combine("src", "root");
var projectDirectory = Path.Combine("src", "project1");
WhenMigrating(projectDirectory, workspaceDirectory)
.RootBackupDirectory
.FullName
.Should()
.Be(new DirectoryInfo(Path.Combine("src", "project1", "backup")).FullName.EnsureTrailingSlash());
}
public void TheBackupDirectoryIsASubfolderOfTheMigratedProjectWhenInitiatedFromProjectFolder()
var projectDirectory = Path.Combine("src", "root");
.ProjectBackupDirectories.Single()
.Be(new DirectoryInfo(Path.Combine("src", "root", "backup")).FullName.EnsureTrailingSlash());
public void TheBackupDirectoryIsInTheCommonRootOfTwoProjectFoldersWhenInitiatedFromProjectFolder()
var projectDirectories = new []
Path.Combine("root", "project1"),
Path.Combine("root", "project2")
};
var workspaceDirectory = Path.Combine("root", "project1");
WhenMigrating(projectDirectories, workspaceDirectory)
.Be(new DirectoryInfo(Path.Combine("root", "backup")).FullName.EnsureTrailingSlash());
public void TheBackupDirectoryIsInTheCommonRootOfTwoProjectFoldersWhenInitiatedFromCommonRoot()
var workspaceDirectory = Path.Combine("root");
public void TheBackupDirectoryIsInTheCommonRootOfTwoProjectFoldersAtDifferentLevelsWhenInitiatedFromProjectFolder()
Path.Combine("root", "tests", "inner", "project1"),
Path.Combine("root", "src", "project2")
var workspaceDirectory = Path.Combine("root", "tests", "inner");
public void FilesToBackUpAreIdentifiedInTheRootProjectDirectory()
var whenMigrating = WhenMigrating(projectDirectory, workspaceDirectory);
whenMigrating
.FilesToMove(whenMigrating.ProjectBackupDirectories.Single())
.Contain(_ => _.FullName == Path.Combine(new DirectoryInfo(workspaceDirectory).FullName, "project.json"));
public void FilesToBackUpAreIdentifiedInTheDependencyProjectDirectory()
.Contain(_ => _.FullName == Path.Combine(new DirectoryInfo(projectDirectory).FullName, "project.json"));
private MigrationBackupPlan WhenMigrating(string projectDirectory, string workspaceDirectory) =>
new MigrationBackupPlan(
new [] { new DirectoryInfo(projectDirectory) },
new DirectoryInfo(workspaceDirectory),
dir => new [] { new FileInfo(Path.Combine(dir.FullName, "project.json")) });
private MigrationBackupPlan WhenMigrating(string[] projectDirectories, string workspaceDirectory) =>
projectDirectories.Select(p => new DirectoryInfo(p)),