Browse Source

correctly merge existing build status with new one

pull/5418/head
İsmail ÇAĞDAŞ 6 years ago
parent
commit
a0cf325abf
  1. 38
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemRepositoryBuildStatusStore.cs
  2. 28
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs
  3. 46
      framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs

38
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemRepositoryBuildStatusStore.cs

@ -34,34 +34,32 @@ namespace Volo.Abp.Cli.Build
{
var existingRepositoryStatus = Get(buildNamePrefix, repository);
var buildStatusFile = Path.Combine(BaseBuildStatusStorePath, status.GetUniqueName(buildNamePrefix)) + ".json";
var buildStatusFile = Path.Combine(
BaseBuildStatusStorePath,
status.GetUniqueName(buildNamePrefix)
) + ".json";
if (File.Exists(buildStatusFile))
{
FileHelper.DeleteIfExists(buildStatusFile);
}
existingRepositoryStatus.MergeWith(status);
if (existingRepositoryStatus != null)
{
existingRepositoryStatus.MergeWith(status);
using (var file = File.CreateText(buildStatusFile))
using (var file = File.CreateText(buildStatusFile))
{
new JsonSerializer {Formatting = Formatting.Indented}.Serialize(file, existingRepositoryStatus);
}
}
else
{
new JsonSerializer {Formatting = Formatting.Indented}.Serialize(file, existingRepositoryStatus);
using (var file = File.CreateText(buildStatusFile))
{
new JsonSerializer {Formatting = Formatting.Indented}.Serialize(file, status);
}
}
}
// private void UpdateBuildStatus(
// GitRepositoryBuildStatus existingBuildStatus,
// GitRepositoryBuildStatus newBuildStatus)
// {
//
// foreach (var succeedProject in newBuildStatus.SucceedProjects)
// {
// existingBuildStatus.UpdateProjectStatus(succeedProject);
//
// foreach (var dependingRepositoryBuildStatus in newBuildStatus.DependingRepositories)
// {
// UpdateBuildStatus(existingBuildStatus, dependingRepositoryBuildStatus);
// }
// }
// }
}
}

28
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs

@ -48,7 +48,7 @@ namespace Volo.Abp.Cli.Build
return GetChild(repositoryName);
}
public GitRepositoryBuildStatus GetChild(string repositoryName)
{
foreach (var dependingRepository in DependingRepositories)
@ -81,26 +81,26 @@ namespace Volo.Abp.Cli.Build
{
SucceedProjects.Add(status);
}
foreach (var dependingRepository in DependingRepositories)
{
dependingRepository.AddOrUpdateProjectStatus(status);
}
}
public void MergeWith(GitRepositoryBuildStatus newBuildStatus)
{
foreach (var succeedProject in newBuildStatus.SucceedProjects)
{
AddOrUpdateProjectStatus(succeedProject);
foreach (var dependingRepositoryBuildStatus in newBuildStatus.DependingRepositories)
{
MergeWith(dependingRepositoryBuildStatus);
}
}
foreach (var dependingRepositoryBuildStatus in newBuildStatus.DependingRepositories)
{
var existingDependingRepositoryBuildStatus = GetChild(dependingRepositoryBuildStatus.RepositoryName);
var newDependingRepositoryBuildStatus = newBuildStatus.GetChild(
dependingRepositoryBuildStatus.RepositoryName
);
existingDependingRepositoryBuildStatus.MergeWith(newDependingRepositoryBuildStatus);
}
}
private GitRepositoryBuildStatus GetChildInternal(GitRepositoryBuildStatus repositoryBuildStatus,
string repositoryName)
{
@ -116,7 +116,7 @@ namespace Volo.Abp.Cli.Build
return null;
}
private void AddToUniqueName(GitRepositoryBuildStatus gitRepository, string name)
{
name += "_" + gitRepository.RepositoryName + "_" + gitRepository.BranchName;

46
framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs

@ -82,5 +82,51 @@ namespace Volo.Abp.Cli.Build
existingBuildStatus.GetSelfOrChild("volo").SucceedProjects.First(p => p.CsProjPath == "project1.csproj").CommitId.ShouldBe("2");
existingBuildStatus.GetSelfOrChild("volo").SucceedProjects.First(p => p.CsProjPath == "project2.csproj").CommitId.ShouldBe("2");
}
[Fact]
public void Add_New_Build_Status_For_Child_Repository_Test()
{
var existingBuildStatus = new GitRepositoryBuildStatus("volo", "dev")
{
DependingRepositories = new List<GitRepositoryBuildStatus>()
{
new GitRepositoryBuildStatus("abp","dev")
{
SucceedProjects = new List<DotNetProjectBuildStatus>
{
new DotNetProjectBuildStatus
{
CsProjPath = "project1.csproj",
CommitId = "1"
}
}
}
}
};
var newBuildStatus = new GitRepositoryBuildStatus(
existingBuildStatus.RepositoryName,
existingBuildStatus.BranchName
)
{
DependingRepositories = new List<GitRepositoryBuildStatus>()
{
new GitRepositoryBuildStatus("abp","dev")
{
SucceedProjects = new List<DotNetProjectBuildStatus>
{
new DotNetProjectBuildStatus
{
CsProjPath = "project2.csproj",
CommitId = "2"
}
}
}
}
};
existingBuildStatus.MergeWith(newBuildStatus);
existingBuildStatus.GetChild("abp").SucceedProjects.Count.ShouldBe(2);
}
}
}

Loading…
Cancel
Save