예제 #1
0
        public void CacheFileIsMissing()
        {
            var stringBuilder = new StringBuilder();

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

            var logAppender = new TestLogAppender(Action);

            log = new Log(logAppender);

            using var fixture = new EmptyRepositoryFixture();

            var gitVersionOptions = new GitVersionOptions {
                WorkingDirectory = fixture.RepositoryPath
            };

            fixture.Repository.MakeACommit();
            var gitVersionCalculator = GetGitVersionCalculator(gitVersionOptions, log, fixture.Repository.ToGitRepository());

            gitVersionCalculator.CalculateVersionVariables();

            var logsMessages = stringBuilder.ToString();

            logsMessages.ShouldContain("yml not found", Case.Insensitive, logsMessages);
        }
예제 #2
0
        public void NoWarnOnGitVersionYmlFile()
        {
            SetupConfigFileContent(string.Empty);

            var stringLogger = string.Empty;

            void Action(string info) => stringLogger = info;

            var logAppender = new TestLogAppender(Action);
            var log         = new Log(logAppender);

            var options = Options.Create(new GitVersionOptions {
                WorkingDirectory = repoPath
            });
            var sp = ConfigureServices(services =>
            {
                services.AddSingleton(options);
                services.AddSingleton <ILog>(log);
            });

            configProvider = sp.GetService <IConfigProvider>();

            configProvider.Provide(repoPath);

            stringLogger.Length.ShouldBe(0);
        }
예제 #3
0
 public void SetUp()
 {
     TestLogAppender.Reset();
     testContainer = new WindsorContainer();
     testContainer.Kernel.Resolver.AddSubResolver(new ArrayResolver(testContainer.Kernel));
     testContainer.Install(new WindsorInstaller());
     testContainer.Register(Castle.MicroKernel.Registration.Component.For <TestLoggingTarget>());
 }
예제 #4
0
        public void Then_A_Method_With_Debug_Should_Log_Stacktrace()
        {
            var instance = testContainer.Resolve <TestLoggingTarget>();

            instance.DebugMethod();

            TestLogAppender.WaitOne();

            Assert.That(TestLogAppender.LastEvent.RenderedMessage.Contains("Stacktrace"));
        }
예제 #5
0
        public void Then_A_Method_With_Info_Should_Be_Logged_Using_Info_Category()
        {
            var instance = testContainer.Resolve <TestLoggingTarget>();

            instance.InfoMethod();

            TestLogAppender.WaitOne();

            Assert.That(TestLogAppender.LastEvent, Is.Not.Null);
            Assert.That(TestLogAppender.LastEvent.Level, Is.EqualTo(Level.Info));
            Assert.That(TestLogAppender.LastEvent.RenderedMessage.Contains("InfoMethod"));
        }
예제 #6
0
        public void Then_A_Method_Call_That_Throws_Should_Be_Logged()
        {
            var instance = testContainer.Resolve <TestLoggingTarget>();

            try { instance.ExceptionMethod(); } catch {}

            TestLogAppender.WaitOne();

            Assert.That(TestLogAppender.LastEvent, Is.Not.Null);
            Assert.That(TestLogAppender.LastEvent.Level, Is.EqualTo(Level.Error));
            Assert.That(TestLogAppender.LastEvent.RenderedMessage.Contains("A test error that should be visible to the logging framework ... "));
        }
예제 #7
0
        public void Then_A_Method_Call_Should_Be_Logged()
        {
            var instance = testContainer.Resolve <TestLoggingTarget>();

            instance.DebugMethod();

            TestLogAppender.WaitOne();

            Assert.That(TestLogAppender.LastEvent, Is.Not.Null);
            Assert.That(TestLogAppender.LastEvent.Level, Is.EqualTo(Level.Debug));
            Assert.That(TestLogAppender.LastEvent.RenderedMessage.Contains("DebugMethod"));
        }
예제 #8
0
        public void UsernameWithoutPassword()
        {
            var s = string.Empty;

            void Action(string info) => s = info;

            var logAppender = new TestLogAppender(Action);
            var log         = new Log(logAppender);

            const string repoUrl = "http://[email protected]/DefaultCollection/_git/CAS";

            log.Info(repoUrl);

            s.Contains(repoUrl).ShouldBe(true);
        }
