コード例 #1
0
ファイル: NuGetFixture.cs プロジェクト: sjmcallister/cake
        public NuGetFixture(FilePath toolPath = null, bool defaultToolExist = true)
        {
            Environment = Substitute.For <ICakeEnvironment>();
            Environment.WorkingDirectory.Returns("/Working");

            Globber = Substitute.For <IGlobber>();
            Globber.Match("./tools/**/NuGet.exe").Returns(new[] { (FilePath)"/Working/tools/NuGet.exe" });

            Process = Substitute.For <IProcess>();
            Process.GetExitCode().Returns(0);
            ProcessRunner = Substitute.For <IProcessRunner>();
            ProcessRunner.Start(Arg.Any <ProcessStartInfo>()).Returns(Process);

            Log = Substitute.For <ICakeLog>();

            FileSystem = new FakeFileSystem(true);
            FileSystem.GetCreatedFile("/Working/existing.nuspec", Resources.Nuspec_NoMetadataValues);

            if (defaultToolExist)
            {
                FileSystem.GetCreatedFile("/Working/tools/NuGet.exe");
            }
            if (toolPath != null)
            {
                FileSystem.GetCreatedFile(toolPath);
            }
        }
コード例 #2
0
        public XmlTransformationFixture(bool xmlExists = true, bool xslExists = true, bool resultExist = false)
        {
            Settings = new XmlTransformationSettings();

            var fileSystem = new FakeFileSystem(false);

            fileSystem.GetCreatedDirectory("/Working");

            if (xmlExists)
            {
                var xmlFile = fileSystem.GetCreatedFile("/Working/breakfast_menu.xml", Resources.XmlTransformation_Xml);
                XmlPath = xmlFile.Path;
            }

            if (xslExists)
            {
                var xslFile = fileSystem.GetCreatedFile("/Working/breakfast_menu.xsl", Resources.XmlTransformation_Xsl);
                XslPath = xslFile.Path;
            }

            if (resultExist)
            {
                var resultFile = fileSystem.GetCreatedFile("/Working/breakfast_menu.htm", Resources.XmlTransformation_Htm);
                ResultPath = resultFile.Path;
            }
            else
            {
                ResultPath = "/Working/breakfast_menu.htm";
            }

            FileSystem = fileSystem;
        }
コード例 #3
0
        private static FakeFileSystem CreateFileSystem(bool isUnix)
        {
            var fileSystem = new FakeFileSystem(isUnix);

            fileSystem.GetCreatedDirectory("/Temp");
            fileSystem.GetCreatedDirectory("/Temp/HasDirectories");
            fileSystem.GetCreatedDirectory("/Temp/HasDirectories/A");
            fileSystem.GetCreatedDirectory("/Temp/HasFiles");
            fileSystem.GetCreatedDirectory("/Temp/Hello");
            fileSystem.GetCreatedDirectory("/Temp/Hello/Empty");
            fileSystem.GetCreatedDirectory("/Temp/Hello/More/Empty");
            fileSystem.GetCreatedDirectory("/Temp/Hello/World");
            fileSystem.GetCreatedDirectory("/Temp/Goodbye");
            fileSystem.GetCreatedFile("/Presentation.ppt");
            fileSystem.GetCreatedFile("/Budget.xlsx");
            fileSystem.GetCreatedFile("/Text.txt");
            fileSystem.GetCreatedFile("/Temp");
            fileSystem.GetCreatedFile("/Temp/Hello/Document.txt");
            fileSystem.GetCreatedFile("/Temp/Hello/World/Text.txt");
            fileSystem.GetCreatedFile("/Temp/Hello/World/Picture.png");
            fileSystem.GetCreatedFile("/Temp/Goodbye/OtherText.txt");
            fileSystem.GetCreatedFile("/Temp/Goodbye/OtherPicture.png");
            fileSystem.GetCreatedFile("/Temp/HasFiles/A.txt");
            return(fileSystem);
        }
