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 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(); } }
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.IsFalse(string.IsNullOrEmpty(cop.ValidationResult)); 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 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, Is.StringContaining("Failed")); } Debug.WriteLine(bob.Repository.GetLog(-1)); bob.AssertHeadCount(1); bob.AssertLocalRevisionNumber(2); bob.AssertFileDoesNotExistInRepository("test.chorusTest"); bob.AssertFileExistsInRepository("validfile.chorustest"); } }
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.IsNullOrEmpty(cop.ValidationResult); } bob.AssertHeadCount(1); bob.AssertLocalRevisionNumber(1); bob.AssertFileExistsInRepository("test2.chorusTest"); bob.AssertFileContents("test.chorusTest", "aloha"); bob.AssertFileContents("test2.chorusTest", "hi"); } }
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)); } }
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); } }
public void Sync_FileLockedForReadingDuringMerge_LeftWithMultipleHeads() { HgRunner.TimeoutSecondsOverrideForUnitTests = 1; 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); } } }
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.IsFalse(sally.CheckinAndPullAndMerge(bob).Succeeded); //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.IsFalse(sally.GetProgressString().Contains("creates new remote heads")); } } } File.Delete(Path.Combine(Path.GetTempPath(), "TextMerger-bbb.txt")); }