public void CurrentBranchName()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            Assert.AreEqual("develop", gf.CurrentBranchLeafName);
        }
        public void CreateBugfixWithApostropheShouldReportAsInvalidWork()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X'");
        }
        public void ParseMasterBranchQuery()
        {
            var          gf    = new GitFlowWrapper(sampleRepoPath);
            const string query = "Branch name for production releases: [dev]";

            Assert.IsTrue(gf.IsMasterBranchQuery(query));
        }
        public void ParseHooksAndFiltersQuery()
        {
            var          gf    = new GitFlowWrapper(sampleRepoPath);
            const string query = "Hooks and filters directory? [../../../.git/hooks]";

            Assert.IsTrue(gf.IsHooksAndFiltersQuery(query));
        }
        public void ParseFeatureBranchQuery()
        {
            var          gf    = new GitFlowWrapper(sampleRepoPath);
            const string query = "Feature branches? [feature/]";

            Assert.IsTrue(gf.IsFeatureBranchQuery(query));
        }
        public void ParseBugfixBranchQuery()
        {
            var          gf    = new GitFlowWrapper(sampleRepoPath);
            const string query = "Bugfix branches? [bugfix/]";

            Assert.IsTrue(gf.IsBugfixBranchQuery(query));
        }
        public void ParseVersionTagPrefixQueryWithEmptyTag()
        {
            var          gf    = new GitFlowWrapper(sampleRepoPath);
            const string query = "Version tag prefix? []";

            Assert.IsTrue(gf.IsVersionTagPrefixQuery(query));
        }
        public void ParseHooksAndFiltersQuery()
        {
            var          gf    = new GitFlowWrapper(sampleRepoPath);
            const string query = "Hooks and filters directory? [c:/Users/jakobe/Source/Repos/GitFlowTest/.git/hooks]";

            Assert.IsTrue(gf.IsHooksAndFiltersQuery(query));
        }
        public void StartReleaseShouldPutUsOnReleaseBranch()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("2.0");

            Assert.IsTrue(gf.IsOnReleaseBranch);
        }
        public void CheckNotInitialized()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            Assert.IsFalse(gf.IsInitialized);
            gf.Init(new GitFlowRepoSettings());
            Assert.IsTrue(gf.IsInitialized);
        }
        public void StartFeatureShouldPutUsOnFeatureBranch()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("X");

            Assert.IsTrue(gf.IsOnFeatureBranch);
        }
        public void StartReleaseShouldPutUsOnReleaseBranch()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("2.0");

            Assert.IsTrue(gf.IsOnReleaseBranch);
        }
        public void GetAllReleases()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("1.0");

            Assert.AreEqual(1, gf.AllReleases.Count());
        }
        public void StartBugfixShouldPutUsOnBugfixBranch()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X");

            Assert.IsTrue(gf.IsOnBugfixBranch);
        }
        public void GetStatusBugfix()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X");
            Assert.AreEqual("X", gf.CurrentBranchLeafName);
            Assert.AreEqual(gf.CurrentStatus, "Bugfix: X");
        }
        public void GetAllHotfixes()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");

            Assert.AreEqual(1, gf.AllHotfixes.Count());
        }
        public void GetAllBugfixes()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X");
            gf.StartBugfix("Y");

            Assert.AreEqual(2, gf.AllBugfixes.Count());
        }
        public void StartFeatureWithSpaceShouldReplaceSpaceWithHyphen()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("Feature X");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "feature/Feature_X"));
            }
        }
        public void StartBugfixWithSubFolder()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("fd/Bugfix X");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "bugfix/fd/Bugfix_X"));
            }
        }
        public void StartRelease()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("1.0");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "release/1.0"));
            }
        }
        public void StartHotfix()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "hotfix/hf1"));
            }
        }
        public void FinishHotfixWithTagShouldTagRepo()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");
            gf.FinishHotfix("hf1", "1.2.3", false);
            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.AreEqual(1, repo.Tags.Count());
            }
        }
        public void FinishRelease()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("1.0");
            gf.FinishRelease("1.0");
            using (var repo = new Repository(sampleRepoPath))
            {
                //Release branch should be deleted (default option)
                Assert.IsFalse(repo.Branches.Any(b => !b.IsRemote && b.Name == "release/1.0"));
            }
        }
        public void FinishHotfix()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");
            gf.FinishHotfix("hf1");
            using (var repo = new Repository(sampleRepoPath))
            {
                //Hotfix branch should be deleted (default option)
                Assert.IsFalse(repo.Branches.Any(b => !b.IsRemote && b.Name == "hotfix/hf1"));
            }
        }
        public void StartTwoBugfixesInParallel()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X");
            gf.StartBugfix("Y");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "bugfix/X"));
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "bugfix/Y"));
            }
        }
 public void GitFlowInitWithInvalidMasterBranchShouldFail()
 {
     try
     {
         var gf = new GitFlowWrapper(sampleRepoPath);
         gf.Init(new GitFlowRepoSettings {
             MasterBranch = "master2"
         });
     }
     catch (Exception e)
     {
         Assert.IsTrue(e.Message.Contains("master2"));
     }
 }
        public void FinishBugfixShouldRemoveIt()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X");
            gf.StartBugfix("Y");

            Assert.AreEqual(2, gf.AllBugfixes.Count());

            gf.FinishBugfix("X");

            Assert.AreEqual(1, gf.AllBugfixes.Count());
        }
        public void FinishFeatureKeepLocalBranch()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("X");

            Assert.AreEqual(1, gf.AllFeatures.Count());

            gf.FinishFeature("X", deleteLocalBranch: false);

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "feature/X"));
            }
        }
        public void FinishBugfixSquashChanges()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.Init(new GitFlowRepoSettings());
            gf.StartBugfix("X");

            Assert.AreEqual(1, gf.AllBugfixes.Count());

            gf.FinishBugfix("X", squash: true);

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "bugfix/X"));
            }
        }
        public void Init()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);

            gf.CommandOutputDataReceived += (sender, args) => { Console.Write(args.Output); };
            var result = gf.Init(new GitFlowRepoSettings());

            Assert.IsTrue(result.Success);

            Assert.IsTrue(gf.IsOnDevelopBranch);
            using (var repo = new Repository(sampleRepoPath))
            {
                var branches = repo.Branches.Where(b => !b.IsRemote).ToList();
                Assert.AreEqual(2, branches.Count());
                Assert.IsTrue(branches.Any(b => b.Name == "master"));
                Assert.IsTrue(branches.Any(b => b.Name == "develop"));
            }
        }
        public void StartHotfix()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "hotfix/hf1"));
            }
        }
 public void FinishHotfix()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     gf.StartHotfix("hf1");
     gf.FinishHotfix("hf1");
     using (var repo = new Repository(sampleRepoPath))
     {
         //Hotfix branch should be deleted (default option)
         Assert.IsFalse(repo.Branches.Any(b => !b.IsRemote && b.Name == "hotfix/hf1"));
     }
 }
 public void GitFlowInitWithInvalidMasterBranchShouldFail()
 {
     try
     {
         var gf = new GitFlowWrapper(sampleRepoPath);
         gf.Init(new GitFlowRepoSettings {MasterBranch = "master2"});
     }
     catch (Exception e)
     {
         Assert.IsTrue(e.Message.Contains("master2"));
     }
 }
 public void ParseMasterBranchQuery()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     const string query = "Branch name for production releases: [dev]";
     Assert.IsTrue(gf.IsMasterBranchQuery(query));
 }
        public void GetAllFeatures()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("X");
            gf.StartFeature("Y");

            Assert.AreEqual(2, gf.AllFeatures.Count());
        }
 public void CurrentBranchName()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     Assert.AreEqual("develop", gf.CurrentBranchLeafName);
 }
        public void StartTwoFeaturesInParallel()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("X");
            gf.StartFeature("Y");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "feature/X"));
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "feature/Y"));
            }
        }
        public void FinishFeatureShouldRemoveIt()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("X");
            gf.StartFeature("Y");

            Assert.AreEqual(2, gf.AllFeatures.Count());

            gf.FinishFeature("X");

            Assert.AreEqual(1, gf.AllFeatures.Count());
        }
 public void ParseHooksAndFiltersQuery()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     const string query = "Hooks and filters directory? [c:/Users/jakobe/Source/Repos/GitFlowTest/.git/hooks]";
     Assert.IsTrue(gf.IsHooksAndFiltersQuery(query));
 }
        public void GetAllHotfixes()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");

            Assert.AreEqual(1, gf.AllHotfixes.Count());
        }
        public void GetAllReleases()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("1.0");

            Assert.AreEqual(1, gf.AllReleases.Count());
        }
 public void MasterBranchNameCanBeRetrievedWithADifferentName()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings { MasterBranch = "somemaster" });
     Assert.AreEqual("somemaster", gf.MasterBranchName);
 }
 public void GetStatus()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     gf.StartFeature("X");
     Assert.AreEqual("X", gf.CurrentBranchLeafName);
     Assert.AreEqual(gf.CurrentStatus, "Feature: X");
 }
 public void DevelopBranchNameCanBeRetrieved()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     Assert.AreEqual("develop", gf.DevelopBranchName);
 }
 public void FinishRelease()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     gf.StartRelease("1.0");
     gf.FinishRelease("1.0");
     using (var repo = new Repository(sampleRepoPath))
     {
         //Release branch should be deleted (default option)
         Assert.IsFalse(repo.Branches.Any(b => !b.IsRemote && b.Name == "release/1.0"));
     }
 }
        public void StartRelease()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartRelease("1.0");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "release/1.0"));
            }
        }
 public void ParseVersionTagPrefixQueryWithEmptyTag()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     const string query = "Version tag prefix? []";
     Assert.IsTrue(gf.IsVersionTagPrefixQuery(query));
 }
 public void FinishHotfixWithTagShouldTagRepo()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     gf.StartHotfix("hf1");
     gf.FinishHotfix("hf1", "1.2.3", false);
     using (var repo = new Repository(sampleRepoPath))
     {
         Assert.AreEqual(1, repo.Tags.Count());
     }
 }
 public void ParseFeatureBranchQuery()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     const string query = "Feature branches? [feature/]";
     Assert.IsTrue(gf.IsFeatureBranchQuery(query));
 }
 public void DevelopBranchNameCanBeRetrievedWithADifferentName()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings { DevelopBranch = "somedevelop" });
     Assert.AreEqual("somedevelop", gf.DevelopBranchName);
 }
        public void Init()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.CommandOutputDataReceived += (sender, args) => { Console.Write(args.Output); };
            var result = gf.Init(new GitFlowRepoSettings());
            Assert.IsTrue(result.Success);

            Assert.IsTrue(gf.IsOnDevelopBranch);
            using (var repo = new Repository(sampleRepoPath))
            {
                var branches = repo.Branches.Where(b => !b.IsRemote).ToList();
                Assert.AreEqual(2, branches.Count());
                Assert.IsTrue(branches.Any(b => b.Name == "master"));
                Assert.IsTrue(branches.Any(b => b.Name == "develop"));
            }
        }
        public void StartHotfixShouldPutUsOnHotfixBranch()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartHotfix("hf1");

            Assert.IsTrue(gf.IsOnHotfixBranch);
        }
        public void StartFeatureWithSpaceShouldReplaceSpaceWithUnderscore()
        {
            var gf = new GitFlowWrapper(sampleRepoPath);
            gf.Init(new GitFlowRepoSettings());
            gf.StartFeature("Feature X");

            using (var repo = new Repository(sampleRepoPath))
            {
                Assert.IsTrue(repo.Branches.Any(b => !b.IsRemote && b.Name == "feature/Feature_X"));
            }
        }
 public void CheckNotInitialized()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     Assert.IsFalse(gf.IsInitialized);
     gf.Init(new GitFlowRepoSettings());
     Assert.IsTrue(gf.IsInitialized);
 }
 public void MasterBranchNameCanBeRetrieved()
 {
     var gf = new GitFlowWrapper(sampleRepoPath);
     gf.Init(new GitFlowRepoSettings());
     Assert.AreEqual("master", gf.MasterBranchName);
 }