public void GetResult_Feature_Branch_Changes_Version_Resets_On_Merge()
        {
            // Arrange
            using var fixture = new SimpleVersionRepositoryFixture(_serializer);
            var config = fixture.GetConfig();

            fixture.MakeACommit();
            fixture.MakeACommit();
            fixture.MakeACommit();
            fixture.MakeACommit();

            fixture.BranchTo("feature/other");
            fixture.MakeACommit();

            config.Version = "0.1.1";
            fixture.SetConfig(config);

            fixture.MakeACommit();
            fixture.MakeACommit();

            fixture.Checkout("master");
            fixture.MergeNoFF("feature/other");

            var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>());

            // Act
            var result = sut.GetResult();

            result.Height.Should().Be(1);
        }
        public void GetResult_Modified_No_Version_Or_Label_Changes_Does_Not_Reset()
        {
            // Arrange
            using var fixture = new SimpleVersionRepositoryFixture(_serializer);

            fixture.MakeACommit();
            fixture.MakeACommit();
            fixture.MakeACommit();
            fixture.MakeACommit();

            var config = fixture.GetConfig();

            config.Metadata.Add("example");
            fixture.SetConfig(config);

            var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>());

            // Act
            var result = sut.GetResult();

            // Assert
            result.Height.Should().Be(6);
        }
        public void GetResult_Malformed_Json_Committed_Counts_As_No_Change()
        {
            // Arrange
            using var fixture = new SimpleVersionRepositoryFixture(_serializer);
            fixture.MakeACommit();
            fixture.MakeACommit();
            fixture.MakeACommit();

            // Write the version file (with parsing errors)
            var file = Path.Combine(fixture.RepositoryPath, Constants.ConfigurationFileName);

            using (var writer = File.AppendText(file))
            {
                writer.WriteLine("This will not parse");
                writer.Flush();
            }

            fixture.Repository.Index.Add(Constants.ConfigurationFileName);
            fixture.Repository.Index.Write();
            fixture.MakeACommit(); // 5
            fixture.MakeACommit(); // 6
            fixture.MakeACommit(); // 7
            fixture.MakeACommit(); // 8

            var config = new RepositoryConfiguration {
                Version = "0.1.0"
            };

            fixture.SetConfig(config);

            var sut = new GitVersionRepository(fixture.RepositoryPath, _environment, _serializer, Enumerable.Empty <IVersionProcessor>());

            // Act
            var result = sut.GetResult();

            result.Height.Should().Be(9);
        }