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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #5
0
        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));
        }
Exemple #7
0
        public void ThrowsWhenNoOptionsHaveBeenSpecified()
        {
            using var testEnvironment = new TestEnvironmentProvider();
            var file = Path.Combine(testEnvironment.RootDirectory, NonExistentFile.Name);

            Assert.Throws <InvalidOperationException>(() =>
            {
                using (new FileOpeningBuilder().Open(file))
                {
                }
            });
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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))
                {
                }
            });
        }
Exemple #11
0
        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));
            }
        }
Exemple #12
0
        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)));
        }
Exemple #13
0
        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);
        }
Exemple #15
0
        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);
        }