Пример #1
0
        public XmlPokeFixture(bool xmlExists = true, bool xmlWithDtd = false)
        {
            Settings = new XmlPokeSettings();

            var environment = FakeEnvironment.CreateUnixEnvironment();
            var fileSystem  = new FakeFileSystem(environment);

            fileSystem.CreateDirectory("/Working");

            if (xmlExists)
            {
                string content = xmlWithDtd ? Resources.XmlPoke_Xml_Dtd : Resources.XmlPoke_Xml;
                var    xmlFile = fileSystem.CreateFile("/Working/web.config").SetContent(content);
                XmlPath = xmlFile.Path;
            }

            FileSystem = fileSystem;

            Context = Substitute.For <ICakeContext>();
            Context.FileSystem.Returns(FileSystem);
            Context.Environment.Returns(environment);
        }
Пример #2
0
        private void PrepareWindowsFixture()
        {
            Environment = FakeEnvironment.CreateWindowsEnvironment();
            FileSystem  = new FakeFileSystem(Environment);

            // Directories
            FileSystem.CreateDirectory("C://Working");
            FileSystem.CreateDirectory("C://Working/Foo");
            FileSystem.CreateDirectory("C://Working/Foo/Bar");
            FileSystem.CreateDirectory("C:");
            FileSystem.CreateDirectory("C:/Program Files (x86)");

            // Files
            FileSystem.CreateFile("C:/Working/Foo/Bar/Qux.c");
            FileSystem.CreateFile("C:/Program Files (x86)/Foo.c");
            FileSystem.CreateFile("C:/Working/Project.A.Test.dll");
            FileSystem.CreateFile("C:/Working/Project.B.Test.dll");
            FileSystem.CreateFile("C:/Working/Project.IntegrationTest.dll");
            FileSystem.CreateFile("C:/Tools & Services/MyTool.dll");
            FileSystem.CreateFile("C:/Tools + Services/MyTool.dll");
        }
Пример #3
0
            public void Should_Return_Report(string logfileResourceName, CodeAnalysisReport report)
            {
                // Given
                var logFileName = Path.GetTempFileName();
                var environment = FakeEnvironment.CreateWindowsEnvironment();
                var fileSystem  = new FakeFileSystem(environment);

                using (var ms = new MemoryStream())
                    using (var stream = this.GetType().Assembly.GetManifestResourceStream("Cake.CodeAnalysisReporting.Tests.Testfiles." + logfileResourceName))
                    {
                        stream.CopyTo(ms);
                        var data = ms.ToArray();

                        fileSystem.CreateFile(logFileName, data);
                    }

                var outputFileName = Path.GetTempFileName();

                try
                {
                    // When
                    MsBuildCodeAnalysisReporter.CreateCodeAnalysisReport(
                        fileSystem,
                        logFileName,
                        report,
                        outputFileName);

                    // Then
                    File.Exists(outputFileName).ShouldBe(true);
                }
                finally
                {
                    if (File.Exists(outputFileName))
                    {
                        File.Delete(outputFileName);
                    }
                }
            }
Пример #4
0
                public void Should_Transform_Text_From_Disc_Template_Using_Specified_Placeholders()
                {
                    // Given
                    var environment = FakeEnvironment.CreateUnixEnvironment();
                    var fileSystem  = new FakeFileSystem(environment);

                    fileSystem.CreateFile("/Working/template.txt").SetContent("Hello {subject}");

                    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);
                }
Пример #5
0
        protected ChocolateyFixture()
        {
            Environment = Substitute.For <ICakeEnvironment>();
            Environment.WorkingDirectory = "/Working";

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

            Globber = Substitute.For <IGlobber>();

            ChocolateyToolResolver = Substitute.For <IChocolateyToolResolver>();

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

            // By default, there is a default tool.
            ChocolateyToolResolver.ResolvePath().Returns("/Working/tools/choco.exe");
            FileSystem.CreateFile("/Working/tools/choco.exe");

            // Set standard output.
            Process.GetStandardOutput().Returns(new string[0]);
        }
