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 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 TryGetVersion_GitError_ReturnsFalse() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner.RunCommand("describe --tags --long --match \"v[0-9]*\"", out ignored, out ignored)).Returns(1).AssignsOutAndRefParameters("testOutput", "testError"); Assert.IsFalse(gitVersion.TryGetVersion(out string version)); }
public void TryGetVersion_GitError_LogsWarning() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner.RunCommand("describe --tags --long --match \"v[0-9]*\"", out ignored, out ignored)).Returns(1).AssignsOutAndRefParameters("testOutput", "testError"); LogAssert.Expect(LogType.Warning, "Error running git: testError"); gitVersion.TryGetVersion(out string version); }
private GitVersionCalculator CreateGitVersionCalculator(out IGitRunner fakeGitRunner) { GitVersionCalculator gitVersionCalculator = new GitVersionCalculator(); fakeGitRunner = A.Fake <IGitRunner>(); gitVersionCalculator.GetType() .GetField( "gitRunner", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .SetValue(gitVersionCalculator, fakeGitRunner); return(gitVersionCalculator); }
public void TryGetBranch_GitError_ReturnsFalse() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( @"rev-parse --abbrev-ref HEAD", out ignored, out ignored)) .Returns(1) .AssignsOutAndRefParameters("testOutput", "testError"); Assert.IsFalse(gitVersion.TryGetBranch(out string branch)); }
public void TryGetVersion_GitGivesVersion_ReturnsTrue() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( "describe --tags --long --match \"v[0-9]*\"", out ignored, out ignored)) .Returns(0) .AssignsOutAndRefParameters("v1.2-3-g4ab59cb78", ""); Assert.IsTrue(gitVersion.TryGetVersion(out string version)); }
public void TryGetTotalCommitsOnBranch_GitGivesCount_ReturnsTrue() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( @"rev-list --count HEAD", out ignored, out ignored)) .Returns(0) .AssignsOutAndRefParameters("123", ""); Assert.IsTrue(gitVersion.TryGetTotalCommitsOnBranch(out int number)); }
public void TryGetTotalCommitsOnBranch_GitError_ReturnsFalse() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( @"rev-list --count HEAD", out ignored, out ignored)) .Returns(1) .AssignsOutAndRefParameters("testOutput", "testError"); Assert.IsFalse(gitVersion.TryGetTotalCommitsOnBranch(out int number)); }
public void TryGetBranch_GitGivesBranch_ReturnsTrue() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( @"rev-parse --abbrev-ref HEAD", out ignored, out ignored)) .Returns(0) .AssignsOutAndRefParameters("features/myBranch", ""); Assert.IsTrue(gitVersion.TryGetBranch(out string branch)); }
public void TryGetTotalCommitsOnBranch_GitError_LogsWarning() { GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( @"rev-list --count HEAD", out ignored, out ignored)) .Returns(1) .AssignsOutAndRefParameters("testOutput", "testError"); LogAssert.Expect(LogType.Warning, "Error running git: testError"); gitVersion.TryGetTotalCommitsOnBranch(out int number); }
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 TryGetBranch_GitGivesBranch_BranchCorrect() { const string expectedbranchName = "features/myBranch"; GitVersionCalculator gitVersion = CreateGitVersionCalculator(out IGitRunner gitRunner); string ignored = null; A.CallTo(() => gitRunner .RunCommand( @"rev-parse --abbrev-ref HEAD", out ignored, out ignored)) .Returns(0) .AssignsOutAndRefParameters(expectedbranchName, ""); gitVersion.TryGetBranch(out string branch); Assert.AreEqual(expectedbranchName, branch); }
public void FindsVersionInDynamicRepo(string name, string url, string targetBranch, string commitId, string expectedFullSemVer) { var root = Path.Combine(workDirectory, name); var dynamicDirectory = Path.Combine(root, "D"); // dynamic, keeping directory as short as possible var workingDirectory = Path.Combine(root, "W"); // working, keeping directory as short as possible var arguments = new Arguments { TargetUrl = url, DynamicRepositoryLocation = dynamicDirectory, TargetBranch = targetBranch, NoFetch = false, TargetPath = workingDirectory, CommitId = commitId }; var options = Options.Create(arguments); Directory.CreateDirectory(dynamicDirectory); Directory.CreateDirectory(workingDirectory); var testFileSystem = new TestFileSystem(); var log = new NullLog(); var configFileLocator = new DefaultConfigFileLocator(testFileSystem, log); var gitVersionCache = new GitVersionCache(testFileSystem, log); var buildServerResolver = new BuildServerResolver(null, log); var metadataCalculator = new MetaDataCalculator(); var baseVersionCalculator = new TestBaseVersionStrategiesCalculator(log); var mainlineVersionCalculator = new MainlineVersionCalculator(log, metadataCalculator); var nextVersionCalculator = new NextVersionCalculator(log, metadataCalculator, baseVersionCalculator, mainlineVersionCalculator); var gitVersionFinder = new GitVersionFinder(log, nextVersionCalculator); var gitPreparer = new GitPreparer(log, new TestEnvironment(), options); var stepFactory = new ConfigInitStepFactory(); var configInitWizard = new ConfigInitWizard(new ConsoleAdapter(), stepFactory); var configurationProvider = new ConfigProvider(testFileSystem, log, configFileLocator, gitPreparer, configInitWizard); var variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment()); var gitVersionCalculator = new GitVersionCalculator(testFileSystem, log, configFileLocator, configurationProvider, buildServerResolver, gitVersionCache, gitVersionFinder, gitPreparer, variableProvider, options); var versionVariables = gitVersionCalculator.CalculateVersionVariables(); Assert.AreEqual(expectedFullSemVer, versionVariables.FullSemVer); }