예제 #9
0
        public void LoggerObscuresPassword(string protocol)
        {
            const string username = "******";
            const string password = "******";
            var          s        = string.Empty;

            void Action(string info) => s = info;

            var logAppender = new TestLogAppender(Action);
            var log         = new Log(logAppender);

            log.Info($"{protocol}://{username}:{password}@workspace.visualstudio.com/DefaultCollection/_git/CAS");

            s.Contains(password).ShouldBe(false);
        }
예제 #10
0
        public void UpdateWixVersionFileWhenFileAlreadyExists()
        {
            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 sp = ConfigureServices(service =>
            {
                service.AddSingleton <ILog>(log);
            });

            var fileSystem       = sp.GetService <IFileSystem>();
            var variableProvider = sp.GetService <IVariableProvider>();
            var versionVariables = variableProvider.GetVariablesFor(semVer, config, false);

            using var wixVersionFileUpdater = sp.GetService <IWixVersionFileUpdater>();

            // fake an already existing file
            var file = Path.Combine(workingDir, WixVersionFileUpdater.WixVersionFileName);

            fileSystem.WriteAllText(file, new string('x', 1024 * 1024));

            wixVersionFileUpdater.Execute(versionVariables, new WixVersionContext(workingDir));

            fileSystem
            .ReadAllText(file)
            .ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved")));
        }
예제 #11
0
            public void NoWarnOnCustomYmlFileOutsideRepoPath()
            {
                var stringLogger = string.Empty;

                void Action(string info) => stringLogger = info;

                var logAppender = new TestLogAppender(Action);
                var log         = new Log(logAppender);

                var sp = GetServiceProvider(gitVersionOptions, log);

                configFileLocator = sp.GetService <IConfigFileLocator>();
                fileSystem        = sp.GetService <IFileSystem>();

                SetupConfigFileContent(string.Empty, path: @"c:\\Unrelated\\path");

                var configurationProvider = sp.GetService <IConfigProvider>();

                configurationProvider.Provide(repoPath);
                stringLogger.Length.ShouldBe(0);
            }
예제 #12
0
        public void NoWarnOnCustomYmlFile()
        {
            var stringLogger = string.Empty;

            void Action(string info) => stringLogger = info;

            var logAppender = new TestLogAppender(Action);
            var log         = new Log(logAppender);

            var sp = GetServiceProvider(this.gitVersionOptions, log);

            this.configFileLocator = sp.GetService <IConfigFileLocator>();
            this.fileSystem        = sp.GetService <IFileSystem>();

            SetupConfigFileContent(string.Empty);

            var configurationProvider = sp.GetService <IConfigProvider>();

            configurationProvider.Provide(this.repoPath);
            stringLogger.Length.ShouldBe(0);
        }
예제 #13
0
        public ProgramFixture(string workingDirectory = "")
        {
            this.workingDirectory = workingDirectory;
            var  logBuilder  = new StringBuilder();
            var  logAppender = new TestLogAppender(m => logBuilder.AppendLine(m));
            ILog log         = new Log(logAppender);

            var      consoleBuilder = new StringBuilder();
            IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder);

            environment = new TestEnvironment();

            Overrides.Add(services =>
            {
                services.AddSingleton(log);
                services.AddSingleton(consoleAdapter);
                services.AddSingleton(environment);
            });

            logger = new Lazy <string>(() => logBuilder.ToString());
            output = new Lazy <string>(() => consoleAdapter.ToString());
        }
예제 #14
0
        public void CacheFileExistsOnDisk()
        {
            const string versionCacheFileContent = @"
        Major: 4
        Minor: 10
        Patch: 3
        PreReleaseTag: test.19
        PreReleaseTagWithDash: -test.19
        PreReleaseLabel: test
        PreReleaseLabelWithDash: -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
        EscapedBranchName: 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
        UncommittedChanges: 0
        ";

            var stringBuilder = new StringBuilder();

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

            var logAppender = new TestLogAppender(Action);

            log = new Log(logAppender);

            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);
            versionVariables = gitVersionCalculator.CalculateVersionVariables();
            versionVariables.AssemblySemVer.ShouldBe("4.10.3.0");

            var logsMessages = stringBuilder.ToString();

            logsMessages.ShouldContain("Deserializing version variables from cache file", Case.Insensitive, logsMessages);
        }