Пример #6
0
        public ScriptRunnerFixture(string fileName = "/Working/build.cake")
        {
            Script = fileName;
            Source = "Hello World";

            AssemblyLoader = Substitute.For <IAssemblyLoader>();

            Environment = FakeEnvironment.CreateUnixEnvironment();
            FileSystem  = new FakeFileSystem(Environment);
            FileSystem.CreateFile(Script.MakeAbsolute(Environment)).SetContent(Source);
            Globber = new Globber(FileSystem, Environment);

            Configuration = Substitute.For <ICakeConfiguration>();
            AliasFinder   = Substitute.For <IScriptAliasFinder>();
            Log           = new FakeLog();

            Session            = Substitute.For <IScriptSession>();
            ArgumentDictionary = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
            Engine             = Substitute.For <IScriptEngine>();
            Engine.CreateSession(Arg.Any <IScriptHost>()).Returns(Session);

            var runtime = new CakeRuntime();
            var referenceAssemblyResolver = Substitute.For <IReferenceAssemblyResolver>();

            referenceAssemblyResolver.GetReferenceAssemblies().Returns(Array.Empty <System.Reflection.Assembly>());
            ScriptAnalyzer    = new ScriptAnalyzer(FileSystem, Environment, Log, new[] { new FileLoadDirectiveProvider(Globber, Log) });
            ScriptProcessor   = Substitute.For <IScriptProcessor>();
            ScriptConventions = new ScriptConventions(FileSystem, AssemblyLoader, runtime, referenceAssemblyResolver);

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

            context.Environment.Returns(c => Environment);
            context.FileSystem.Returns(c => FileSystem);
            Host = Substitute.For <IScriptHost>();
            Host.Context.Returns(context);
        }
            public void Should_Return_Compatible_Packages_For_NuGet_Compliant_Package()
            {
                // Given
                var targetFramework = new FrameworkName(".NETFramework,Version=v4.5");
                var environment     = FakeEnvironment.CreateUnixEnvironment();

                environment.SetTargetFramework(targetFramework);

                var log = Substitute.For <ICakeLog>();

                var fileSystem = new FakeFileSystem(environment);

                var packageDirectory = fileSystem.CreateDirectory("/Working/addins/MyPackage");

                fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net40/myassembly1.dll"));
                fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net40/myassembly2.dll"));
                var compatibleDll1 = fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net45/myassembly1.dll"));
                var compatibleDll2 = fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net45/myassembly2.dll"));

                fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net452/myassembly1.dll"));
                fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net452/myassembly2.dll"));

                var assemblyCompatibilityFilter = Substitute.For <INuGetAssemblyCompatibilityFilter>();

                assemblyCompatibilityFilter.FilterCompatibleAssemblies(targetFramework, Arg.Any <IEnumerable <FilePath> >())
                .Returns(ci => new FilePath[] { "lib/net45/myassembly1.dll", "lib/net45/myassembly2.dll" });

                var locator = new NuGetPackageAssembliesLocator(fileSystem, log, assemblyCompatibilityFilter, environment);

                // When
                var result = locator.FindAssemblies(packageDirectory.Path);

                // Then
                Assert.Equal(new List <IFile> {
                    compatibleDll1, compatibleDll2
                }.AsReadOnly(), result);
            }
        private static FakeFileSystem CreateFileSystem(ICakeEnvironment environment)
        {
            var fileSystem = new FakeFileSystem(environment);

            fileSystem.CreateDirectory("/Temp");
            fileSystem.CreateDirectory("/Temp/HasDirectories");
            fileSystem.CreateDirectory("/Temp/HasDirectories/A");
            fileSystem.CreateDirectory("/Temp/HasFiles");
            fileSystem.CreateDirectory("/Temp/Hello");
            fileSystem.CreateDirectory("/Temp/Hello/Empty");
            fileSystem.CreateDirectory("/Temp/Hello/More/Empty");
            fileSystem.CreateDirectory("/Temp/Hello/World");
            fileSystem.CreateDirectory("/Temp/Goodbye");
            fileSystem.CreateDirectory("/Temp/Hello/Hidden").Hide();
            fileSystem.CreateDirectory("/HasReadonly");
            fileSystem.CreateFile("/Presentation.ppt");
            fileSystem.CreateFile("/Budget.xlsx");
            fileSystem.CreateFile("/Text.txt");
            fileSystem.CreateFile("/Temp");
            fileSystem.CreateFile("/Temp/Hello/Document.txt");
            fileSystem.CreateFile("/Temp/Hello/World/Text.txt");
            fileSystem.CreateFile("/Temp/Hello/World/Picture.png");
            fileSystem.CreateFile("/Temp/Hello/Hidden.txt").Hide();
            fileSystem.CreateFile("/Temp/Goodbye/OtherText.txt");
            fileSystem.CreateFile("/Temp/Goodbye/OtherPicture.png");
            fileSystem.CreateFile("/Temp/HasFiles/A.txt");
            fileSystem.CreateFile("/HasReadonly/Readonly.txt", FileAttributes.ReadOnly);
            fileSystem.CreateFile("/HasReadonly/Not-Readonly.txt");
            return(fileSystem);
        }
