Пример #1
0
            public void Should_Return_False_If_Directory_Does_Not_Exist()
            {
                // Given
                var context     = Substitute.For <ICakeContext>();
                var environment = FakeEnvironment.CreateUnixEnvironment();
                var fileSystem  = new FakeFileSystem(environment);

                context.FileSystem.Returns(fileSystem);

                // When
                var result = DirectoryAliases.DirectoryExists(context, "non-existent-path");

                // Then
                Assert.False(result);
            }
Пример #2
0
            public void Should_Create_Directory_If_Missing()
            {
                // Given
                var directory = new DirectoryPath("/NonExisting");
                var fixture   = new FileSystemFixture();
                var context   = Substitute.For <ICakeContext>();

                context.FileSystem.Returns(fixture.FileSystem);

                // When
                DirectoryAliases.CleanDirectory(context, directory);

                // Then
                Assert.True(fixture.FileSystem.Exist((DirectoryPath)"/NonExisting"));
            }
Пример #3
0
            public void Should_Delete_Files_In_Provided_Directory()
            {
                // Given
                var directory = new DirectoryPath("/Temp/Hello");
                var fixture   = new FileSystemFixture();
                var context   = Substitute.For <ICakeContext>();

                context.FileSystem.Returns(fixture.FileSystem);

                // When
                DirectoryAliases.CleanDirectory(context, directory);

                // Then
                Assert.Empty(fixture.FileSystem.GetDirectory(directory).GetFiles("*", SearchScope.Recursive));
            }
Пример #4
0
            public void Should_Leave_Provided_Directory_Itself_Intact()
            {
                // Given
                var directory = new DirectoryPath("/Temp/Hello");
                var fixture   = new FileSystemFixture();
                var context   = Substitute.For <ICakeContext>();

                context.FileSystem.Returns(fixture.FileSystem);

                // When
                DirectoryAliases.CleanDirectory(context, directory);

                // Then
                Assert.True(fixture.FileSystem.GetDirectory(directory).Exists);
            }
Пример #5
0
            public void Should_Expand_Existing_Environment_Variables()
            {
                // Given
                var context     = Substitute.For <ICakeContext>();
                var environment = FakeEnvironment.CreateWindowsEnvironment();

                environment.SetEnvironmentVariable("FOO", "bar");
                context.Environment.Returns(environment);

                // When
                var result = DirectoryAliases.ExpandEnvironmentVariables(context, "/%FOO%/baz");

                // Then
                Assert.Equal("/bar/baz", result.FullPath);
            }
Пример #6
0
            public void Should_Return_True_If_Directory_Exist()
            {
                // Given
                var context    = Substitute.For <ICakeContext>();
                var fileSystem = new FakeFileSystem(false);

                fileSystem.GetCreatedDirectory("some path");
                context.FileSystem.Returns(fileSystem);

                // When
                var result = DirectoryAliases.DirectoryExists(context, "some path");

                // Then
                Assert.True(result);
            }
Пример #7
0
            public void Should_Delete_Directories_Respecting_Predicate_In_Provided_Directory()
            {
                // Given
                var fixture = new FileSystemFixture();
                var context = Substitute.For <ICakeContext>();

                context.FileSystem.Returns(fixture.FileSystem);
                var directory = fixture.FileSystem.GetDirectory("/Temp/Hello");

                // When
                DirectoryAliases.CleanDirectory(context, directory.Path, info => !info.Hidden);

                // Then
                Assert.Equal(1, directory.GetDirectories("*", SearchScope.Recursive).Count());
                Assert.True(fixture.FileSystem.GetDirectory("/Temp/Hello/Hidden").Exists);
            }
Пример #8
0
            public void Should_Skip_Predicate_Folder()
            {
                // Given
                var fixture = new FileSystemFixture();
                var context = Substitute.For<ICakeContext>();
                context.FileSystem.Returns(fixture.FileSystem);
                var directory = context.FileSystem.GetDirectory("/Temp");

                // When
                DirectoryAliases.CleanDirectory(context, directory.Path, predicate => predicate.Path.FullPath != "/Temp/Goodbye");

                // Then
                Assert.True(context.FileSystem.GetDirectory("/Temp").Exists);
                Assert.Equal(1, directory.GetDirectories("*", SearchScope.Recursive).Count());
                Assert.True(context.FileSystem.GetDirectory("/Temp/Goodbye").Exists);
            }
Пример #9
0
            public void Should_Delete_Files_And_Directories_In_Provided_Directory_Using_Relative_Path()
            {
                // Given
                var directory = new DirectoryPath("./Hello");
                var fixture = new FileSystemFixture();
                var context = Substitute.For<ICakeContext>();
                context.FileSystem.Returns(fixture.FileSystem);
                context.Environment.WorkingDirectory.Returns(info => new DirectoryPath("/Temp"));

                // When
                DirectoryAliases.CleanDirectory(context, directory);

                // Then
                Assert.Empty(fixture.FileSystem.GetDirectory(directory).GetFiles("*", SearchScope.Recursive));
                Assert.Empty(fixture.FileSystem.GetDirectory(directory).GetDirectories("*", SearchScope.Recursive));
            }
