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 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)) if (File.Exists(buildStatusFile))
{ {
FileHelper.DeleteIfExists(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); return GetChild(repositoryName);
} }
public GitRepositoryBuildStatus GetChild(string repositoryName) public GitRepositoryBuildStatus GetChild(string repositoryName)
{ {
foreach (var dependingRepository in DependingRepositories) foreach (var dependingRepository in DependingRepositories)
@ -81,26 +81,26 @@ namespace Volo.Abp.Cli.Build
{ {
SucceedProjects.Add(status); SucceedProjects.Add(status);
} }
foreach (var dependingRepository in DependingRepositories)
{
dependingRepository.AddOrUpdateProjectStatus(status);
}
} }
public void MergeWith(GitRepositoryBuildStatus newBuildStatus) public void MergeWith(GitRepositoryBuildStatus newBuildStatus)
{ {
foreach (var succeedProject in newBuildStatus.SucceedProjects) foreach (var succeedProject in newBuildStatus.SucceedProjects)
{ {
AddOrUpdateProjectStatus(succeedProject); AddOrUpdateProjectStatus(succeedProject);
}
foreach (var dependingRepositoryBuildStatus in newBuildStatus.DependingRepositories)
{ foreach (var dependingRepositoryBuildStatus in newBuildStatus.DependingRepositories)
MergeWith(dependingRepositoryBuildStatus); {
} var existingDependingRepositoryBuildStatus = GetChild(dependingRepositoryBuildStatus.RepositoryName);
var newDependingRepositoryBuildStatus = newBuildStatus.GetChild(
dependingRepositoryBuildStatus.RepositoryName
);
existingDependingRepositoryBuildStatus.MergeWith(newDependingRepositoryBuildStatus);
} }
} }
private GitRepositoryBuildStatus GetChildInternal(GitRepositoryBuildStatus repositoryBuildStatus, private GitRepositoryBuildStatus GetChildInternal(GitRepositoryBuildStatus repositoryBuildStatus,
string repositoryName) string repositoryName)
{ {
@ -116,7 +116,7 @@ namespace Volo.Abp.Cli.Build
return null; return null;
} }
private void AddToUniqueName(GitRepositoryBuildStatus gitRepository, string name) private void AddToUniqueName(GitRepositoryBuildStatus gitRepository, string name)
{ {
name += "_" + gitRepository.RepositoryName + "_" + gitRepository.BranchName; 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 == "project1.csproj").CommitId.ShouldBe("2");
existingBuildStatus.GetSelfOrChild("volo").SucceedProjects.First(p => p.CsProjPath == "project2.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