Пример #9
0
 internal void GivenFileExists(FilePath file)
 {
     FileSystem.CreateFile(file);
 }
Пример #10
0
        private void PrepareUnixFixture()
        {
            Environment = FakeEnvironment.CreateUnixEnvironment();
            FileSystem  = new FakeFileSystem(Environment);

            // Directories
            FileSystem.CreateDirectory("/Working");
            FileSystem.CreateDirectory("/Working/Foo");
            FileSystem.CreateDirectory("/Working/Foo/Bar");
            FileSystem.CreateDirectory("/Working/Bar");
            FileSystem.CreateDirectory("/Foo/Bar");
            FileSystem.CreateDirectory("/Foo (Bar)");

            // Files
            FileSystem.CreateFile("/Working/Foo/Bar/Qux.c");
            FileSystem.CreateFile("/Working/Foo/Bar/Qex.c");
            FileSystem.CreateFile("/Working/Foo/Bar/Qux.h");
            FileSystem.CreateFile("/Working/Foo/Baz/Qux.c");
            FileSystem.CreateFile("/Working/Foo/Bar/Baz/Qux.c");
            FileSystem.CreateFile("/Working/Bar/Qux.c");
            FileSystem.CreateFile("/Working/Bar/Qux.h");
            FileSystem.CreateFile("/Working/Foo.Bar.Test.dll");
            FileSystem.CreateFile("/Working/Bar.Qux.Test.dll");
            FileSystem.CreateFile("/Working/Quz.FooTest.dll");
            FileSystem.CreateFile("/Foo/Bar.baz");
            FileSystem.CreateFile("/Foo (Bar)/Baz.c");
        }
Пример #11
0
        public void EnsureFileExists(FilePath filePath)
        {
            var fullPath = filePath.MakeAbsolute(Context.Environment);

            _fileSystem.CreateFile(fullPath).SetContent(Guid.NewGuid().ToString("D"));
        }
Пример #12
0
        public static GlobberFixture UnixLike()
        {
            var environment = FakeEnvironment.CreateUnixEnvironment();
            var filesystem  = new FakeFileSystem(environment);

            // Directories
            filesystem.CreateDirectory("/RootDir");
            filesystem.CreateDirectory("/Working");
            filesystem.CreateDirectory("/Working/Foo");
            filesystem.CreateDirectory("/Working/Foo/Bar");
            filesystem.CreateDirectory("/Working/Bar");
            filesystem.CreateDirectory("/Foo/Bar");
            filesystem.CreateDirectory("/Foo (Bar)");
            filesystem.CreateDirectory("/Foo@Bar/");
            filesystem.CreateDirectory("/嵌套");
            filesystem.CreateDirectory("/嵌套/目录");

            // Files
            filesystem.CreateFile("/RootFile.sh");
            filesystem.CreateFile("/Working/Foo/Bar/Qux.c");
            filesystem.CreateFile("/Working/Foo/Bar/Qex.c");
            filesystem.CreateFile("/Working/Foo/Bar/Qux.h");
            filesystem.CreateFile("/Working/Foo/Baz/Qux.c");
            filesystem.CreateFile("/Working/Foo/Bar/Baz/Qux.c");
            filesystem.CreateFile("/Working/Bar/Qux.c");
            filesystem.CreateFile("/Working/Bar/Qux.h");
            filesystem.CreateFile("/Working/Foo.Bar.Test.dll");
            filesystem.CreateFile("/Working/Bar.Qux.Test.dll");
            filesystem.CreateFile("/Working/Quz.FooTest.dll");
            filesystem.CreateFile("/Foo/Bar.baz");
            filesystem.CreateFile("/Foo (Bar)/Baz.c");
            filesystem.CreateFile("/Foo@Bar/Baz.c");
            filesystem.CreateFile("/嵌套/目录/文件.延期");
            filesystem.CreateFile("/Working/foobar.rs");
            filesystem.CreateFile("/Working/foobaz.rs");
            filesystem.CreateFile("/Working/foobax.rs");

            return(new GlobberFixture(filesystem, environment));
        }
