public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommitsSinceVersionSourceShouldNotGoDownWhenMergingReleaseToDevelop() { var config = new Config { VersioningMode = VersioningMode.ContinuousDeployment, Branches = new Dictionary <string, BranchConfig> { { "develop", new BranchConfig { PreventIncrementOfMergedBranchVersion = false } }, } }; using var fixture = new EmptyRepositoryFixture(); const string ReleaseBranch = "release/1.1.0"; fixture.MakeACommit(); fixture.BranchTo("develop"); fixture.MakeATaggedCommit("1.0.0"); fixture.Repository.MakeCommits(1); // Create a release branch and make some commits fixture.BranchTo(ReleaseBranch); fixture.Repository.MakeCommits(3); // Simulate a GitFlow release finish. fixture.Checkout("master"); fixture.MergeNoFF(ReleaseBranch); fixture.ApplyTag("v1.1.0"); fixture.Checkout("develop"); // Simulate some work done on develop while the release branch was open. fixture.Repository.MakeCommits(2); fixture.MergeNoFF(ReleaseBranch); // Version numbers will still be correct when the release branch is around. fixture.AssertFullSemver("1.2.0-alpha.6"); fixture.AssertFullSemver("1.2.0-alpha.6", config); var versionSourceBeforeReleaseBranchIsRemoved = fixture.GetVersion(config).Sha; fixture.Repository.Branches.Remove(ReleaseBranch); var versionSourceAfterReleaseBranchIsRemoved = fixture.GetVersion(config).Sha; Assert.AreEqual(versionSourceBeforeReleaseBranchIsRemoved, versionSourceAfterReleaseBranchIsRemoved); fixture.AssertFullSemver("1.2.0-alpha.6"); fixture.AssertFullSemver("1.2.0-alpha.6", config); config.Branches = new Dictionary <string, BranchConfig> { { "develop", new BranchConfig { PreventIncrementOfMergedBranchVersion = true } }, }; fixture.AssertFullSemver("1.2.0-alpha.3", config); }
public void AssemblySemFileVerShouldBeWeightedByPreReleaseWeight() { var config = new ConfigurationBuilder() .Add(new Config { AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}", Branches = { { "release", new BranchConfig { PreReleaseWeight = 1000 } } } }) .Build(); using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeATaggedCommit("1.0.3"); fixture.Repository.MakeCommits(5); fixture.Repository.CreateBranch("release-2.0.0"); fixture.Checkout("release-2.0.0"); var variables = fixture.GetVersion(config); Assert.AreEqual(variables.AssemblySemFileVer, "2.0.0.1001"); }
public void ShouldUseTagsAsVersionSourceWhenPossible() { using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeATaggedCommit("0.1.0"); fixture.Checkout(MainBranch); fixture.Repository.CreateBranch("develop"); fixture.Checkout("develop"); fixture.MakeACommit("Feature commit 1"); fixture.BranchTo("release/0.2.0"); fixture.MakeACommit("Release commit 1"); fixture.Checkout(MainBranch); fixture.MergeNoFF("release/0.2.0"); fixture.ApplyTag("0.2.0"); var tag = fixture.Repository.Head.Tip; fixture.Checkout("develop"); fixture.MergeNoFF(MainBranch); fixture.AssertFullSemver("0.3.0-alpha.1"); var version = fixture.GetVersion(); version.VersionSourceSha.ShouldBeEquivalentTo(tag.Sha); }
public void NoDirtyFlagInCleanRepository() { using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); var version = fixture.GetVersion(); var zero = 0; version.UncommittedChanges.ShouldBe(zero.ToString(CultureInfo.InvariantCulture)); }
public void CanTakePreReleaseVersionFromReleasesBranchWithNumericPreReleaseTag() { using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeCommits(5); fixture.Repository.CreateBranch("releases/2.0.0"); fixture.Checkout("releases/2.0.0"); fixture.Repository.ApplyTag("v2.0.0-1"); var variables = fixture.GetVersion(); Assert.AreEqual("2.0.0-1", variables.FullSemVer); }
public void AssemblySemFileVerShouldBeWeightedByDefaultPreReleaseWeight() { var config = new Config { AssemblyFileVersioningFormat = "{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}", }; using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeATaggedCommit("1.0.3"); fixture.Repository.MakeCommits(5); fixture.Repository.CreateBranch("release-2.0.0"); fixture.Checkout("release-2.0.0"); config.Reset(); var variables = fixture.GetVersion(config); Assert.AreEqual(variables.AssemblySemFileVer, "2.0.0.30001"); }
public void ShouldNotGetVersionFromFeatureBranchIfNotMerged() { using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeATaggedCommit("1.0.0-unstable.0"); // initial commit in main fixture.Repository.CreateBranch("feature"); Commands.Checkout(fixture.Repository, "feature"); fixture.Repository.MakeATaggedCommit("1.0.1-feature.1"); Commands.Checkout(fixture.Repository, MainBranch); fixture.Repository.CreateBranch("develop"); Commands.Checkout(fixture.Repository, "develop"); fixture.Repository.MakeACommit(); var version = fixture.GetVersion(); version.SemVer.ShouldBe("1.0.0-alpha.1"); }
public void GitHubFlowMajorRelease() { using var fixture = new EmptyRepositoryFixture(); fixture.SequenceDiagram.Participant("master"); fixture.Repository.MakeACommit(); fixture.ApplyTag("1.3.0"); // Create release branch fixture.BranchTo("release/2.0.0", "release"); fixture.SequenceDiagram.Activate("release/2.0.0"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-beta.1+1"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-beta.1+2"); // Apply beta.1 tag should be exact tag fixture.ApplyTag("2.0.0-beta.1"); fixture.AssertFullSemver("2.0.0-beta.1"); // test that the CommitsSinceVersionSource should still return commit count var version = fixture.GetVersion(); version.CommitsSinceVersionSource.ShouldBe("2"); // Make a commit after a tag should bump up the beta fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-beta.2+3"); // Complete release fixture.Checkout("master"); fixture.MergeNoFF("release/2.0.0"); fixture.SequenceDiagram.Destroy("release/2.0.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); fixture.AssertFullSemver("2.0.0+0"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); fixture.MakeACommit(); var fixtureRepository = new GitRepository(fixture.Repository); fixtureRepository.DumpGraph(); fixture.AssertFullSemver("2.0.1+1"); }
public void ShouldNotGetVersionFromFeatureBranchIfNotMerged() { using (var fixture = new EmptyRepositoryFixture()) { fixture.Repository.MakeATaggedCommit("1.0.0-unstable.0"); // initial commit in master fixture.Repository.CreateBranch("feature"); fixture.Repository.Checkout("feature"); fixture.Repository.MakeATaggedCommit("1.0.1-feature.1"); fixture.Repository.Checkout("master"); fixture.Repository.CreateBranch("develop"); fixture.Repository.Checkout("develop"); fixture.Repository.MakeACommit(); var version = fixture.GetVersion(); version.SemVer.ShouldBe("1.0.0-unstable.1"); } }
public void HasDirtyFlagWhenUncommittedChangesAreInRepo(bool stageFile, int numberOfFiles) { using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); for (int i = 0; i < numberOfFiles; i++) { var tempFile = Path.GetTempFileName(); var repoFile = Path.Combine(fixture.RepositoryPath, Path.GetFileNameWithoutExtension(tempFile) + ".txt"); File.Move(tempFile, repoFile); File.WriteAllText(repoFile, $"Hello world / testfile {i}"); if (stageFile) { Commands.Stage(fixture.Repository, repoFile); } } var version = fixture.GetVersion(); version.UncommittedChanges.ShouldBe(numberOfFiles.ToString(CultureInfo.InvariantCulture)); }
public void GitHubFlowMajorRelease() { using (var fixture = new EmptyRepositoryFixture()) { fixture.SequenceDiagram.Participant("master"); fixture.Repository.MakeACommit(); fixture.ApplyTag("1.3.0"); // Create release branch fixture.BranchTo("release/2.0.0", "release"); fixture.SequenceDiagram.Activate("release/2.0.0"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-beta.1+1"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-beta.1+2"); // Apply beta.1 tag should be exact tag fixture.ApplyTag("2.0.0-beta.1"); fixture.AssertFullSemver("2.0.0-beta.1"); // test that the CommitsSinceVersionSource should still return commit count var version = fixture.GetVersion(new Config()); version.CommitsSinceVersionSource.ShouldBe("2"); // Make a commit after a tag should bump up the beta fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-beta.2+3"); // Complete release fixture.Checkout("master"); fixture.MergeNoFF("release/2.0.0"); fixture.SequenceDiagram.Destroy("release/2.0.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); fixture.AssertFullSemver("2.0.0+0"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); fixture.MakeACommit(); fixture.Repository.DumpGraph(); fixture.AssertFullSemver("2.0.1+1"); } }