public void GetResult_Feature_Branch_Changes_Version_Resets_On_Merge() { // Arrange using var fixture = new SimpleVersionRepositoryFixture(_serializer); var config = fixture.GetConfig(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.BranchTo("feature/other"); fixture.MakeACommit(); config.Version = "0.1.1"; fixture.SetConfig(config); fixture.MakeACommit(); fixture.MakeACommit(); fixture.Checkout("master"); fixture.MergeNoFF("feature/other"); var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>()); // Act var result = sut.GetResult(); result.Height.Should().Be(1); }
public void GetResult_BranchOverride_AppliesOverride() { // Arrange var expectedLabel = new List <string> { "{branchName}" }; var expectedMeta = new List <string> { "meta" }; var config = new RepositoryConfiguration { Version = "0.1.0", Branches = { Overrides = { new BranchOverrideConfiguration { Match = "feature/other", Label = expectedLabel, Metadata = expectedMeta } } } }; using var fixture = new SimpleVersionRepositoryFixture(config, _serializer); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.BranchTo("feature/other"); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); // Use a processor to capture the configuration during processing. var processor = Substitute.For <IVersionProcessor>(); VersionContext context = null; processor.When(x => x.Process(Arg.Any <VersionContext>())) .Do(call => context = call.Arg <VersionContext>()); var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, new[] { processor }); // Act var result = sut.GetResult(); context.Configuration.Label.Should().BeEquivalentTo(expectedLabel, options => options.WithStrictOrdering()); context.Configuration.Metadata.Should().BeEquivalentTo(expectedMeta, options => options.WithStrictOrdering()); }
public void Override_Branches_Do_Not_Work_If_Asterisk_Used_In_Label() { // Create the configuration model var config = new Model.Configuration { Version = "1.0.0", Label = { "r*" }, Branches = { Release = { "^refs/heads/master$", "^refs/heads/release/.+$", "^refs/heads/feature/.+$" }, Overrides = { new Model.BranchConfiguration { Match = "^refs/heads/feature/.+$", Label = new List <string>{ "{shortbranchname}" } } } } }; // Arrange using (var fixture = new SimpleVersionRepositoryFixture(config)) using (EnvrionmentContext.NoBuildServer()) { // Make some extra commits on master fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); // branch to a feature branch fixture.BranchTo("feature/PBI-319594-GitVersionDeprecation"); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); // Act var result = GetResult(fixture); var semver1 = result.Formats[Semver1FormatProcess.FormatKey]; var semver2 = result.Formats[Semver2FormatProcess.FormatKey]; // Assert semver1.Should().Be("1.0.0-featurePBI319594GitVersionDeprecation-0007"); semver2.Should().Be("1.0.0-featurePBI319594GitVersionDeprecation.7"); } }
public void GetResult_SetsIsRelease(string branchName, bool isRelease) { // Arrange using var fixture = new SimpleVersionRepositoryFixture(_serializer); var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>()); fixture.BranchTo(branchName); // Act var result = sut.GetResult(); // Assert result.IsRelease.Should().Be(isRelease); }
public void GetResult_Feature_Branch_Sets_BranchName() { // Arrange using var fixture = new SimpleVersionRepositoryFixture(_serializer); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.BranchTo("feature/other"); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>()); // Act var result = sut.GetResult(); result.BranchName.Should().Be("feature/other"); result.CanonicalBranchName.Should().Be("refs/heads/feature/other"); }
public void GetResult_Feature_Branch_No_Change_Increments_Merge_Once() { // Arrange using var fixture = new SimpleVersionRepositoryFixture(_serializer); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.BranchTo("feature/other"); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.Checkout("master"); fixture.MergeNoFF("feature/other"); var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>()); // Act var result = sut.GetResult(); result.Height.Should().Be(6); }
public void GetResult_AdvancedBranchOverride_AppliesOverride() { // Arrange var expectedLabel = new List <string> { "preL1", "preL2", "L1", "insertedL", "L2", "postL1", "postL2" }; var expectedMeta = new List <string> { "preM1", "preM2", "M1", "insertedM", "M2", "postM1", "postM2" }; var config = new RepositoryConfiguration { Version = "0.1.0", Label = { "L1", "L2" }, Metadata = { "M1", "M2" }, Branches = { Overrides = { new BranchOverrideConfiguration { Match = "feature/other", PrefixLabel = new List <string> { "preL1", "preL2" }, PostfixLabel = new List <string>{ "postL1", "postL2" }, InsertLabel = new Dictionary <int,string>{ [1] = "insertedL" }, PrefixMetadata = new List <string>{ "preM1", "preM2" }, PostfixMetadata = new List <string> { "postM1", "postM2" }, InsertMetadata = new Dictionary <int,string> { [1] = "insertedM" } } } } }; using var fixture = new SimpleVersionRepositoryFixture(config, _serializer); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.BranchTo("feature/other"); fixture.MakeACommit(); fixture.MakeACommit(); fixture.MakeACommit(); // Use a processor to capture the configuration during processing. var processor = Substitute.For <IVersionProcessor>(); VersionContext context = null; processor.When(x => x.Process(Arg.Any <VersionContext>())) .Do(call => context = call.Arg <VersionContext>()); var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, new[] { processor }); // Act var result = sut.GetResult(); context.Configuration.Label.Should().BeEquivalentTo(expectedLabel, options => options.WithStrictOrdering()); context.Configuration.Metadata.Should().BeEquivalentTo(expectedMeta, options => options.WithStrictOrdering()); }