|
|
|
@ -0,0 +1,78 @@
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Shouldly;
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
namespace Volo.Abp.Cli.Build
|
|
|
|
|
{
|
|
|
|
|
public class BuildProjectListSorter_Tests : AbpCliTestBase
|
|
|
|
|
{
|
|
|
|
|
private IBuildProjectListSorter _buildProjectListSorter;
|
|
|
|
|
|
|
|
|
|
public BuildProjectListSorter_Tests()
|
|
|
|
|
{
|
|
|
|
|
_buildProjectListSorter = GetRequiredService<IBuildProjectListSorter>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public void SortByDependencies_Test()
|
|
|
|
|
{
|
|
|
|
|
// A -> B, C
|
|
|
|
|
// B -> D
|
|
|
|
|
// D -> F
|
|
|
|
|
// F -> C
|
|
|
|
|
// C -> G
|
|
|
|
|
// Final build order must be: G,
|
|
|
|
|
|
|
|
|
|
var repositoryName = "volo";
|
|
|
|
|
var source = new List<DotNetProjectInfo>
|
|
|
|
|
{
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "A")
|
|
|
|
|
{
|
|
|
|
|
Dependencies = new List<DotNetProjectInfo>()
|
|
|
|
|
{
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "B"),
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "C")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "B")
|
|
|
|
|
{
|
|
|
|
|
Dependencies = new List<DotNetProjectInfo>()
|
|
|
|
|
{
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "D")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "D")
|
|
|
|
|
{
|
|
|
|
|
Dependencies = new List<DotNetProjectInfo>()
|
|
|
|
|
{
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "F")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "F")
|
|
|
|
|
{
|
|
|
|
|
Dependencies = new List<DotNetProjectInfo>()
|
|
|
|
|
{
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "C")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "C")
|
|
|
|
|
{
|
|
|
|
|
Dependencies = new List<DotNetProjectInfo>()
|
|
|
|
|
{
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "G")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
new DotNetProjectInfo(repositoryName, "G")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var sortedDependencies = _buildProjectListSorter.SortByDependencies(source, new DotNetProjectInfoEqualityComparer());
|
|
|
|
|
sortedDependencies.Count.ShouldBe(6);
|
|
|
|
|
sortedDependencies[0].CsProjPath.ShouldBe("G");
|
|
|
|
|
sortedDependencies[1].CsProjPath.ShouldBe("C");
|
|
|
|
|
sortedDependencies[2].CsProjPath.ShouldBe("F");
|
|
|
|
|
sortedDependencies[3].CsProjPath.ShouldBe("D");
|
|
|
|
|
sortedDependencies[4].CsProjPath.ShouldBe("B");
|
|
|
|
|
sortedDependencies[5].CsProjPath.ShouldBe("A");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|