Пример #10
0
            public void Should_Throw_If_Source_Directory_Does_Not_Exist()
            {
                // Given
                var context = Substitute.For<ICakeContext>();
                var environment = FakeEnvironment.CreateUnixEnvironment();
                context.FileSystem.Returns(new FakeFileSystem(environment));
                var sourcePath = new DirectoryPath("/Temp");
                var destinationPath = new DirectoryPath("/Temp2");

                // When
                var result = Record.Exception(() =>
                    DirectoryAliases.CopyDirectory(context, sourcePath, destinationPath));

                // Then
                Assert.IsType<DirectoryNotFoundException>(result);
                Assert.Equal("Source directory does not exist or could not be found: /Temp", result.Message);
            }
Пример #11
0
            public void Should_Create_Destination_Folder_If_Not_Exist()
            {
                // Given
                var context = Substitute.For<ICakeContext>();
                var environment = FakeEnvironment.CreateUnixEnvironment();
                var fileSystem = new FakeFileSystem(environment);
                CreateFileStructure(fileSystem);
                context.FileSystem.Returns(fileSystem);
                var sourcePath = new DirectoryPath("/Temp");
                var destinationPath = new DirectoryPath("/Temp2");

                // When
                DirectoryAliases.CopyDirectory(context, sourcePath, destinationPath);

                // Then
                Assert.True(fileSystem.GetDirectory(destinationPath).Exists);
            }
Пример #12
0
            public void Should_Create_Non_Existing_Directory()
            {
                // Given
                var fileSystem = Substitute.For<IFileSystem>();
                var directory = Substitute.For<IDirectory>();
                directory.Exists.Returns(false);
                fileSystem.GetDirectory(Arg.Is<DirectoryPath>(p => p.FullPath == "/Temp")).Returns(directory);

                var context = Substitute.For<ICakeContext>();
                context.FileSystem.Returns(fileSystem);

                // When
                DirectoryAliases.CreateDirectory(context, "/Temp");

                // Then
                directory.Received(1).Create();
            }
Пример #13
0
            public void Should_Not_Create_Directory_Or_Fail_If_It_Already_Exist ()
            {
                // Given
                var fileSystem = Substitute.For<IFileSystem> ();
                var directory = Substitute.For<IDirectory> ();
                directory.Exists.Returns (true);
                fileSystem.GetDirectory (Arg.Is<DirectoryPath> (p => p.FullPath == "/Temp")).Returns (directory);

                var context = Substitute.For<ICakeContext> ();
                context.FileSystem.Returns (fileSystem);

                // When
                DirectoryAliases.EnsureDirectoryExists (context, "/Temp");

                // Then
                directory.Received (0).Create ();
            }
Пример #14
0
                public void Should_Create_Directories_If_Missing()
                {
                    // Given
                    var fixture = new FileSystemFixture();
                    var context = Substitute.For<ICakeContext>();
                    context.FileSystem.Returns(fixture.FileSystem);

                    var paths = new[] {
                        "/Temp/Hello", "/NonExisting"
                    };

                    // When
                    DirectoryAliases.CleanDirectories(context, paths);

                    // Then
                    Assert.True(fixture.FileSystem.Exist((DirectoryPath)"/NonExisting"));
                }
Пример #15
0
            public void Should_Make_Relative_Path_Absolute ()
            {
                // Given
                var fileSystem = Substitute.For<IFileSystem> ();
                var context = Substitute.For<ICakeContext> ();
                var environment = Substitute.For<ICakeEnvironment> ();
                environment.WorkingDirectory.Returns ("/Temp");

                context.FileSystem.Returns (fileSystem);
                context.Environment.Returns (environment);

                // When
                DirectoryAliases.EnsureDirectoryExists (context, "Hello");

                // Then
                fileSystem.Received (1).GetDirectory (Arg.Is<DirectoryPath> (
                    p => p.FullPath == "/Temp/Hello"));
            }
Пример #16
0
                public void Should_Leave_Provided_Directories_Intact()
                {
                    // Given
                    var fixture = new FileSystemFixture();
                    var context = Substitute.For<ICakeContext>();
                    context.FileSystem.Returns(fixture.FileSystem);

                    var paths = new[] {
                        "/Temp/Hello", "/Temp/Goodbye"
                    };

                    // When
                    DirectoryAliases.CleanDirectories(context, paths);

                    // Then
                    Assert.True(fixture.FileSystem.GetDirectory(paths[0]).Exists);
                    Assert.True(fixture.FileSystem.GetDirectory(paths[1]).Exists);
                }
Пример #17
0
                public void Should_Delete_Files_In_Provided_Directories()
                {
                    // Given
                    var fixture = new FileSystemFixture();
                    var context = Substitute.For<ICakeContext>();
                    context.FileSystem.Returns(fixture.FileSystem);

                    var paths = new[] {
                        "/Temp/Hello", "/Temp/Goodbye"
                    };

                    // When
                    Record.Exception(() => DirectoryAliases.CleanDirectories(context, paths));

                    // Then
                    Assert.Empty(fixture.FileSystem.GetDirectory(paths[0]).GetFiles("*", SearchScope.Recursive));
                    Assert.Empty(fixture.FileSystem.GetDirectory(paths[1]).GetFiles("*", SearchScope.Recursive));
                }
