Пример #1
0
        public void SynchNow_OnNamedBranchAndDefaultBranchExists_DoesNotMergeWithIt()
        {
            using (var repo = new RepositorySetup("bob"))
            {
                if (repo.Synchronizer == null)
                {
                    repo.Synchronizer = repo.CreateSynchronizer();
                }
                repo.Synchronizer.SynchronizerAdjunct = new ProgrammableSynchronizerAdjunct("default");
                repo.AddAndCheckinFile("test.txt", "apple");
                var afterFirstCheckin = repo.CreateBookmarkHere();
                repo.ChangeFileAndCommit("test.txt", "pear", "second on default");

                afterFirstCheckin.Go();
                repo.Repository.BranchingHelper.Branch(new ConsoleProgress(), "animals");
                repo.Synchronizer.SynchronizerAdjunct = new ProgrammableSynchronizerAdjunct("animals");
                repo.ChangeFileAndCommit("test.txt", "dog", "first on animals");
                var animalHead = repo.CreateBookmarkHere();

                repo.AssertHeadCount(2);
                repo.CheckinAndPullAndMerge();
                repo.AssertHeadCount(2);
                animalHead.AssertRepoIsAtThisPoint();
            }
        }
Пример #2
0
 public void SynchNow_OnDefaultBranchAndAnotherBranchExists_DoesNotMergeWithIt()
 {
     using (var repo = new RepositorySetup("bob"))
     {
         repo.AddAndCheckinFile("test.txt", "hello");
         repo.AssertHeadCount(1);
         repo.ChangeFileOnNamedBranchAndComeBack("test.txt", "blah", "mybranch");
         //NB: this used to pass prior to hg 1.5, but, well, it shouldn't!
         //	Shouldn't there be two heads after the branch, above? (jh, April 2010)
         //			repo.AssertHeadCount(1);
         repo.ChangeFileAndCommit("test.txt", "hello there", "second");
         repo.AssertHeadCount(2);
         repo.CheckinAndPullAndMerge();
         repo.AssertHeadCount(2);
     }
 }
        public void Sync_ExistingRejectChangeSet_NotMergedIn()
        {
            using (var bob = new RepositorySetup("bob"))
            {
                bob.AddAndCheckinFile("test.txt", "original");

                bob.CreateRejectForkAndComeBack();

                bob.ChangeFileAndCommit("test.txt", "ok", "goodGuy");                 //move on so we have two distinct branches
                bob.AssertHeadCount(2);

                bob.CheckinAndPullAndMerge(null);

                Assert.AreEqual("goodGuy", bob.Repository.GetRevisionWorkingSetIsBasedOn().Summary);
                bob.AssertLocalRevisionNumber(3);
                bob.AssertHeadCount(2);
            }
        }
Пример #4
0
 public void SecondCheckin_Invalid_BacksOut()
 {
     using (var bob = new RepositorySetup("bob"))
     {
         bob.AddAndCheckinFile("test.chorusTest", "hello");
         bob.ChangeFile("test.chorusTest", ChorusTestFileHandler.GetInvalidContents());
         using (var cop = new CommitCop(bob.Repository, ChorusFileTypeHandlerCollection.CreateWithTestHandlerOnly(), bob.Progress))
         {
             Assert.That(cop.ValidationResult, Is.Not.Null.And.Not.Empty);
             bob.Repository.Commit(false, "bad data");
         }
         Debug.WriteLine(bob.Repository.GetLog(-1));
         bob.AssertHeadCount(1);
         bob.AssertLocalRevisionNumber(2);
         bob.AssertFileContents("test.chorusTest", "hello");
     }
 }
 public void Sync_FileLockedForReadingDuringMerge_LeftWithMultipleHeads()
 {
     HgRunner.TimeoutSecondsOverrideForUnitTests = 3;
     using (var bob = new RepositorySetup("bob"))
     {
         bob.ProjectFolderConfig.IncludePatterns.Add("*.txt");
         bob.AddAndCheckinFile("one.txt", "hello");
         using (var sally = new RepositorySetup("sally", bob))
         {
             bob.AddAndCheckinFile("one.txt", "hello-bob");
             using (sally.GetFileLockForReading("one.txt"))
             {
                 sally.CheckinAndPullAndMerge(bob);
             }
             sally.AssertHeadCount(2);
         }
     }
 }
