public void CreateNewDirectory() { string temp = Path.GetTempPath(); string dir = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38C"); try { MakeDir t = new MakeDir(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Directories = new ITaskItem[] { new TaskItem(dir) }; bool success = t.Execute(); Assert.IsTrue(success); Assert.AreEqual(1, t.DirectoriesCreated.Length); Assert.AreEqual(dir, t.DirectoriesCreated[0].ItemSpec); Assert.IsTrue ( engine.Log.Contains ( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir) ) ); engine.Log = ""; success = t.Execute(); Assert.IsTrue(success); // should still return directory even though it didn't need to be created Assert.AreEqual(1, t.DirectoriesCreated.Length); Assert.AreEqual(dir, t.DirectoriesCreated[0].ItemSpec); Assert.IsTrue ( !engine.Log.Contains ( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir) ) ); } finally { Directory.Delete(dir); } }
[PlatformSpecific(TestPlatforms.Windows)] // "Under Unix all filenames are valid and this test is not useful" public void SomeInputsFailToCreate() { string temp = Path.GetTempPath(); string file = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38e"); string dir = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38f"); string invalid = "!@#$%^&*()|"; string dir2 = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A390"); try { FileStream fs = File.Create(file); fs.Dispose(); //we're gonna try to delete it MakeDir t = new MakeDir(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Directories = new ITaskItem[] { new TaskItem(dir), new TaskItem(file), new TaskItem(invalid), new TaskItem(dir2) }; bool success = t.Execute(); if (NativeMethodsShared.IsWindows) { Assert.False(success); Assert.Equal(2, t.DirectoriesCreated.Length); Assert.Equal(dir2, t.DirectoriesCreated[1].ItemSpec); } else { // Since Unix pretty much does not have invalid characters, // the invalid name is not really invalid Assert.True(success); Assert.Equal(3, t.DirectoriesCreated.Length); Assert.Equal(dir2, t.DirectoriesCreated[2].ItemSpec); } Assert.Equal(dir, t.DirectoriesCreated[0].ItemSpec); Assert.Contains ( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir), engine.Log ); } finally { FileUtilities.DeleteWithoutTrailingBackslash(dir); File.Delete(file); if (!NativeMethodsShared.IsWindows) { File.Delete(invalid); } FileUtilities.DeleteWithoutTrailingBackslash(dir2); } }
public void FileAlreadyExists() { string temp = Path.GetTempPath(); string file = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38d"); try { FileStream fs = File.Create(file); fs.Dispose(); //we're gonna try to delete it MakeDir t = new MakeDir(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Directories = new ITaskItem[] { new TaskItem(file) }; bool success = t.Execute(); Assert.False(success); Assert.Empty(t.DirectoriesCreated); Assert.Contains("MSB3191", engine.Log); Assert.Contains(file, engine.Log); } finally { File.Delete(file); } }
public void CreateNewDirectory() { string temp = Path.GetTempPath(); string dir = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38C"); try { MakeDir t = new MakeDir(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Directories = new ITaskItem[] { new TaskItem(dir) }; bool success = t.Execute(); Assert.True(success); Assert.Single(t.DirectoriesCreated); Assert.Equal(dir, t.DirectoriesCreated[0].ItemSpec); Assert.Contains( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir), engine.Log ); engine.Log = ""; success = t.Execute(); Assert.True(success); // should still return directory even though it didn't need to be created Assert.Single(t.DirectoriesCreated); Assert.Equal(dir, t.DirectoriesCreated[0].ItemSpec); Assert.DoesNotContain( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir), engine.Log); } finally { FileUtilities.DeleteWithoutTrailingBackslash(dir); } }
/// <summary> /// Create the directory <see cref="TestDirectory"/>. /// </summary> /// <param name="buildEngine">The build engine to use for the <see cref="MakeDir"/> task.</param> /// <returns>Returns the path name of the created directory.</returns> public static string makeTestDirectory(IBuildEngine buildEngine) { MakeDir makeDirTask = new MakeDir(); makeDirTask.BuildEngine = buildEngine; string testDirectory = TestDirectory; makeDirTask.Directories = StringArrayToItemArray(testDirectory); makeDirTask.Execute(); return(testDirectory); }
public void SomeInputsFailToCreate() { string temp = Path.GetTempPath(); string file = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38e"); string dir = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A38f"); string invalid = "!@#$%^&*()|"; string dir2 = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A390"); try { FileStream fs = File.Create(file); fs.Close(); //we're gonna try to delete it MakeDir t = new MakeDir(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Directories = new ITaskItem[] { new TaskItem(dir), new TaskItem(file), new TaskItem(invalid), new TaskItem(dir2) }; bool success = t.Execute(); Assert.IsTrue(!success); Assert.AreEqual(2, t.DirectoriesCreated.Length); Assert.AreEqual(dir, t.DirectoriesCreated[0].ItemSpec); Assert.AreEqual(dir2, t.DirectoriesCreated[1].ItemSpec); Assert.IsTrue ( engine.Log.Contains ( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir) ) ); } finally { Directory.Delete(dir); File.Delete(file); Directory.Delete(dir2); } }
public override bool Execute() { XslCompiledTransform transform = new XslCompiledTransform(); transform.Load(_xslFile.ItemSpec); if (_sourceFiles.Length != _destinationFiles.Length) { Log.LogError("Source files has an item count of {0} while destination files has an item count of {1}. Both must have same count.", _sourceFiles.Length, _destinationFiles.Length); } else { string tranformName = Path.GetFileNameWithoutExtension(_xslFile.ItemSpec); for (int i = 0; i < _sourceFiles.Length; i++) { ITaskItem sourceFile = _sourceFiles[i]; ITaskItem destinationFile = _destinationFiles[i]; string directory = Path.GetDirectoryName(destinationFile.ItemSpec); if (!Directory.Exists(directory)) { MakeDir makeDir = new MakeDir(); makeDir.BuildEngine = BuildEngine; makeDir.Directories = new ITaskItem[] { new TaskItem(directory) }; makeDir.Execute(); } try { using (FileStream outputStream = new FileStream(destinationFile.ItemSpec, FileMode.Create, FileAccess.Write)) { XPathDocument xPathDocument = new XPathDocument(sourceFile.ItemSpec); transform.Transform(xPathDocument, null, outputStream); Log.LogMessage(MessageImportance.Normal, "Applied transform {0} and stored result as {1}", tranformName, destinationFile.ItemSpec); } } catch (Exception ex) { Log.LogError("Cannot apply transformation on file {0}: {1}", sourceFile.ItemSpec, ex.Message); } } } return(!Log.HasLoggedErrors); }
public void AttributeForwarding() { string temp = Path.GetTempPath(); string dir = Path.Combine(temp, "2A333ED756AF4dc392E728D0F864A391"); try { MakeDir t = new MakeDir(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Directories = new ITaskItem[] { new TaskItem(dir) }; t.Directories[0].SetMetadata("Locale", "en-GB"); bool success = t.Execute(); Assert.IsTrue(success); Assert.AreEqual(1, t.DirectoriesCreated.Length); Assert.AreEqual(dir, t.DirectoriesCreated[0].ItemSpec); Assert.IsTrue ( engine.Log.Contains ( String.Format(AssemblyResources.GetString("MakeDir.Comment"), dir) ) ); Assert.AreEqual("en-GB", t.DirectoriesCreated[0].GetMetadata("Locale")); // Output ItemSpec should not be overwritten. Assert.AreEqual(dir, t.DirectoriesCreated[0].ItemSpec); } finally { Directory.Delete(dir); } }