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);
        }
Beispiel #2
0
        private IGitVersionCalculator GetGitVersionCalculator(Arguments arguments, ILog logger = null)
        {
            sp = GetServiceProvider(arguments, logger);

            fileSystem      = sp.GetService <IFileSystem>();
            log             = sp.GetService <ILog>();
            gitVersionCache = sp.GetService <IGitVersionCache>();

            return(sp.GetService <IGitVersionCalculator>());
        }
Beispiel #3
0
        private IGitVersionCalculateTool GetGitVersionCalculator(GitVersionOptions gitVersionOptions, ILog logger = null, IGitRepository repository = null, IFileSystem fs = null)
        {
            sp = GetServiceProvider(gitVersionOptions, logger, repository, fs);

            fileSystem      = sp.GetService <IFileSystem>();
            log             = sp.GetService <ILog>();
            gitVersionCache = sp.GetService <IGitVersionCache>();

            return(sp.GetService <IGitVersionCalculateTool>());
        }
Beispiel #4
0
    private IGitVersionCalculateTool GetGitVersionCalculator(GitVersionOptions gitVersionOptions, ILog?logger = null, IGitRepository?repository = null, IFileSystem?fs = null)
    {
        this.sp = GetServiceProvider(gitVersionOptions, logger, repository, fs);

        this.fileSystem      = this.sp.GetRequiredService <IFileSystem>();
        this.log             = this.sp.GetRequiredService <ILog>();
        this.gitVersionCache = this.sp.GetRequiredService <IGitVersionCache>();

        return(this.sp.GetRequiredService <IGitVersionCalculateTool>());
    }
        private IGitVersionTool GetGitVersionCalculator(Arguments arguments, ILog logger = null, IRepository repository = null, IFileSystem fs = null)
        {
            sp = GetServiceProvider(arguments, logger, repository, fs);

            fileSystem      = sp.GetService <IFileSystem>();
            log             = sp.GetService <ILog>();
            gitVersionCache = sp.GetService <IGitVersionCache>();
            gitPreparer     = sp.GetService <IGitPreparer>();

            return(sp.GetService <IGitVersionTool>());
        }
 public GitVersionCalculator(ILog log, IConfigProvider configProvider,
                             IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider,
                             IOptions <Arguments> options, IGitVersionCacheKeyFactory cacheKeyFactory)
 {
     this.log                   = log ?? throw new ArgumentNullException(nameof(log));
     this.configProvider        = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
     this.gitVersionCache       = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));
     this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
     this.variableProvider      = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
     this.options               = options ?? throw new ArgumentNullException(nameof(options));
     this.cacheKeyFactory       = cacheKeyFactory ?? throw new ArgumentNullException(nameof(cacheKeyFactory));
 }
 public GitVersionCalculator(ILog log, IConfigProvider configProvider, IBuildServerResolver buildServerResolver,
                             IGitVersionCache gitVersionCache, IGitVersionFinder gitVersionFinder, IGitPreparer gitPreparer, IVariableProvider variableProvider,
                             IOptions <Arguments> options, IGitVersionCacheKeyFactory cacheKeyFactory)
 {
     this.log                 = log ?? throw new ArgumentNullException(nameof(log));
     this.configProvider      = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
     this.buildServerResolver = buildServerResolver ?? throw new ArgumentNullException(nameof(buildServerResolver));
     this.gitVersionCache     = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));
     this.gitVersionFinder    = gitVersionFinder ?? throw new ArgumentNullException(nameof(gitVersionFinder));
     this.gitPreparer         = gitPreparer ?? throw new ArgumentNullException(nameof(gitPreparer));
     this.variableProvider    = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
     this.options             = options ?? throw new ArgumentNullException(nameof(options));
     this.cacheKeyFactory     = cacheKeyFactory ?? throw new ArgumentNullException(nameof(cacheKeyFactory));
 }
        public void SetUp()
        {
            fileSystem          = new FileSystem();
            environment         = new TestEnvironment();
            log                 = new NullLog();
            configFileLocator   = new DefaultConfigFileLocator(fileSystem, log);
            buildServerResolver = new BuildServerResolver(null, log);
            gitVersionCache     = new GitVersionCache(fileSystem, log);
            metaDataCalculator  = new MetaDataCalculator();
            var baseVersionCalculator     = new TestBaseVersionStrategiesCalculator(log);
            var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
            var nextVersionCalculator     = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);

            gitVersionFinder = new GitVersionFinder(log, nextVersionCalculator);
        }
