public void ShouldCreateFile(string fileExtension) { var fileSystem = new TestFileSystem(); var directory = Path.GetTempPath(); var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = Path.Combine(directory, fileName); var semanticVersion = new SemanticVersion { Major = 1, Minor = 2, Patch = 3, PreReleaseTag = "unstable4", BuildMetaData = new SemanticVersionBuildMetaData("versionSourceSha", 5, "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")) }; var log = new NullLog(); var metaDataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); var variables = variableProvider.GetVariablesFor(semanticVersion, new TestEffectiveConfiguration(), false); var generator = new GitVersionInformationGenerator(fileName, directory, variables, fileSystem); generator.Generate(); fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension))); }
public void FindsGitDirectoryInParent() { var childDir = Path.Combine(workDirectory, "child"); Directory.CreateDirectory(childDir); try { var arguments = new Arguments { TargetPath = childDir, NoFetch = true }; var options = Options.Create(arguments); var gitPreparer = new GitPreparer(log, environment, options); var configurationProvider = new ConfigProvider(testFileSystem, log, configFileLocator, gitPreparer, configInitWizard); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); var variableProvider = new VariableProvider(nextVersionCalculator, environment); var gitVersionCalculator = new GitVersionCalculator(testFileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options); gitVersionCalculator.CalculateVersionVariables(); } catch (Exception ex) { // TODO I think this test is wrong.. It throws a different exception // `RepositoryNotFoundException` means that it couldn't find the .git directory, // any other exception means that the .git was found but there was some other issue that this test doesn't care about. Assert.IsNotAssignableFrom <RepositoryNotFoundException>(ex); } }
public void CreateTemporaryRepository() { workDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); gitDirectory = Repository.Init(workDirectory).TrimEnd(Path.DirectorySeparatorChar); testFileSystem = new TestFileSystem(); log = new NullLog(); environment = new TestEnvironment(); var stepFactory = new ConfigInitStepFactory(); configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory); configFileLocator = new DefaultConfigFileLocator(testFileSystem, log); gitVersionCache = new GitVersionCache(testFileSystem, log); buildServerResolver = new BuildServerResolver(null, log); metaDataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); gitVersionFinder = new GitVersionFinder(log, nextVersionCalculator); Assert.NotNull(gitDirectory); }
private void RepositoryScope(ILog log, Action <EmptyRepositoryFixture, VersionVariables> fixtureAction = null) { // Make sure GitVersion doesn't trigger build server mode when we are running the tests environment.SetEnvironmentVariable(AppVeyor.EnvironmentVariableName, null); environment.SetEnvironmentVariable(TravisCi.EnvironmentVariableName, null); environment.SetEnvironmentVariable(AzurePipelines.EnvironmentVariableName, null); using var fixture = new EmptyRepositoryFixture(); var arguments = new Arguments { TargetPath = fixture.RepositoryPath }; var options = Options.Create(arguments); var gitPreparer = new GitPreparer(log, environment, options); var stepFactory = new ConfigInitStepFactory(); var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory); var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard); var baseVersionCalculator = new BaseVersionCalculator(this.log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(this.log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(this.log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); var gitVersionCalculator = new GitVersionCalculator(fileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options); fixture.Repository.MakeACommit(); var vv = gitVersionCalculator.CalculateVersionVariables(); vv.AssemblySemVer.ShouldBe("0.1.0.0"); vv.FileName.ShouldNotBeNullOrEmpty(); fixtureAction?.Invoke(fixture, vv); }
public override string ToString() { return(string.Format( "{0}: {1} with commit count source {2} (Incremented: {3})", Source, SemanticVersion.ToString("f"), BaseVersionSource == null ? "External Source" : BaseVersionSource.Sha, ShouldIncrement ? BaseVersionCalculator.MaybeIncrement(_context, this).ToString("t") : "None")); }
public void Setup() { ShouldlyConfiguration.ShouldMatchApprovedDefaults.LocateTestMethodUsingAttribute <TestAttribute>(); var log = new NullLog(); var metaDataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); }
public void SetUp() { environment = new TestEnvironment(); log = new NullLog(); var metaDataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); }
public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhenReversedOrder() { var context = new GitVersionContextBuilder().Build(); var when = DateTimeOffset.Now; var sut = new BaseVersionCalculator(log, new V1Strategy(null), new V2Strategy(when)); var baseVersion = sut.GetBaseVersion(context); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); baseVersion.ShouldIncrement.ShouldBe(true); baseVersion.BaseVersionSource.When().ShouldBe(when); }
public void ChoosesHighestVersionReturnedFromStrategies() { var context = new GitVersionContextBuilder().Build(); var dateTimeOffset = DateTimeOffset.Now; var sut = new BaseVersionCalculator(log, new V1Strategy(DateTimeOffset.Now), new V2Strategy(dateTimeOffset)); var baseVersion = sut.GetBaseVersion(context); baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); baseVersion.ShouldIncrement.ShouldBe(true); baseVersion.BaseVersionSource.When().ShouldBe(dateTimeOffset); }
public void ShouldNotFilterVersion() { var fakeIgnoreConfig = new TestIgnoreConfig(new ExcludeSourcesContainingExclude()); var context = new GitVersionContextBuilder().WithConfig(new Config() { Ignore = fakeIgnoreConfig }).Build(); var version = new BaseVersion(context, "dummy", false, new SemanticVersion(2), new MockCommit(), null); var sut = new BaseVersionCalculator(log, new TestVersionStrategy(version)); var baseVersion = sut.GetBaseVersion(context); baseVersion.Source.ShouldBe(version.Source); baseVersion.ShouldIncrement.ShouldBe(version.ShouldIncrement); baseVersion.SemanticVersion.ShouldBe(version.SemanticVersion); }
private GitVersionCalculator GetGitVersionCalculator(Arguments arguments) { var options = Options.Create(arguments); var gitPreparer = new GitPreparer(log, environment, options); var stepFactory = new ConfigInitStepFactory(); var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory); var configurationProvider = new ConfigProvider(fileSystem, log, configFileLocator, gitPreparer, configInitWizard); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); var gitVersionCalculator = new GitVersionCalculator(fileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options); return(gitVersionCalculator); }
public void ShouldFilterVersion() { var fakeIgnoreConfig = new TestIgnoreConfig(new ExcludeSourcesContainingExclude()); var context = new GitVersionContextBuilder().WithConfig(new Config() { Ignore = fakeIgnoreConfig }).Build(); var higherVersion = new BaseVersion(context, "exclude", false, new SemanticVersion(2), new MockCommit(), null); var lowerVersion = new BaseVersion(context, "dummy", false, new SemanticVersion(1), new MockCommit(), null); var versionStrategies = new IVersionStrategy[] { new TestVersionStrategy(higherVersion, lowerVersion) }; var sut = new BaseVersionCalculator(log, versionStrategies); var baseVersion = sut.GetBaseVersion(context); baseVersion.Source.ShouldNotBe(higherVersion.Source); baseVersion.SemanticVersion.ShouldNotBe(higherVersion.SemanticVersion); baseVersion.Source.ShouldBe(lowerVersion.Source); baseVersion.SemanticVersion.ShouldBe(lowerVersion.SemanticVersion); }
public void UpdateWixVersionFile() { var fileSystem = new TestFileSystem(); var workingDir = Path.GetTempPath(); var semVer = new SemanticVersion { Major = 1, Minor = 2, Patch = 3, BuildMetaData = "5.Branch.develop" }; semVer.BuildMetaData.VersionSourceSha = "versionSourceSha"; semVer.BuildMetaData.Sha = "commitSha"; semVer.BuildMetaData.ShortSha = "commitShortSha"; semVer.BuildMetaData.CommitDate = DateTimeOffset.Parse("2019-02-20 23:59:59Z"); var config = new TestEffectiveConfiguration(buildMetaDataPadding: 2, legacySemVerPadding: 5); var stringBuilder = new StringBuilder(); void Action(string s) => stringBuilder.AppendLine(s); var logAppender = new TestLogAppender(Action); var log = new Log(logAppender); var metaDataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); var vars = variableProvider.GetVariablesFor(semVer, config, false); using var wixVersionFileUpdater = new WixVersionFileUpdater(workingDir, vars, fileSystem, log); wixVersionFileUpdater.Update(); fileSystem.ReadAllText(wixVersionFileUpdater.WixVersionFile). ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved"))); }
public void Json() { var semanticVersion = new SemanticVersion { Major = 1, Minor = 2, Patch = 0, PreReleaseTag = "unstable4", BuildMetaData = new SemanticVersionBuildMetaData("versionSourceSha", 5, "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z")) }; var config = new TestEffectiveConfiguration(); var log = new NullLog(); var metaDataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new BaseVersionCalculator(log, null); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator); var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); var variables = variableProvider.GetVariablesFor(semanticVersion, config, false); var json = JsonOutputFormatter.ToJson(variables); json.ShouldMatchApproved(c => c.SubFolder("Approved")); }
public override string ToString() { return($"{Source}: {SemanticVersion.ToString("f")} with commit count source {(BaseVersionSource == null ? "External Source" : BaseVersionSource.Sha)} (Incremented: {(ShouldIncrement ? BaseVersionCalculator.MaybeIncrement(context, this).ToString("t") : "None")})"); }