Пример #13
0
        public static GlobberFixture Windows()
        {
            var environment = FakeEnvironment.CreateWindowsEnvironment();
            var filesystem  = new FakeFileSystem(environment);

            // Directories
            filesystem.CreateDirectory("C://Working");
            filesystem.CreateDirectory("C://Working/Foo");
            filesystem.CreateDirectory("C://Working/Foo/Bar");
            filesystem.CreateDirectory("C:");
            filesystem.CreateDirectory("C:/Program Files (x86)");

            // UNC directories
            filesystem.CreateDirectory(@"\\Server");
            filesystem.CreateDirectory(@"\\Server\Foo");
            filesystem.CreateDirectory(@"\\Server\Foo\Bar");
            filesystem.CreateDirectory(@"\\Server\Bar");
            filesystem.CreateDirectory(@"\\Foo\Bar");
            filesystem.CreateDirectory(@"\\Foo (Bar)");
            filesystem.CreateDirectory(@"\\Foo@Bar\");
            filesystem.CreateDirectory(@"\\嵌套");
            filesystem.CreateDirectory(@"\\嵌套\目录");

            // Files
            filesystem.CreateFile("C:/Working/Foo/Bar/Qux.c");
            filesystem.CreateFile("C:/Program Files (x86)/Foo.c");
            filesystem.CreateFile("C:/Working/Project.A.Test.dll");
            filesystem.CreateFile("C:/Working/Project.B.Test.dll");
            filesystem.CreateFile("C:/Working/Project.IntegrationTest.dll");
            filesystem.CreateFile("C:/Tools & Services/MyTool.dll");
            filesystem.CreateFile("C:/Tools + Services/MyTool.dll");
            filesystem.CreateFile("C:/Some %2F Directory/MyTool.dll");
            filesystem.CreateFile("C:/Some ! Directory/MyTool.dll");
            filesystem.CreateFile("C:/Some@Directory/MyTool.dll");
            filesystem.CreateFile("C:/Working/foobar.rs");
            filesystem.CreateFile("C:/Working/foobaz.rs");
            filesystem.CreateFile("C:/Working/foobax.rs");

            // UNC files
            filesystem.CreateFile(@"\\Server\Foo/Bar/Qux.c");
            filesystem.CreateFile(@"\\Server\Foo/Bar/Qex.c");
            filesystem.CreateFile(@"\\Server\Foo/Bar/Qux.h");
            filesystem.CreateFile(@"\\Server\Foo/Baz/Qux.c");
            filesystem.CreateFile(@"\\Server\Foo/Bar/Baz/Qux.c");
            filesystem.CreateFile(@"\\Server\Bar/Qux.c");
            filesystem.CreateFile(@"\\Server\Bar/Qux.h");
            filesystem.CreateFile(@"\\Server\Foo.Bar.Test.dll");
            filesystem.CreateFile(@"\\Server\Bar.Qux.Test.dll");
            filesystem.CreateFile(@"\\Server\Quz.FooTest.dll");
            filesystem.CreateFile(@"\\Foo\Bar.baz");
            filesystem.CreateFile(@"\\Foo (Bar)\Baz.c");
            filesystem.CreateFile(@"\\Foo@Bar\Baz.c");
            filesystem.CreateFile(@"\\嵌套/目录/文件.延期");

            return(new GlobberFixture(filesystem, environment));
        }