public void LongModifiedFileIsfilteredOut() { // File is in repo in its shorter version, but now it has grown too large. using (var bob = new RepositorySetup("bob")) { const string fileName = "test.chorusTest"; bob.ChangeFile(fileName, _goodData); var fullPathname = Path.Combine(bob.ProjectFolderConfig.FolderPath, fileName); var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; bob.Repository.AddAndCheckinFile(fullPathname); bob.AssertLocalRevisionNumber(0); bob.AssertFileContents(fullPathname, _goodData); bob.ChangeFile(fileName, _longData); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.chorusTest"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, _handlersColl); bob.Repository.Commit(false, "test"); bob.AssertLocalRevisionNumber(1); // 'forget' marks it as deleted in the repo. bob.AssertFileContents(fullPathname, _longData); Assert.IsFalse(string.IsNullOrEmpty(result)); var shortpath = fullPathname.Replace(pathToRepo, ""); Assert.IsTrue(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); } }
public void Sync_FileLockedForWritingDuringUpdate_GetUpdatedFileOnceLockIsGone() { 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.GetFileLockForWriting("one.txt")) { // Note: Mono succeeds here Assert.That(sally.CheckinAndPullAndMerge(bob).Succeeded, Is.False, "CheckinAndPullAndMerge should have failed"); sally.AssertFileContents("one.txt", "hello"); } sally.AssertSingleHead(); //ok, now whatever was holding that file is done with it, and we try again Assert.That(sally.CheckinAndPullAndMerge(bob).Succeeded, Is.True, "ChecinAndPullAndMerge(bob) should have succeeded"); sally.AssertFileContents("one.txt", "hello-bob"); } } }
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 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"); } }