private static (TestEnvironmentProvider, GetTestFile) SetupTestEnvironment() { var testFiles = CreateTestFiles().ToArray(); var testEnvironmentProvider = new TestEnvironmentProvider(testFiles); var getTestFile = CreateGetTestFilePath(testEnvironmentProvider.RootDirectory); var fileToAttributes = new Dictionary <string, FileAttributes> { { RegularFile.Name, FileAttributes.Normal }, { ReadOnlyFile.Name, FileAttributes.ReadOnly }, { HiddenFile.Name, FileAttributes.Hidden }, { SubDirectoryName, FileAttributes.Directory } }; foreach (var(file, attributes) in fileToAttributes) { var fileInfo = new FileInfo(getTestFile(file)) { Attributes = attributes }; } return(testEnvironmentProvider, getTestFile); }
public void CreateParentDirectoryTest() { using var generateFileStructure = new TestEnvironmentProvider(); var tempPath = Path.GetTempPath(); var randomDirectoryName = generateFileStructure.RootDirectory; var path = Path.Combine(tempPath, randomDirectoryName); Assert.True(Directory.Exists(path)); }
public void RemovesManuallyCreatedReadonlyFiles() { using var generateFileStructure = new TestEnvironmentProvider(); var tempPath = Path.GetTempPath(); var path = Path.Combine(tempPath, generateFileStructure.RootDirectory, "ManuallyCreatedFile.txt"); File.Create(path).Dispose(); File.SetAttributes(path, FileAttributes.ReadOnly); }
public async Task AppliesModificationsToNewConfigFile(string expectedConfig, GlobalJsonModification modification) { using var testEnvironment = new TestEnvironmentProvider(); var filePath = Path.Combine(testEnvironment.RootDirectory, FileName); var globalJsonManipulator = CreateGlobalJsonManipulator(); await globalJsonManipulator.ModifyGlobalJson(filePath, modification); Assert.Equal(expectedConfig, await File.ReadAllTextAsync(filePath)); }
public void IgnoresAlreadyDeletedFiles() { var testFiles = new[] { TestFile.Create("file1.txt"), }; using var generateFileStructure = new TestEnvironmentProvider(testFiles); var path = Path.Combine(generateFileStructure.RootDirectory, testFiles[0].RelativeFilePath); File.Delete(path); }
public async Task AppliesModificationsSuccessfully(string expectedProject, string existingProject, ProjectModification modification) { using var testEnvironment = new TestEnvironmentProvider(); var projectFilePath = Path.Combine(testEnvironment.RootDirectory, ProjectFileName); await File.WriteAllTextAsync(projectFilePath, existingProject); var projectManipulator = CreateProjectManipulator(); await projectManipulator.ManipulateProject(projectFilePath, modification); Assert.Equal(expectedProject, await File.ReadAllTextAsync(projectFilePath)); }
public void ThrowsWhenNoOptionsHaveBeenSpecified() { using var testEnvironment = new TestEnvironmentProvider(); var file = Path.Combine(testEnvironment.RootDirectory, NonExistentFile.Name); Assert.Throws <InvalidOperationException>(() => { using (new FileOpeningBuilder().Open(file)) { } }); }
public void CreatedChildFileExists() { var testFiles = new[] { TestFile.Create("file1.txt"), }; using var generateFileStructure = new TestEnvironmentProvider(testFiles); var tempPath = Path.GetTempPath(); var path = Path.Combine(tempPath, generateFileStructure.RootDirectory, testFiles[0].RelativeFilePath); Assert.True(File.Exists(path)); }
public void RemovesReadonlyFile() { var testFiles = new[] { TestFile.Create("file1.txt"), }; using var generateFileStructure = new TestEnvironmentProvider(testFiles); var tempPath = Path.GetTempPath(); var path = Path.Combine(tempPath, generateFileStructure.RootDirectory, testFiles[0].RelativeFilePath); File.SetAttributes(path, FileAttributes.ReadOnly); }
public void ThrowsWhenReadingNonExistentFile() { using var testEnvironment = new TestEnvironmentProvider(); var file = Path.Combine(testEnvironment.RootDirectory, NonExistentFile.Name); Assert.Throws <FileNotFoundException>(() => { using (new FileOpeningBuilder() .Read(true) .Open(file)) { } }); }
public void HasCopiedFilesWithSameContentInSubfolders() { var testFiles = new[] { new TestFile("file1.txt", "Foo1/file1.txt"), new TestFile("file2.txt", "Foo2/file2.txt"), new TestFile("file3.txt", "Foo3/SubFoo3/file3.txt"), }; using var generateFileStructure = new TestEnvironmentProvider(testFiles); foreach (var files in testFiles) { IsSame(Path.Combine(ResourcesFolder, files.SourceFilePath), Path.Combine(generateFileStructure.RootDirectory, files.RelativeFilePath)); } }
public void HasCopiedFilesInSubfolder() { var testFiles = new[] { new TestFile("SubFolder4/file4.txt", "file1.txt"), }; using var generateFileStructure = new TestEnvironmentProvider(testFiles); foreach (var files in testFiles) { IsSame(Path.Combine(ResourcesFolder, files.SourceFilePath), Path.Combine(generateFileStructure.RootDirectory, files.RelativeFilePath)); } Assert.True(File.Exists(Path.Combine(generateFileStructure.RootDirectory, testFiles[0].RelativeFilePath))); }
public void CreatedChildrenExist() { var testFiles = new[] { TestFile.Create("file1.txt"), TestFile.Create("file2.txt"), TestFile.Create("file3.txt"), }; using var generateFileStructure = new TestEnvironmentProvider(testFiles); var tempPath = Path.GetTempPath(); foreach (var file in testFiles) { Assert.True(File.Exists(Path.Combine(tempPath, generateFileStructure.RootDirectory, file.RelativeFilePath))); } }
public async Task ThrowsWhenMsbuildSdksKeyHasIncorrectType() { var existingConfig = $"{{{NewLine}" + $" \"msbuild-sdks\": [1, 2, 3]" + $"}}"; using var testEnvironment = new TestEnvironmentProvider(); var filePath = Path.Combine(testEnvironment.RootDirectory, FileName); await File.WriteAllTextAsync(filePath, existingConfig); var globalJsonManipulator = CreateGlobalJsonManipulator(); var exception = await Assert.ThrowsAsync <GlobalJsonManipulationException>(async() => { await globalJsonManipulator.ModifyGlobalJson(filePath, ModificationThatAddsAnMsBuildSdk); }); Assert.True(exception.InnerException is MalformedGlobalJsonException); }
public void IsParentDirectoryDeleted() { var testFiles = new[] { TestFile.Create("file1.txt"), TestFile.Create("file2.txt"), TestFile.Create("file3.txt"), }; string path; using (var generateFileStructure = new TestEnvironmentProvider(testFiles)) { path = generateFileStructure.RootDirectory; Assert.True(Directory.Exists(path)); } Assert.False(Directory.Exists(path)); }
public async Task ThrowsWhenMsBuildSdkAlreadyExistsWithDifferentVersion() { const string nugetPackageId = "Foo.Build"; const string versionOne = "1.0.0"; const string versionTwo = "2.0.0"; using var testEnvironment = new TestEnvironmentProvider(); var filePath = Path.Combine(testEnvironment.RootDirectory, FileName); var globalJsonManipulator = CreateGlobalJsonManipulator(); await globalJsonManipulator.ModifyGlobalJson(filePath, new GlobalJsonModificationBuilder() .AddMsBuildSdk(new MsBuildSdk(nugetPackageId, versionOne)) .Build()); var exception = await Assert.ThrowsAsync <GlobalJsonManipulationException>(async() => { await globalJsonManipulator.ModifyGlobalJson(filePath, new GlobalJsonModificationBuilder() .AddMsBuildSdk(new MsBuildSdk(nugetPackageId, versionTwo)) .Build()); }); Assert.True(exception.InnerException is ConflictingMsBuildSdkException); }