コード例 #4
0
        public XmlDocExampleCodeParserFixture()
        {
            XmlFilePath = "/Working/Cake.Common.xml";
            Pattern     = "/Working/Cake.*.xml";

            var fileSystem = new FakeFileSystem(false);

            fileSystem.GetCreatedFile(XmlFilePath.FullPath, Resources.XmlDoc_ExampeCode_Cake_Common_Xml);
            fileSystem.GetCreatedFile("/Working/Cake.UnCommon.xml", Resources.XmlDoc_ExampeCode_Cake_Common_Xml);
            FileSystem = fileSystem;

            Globber = Substitute.For <IGlobber>();
            Globber.GetFiles(Pattern).Returns(new FilePath[] { "/Working/Cake.Common.xml", "/Working/Cake.UnCommon.xml" });
        }
コード例 #5
0
        public ScriptRunnerFixture(string fileName = "./build.cake")
        {
            Source = "Hello World";

            Options           = new CakeOptions();
            Options.Verbosity = Verbosity.Diagnostic;
            Options.Script    = fileName;

            Environment = Substitute.For <ICakeEnvironment>();
            Environment.WorkingDirectory.Returns("/Working");

            FileSystem = new FakeFileSystem(true);
            FileSystem.GetCreatedFile(Options.Script.MakeAbsolute(Environment), Source);

            Session        = Substitute.For <IScriptSession>();
            SessionFactory = Substitute.For <IScriptSessionFactory>();
            SessionFactory.CreateSession(Arg.Any <IScriptHost>()).Returns(Session);

            Arguments      = new CakeArguments();
            AliasGenerator = Substitute.For <IScriptAliasGenerator>();
            Host           = Substitute.For <IScriptHost>();
            Log            = Substitute.For <ICakeLog>();

            ScriptProcessor = new ScriptProcessor(FileSystem, Environment, Log);
        }
コード例 #6
0
                public void Should_Transform_Text_From_Disc_Template_Using_Specified_Placeholders()
                {
                    // Given
                    var fileSystem = new FakeFileSystem(false);

                    fileSystem.GetCreatedFile("/Working/template.txt", "Hello {subject}");

                    var environment = Substitute.For <ICakeEnvironment>();

                    environment.WorkingDirectory.Returns("/Working");

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

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

                    var transform = TextTransformationAliases.TransformTextFile(context, "./template.txt", "{", "}");

                    transform.WithToken("subject", "World");

                    // When
                    var result = transform.ToString();


                    // Then
                    Assert.Equal("Hello World", result);
                }
コード例 #7
0
        public ScriptRunnerFixture(string fileName = "./build.cake")
        {
            Script = fileName;
            Source = "Hello World";

            ArgumentDictionary = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            Environment = Substitute.For <ICakeEnvironment>();
            Environment.WorkingDirectory.Returns("/Working");

            FileSystem = new FakeFileSystem(true);
            FileSystem.GetCreatedFile(Script.MakeAbsolute(Environment), Source);

            Globber = Substitute.For <IGlobber>();

            Session        = Substitute.For <IScriptSession>();
            SessionFactory = Substitute.For <IScriptSessionFactory>();
            SessionFactory.CreateSession(Arg.Any <IScriptHost>(), ArgumentDictionary).Returns(Session);

            Arguments         = Substitute.For <ICakeArguments>();
            AliasGenerator    = Substitute.For <IScriptAliasGenerator>();
            Log               = Substitute.For <ICakeLog>();
            NuGetToolResolver = new NuGetToolResolver(FileSystem, Globber, Environment);
            ScriptProcessor   = new ScriptProcessor(FileSystem, Environment, Log, NuGetToolResolver);

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

            context.Arguments.Returns(c => Arguments);
            context.Environment.Returns(c => Environment);
            context.FileSystem.Returns(c => FileSystem);

            Host = Substitute.For <IScriptHost>();
            Host.Context.Returns(context);
        }
