public void LargeMp3FileIsNotAllowed() { using (var bob = new RepositorySetup("bob")) { const string fileName = "whopper.Mp3"; var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } bob.ChangeFile(fileName, megabyteLongData); var fullPathname = Path.Combine(bob.ProjectFolderConfig.FolderPath, fileName); var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; bob.Repository.TestOnlyAddSansCommit(fileName); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.IncludePatterns.Clear(); LiftFolder.AddLiftFileInfoToFolderConfiguration(config); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.IsFalse(string.IsNullOrEmpty(result)); var shortpath = fullPathname.Replace(pathToRepo, ""); Assert.IsTrue(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); } }
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 ExplicitlyExcludedNonexistantFileNotFiltered() { using (var bob = new RepositorySetup("bob")) { const string largeDictionaryFilename = "ghost.dic"; var largeDictionaryPathname = Path.Combine("nestedFolder", largeDictionaryFilename); var fullDictionaryPathname = Path.Combine(bob.ProjectFolderConfig.FolderPath, largeDictionaryPathname); var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; const string randomFile = "random.txt"; bob.ChangeFile(randomFile, "Some text."); var fullRandomPathname = Path.Combine(bob.ProjectFolderConfig.FolderPath, randomFile); bob.Repository.TestOnlyAddSansCommit(fullRandomPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.ExcludePatterns.Add(Path.Combine("nestedFolder", "ghost.dic")); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.*"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.IsTrue(string.IsNullOrEmpty(result)); var shortpath = fullDictionaryPathname.Replace(pathToRepo, ""); Assert.IsTrue(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); shortpath = fullRandomPathname.Replace(pathToRepo, ""); Assert.IsFalse(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); } }
public void LongAddedFileIsfilteredOut() { using (var bob = new RepositorySetup("bob")) { const string fileName = "test.chorusTest"; bob.ChangeFile(fileName, _longData); var fullPathname = Path.Combine(bob.ProjectFolderConfig.FolderPath, fileName); var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; bob.Repository.TestOnlyAddSansCommit(fullPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.chorusTest"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, _handlersColl); Assert.IsFalse(string.IsNullOrEmpty(result)); var shortpath = fullPathname.Replace(pathToRepo, ""); Assert.IsTrue(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); } }
public void LongWavFileIsFilteredOutAndNotInRepo() { using (var bob = new RepositorySetup("bob")) { var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } const string fileName = "big.wav"; bob.ChangeFile(fileName, megabyteLongData); var fullPathname = Path.Combine(bob.ProjectFolderConfig.FolderPath, fileName); var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; bob.Repository.TestOnlyAddSansCommit(fullPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.wav"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.IsFalse(string.IsNullOrEmpty(result)); var shortpath = fullPathname.Replace(pathToRepo, ""); Assert.IsTrue(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); bob.Repository.AddAndCheckinFiles(config.IncludePatterns, config.ExcludePatterns, "Some commit"); bob.AssertFileDoesNotExistInRepository("big.wav"); } }
public void NormallyExcludedNestedFileIsNotAddedByLargeFileFilter() { using (var bob = new RepositorySetup("bob")) { var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; var nestedFolder = Path.Combine(bob.Repository.PathToRepo, "nestedFolder"); Directory.CreateDirectory(nestedFolder); const string largeVideoFilename = "whopper.mov"; var largeVideoPathname = Path.Combine("nestedFolder", largeVideoFilename); bob.ChangeFile(largeVideoPathname, megabyteLongData); bob.Repository.TestOnlyAddSansCommit(largeVideoPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.ExcludePatterns.Add("**.mov"); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.*"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.IsTrue(string.IsNullOrEmpty(result)); var shortpath = largeVideoPathname.Replace(pathToRepo, ""); Assert.IsFalse(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); } }
public void NormallyExcludedFwdataFileIsNotAddedByLargeFileFilter() { using (var bob = new RepositorySetup("bob")) { var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; const string largeFwdataFilename = "whopper.fwdata"; var largeFwdataPathname = Path.Combine(pathToRepo, largeFwdataFilename); bob.ChangeFile(largeFwdataPathname, megabyteLongData); bob.Repository.TestOnlyAddSansCommit(largeFwdataPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.ExcludePatterns.Add("*.fwdata"); config.IncludePatterns.Clear(); config.IncludePatterns.Add("*.*"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.That(result, Is.Null.Or.Empty); var shortpath = largeFwdataPathname.Replace(pathToRepo, ""); Assert.That(config.ExcludePatterns, Does.Not.Contain(shortpath)); Assert.That(config.IncludePatterns, Does.Not.Contain(shortpath)); } }
public void SmallFileInNonExcludedFolderNotFilteredByExclusionAtDeeperNesting() { //Put a small file in [repo]\Cache and a large file in [repo]\foo\SomeLayer\Cache //exclude \foo\**\Cache, make sure that [repo]\Cache\smallFile was not filtered out. // Make sure that [repo]\foo\SomeLayer\Cache\largfile was not reported as being a large file. using (var bob = new RepositorySetup("bob")) { var smallData = "small" + Environment.NewLine; while (smallData.Length < LargeFileFilter.Megabyte / 3) { smallData += smallData; } var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; var cacheAtRoot = Path.Combine(bob.Repository.PathToRepo, "Cache"); Directory.CreateDirectory(cacheAtRoot); const string smallVideoFilename = "dinky.mov"; var smallNestedVideoPathname = Path.Combine(cacheAtRoot, smallVideoFilename); bob.ChangeFile(smallNestedVideoPathname, smallData); bob.Repository.TestOnlyAddSansCommit(smallNestedVideoPathname); var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } var fooAtRoot = Path.Combine(bob.Repository.PathToRepo, "foo"); Directory.CreateDirectory(fooAtRoot); var firstLayerBelowFoo = Path.Combine(fooAtRoot, "SomeLayer"); Directory.CreateDirectory(firstLayerBelowFoo); var nestedCacheFolder = Path.Combine(firstLayerBelowFoo, "Cache"); Directory.CreateDirectory(nestedCacheFolder); const string largeVideoFilename = "whopper.mov"; var largeNestedVideoPathname = Path.Combine(nestedCacheFolder, largeVideoFilename); bob.ChangeFile(largeNestedVideoPathname, megabyteLongData); bob.Repository.TestOnlyAddSansCommit(largeNestedVideoPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.ExcludePatterns.Add(Path.Combine("foo", Path.Combine("**", "Cache"))); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.*"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.True(string.IsNullOrEmpty(result), @"Cache folder at root was improperly filtered by foo\**\Cache"); var shortpath = largeNestedVideoPathname.Replace(pathToRepo, null); Assert.IsFalse(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); shortpath = smallNestedVideoPathname.Replace(pathToRepo, null); Assert.IsFalse(config.ExcludePatterns.Contains(shortpath)); Assert.IsFalse(config.IncludePatterns.Contains(shortpath)); } }
public void LargeFileInNonExcludedFolderFiltered() { //Put a large file in [repo]\Cache and in [repo]\foo\SomeLayer\Cache //exclude \foo\**\Cache, make sure that [repo]\Cache\largeFile was filtered out. using (var bob = new RepositorySetup("bob")) { var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; var cacheAtRoot = Path.Combine(bob.Repository.PathToRepo, "Cache"); Directory.CreateDirectory(cacheAtRoot); const string biggieNonexcludedFileName = "biggie.mov"; var biggieNestedNonExcludedVideoPathname = Path.Combine(cacheAtRoot, biggieNonexcludedFileName); bob.ChangeFile(biggieNestedNonExcludedVideoPathname, megabyteLongData); bob.Repository.TestOnlyAddSansCommit(biggieNestedNonExcludedVideoPathname); var fooAtRoot = Path.Combine(bob.Repository.PathToRepo, "foo"); Directory.CreateDirectory(fooAtRoot); var firstLayerBelowFoo = Path.Combine(fooAtRoot, "SomeLayer"); Directory.CreateDirectory(firstLayerBelowFoo); var nestedCacheFolder = Path.Combine(firstLayerBelowFoo, "Cache"); Directory.CreateDirectory(nestedCacheFolder); const string largeVideoFilename = "whopper.mov"; var largeNestedVideoPathname = Path.Combine(nestedCacheFolder, largeVideoFilename); bob.ChangeFile(largeNestedVideoPathname, megabyteLongData); bob.Repository.TestOnlyAddSansCommit(largeNestedVideoPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.ExcludePatterns.Add(Path.Combine("foo", Path.Combine("**", "Cache"))); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.*"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.That(result, Is.Not.Null.And.Not.Empty, @"Cache folder at root wasn't properly filtered by large file filer in [repo]\Cache\biggie.mov"); var shortpath = largeNestedVideoPathname.Replace(pathToRepo, null); Assert.That(config.ExcludePatterns, Does.Not.Contain(shortpath)); Assert.That(config.IncludePatterns, Does.Not.Contain(shortpath)); shortpath = biggieNestedNonExcludedVideoPathname.Replace(pathToRepo, null); Assert.That(config.ExcludePatterns, Does.Contain(shortpath)); Assert.That(config.IncludePatterns, Does.Not.Contain(shortpath)); } }
public void LargeFileInExcludedDeeplyNestedPathIsNotFilteredOut() { using (var bob = new RepositorySetup("bob")) { var megabyteLongData = "long" + Environment.NewLine; while (megabyteLongData.Length < LargeFileFilter.Megabyte) { megabyteLongData += megabyteLongData; } var pathToRepo = bob.Repository.PathToRepo + Path.DirectorySeparatorChar; var firstLayer = Path.Combine(bob.Repository.PathToRepo, "FirstLayer"); Directory.CreateDirectory(firstLayer); var secondLayer = Path.Combine(firstLayer, "SecondLayer"); Directory.CreateDirectory(secondLayer); var nestedFolder = Path.Combine(secondLayer, "Cache"); Directory.CreateDirectory(nestedFolder); const string largeVideoFilename = "whopper.mov"; var largeVideoPathname = Path.Combine(nestedFolder, largeVideoFilename); bob.ChangeFile(largeVideoPathname, megabyteLongData); bob.Repository.TestOnlyAddSansCommit(largeVideoPathname); var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.ExcludePatterns.Add(Path.Combine("FirstLayer", Path.Combine("**", "Cache"))); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.*"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, ChorusFileTypeHandlerCollection.CreateWithInstalledHandlers()); Assert.That(result, Is.Null.Or.Empty); var shortpath = largeVideoPathname.Replace(pathToRepo, ""); Assert.That(config.ExcludePatterns, Does.Not.Contain(shortpath)); Assert.That(config.IncludePatterns, Does.Not.Contain(shortpath)); } }
public void ShortUnknownFileIsAllowed() { 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; var config = bob.ProjectFolderConfig; config.ExcludePatterns.Clear(); config.IncludePatterns.Clear(); config.IncludePatterns.Add("**.chorusTest"); var result = LargeFileFilter.FilterFiles( bob.Repository, config, _handlersColl); Assert.That(result, Is.Null.Or.Empty); var shortpath = fullPathname.Replace(pathToRepo, ""); Assert.That(config.ExcludePatterns, Does.Not.Contain(shortpath)); Assert.That(config.IncludePatterns, Does.Not.Contain(shortpath)); } }