public void CanInheritVersioningMode(VersioningMode mode) { using var fixture = new EmptyRepositoryFixture(); var config = new TestableConfig { VersioningMode = mode }; config.Reset(); var branchName = "master"; var mockBranch = new MockBranch(branchName) { new MockCommit { CommitterEx = Generate.SignatureNow() } }; var mockRepository = new MockRepository { Head = mockBranch, Branches = new MockBranchCollection { mockBranch } }; var context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config); context.Configuration.VersioningMode.ShouldBe(mode); }
public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, Config configuration = null, IRepository repository = null, string commitId = null, bool onlyTrackedBranches = true, string branch = null) { if (configuration == null) { configuration = new TestableConfig(); configuration.Reset(); } repository ??= fixture.Repository; var options = Options.Create(new GitVersionOptions { WorkingDirectory = repository.Info.WorkingDirectory, ConfigInfo = { OverrideConfig = configuration }, RepositoryInfo = { TargetBranch = branch, CommitId = commitId, }, Settings = { OnlyTrackedBranches = onlyTrackedBranches } }); var sp = ConfigureServices(services => { services.AddSingleton(options); }); var variableProvider = sp.GetService <IVariableProvider>(); var nextVersionCalculator = sp.GetService <INextVersionCalculator>(); var contextOptions = sp.GetService <Lazy <GitVersionContext> >(); var context = contextOptions.Value; try { var executeGitVersion = nextVersionCalculator.FindVersion(); var variables = variableProvider.GetVariablesFor(executeGitVersion, context.Configuration, context.IsCurrentCommitTagged); return(variables); } catch (Exception) { Console.WriteLine("Test failing, dumping repository graph"); repository.DumpGraph(); throw; } }
public void UsesBranchSpecificConfigOverTopLevelDefaults() { using var fixture = new EmptyRepositoryFixture(); var branchName = "develop"; var config = new TestableConfig { VersioningMode = VersioningMode.ContinuousDelivery, Branches = { { branchName, new BranchConfig { VersioningMode = VersioningMode.ContinuousDeployment, Tag = "alpha" } } } }; config.Reset(); var develop = new MockBranch(branchName) { new MockCommit { CommitterEx = Generate.SignatureNow() } }; var mockRepository = new MockRepository { Head = develop, Branches = new MockBranchCollection { new MockBranch("master") { new MockCommit { CommitterEx = Generate.SignatureNow() } }, develop } }; var context = GetGitVersionContext(fixture.RepositoryPath, mockRepository, branchName, config); context.Configuration.Tag.ShouldBe("alpha"); }
public void AssemblySemFileVerShouldBeWeightedByDefaultPreReleaseWeight() { var config = new TestableConfig { 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 CanInheritIncrement(IncrementStrategy increment, IncrementStrategy?alternateExpected) { // Dummy branch name to make sure that no default config exists. const string dummyBranchName = "dummy"; var config = new TestableConfig { Increment = increment }; config.Reset(); using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); fixture.BranchTo(dummyBranchName); fixture.MakeACommit(); var context = GetGitVersionContext(fixture.RepositoryPath, fixture.Repository, dummyBranchName, config); context.Configuration.Increment.ShouldBe(alternateExpected ?? increment); }
public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDynamicallyCalculatedWithoutSavingInCache() { const string versionCacheFileContent = @" Major: 4 Minor: 10 Patch: 3 PreReleaseTag: test.19 PreReleaseTagWithDash: -test.19 PreReleaseLabel: test PreReleaseNumber: 19 BuildMetaData: BuildMetaDataPadded: FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f MajorMinorPatch: 4.10.3 SemVer: 4.10.3-test.19 LegacySemVer: 4.10.3-test19 LegacySemVerPadded: 4.10.3-test0019 AssemblySemVer: 4.10.3.0 AssemblySemFileVer: 4.10.3.0 FullSemVer: 4.10.3-test.19 InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f BranchName: feature/test EscapedBranchName: feature-test Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f ShortSha: dd2a29af NuGetVersionV2: 4.10.3-test0019 NuGetVersion: 4.10.3-test0019 NuGetPreReleaseTagV2: test0019 NuGetPreReleaseTag: test0019 CommitsSinceVersionSource: 19 CommitsSinceVersionSourcePadded: 0019 CommitDate: 2015-11-10 "; using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); var gitVersionOptions = new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath }; var gitVersionCalculator = GetGitVersionCalculator(gitVersionOptions, log); var versionVariables = gitVersionCalculator.CalculateVersionVariables(); versionVariables.AssemblySemVer.ShouldBe("0.1.0.0"); fileSystem.WriteAllText(versionVariables.FileName, versionCacheFileContent); var cacheDirectory = gitVersionCache.GetCacheDirectory(); var cacheDirectoryTimestamp = fileSystem.GetLastDirectoryWrite(cacheDirectory); var config = new TestableConfig { TagPrefix = "prefix" }; config.Reset(); gitVersionOptions = new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, ConfigInfo = { OverrideConfig = config } }; gitVersionCalculator = GetGitVersionCalculator(gitVersionOptions); versionVariables = gitVersionCalculator.CalculateVersionVariables(); versionVariables.AssemblySemVer.ShouldBe("0.1.0.0"); var cachedDirectoryTimestampAfter = fileSystem.GetLastDirectoryWrite(cacheDirectory); cachedDirectoryTimestampAfter.ShouldBe(cacheDirectoryTimestamp, () => "Cache was updated when override config was set"); }