コード例 #8
0
            public void Should_Read_File_With_Single_Line_Correctly()
            {
                // Given
                var fileSystem = new FakeFileSystem(true);
                var file       = fileSystem.GetCreatedFile("text.txt", "Hello World");

                // When
                var result = file.ReadLines(Encoding.UTF8).ToList();

                // Then
                Assert.Equal(1, result.Count);
            }
コード例 #9
0
            public void Should_Return_Empty_List_If_File_Contains_No_Lines()
            {
                // Given
                var fileSystem = new FakeFileSystem(true);
                var file       = fileSystem.GetCreatedFile("text.txt");

                // When
                var result = file.ReadLines(Encoding.UTF8).ToList();

                // Then
                Assert.Equal(0, result.Count);
            }
コード例 #10
0
ファイル: GlobberFixture.cs プロジェクト: natificent/cake
        public GlobberFixture(bool isFileSystemCaseSensitive)
        {
            FileSystem = new FakeFileSystem(isFileSystemCaseSensitive);
            FileSystem.GetCreatedDirectory("/Temp");
            FileSystem.GetCreatedDirectory("/Temp/Hello");
            FileSystem.GetCreatedDirectory("/Temp/Hello/World");
            FileSystem.GetCreatedDirectory("/Temp/Goodbye");
            FileSystem.GetCreatedFile("/Presentation.ppt");
            FileSystem.GetCreatedFile("/Budget.xlsx");
            FileSystem.GetCreatedFile("/Text.txt");
            FileSystem.GetCreatedFile("/Temp");
            FileSystem.GetCreatedFile("/Temp/Hello/World/Text.txt");
            FileSystem.GetCreatedFile("/Temp/Hello/World/Picture.png");
            FileSystem.GetCreatedFile("/Temp/Goodbye/OtherText.txt");
            FileSystem.GetCreatedFile("/Temp/Goodbye/OtherPicture.png");
            FileSystem.GetCreatedFile("/Working/Text.txt");
            FileSystem.GetCreatedFile("C:/Temp/Hello/World/Text.txt");

            Environment = Substitute.For <ICakeEnvironment>();
            Environment.IsUnix().Returns(isFileSystemCaseSensitive);
            Environment.WorkingDirectory.Returns("/Temp");
        }
コード例 #11
0
ファイル: FileAliasesTests.cs プロジェクト: natificent/cake
            public void Should_Return_True_If_Directory_Exist()
            {
                // Given
                var context    = Substitute.For <ICakeContext>();
                var fileSystem = new FakeFileSystem(false);

                fileSystem.GetCreatedFile("some file.txt");
                context.FileSystem.Returns(fileSystem);

                // When
                var result = FileAliases.FileExists(context, "some file.txt");

                // Then
                Assert.True(result);
            }
コード例 #12
0
            public void Should_Zip_Provided_Files()
            {
                // Given
                var fileSystem = new FakeFileSystem(false);

                fileSystem.GetCreatedFile("/Root/file.txt", "HelloWorld");
                var environment = Substitute.For <ICakeEnvironment>();
                var log         = Substitute.For <ICakeLog>();
                var zipper      = new Zipper(fileSystem, environment, log);

                // When
                zipper.Zip("/Root", "/file.zip", new FilePath[] { "/Root/file.txt" });

                // Then
                Assert.True(fileSystem.GetFile("/file.zip").Exists);
            }
コード例 #13
0
            public void Should_Throw_If_File_Is_Not_Relative_To_Root()
            {
                // Given
                var fileSystem = new FakeFileSystem(false);

                fileSystem.GetCreatedFile("/NotRoot/file.txt");
                var environment = Substitute.For <ICakeEnvironment>();
                var log         = Substitute.For <ICakeLog>();
                var zipper      = new Zipper(fileSystem, environment, log);

                // When
                var result = Record.Exception(() => zipper.Zip("/Root", "/file.zip", new FilePath[] { "/NotRoot/file.txt" }));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("File '/NotRoot/file.txt' is not relative to root path '/Root'.", result.Message);
            }