Пример #18
0
            public void Should_List_All_Directories_In_Directory()
            {
                // Given
                var context     = Substitute.For <ICakeContext>();
                var environment = FakeEnvironment.CreateUnixEnvironment();
                var fileSystem  = new FakeFileSystem(environment);

                CreateFileStructure(fileSystem);
                context.FileSystem.Returns(fileSystem);
                var directoryPath = new DirectoryPath("/Temp");

                // When
                var directories = DirectoryAliases.GetSubDirectories(context, directoryPath);

                // Then
                Assert.Contains(directories, d => d.GetDirectoryName() == "Stuff");
                Assert.Contains(directories, d => d.GetDirectoryName() == "Things");
                Assert.DoesNotContain(directories, d => d.GetDirectoryName() == "file1.txt");
            }
Пример #19
0
            public void Should_Skip_Predicate_Folder()
            {
                // Given
                var directory = new DirectoryPath("/Temp");
                var fixture   = new FileSystemFixture();
                var context   = Substitute.For <ICakeContext>();

                context.FileSystem.Returns(fixture.FileSystem);
                var preHelloFiles = context.FileSystem
                                    .GetDirectory("/Temp/Hello/")
                                    .GetFiles("*.*", SearchScope.Recursive)
                                    .Select(file => file.Path.FullPath)
                                    .ToArray();

                var preGoodbyeFiles = context.FileSystem
                                      .GetDirectory("/Temp/Goodbye/")
                                      .GetFiles("*.*", SearchScope.Recursive)
                                      .Select(file => file.Path.FullPath)
                                      .ToArray();

                // When
                DirectoryAliases.CleanDirectory(context, directory, predicate => predicate.Path.FullPath != "/Temp/Goodbye");

                // Then
                var postHelloFiles = context.FileSystem
                                     .GetDirectory("/Temp/Hello/")
                                     .GetFiles("*.*", SearchScope.Recursive)
                                     .Select(file => file.Path.FullPath)
                                     .ToArray();

                var postGoodbyeFiles = context.FileSystem
                                       .GetDirectory("/Temp/Goodbye/")
                                       .GetFiles("*.*", SearchScope.Recursive)
                                       .Select(file => file.Path.FullPath)
                                       .ToArray();

                Assert.DoesNotContain(preHelloFiles, fileName => fixture.FileSystem.Exist((FilePath)fileName));
                Assert.Empty(postHelloFiles);
                Assert.Equal(preGoodbyeFiles, postGoodbyeFiles);
                Assert.All(preGoodbyeFiles, fileName => fixture.FileSystem.Exist((FilePath)fileName));
            }
Пример #20
0
            public void Should_Delete_Files_Respecting_Predicate_In_Provided_Directory()
            {
                // Given
                var directory = new DirectoryPath("/Temp/Hello");
                var fixture = new FileSystemFixture();
                var context = Substitute.For<ICakeContext>();
                Func<IFileSystemInfo, bool> wherePredicate = entry => !entry.Hidden;
                context.FileSystem.Returns(fixture.FileSystem);
                var filesNotMatchingPredicate = fixture
                    .FileSystem
                    .GetDirectory(directory)
                    .GetFiles("*", SearchScope.Recursive)
                    .Where(entry => !wherePredicate(entry))
                    .ToArray();

                // When
                DirectoryAliases.CleanDirectory(context, directory, wherePredicate);

                // Then
                Assert.Empty(fixture.FileSystem.GetDirectory(directory).GetFiles("*", SearchScope.Recursive).Where(wherePredicate));
                Assert.Equal(filesNotMatchingPredicate, fixture.FileSystem.GetDirectory(directory).GetFiles("*", SearchScope.Recursive));
            }
Пример #21
0
            public void Should_Recursively_Copy_Files_And_Directory()
            {
                // Given
                var context = Substitute.For<ICakeContext>();
                var environment = FakeEnvironment.CreateUnixEnvironment();
                var fileSystem = new FakeFileSystem(environment);
                CreateFileStructure(fileSystem);
                context.FileSystem.Returns(fileSystem);
                var sourcePath = new DirectoryPath("/Temp");
                var destinationPath = new DirectoryPath("/Temp2");

                // When
                DirectoryAliases.CopyDirectory(context, sourcePath, destinationPath);

                // Then
                // Directories should exist
                Assert.True(fileSystem.GetDirectory("/Temp2/Stuff").Exists);
                Assert.True(fileSystem.GetDirectory("/Temp2/Things").Exists);

                // Files should exist
                Assert.True(fileSystem.GetFile("/Temp2/Stuff/file1.txt").Exists);
                Assert.True(fileSystem.GetFile("/Temp2/Stuff/file2.txt").Exists);
                Assert.True(fileSystem.GetFile("/Temp2/Things/file1.txt").Exists);
            }