Beispiel #9
0
 public GitVersionCalculator(IFileSystem fileSystem, ILog log, IConfigFileLocator configFileLocator,
                             IConfigProvider configProvider,
                             IBuildServerResolver buildServerResolver, IGitVersionCache gitVersionCache,
                             IGitVersionFinder gitVersionFinder, IGitPreparer gitPreparer, IVariableProvider variableProvider, IOptions <Arguments> options)
 {
     this.fileSystem          = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
     this.log                 = log ?? throw new ArgumentNullException(nameof(log));
     this.configFileLocator   = configFileLocator ?? throw new ArgumentNullException(nameof(configFileLocator));
     this.configProvider      = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
     this.buildServerResolver = buildServerResolver ?? throw new ArgumentNullException(nameof(buildServerResolver));
     this.gitVersionCache     = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));
     this.gitVersionFinder    = gitVersionFinder ?? throw new ArgumentNullException(nameof(gitVersionFinder));
     this.gitPreparer         = gitPreparer ?? throw new ArgumentNullException(nameof(gitPreparer));
     this.variableProvider    = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
     this.arguments           = options.Value;
 }
        public void CacheFileIsMissing()
        {
            var stringBuilder = new StringBuilder();

            void Action(string s) => stringBuilder.AppendLine(s);

            var logAppender = new TestLogAppender(Action);

            log             = new Log(logAppender);
            gitVersionCache = new GitVersionCache(fileSystem, log);

            RepositoryScope();
            var logsMessages = stringBuilder.ToString();

            logsMessages.ShouldContain("yml not found", () => logsMessages);
        }
    public GitVersionCalculateTool(ILog log, INextVersionCalculator nextVersionCalculator,
                                   IVariableProvider variableProvider, IGitPreparer gitPreparer,
                                   IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory,
                                   IOptions <GitVersionOptions> options, Lazy <GitVersionContext> versionContext)
    {
        this.log = log.NotNull();

        this.nextVersionCalculator = nextVersionCalculator.NotNull();
        this.variableProvider      = variableProvider.NotNull();
        this.gitPreparer           = gitPreparer.NotNull();

        this.cacheKeyFactory = cacheKeyFactory.NotNull();
        this.gitVersionCache = gitVersionCache.NotNull();

        this.options        = options.NotNull();
        this.versionContext = versionContext.NotNull();
    }
Beispiel #12
0
    public GitVersionCalculateTool(ILog log, INextVersionCalculator nextVersionCalculator,
                                   IVariableProvider variableProvider, IGitPreparer gitPreparer,
                                   IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory,
                                   IOptions <GitVersionOptions> options, Lazy <GitVersionContext> versionContext)
    {
        this.log = log ?? throw new ArgumentNullException(nameof(log));

        this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
        this.variableProvider      = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
        this.gitPreparer           = gitPreparer ?? throw new ArgumentNullException(nameof(gitPreparer));

        this.cacheKeyFactory = cacheKeyFactory ?? throw new ArgumentNullException(nameof(cacheKeyFactory));
        this.gitVersionCache = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));

        this.options        = options ?? throw new ArgumentNullException(nameof(options));
        this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
    }
Beispiel #13
0
        public GitVersionTool(ILog log, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider, IGitPreparer gitPreparer,
                              IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory,
                              IOutputGenerator outputGenerator, IWixVersionFileUpdater wixVersionFileUpdater, IGitVersionInfoGenerator gitVersionInfoGenerator, IAssemblyInfoFileUpdater assemblyInfoFileUpdater,
                              IOptions <GitVersionOptions> options, Lazy <GitVersionContext> versionContext)
        {
            this.log = log ?? throw new ArgumentNullException(nameof(log));

            this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
            this.variableProvider      = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
            this.gitPreparer           = gitPreparer ?? throw new ArgumentNullException(nameof(gitPreparer));

            this.cacheKeyFactory = cacheKeyFactory ?? throw new ArgumentNullException(nameof(cacheKeyFactory));
            this.gitVersionCache = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));

            this.outputGenerator         = outputGenerator ?? throw new ArgumentNullException(nameof(outputGenerator));
            this.wixVersionFileUpdater   = wixVersionFileUpdater ?? throw new ArgumentNullException(nameof(wixVersionFileUpdater));
            this.gitVersionInfoGenerator = gitVersionInfoGenerator ?? throw new ArgumentNullException(nameof(gitVersionInfoGenerator));
            this.assemblyInfoFileUpdater = assemblyInfoFileUpdater ?? throw new ArgumentNullException(nameof(gitVersionInfoGenerator));

            this.options        = options ?? throw new ArgumentNullException(nameof(options));
            this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));
        }