コード例 #14
0
        public ScriptProcessorFixture(string scriptPath   = "./build.cake", bool scriptExist = true,
                                      string scriptSource = "Console.WriteLine();")
        {
            ScriptPath = new FilePath(scriptPath);
            Source     = scriptSource;

            Environment = Substitute.For <ICakeEnvironment>();
            Environment.WorkingDirectory.Returns("/Working");

            Log = Substitute.For <ICakeLog>();

            FileSystem = new FakeFileSystem(true);
            if (scriptExist)
            {
                FileSystem.GetCreatedFile(ScriptPath.MakeAbsolute(Environment), Source);
            }
        }
コード例 #15
0
            public void Should_Read_Content_Of_File_And_Parse_It()
            {
                // Given
                var context     = Substitute.For <ICakeContext>();
                var environment = Substitute.For <ICakeEnvironment>();

                environment.WorkingDirectory = "/Working";
                var fileSystem = new FakeFileSystem(true);

                fileSystem.GetCreatedFile("/Working/ReleaseNotes.md", "### New in 1.2.3");
                context.FileSystem.Returns(fileSystem);
                context.Environment.Returns(environment);

                // When
                var result = context.ParseAllReleaseNotes("ReleaseNotes.md");

                // Then
                Assert.Equal("1.2.3", result[0].Version.ToString());
            }
コード例 #16
0
            public void Should_Return_The_Latest_Release_Notes()
            {
                // Given
                var context     = Substitute.For <ICakeContext>();
                var environment = Substitute.For <ICakeEnvironment>();

                environment.WorkingDirectory = "/Working";
                var fileSystem = new FakeFileSystem(true);

                fileSystem.GetCreatedFile("/Working/ReleaseNotes.md", "* 1.2.3 - Line 1\n* 1.2.5 Line 2\n* 1.2.4 Line 3");
                context.FileSystem.Returns(fileSystem);
                context.Environment.Returns(environment);

                // When
                var result = context.ParseReleaseNotes("ReleaseNotes.md");

                // Then
                Assert.Equal("1.2.5", result.Version.ToString());
            }
コード例 #17
0
        private MSBuildRunnerFixture(bool is64BitOperativeSystem, bool msBuildFileExist, IEnumerable <DirectoryPath> existingMSBuildPaths)
        {
            Process = Substitute.For <IProcess>();

            ProcessRunner = Substitute.For <IProcessRunner>();
            ProcessRunner.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>()).Returns(Process);

            Environment = Substitute.For <ICakeEnvironment>();
            Environment.Is64BitOperativeSystem().Returns(is64BitOperativeSystem);
            Environment.GetSpecialPath(SpecialPath.ProgramFilesX86).Returns("/Program86");
            Environment.GetSpecialPath(SpecialPath.Windows).Returns("/Windows");
            Environment.WorkingDirectory.Returns("/Working");

            Settings             = new MSBuildSettings("./src/Solution.sln");
            Settings.ToolVersion = MSBuildToolVersion.VS2013;

            if (existingMSBuildPaths != null)
            {
                // Add all existing MSBuild tool paths.
                var fileSystem = new FakeFileSystem(true);
                FileSystem = fileSystem;
                foreach (var existingPath in existingMSBuildPaths)
                {
                    fileSystem.GetCreatedDirectory(existingPath);
                    fileSystem.GetCreatedFile(existingPath.GetFilePath("MSBuild.exe"));
                }
            }
            else
            {
                FileSystem = Substitute.For <IFileSystem>();
                FileSystem.GetFile(
                    Arg.Is <FilePath>(p => p.FullPath.EndsWith("MSBuild.exe", System.StringComparison.Ordinal)))
                .Returns(c =>
                {
                    // All requested files exist.
                    var file = Substitute.For <IFile>();
                    file.Exists.Returns(msBuildFileExist);
                    file.Path.Returns(c.Arg <FilePath>());
                    return(file);
                });
            }
        }