Пример #6
0
 public void InitialFileCommit_Invalid_BacksOut()
 {
     using (var bob = new RepositorySetup("bob"))
     {
         bob.AddAndCheckinFile("validfile.chorustest", "valid contents");
         bob.ChangeFile("test.chorusTest", ChorusTestFileHandler.GetInvalidContents());
         using (var cop = new CommitCop(bob.Repository, ChorusFileTypeHandlerCollection.CreateWithTestHandlerOnly(), bob.Progress))
         {
             bob.Repository.AddAndCheckinFile("test.chorusTest");
             Assert.That(cop.ValidationResult, Does.Contain("Failed"));
         }
         Debug.WriteLine(bob.Repository.GetLog(-1));
         bob.AssertHeadCount(1);
         bob.AssertLocalRevisionNumber(2);
         bob.AssertFileDoesNotExistInRepository("test.chorusTest");
         bob.AssertFileExistsInRepository("validfile.chorustest");
     }
 }
Пример #7
0
 public void HasFileHandlers_ValidCommit_Validates_DoesNothing()
 {
     using (var bob = new RepositorySetup("bob"))
     {
         bob.AddAndCheckinFile("test.chorusTest", "hello");
         using (var cop = new CommitCop(bob.Repository, ChorusFileTypeHandlerCollection.CreateWithTestHandlerOnly(), bob.Progress))
         {
             bob.ChangeFile("test.chorusTest", "aloha");
             bob.AddAndCheckinFile("test2.chorusTest", "hi");
             Assert.That(cop.ValidationResult, Is.Null.Or.Empty);
         }
         bob.AssertHeadCount(1);
         bob.AssertLocalRevisionNumber(1);
         bob.AssertFileExistsInRepository("test2.chorusTest");
         bob.AssertFileContents("test.chorusTest", "aloha");
         bob.AssertFileContents("test2.chorusTest", "hi");
     }
 }
        public void Sync_MergeFailure_NoneOfTheOtherGuysFilesMakeItIntoWorkingDirectory()
        {
            using (var bob = new RepositorySetup("bob"))
            {
                bob.ProjectFolderConfig.IncludePatterns.Add("*.txt");
                bob.AddAndCheckinFile("aaa.txt", "apple");
                bob.AddAndCheckinFile("bbb.txt", "bread");
                bob.AddAndCheckinFile("zzz.txt", "zoo");
                using (var sally = new RepositorySetup("sally", bob))
                {
                    bob.AddAndCheckinFile("aaa.txt", "bob-apple");
                    bob.AddAndCheckinFile("bbb.txt", "bob-bread");
                    bob.AddAndCheckinFile("zzz.txt", "bob-zoo");
                    using (new FailureSimulator("TextMerger-bbb.txt"))
                    {
                        sally.AddAndCheckinFile("aaa.txt", "sally-apple");
                        sally.AddAndCheckinFile("bbb.txt", "sally-bread");
                        sally.AddAndCheckinFile("zzz.txt", "sally-zipper");
                        Assert.That(sally.CheckinAndPullAndMerge(bob).Succeeded, Is.False);

                        //make sure we ended up on Sally's revision, even though Bob's are newer
                        var currentRevision = sally.Repository.GetRevisionWorkingSetIsBasedOn();
                        Assert.AreEqual("sally", sally.Repository.GetRevision(currentRevision.Number.Hash).UserId);

                        //sally should see no changes, because it should all be rolled back
                        sally.AssertFileContents("aaa.txt", "sally-apple");
                        sally.AssertFileContents("bbb.txt", "sally-bread");
                        sally.AssertFileContents("zzz.txt", "sally-zipper");

//                        sally.ShowInTortoise();
                        sally.AssertHeadCount(2);
                        Assert.That(sally.GetProgressString(), Does.Not.Contain("creates new remote heads"));
                    }
                }
            }
            File.Delete(Path.Combine(Path.GetTempPath(), "TextMerger-bbb.txt"));
        }
 public void Sync_ModifiedFileIsInvalid_CheckedInButThenBackedOut()
 {
     /*
      *      @  changeset:   2
      |  summary:     [Backout due to validation Failure]
      |
      |      o  changeset:   1
      |  summary:     missing checkin description
      |
      |      o  changeset:   0
      |      summary:     Add test.chorusTest
      */
     using (var bob = new RepositorySetup("bob"))
     {
         bob.AddAndCheckinFile("test.chorusTest", "original");
         bob.AssertLocalRevisionNumber(0);
         bob.ChangeFile("test.chorusTest", ChorusTestFileHandler.GetInvalidContents());
         bob.CheckinAndPullAndMerge();
         bob.AssertLocalRevisionNumber(2);
         bob.AssertHeadCount(1);
         bob.AssertLocalRevisionNumber(int.Parse(bob.Repository.GetTip().Number.LocalRevisionNumber));
         Debug.WriteLine(bob.Repository.GetLog(-1));
     }
 }