public void LaunchDialog_CustomUrlSourceWontBeFound() { using (var source = new TemporaryFolder("CloneDialogTest")) { Directory.CreateDirectory(source.Combine("repo1")); HgRepository.CreateRepositoryInExistingDir(source.Combine("repo1"), new NullProgress()); LaunchCustomUrl(@"somewhereElse"); } }
public void GetDirectoriesWithMecurialRepos_OneDriveOneRepo_ReturnsRepoPath() { using (var usb = new TemporaryFolder("clonetestUsb")) { Directory.CreateDirectory(usb.Combine("test")); Directory.CreateDirectory(usb.Combine("testrepo",".hg")); var model = new CloneFromUsb(); var drives = new List<IUsbDriveInfo>(); drives.Add(new UsbDriveInfoForTests(usb.Path)); model.DriveInfoRetriever = new RetrieveUsbDriveInfoForTests(drives); Assert.AreEqual(1, model.GetDirectoriesWithMecurialRepos().Count()); Assert.AreEqual(usb.Combine("testrepo"), model.GetDirectoriesWithMecurialRepos().First()); } }
public void GetDirectoriesWithMecurialRepos_TwoRepos_ReturnsOnlyUnfilteredPath() { using (var usb = new TemporaryFolder("clonetestUsb")) { Directory.CreateDirectory(usb.Combine("test1")); Directory.CreateDirectory(usb.Combine("test1", ".hg")); Directory.CreateDirectory(usb.Combine("testSKIP")); Directory.CreateDirectory(usb.Combine("testSKIP", ".hg")); var model = new CloneFromUsb(); var drives = new List<IUsbDriveInfo>(); drives.Add(new UsbDriveInfoForTests(usb.Path)); model.DriveInfoRetriever = new RetrieveUsbDriveInfoForTests(drives); model.ProjectFilter = path => !path.Contains("SKIP"); Assert.AreEqual(1, model.GetDirectoriesWithMecurialRepos().Count()); } }
public TempLiftFile(string fileName, TemporaryFolder parentFolder, string xmlOfEntries, string claimedLiftVersion) : base(true) // True means "I'll set the the pathname, thank you very much." Otherwise, the temp one 'false' creates will stay forever, and fill the hard drive up. { _path = parentFolder.Combine(fileName); string liftContents = string.Format("<?xml version='1.0' encoding='utf-8'?><lift version='{0}'>{1}</lift>", claimedLiftVersion, xmlOfEntries); File.WriteAllText(_path, liftContents); }
public TemporaryFolder(TemporaryFolder parent, string name) { _path = parent.Combine(name); if (Directory.Exists(_path)) { TestUtilities.DeleteFolderThatMayBeInUse(_path); } Directory.CreateDirectory(_path); }
public TempLiftFile(string fileName, TemporaryFolder parentFolder, string xmlOfEntries, string claimedLiftVersion) : base(true) // True means "I'll set the the pathname, thank you very much." Otherwise, the temp one 'false' creates will stay forever, and fill the hard drive up. { Path = parentFolder.Combine(fileName); string liftContents = string.Format("<?xml version='1.0' encoding='utf-8'?><lift version='{0}'>{1}</lift>", claimedLiftVersion, xmlOfEntries); RobustFile.WriteAllText(Path, liftContents); }
public void Clone_Test() { // RobustNetworkOperation.ClearCredentialSettings(); using (var f = new TemporaryFolder("clonetest")) { HgRepository.Clone(new HttpRepositoryPath("cloneableTestProjectUrl", _cloneableTestProjectUrl, false), f.Path, _progress); Assert.IsTrue(Directory.Exists(f.Combine(f.Path, ".hg"))); } }
public void Pull_Test() { //RobustNetworkOperation.ClearCredentialSettings(); using (var f = new TemporaryFolder("pulltest")) { var repo = HgRepository.CreateOrUseExisting(f.Path, _progress); var address = new HttpRepositoryPath("default", _cloneableTestProjectUrl, false); repo.Pull(address, _cloneableTestProjectUrl); Assert.IsTrue(Directory.Exists(f.Combine(f.Path, ".hg"))); } }
public void GetDirectoriesWithMecurialRepos_OneDriveAndDirectoryButNotRep_ReturnsEmptyList() { using (var usb = new TemporaryFolder("clonetestUsb")) { Directory.CreateDirectory(usb.Combine("tests")); var model = new CloneFromUsb(); var drives = new List<IUsbDriveInfo>(); drives.Add(new UsbDriveInfoForTests(usb.Path)); model.DriveInfoRetriever = new RetrieveUsbDriveInfoForTests(drives); Assert.AreEqual(0, model.GetDirectoriesWithMecurialRepos().Count()); } }
public static TempFile CreateXmlFileWithContents(string fileName, TemporaryFolder folder, string xmlBody) { string path = folder.Combine(fileName); using (var reader = XmlReader.Create(new StringReader(xmlBody))) { using (var writer = XmlWriter.Create(path, CanonicalXmlSettings.CreateXmlWriterSettings())) { writer.WriteStartDocument(); writer.WriteNode(reader, false); } } return(new TempFile(path, true)); }
public void PullThenPush_Test() { // RobustNetworkOperation.ClearCredentialSettings(); using (var f = new TemporaryFolder("pulltest")) { var repo = HgRepository.CreateOrUseExisting(f.Path, _progress); var address = new HttpRepositoryPath("default", _cloneableTestProjectUrl, false); repo.Pull(address, _cloneableTestProjectUrl); Assert.IsTrue(Directory.Exists(f.Combine(f.Path, ".hg"))); //nb: this is safe to do over an over, because it will just say "no changes found", never actually add a changeset repo.Push(address, _cloneableTestProjectUrl); } }
public static void ProcessAndSaveImageIntoFolder_SimpleImageHasTransparentBackground_ImageNotConvertedAndFileSizeNotIncreased() { var inputPath = SIL.IO.FileLocator.GetFileDistributedWithApplication(_pathToTestImages, "shirtWithTransparentBg.png"); var originalFileSize = new FileInfo(inputPath).Length; using (var image = PalasoImage.FromFileRobustly(inputPath)) { using (var folder = new TemporaryFolder("TransparentPngTest")) { var fileName = ImageUtils.ProcessAndSaveImageIntoFolder(image, folder.Path, false); Assert.AreEqual(".png", Path.GetExtension(fileName)); var outputPath = folder.Combine(fileName); using (var result = Image.FromFile(outputPath)) { Assert.AreEqual(ImageFormat.Png, result.RawFormat); Assert.That(originalFileSize <= new FileInfo(outputPath).Length); } } } }
public void Setup() { _collectionSettings = new CollectionSettings(new NewCollectionSettings() { PathToSettingsFile = CollectionSettings.GetPathForNewSettings(new TemporaryFolder("BookDataTests").Path, "test"), Language1Iso639Code = "xyz", Language2Iso639Code = "en", Language3Iso639Code = "fr" }); ErrorReport.IsOkToInteractWithUser = false; var localizationDirectory = FileLocator.GetDirectoryDistributedWithApplication("localization"); _localizationManager = LocalizationManager.Create("fr", "Bloom", "Bloom", "1.0.0", localizationDirectory, "SIL/Bloom", null, "", new string[] {}); _palasoLocalizationManager = LocalizationManager.Create("fr", "Palaso","Palaso", "1.0.0", localizationDirectory, "SIL/Bloom", null, "", new string[] { }); _brandingFolder = new TemporaryFolder("unitTestBrandingFolder"); _pathToBrandingSettingJson = _brandingFolder.Combine("settings.json"); }
public void EnsureTheseExtensionAreEnabled_AddingToExistingExtensions_NewAddedAndExistingNotDuplicated() { using (new MercurialIniForTests()) using (var testRoot = new TemporaryFolder("ChorusHgSettingsTest")) { HgRepository.CreateRepositoryInExistingDir(testRoot.Path, _progress); var repository = new HgRepository(testRoot.Path, new ConsoleProgress()); File.WriteAllText(testRoot.Combine(Path.Combine(".hg", "hgrc")), @" [extensions] a = "); var extensions = new Dictionary<string, string>(); extensions.Add("a", ""); extensions.Add("b", ""); repository.EnsureTheseExtensionsAndFormatSet(extensions); Assert.AreEqual(2, repository.GetEnabledExtension().Count(), "Extensions should contain just one 'a' and 'b'"); Assert.AreEqual("a", repository.GetEnabledExtension().ToArray()[0], "'a' extension was not retained."); Assert.AreEqual("b", repository.GetEnabledExtension().ToArray()[1], "'b' extension should have been appended."); } }
public void EnsureTheseExtensionAreEnabled_ExtraExtensions_RemovesThem() { using(new MercurialIniForTests()) using(var testRoot = new TemporaryFolder("ChorusHgSettingsTest")) { HgRepository.CreateRepositoryInExistingDir(testRoot.Path, _progress); var repository = new HgRepository(testRoot.Path, new ConsoleProgress()); File.WriteAllText(testRoot.Combine(Path.Combine(".hg", "hgrc")), @" [extensions] a = x = "); var extensions = new Dictionary<string, string>(); extensions.Add("a", ""); extensions.Add("b", ""); repository.EnsureTheseExtensionsAndFormatSet(extensions); Assert.AreEqual(2, repository.GetEnabledExtension().Count(), "Result should have 'a' and 'b' but no 'x'"); Assert.AreEqual("a", repository.GetEnabledExtension().ToArray()[0], "'a' was not kept."); Assert.AreEqual("b", repository.GetEnabledExtension().ToArray()[1], "'b' did not replace 'x'"); } }
public void GetFilesInRevision_MultipleRevisionsInRepo_GivesCorrectFiles() { using (var testRoot = new TemporaryFolder("ChorusRetrieveTest")) { var temp = testRoot.Combine("filename with spaces"); File.WriteAllText(temp, "one"); using (var f = TempFile.TrackExisting(temp)) { HgRepository.CreateRepositoryInExistingDir(testRoot.Path,_progress); var repo = new HgRepository(testRoot.Path, _progress); repo.AddAndCheckinFile(f.Path); repo.Commit(true, "initial"); File.WriteAllText(f.Path, "one two"); repo.Commit(true, "second"); var revisions = repo.GetAllRevisions(); Assert.AreEqual(2, revisions.Count); var files = repo.GetFilesInRevision(revisions[0]); Assert.AreEqual(1, files.Count()); Assert.AreEqual(f.Path, files.First().FullPath); } } }
private void ChangeNameAndCheck(TemporaryFolder newFolder, BookStorage storage) { var newBookName = Path.GetFileName(newFolder.Path); storage.SetBookName(newBookName); var newPath = newFolder.Combine(newBookName + ".htm"); Assert.IsTrue(Directory.Exists(newFolder.Path), "Expected folder:" + newFolder.Path); Assert.IsTrue(File.Exists(newPath), "Expected file:" + newPath); }
public void SetBookName_FolderWithNameAlreadyExists_AddsANumberToName() { using (var original = new TemporaryFolder(_folder, "original")) using (var x = new TemporaryFolder(_folder, "foo")) using (var y = new TemporaryFolder(_folder, "foo1")) using (var z = new TemporaryFolder(_folder, "foo2")) { File.WriteAllText(Path.Combine(original.Path, "original.htm"), "<html><head> href='file://blahblah\\editMode.css' type='text/css' /></head><body><div class='bloom-page'></div></body></html>"); var projectFolder = new TemporaryFolder("BookStorage_ProjectCollection"); var collectionSettings = new CollectionSettings(Path.Combine(projectFolder.Path, "test.bloomCollection")); var storage = new BookStorage(original.Path, _fileLocator, new BookRenamedEvent(), collectionSettings); storage.Save(); Directory.Delete(z.Path); //so, we ask for "foo", but should get "foo2", because there is already a foo and foo1 var newBookName = Path.GetFileName(x.Path); storage.SetBookName(newBookName); var newPath = z.Combine("foo2.htm"); Assert.IsTrue(Directory.Exists(z.Path), "Expected folder:" + z.Path); Assert.IsTrue(File.Exists(newPath), "Expected file:" + newPath); } }
public void Setup() { ErrorReport.IsOkToInteractWithUser = false; _fileLocator = new FileLocator(new string[] { //FileLocator.GetDirectoryDistributedWithApplication( "factoryCollections"), BloomFileLocator.GetFactoryBookTemplateDirectory("Basic Book"), BloomFileLocator.GetInstalledXMatterDirectory() }); _fixtureFolder = new TemporaryFolder("BloomBookStorageTest"); _folder = new TemporaryFolder(_fixtureFolder, "theBook"); _bookPath = _folder.Combine("theBook.htm"); }
public void RoundTripPng_InPathWithNonAsciiCharacters() { var mediaFile = new Bitmap(10, 10); using (var folder = new TemporaryFolder("LibPalaso exiftool Test with non-áscii chárácters")) { var path = folder.Combine("test.png"); mediaFile.Save(path); var outgoing = Metadata.FromFile(path); outgoing.Creator = "joe shmo"; outgoing.Write(); Assert.AreEqual("joe shmo", Metadata.FromFile(path).Creator); } }
public void Play_GiveThaiFileName_ShouldHearTwoSounds() { using (var d = new TemporaryFolder("palaso media test")) { var soundPath = d.Combine("ก.wav"); File.Create(soundPath).Close(); using (var f = TempFile.TrackExisting(soundPath)) { var w = new BackgroundWorker(); w.DoWork += new DoWorkEventHandler((o, args) => SystemSounds.Exclamation.Play()); var x = AudioFactory.CreateAudioSession(f.Path); x.StartRecording(); w.RunWorkerAsync(); Thread.Sleep(1000); x.StopRecordingAndSaveAsWav(); var y = AudioFactory.CreateAudioSession(f.Path); y.Play(); Thread.Sleep(1000); y.StopPlaying(); } } }
public TempFileFromFolder(TemporaryFolder parentFolder, string name, string contents) : base(true) // True means "I'll set the the pathname, thank you very much." Otherwise, the temp one 'false' creates will stay forever, and fill the hard drive up. { _path = parentFolder.Combine(name); File.WriteAllText(_path, contents); }
public void GetKnownRepositories_TwoInRepoSettings_GivesThem() { using (new MercurialIniForTests()) using (var testRoot = new TemporaryFolder("ChorusHgSettingsTest")) { HgRepository.CreateRepositoryInExistingDir(testRoot.Path, _progress); File.WriteAllText(testRoot.Combine(Path.Combine(".hg","hgrc")), @" [paths] one = c:\intentionally bogus two = http://foo.com"); var repo = new HgRepository(testRoot.Path, _progress); var sources = repo.GetRepositoryPathsInHgrc(); Assert.AreEqual(2, sources.Count()); Assert.AreEqual(@"c:\intentionally bogus" ,sources.First().URI); Assert.AreEqual(@"http://foo.com", sources.Last().URI); Assert.AreEqual(@"one" ,sources.First().Name); Assert.AreEqual(@"two", sources.Last().Name); } }
private BookStorage GetInitialStorageUsingUNCPath() { var testFolder = new TemporaryFolder(); var bookPath = testFolder.Combine("theBook.htm"); File.WriteAllText(bookPath, "<html><head> href='file://blahblah\\editMode.css' type='text/css' /></head><body><div class='bloom-page'></div></body></html>"); var collectionSettings = new CollectionSettings(Path.Combine(testFolder.Path, "test.bloomCollection")); var folderPath = ConvertToNetworkPath(testFolder.Path); Debug.WriteLine(Path.GetPathRoot(folderPath)); var storage = new BookStorage(folderPath, _fileLocator, new BookRenamedEvent(), collectionSettings); return storage; }
public static TempFile CreateXmlFileWithContents(string fileName, TemporaryFolder folder, string xmlBody) { string path = folder.Combine(fileName); using (var reader = XmlReader.Create(new StringReader(xmlBody))) { using (var writer = XmlWriter.Create(path, CanonicalXmlSettings.CreateXmlWriterSettings())) { writer.WriteStartDocument(); writer.WriteNode(reader, false); } } return new TempFile(path, true); }
private void Launch() { using (var targetComputer = new TemporaryFolder("clonetest-targetComputer")) using (var dest = new TemporaryFolder("clonetest")) { Directory.CreateDirectory(dest.Combine("repo1")); HgRepository.CreateRepositoryInExistingDir(dest.Combine("repo1"), new NullProgress()); //ok, the point here is that we already haved something called "repo1" Directory.CreateDirectory(targetComputer.Combine("repo1")); using (var dlg = new GetCloneFromInternetDialog(targetComputer.Path)) { if (DialogResult.OK != dlg.ShowDialog()) return; } } }
public void SaveSettings_NoHgFolderExists_CreatesOneWithCorrectPath() { using (var folder = new TemporaryFolder("ServerSettingsModel")) { var m = new ServerSettingsModel(); var url = "http://*****:*****@hg-public.languagedepot.org/tpi"; m.InitFromProjectPath(folder.Path); m.SetUrlToUseIfSettingsAreEmpty(url); m.SaveSettings(); Assert.IsTrue(Directory.Exists(folder.Combine(".hg"))); Assert.IsTrue(File.Exists(folder.Combine(".hg","hgrc"))); var repo = HgRepository.CreateOrUseExisting(folder.Path, new NullProgress()); var address = repo.GetDefaultNetworkAddress<HttpRepositoryPath>(); Assert.AreEqual("languageDepot.org[safemode]".ToLower(), address.Name.ToLower()); Assert.AreEqual(url, address.URI); } }
private static void ProcessAndSaveImageIntoFolder_AndTestResults(string testImageName, ImageFormat expectedOutputFormat) { var inputPath = SIL.IO.FileLocator.GetFileDistributedWithApplication(_pathToTestImages, testImageName); using (var image = PalasoImage.FromFileRobustly(inputPath)) { using (var folder = new TemporaryFolder()) { var fileName = ImageUtils.ProcessAndSaveImageIntoFolder(image, folder.Path, false); Assert.AreEqual(expectedOutputFormat == ImageFormat.Jpeg ? ".jpg" : ".png", Path.GetExtension(fileName)); var outputPath = folder.Combine(fileName); using (var img = Image.FromFile(outputPath)) { Assert.AreEqual(expectedOutputFormat, img.RawFormat); } var alternativeThatShouldNotBeThere = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath) + (expectedOutputFormat.Equals(ImageFormat.Jpeg) ? ".png" : ".jpg")); Assert.IsFalse(File.Exists(alternativeThatShouldNotBeThere), "Did not expect to have the file " + alternativeThatShouldNotBeThere); } } }
public void MakeListItem_MakesNormalItem() { using (var usb = new TemporaryFolder("clonetestUsb")) { var path = usb.Combine("test1"); Directory.CreateDirectory(path); Directory.CreateDirectory(usb.Combine("test1", ".hg")); var model = new CloneFromUsb(); var item = model.CreateListItemFor(path); Assert.That(item, Is.Not.Null, "model should have made a list item"); Assert.That(item.Text, Is.EqualTo("test1")); Assert.That(item.Tag, Is.EqualTo(path)); var last = File.GetLastWriteTime(path); string expectedSubitem = last.ToShortDateString() + " " + last.ToShortTimeString(); // Not a great test, basically duplicates the impl Assert.That(item.SubItems[1].Text, Is.EqualTo(expectedSubitem)); Assert.That(item.ToolTipText, Is.EqualTo(path)); Assert.That(item.ImageIndex, Is.EqualTo(0)); Assert.That(item.BackColor, Is.EqualTo(Color.FromKnownColor(KnownColor.Window))); Assert.That(item.ForeColor, Is.EqualTo(Color.FromKnownColor(KnownColor.WindowText))); } }
public void SaveSettings_PrexistsButWeChangePasswordAndSave_ChangesPassword() { using (var folder = new TemporaryFolder("ServerSettingsModel")) { // Precondition is some url that is not our default from the ServerSettingsModel var original = HgRepository.CreateOrUseExisting(folder.Path, new NullProgress()); original.SetKnownRepositoryAddresses(new[] { new HttpRepositoryPath("languagedepot.org [legacy sync]", "http://*****:*****@hg-public.languagedepot.org/tpi", false) }); var m = new ServerSettingsModel(); m.InitFromProjectPath(folder.Path); m.Password = "******"; m.SaveSettings(); Assert.IsTrue(Directory.Exists(folder.Combine(".hg"))); Assert.IsTrue(File.Exists(folder.Combine(".hg", "hgrc"))); var repo = HgRepository.CreateOrUseExisting(folder.Path, new NullProgress()); var address = repo.GetDefaultNetworkAddress<HttpRepositoryPath>(); Assert.AreEqual("http://*****:*****@hg-public.languagedepot.org/tpi", address.URI); Assert.AreEqual("newPassword", address.Password); } }
private bool GetIsReady(string pathsSectionContents) { string contents = @"[paths]" + Environment.NewLine + pathsSectionContents+Environment.NewLine; using (var testRoot = new TemporaryFolder("ChorusHgSettingsTest")) { HgRepository.CreateRepositoryInExistingDir(testRoot.Path, _progress); File.WriteAllText(testRoot.Combine(Path.Combine(".hg", "hgrc")), contents); var repo = new HgRepository(testRoot.Path, _progress); string msg; bool ready= repo.GetIsReadyForInternetSendReceive(out msg); Console.WriteLine(msg); return ready; } }
public TempFileFromFolder(TemporaryFolder parentFolder, string name, string contents) : base(true) // True means "I'll set the the pathname, thank you very much." Otherwise, the temp one 'false' creates will stay forever, and fill the hard drive up. { Path = parentFolder.Combine(name); RobustFile.WriteAllText(Path, contents); }
public void MakeListItemWhenAlreadyHaveProjectName_MakesDisabledItem() { using (var usb = new TemporaryFolder("clonetestUsb")) { var path = usb.Combine("test1"); Directory.CreateDirectory(path); Directory.CreateDirectory(usb.Combine("test1", ".hg")); var model = new CloneFromUsb(); model.ExistingProjects = new HashSet<string> {"test1"}; var item = model.CreateListItemFor(path); Assert.That(item, Is.Not.Null, "model should have made a list item"); Assert.That(item.Text, Is.EqualTo("test1")); Assert.That(item.Tag, Is.EqualTo(path)); var last = File.GetLastWriteTime(path); string expectedSubitem = last.ToShortDateString() + " " + last.ToShortTimeString(); // Not a great test, basically duplicates the impl Assert.That(item.SubItems[1].Text, Is.EqualTo(expectedSubitem)); Assert.That(item.ToolTipText, Is.EqualTo(CloneFromUsb.ProjectWithSameNameExists)); Assert.That(item.ImageIndex, Is.EqualTo(2)); Assert.That(item.ForeColor, Is.EqualTo(CloneFromUsb.DisabledItemForeColor)); } }