コード例 #18
0
            public void Should_Read_File_With_Multiple_Lines_Correctly()
            {
                // Given
                var fileSystem = new FakeFileSystem(true);
                var content    = new StringBuilder();

                content.AppendLine("1");
                content.AppendLine("2");
                content.AppendLine("3");
                var file = fileSystem.GetCreatedFile("text.txt", content.ToString());

                // When
                var result = file.ReadLines(Encoding.UTF8).ToList();

                // Then
                Assert.Equal(3, result.Count);
                Assert.Equal("1", result[0]);
                Assert.Equal("2", result[1]);
                Assert.Equal("3", result[2]);
            }
コード例 #19
0
            public void Zipped_File_Should_Contain_Correct_Content()
            {
                // Given
                var fileSystem = new FakeFileSystem(false);

                fileSystem.GetCreatedFile("/Root/Stuff/file.txt", "HelloWorld");
                var environment = Substitute.For <ICakeEnvironment>();
                var log         = Substitute.For <ICakeLog>();
                var zipper      = new Zipper(fileSystem, environment, log);

                zipper.Zip("/Root", "/file.zip", new FilePath[] { "/Root/Stuff/file.txt" });

                // When
                var archive = new ZipArchive(fileSystem.GetFile("/file.zip").Open(FileMode.Open, FileAccess.Read, FileShare.Read));
                var entry   = archive.GetEntry("Stuff/file.txt");

                // Then
                Assert.NotNull(entry);
                Assert.True(entry.Length == 10);
            }
コード例 #20
0
            private FakeFileSystem CreateFileStructure(FakeFileSystem ffs)
            {
                Action <string> dir  = path => ffs.GetCreatedDirectory(path);
                Action <string> file = path => ffs.GetCreatedFile(path);

                dir("C:/Temp");
                {
                    file("C:/Temp/file1.txt");
                    file("C:/Temp/file2.txt");
                    dir("C:/Temp/Stuff");
                    {
                        file("C:/Temp/Stuff/file1.txt");
                        file("C:/Temp/Stuff/file2.txt");
                    }
                    dir("C:/Temp/Things");
                    {
                        file("C:/Temp/Things/file1.txt");
                    }
                }

                return(ffs);
            }
コード例 #21
0
        protected NuGetFixture()
        {
            Environment = Substitute.For <ICakeEnvironment>();
            Environment.WorkingDirectory.Returns("/Working");

            Process = Substitute.For <IProcess>();
            Process.GetExitCode().Returns(0);
            ProcessRunner = Substitute.For <IProcessRunner>();
            ProcessRunner.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>()).Returns(Process);

            NuGetToolResolver = Substitute.For <IToolResolver>();
            NuGetToolResolver.Name.Returns("NuGet");

            Log        = Substitute.For <ICakeLog>();
            FileSystem = new FakeFileSystem(true);

            // By default, there is a default tool.
            NuGetToolResolver.ResolveToolPath().Returns("/Working/tools/NuGet.exe");
            FileSystem.GetCreatedFile("/Working/tools/NuGet.exe");

            // Set standard output.
            Process.GetStandardOutput().Returns(new string[0]);
        }
コード例 #22
0
                public void Should_Create_Text_Transformation_From_Disc_Template()
                {
                    // Given
                    var fileSystem = new FakeFileSystem(false);

                    fileSystem.GetCreatedFile("/Working/template.txt", "Hello World");

                    var environment = Substitute.For <ICakeEnvironment>();

                    environment.WorkingDirectory.Returns("/Working");

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

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

                    // When
                    var result = TextTransformationAliases.TransformTextFile(
                        context, "./template.txt", "{", "}");

                    // Then
                    Assert.Equal("Hello World", result.ToString());
                }