Beispiel #14
0
        public GitVersionTool(ILog log, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider, IConsole console,
                              IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory, IBuildServerResolver buildServerResolver,
                              IWixVersionFileUpdater wixVersionFileUpdater, IGitVersionInformationGenerator gitVersionInformationGenerator, IAssemblyInfoFileUpdater assemblyInfoFileUpdater,
                              IOptions <Arguments> options, Lazy <GitVersionContext> versionContext)
        {
            this.log     = log ?? throw new ArgumentNullException(nameof(log));
            this.console = console ?? throw new ArgumentNullException(nameof(console));

            this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
            this.variableProvider      = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));

            this.cacheKeyFactory = cacheKeyFactory ?? throw new ArgumentNullException(nameof(cacheKeyFactory));
            this.gitVersionCache = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));

            this.wixVersionFileUpdater          = wixVersionFileUpdater ?? throw new ArgumentNullException(nameof(wixVersionFileUpdater));
            this.gitVersionInformationGenerator = gitVersionInformationGenerator ?? throw new ArgumentNullException(nameof(gitVersionInformationGenerator));
            this.assemblyInfoFileUpdater        = assemblyInfoFileUpdater ?? throw new ArgumentNullException(nameof(gitVersionInformationGenerator));

            this.options        = options ?? throw new ArgumentNullException(nameof(options));
            this.versionContext = versionContext ?? throw new ArgumentNullException(nameof(versionContext));

            buildServer = buildServerResolver.Resolve();
        }
        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
        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
        ";

            RepositoryScope((fixture, vv) =>
            {
                fileSystem.WriteAllText(vv.FileName, versionCacheFileContent);

                var arguments = new Arguments
                {
                    TargetPath = fixture.RepositoryPath
                };

                var gitPreparer = new GitPreparer(log, environment, Options.Create(arguments));

                gitVersionCache    = new GitVersionCache(fileSystem, log);
                var cacheDirectory = gitVersionCache.GetCacheDirectory(gitPreparer);

                var cacheDirectoryTimestamp = fileSystem.GetLastDirectoryWrite(cacheDirectory);

                arguments = new Arguments {
                    TargetPath = fixture.RepositoryPath, OverrideConfig = new Config {
                        TagPrefix = "prefix"
                    }
                };

                var gitVersionCalculator = GetGitVersionCalculator(arguments);
                vv = gitVersionCalculator.CalculateVersionVariables();

                vv.AssemblySemVer.ShouldBe("0.1.0.0");

                var cachedDirectoryTimestampAfter = fileSystem.GetLastDirectoryWrite(cacheDirectory);
                cachedDirectoryTimestampAfter.ShouldBe(cacheDirectoryTimestamp, () => "Cache was updated when override config was set");
            });
        }
        public void CacheFileExistsOnDisk()
        {
            const string versionCacheFileContent = @"
        Major: 4
        Minor: 10
        Patch: 3
        PreReleaseTag: test.19
        PreReleaseTagWithDash: -test.19
        PreReleaseLabel: test
        PreReleaseNumber: 19
        WeightedPreReleaseNumber: 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
        Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
        ShortSha: dd2a29af
        NuGetVersionV2: 4.10.3-test0019
        NuGetVersion: 4.10.3-test0019
        NuGetPreReleaseTagV2: test0019
        NuGetPreReleaseTag: test0019
        VersionSourceSha: 4.10.2
        CommitsSinceVersionSource: 19
        CommitsSinceVersionSourcePadded: 0019
        CommitDate: 2015-11-10
        ";

            var stringBuilder = new StringBuilder();

            void Action(string s) => stringBuilder.AppendLine(s);

            var logAppender = new TestLogAppender(Action);

            log = new Log(logAppender);

            gitVersionCache = new GitVersionCache(fileSystem, log);

            RepositoryScope(log, (fixture, vv) =>
            {
                fileSystem.WriteAllText(vv.FileName, versionCacheFileContent);

                var arguments = new Arguments {
                    TargetPath = fixture.RepositoryPath
                };
                var gitVersionCalculator = GetGitVersionCalculator(arguments);

                vv = gitVersionCalculator.CalculateVersionVariables();
                vv.AssemblySemVer.ShouldBe("4.10.3.0");
            });

            var logsMessages = stringBuilder.ToString();

            logsMessages.ShouldContain("Deserializing version variables from cache file", () => logsMessages);
        }