public Bundles_FileUrl_Tests()
        {
            urlGenerator = new Mock<IUrlGenerator>();
            fileSystem = new FakeFileSystem
            {
                { "~/test.png", new byte[] { 1, 2, 3 } }
            };

            using (var sha1 = SHA1.Create())
            {
                hashOfFileContent = sha1.ComputeHash(new byte[] { 1, 2, 3 }).ToHexString();
            }

            var settings = new CassetteSettings
            {
                SourceDirectory = fileSystem
            };

            fileAccessAuthorization = new Mock<IFileAccessAuthorization>();
            fileAccessAuthorization.Setup(a => a.CanAccess("~/test.png")).Returns(true);

            var referenceBuilder = new Mock<IReferenceBuilder>();
            var bundles = new BundleCollection(settings, Mock.Of<IFileSearchProvider>(), Mock.Of<IBundleFactoryProvider>());
            var bundleCacheRebuilder = new Mock<IBundleCacheRebuilder>();
            Bundles.Helper = new BundlesHelper(bundles, settings, urlGenerator.Object, () => referenceBuilder.Object, fileAccessAuthorization.Object, bundleCacheRebuilder.Object, new SimpleJsonSerializer());
        }
Пример #2
0
 public void ThrowsExceptionIfFileDoesntExist()
 {
     var directory = new FakeFileSystem();
     var loader = new ImageFileLoader(directory, urlGenerator.Object);
     var exception = Record.Exception(() => loader.GetImageBytes("/cassette.axd/file/test-hash123.png"));
     exception.ShouldBeType<FileNotFoundException>();
 }
Пример #3
0
 public void ReadsBytesFromFile()
 {
     var directory = new FakeFileSystem
     {
         { "~/test.png", new byte[] { 1, 2, 3 } }
     };
     var loader = new ImageFileLoader(directory, urlGenerator.Object);
     var output = loader.GetImageBytes("/cassette.axd/file/test-hash123.png");
     output.ShouldEqual(new byte[] { 1, 2, 3 });
 }
        public CachedFileRequestHandler_ProcessRequestTests()
        {
            cacheDirectory = new FakeFileSystem();

            response = new Mock<HttpResponseBase>();
            outputStream = new MemoryStream();
            response.SetupGet(r => r.OutputStream).Returns(outputStream);
            cache = new Mock<HttpCachePolicyBase>();
            response.SetupGet(r => r.Cache).Returns(cache.Object);

            handler = new CachedFileRequestHandler(response.Object, cacheDirectory);
        }
        public CssImageToDataUriTransformer_Tests()
        {
            fileSystem = new FakeFileSystem
            {
                "~/asset.css"
            };

            asset = new Mock<IAsset>();
            asset.SetupGet(a => a.Path).Returns("~/asset.css");

            transformer = new CssImageToDataUriTransformer(url => true, fileSystem);
        }
        public void ShouldReturnAddGacReferenceProcessorWhenFileReferenceNotFound()
        {
            var fs = new FakeFileSystem();
            fs.FileExists(false);
            _factory = new AddReferenceProcessorFactory(_solution, _processors, fs);
            var request = new AddReferenceRequest
            {
                Reference = "Nancy.dll"
            };

            var processor = _factory.CreateProcessorFor(request);
            processor.ShouldBeType<AddGacReferenceProcessor>();
        }
        public ExpandCssUrlsAssetTransformer_Tests()
        {
            fileSystem = new FakeFileSystem
            {
                "~/styles/asset.css"
            };

            urlGenerator = new Mock<IUrlGenerator>();
            urlGenerator.Setup(u => u.CreateRawFileUrl(It.IsAny<string>(), It.IsAny<string>()))
                        .Returns<string, string>((f, h) => "EXPANDED");

            transformer = new ExpandCssUrlsAssetTransformer(fileSystem, urlGenerator.Object);
            asset = new Mock<IAsset>();
            asset.SetupGet(a => a.Path).Returns("~/styles/asset.css");
        }
Пример #8
0
 public void Can_Compile_LESS_that_imports_another_LESS_file()
 {
     var fileSystem = new FakeFileSystem
     {
         {"~/lib.less", "@color: white;"},
         "~/test.less"
     };
     compileContext.RootDirectory = fileSystem;
     compileContext.SourceFilePath = "~/test.less";
     var css = compiler.Compile(
         "@import \"lib\";\nbody{ color: @color }",
         compileContext
     );
     css.Output.ShouldEqual("body {\n  color: white;\n}\n");
 }
 public ExternalScriptBundleDeserializer_Tests()
 {
     element = new XElement(
         "ExternalScriptBundle",
         new XAttribute("Path", "~"),
         new XAttribute("Hash", "010203"),
         new XAttribute("Url", "http://example.com/"),
         new XAttribute("FallbackCondition", "CONDITION")
     );
     directory = new FakeFileSystem
     {
         { "~/script/010203.js", "content" }
     };
     var urlModifier = new VirtualDirectoryPrepender("/");
     reader = new ExternalScriptBundleDeserializer(urlModifier);
     DeserializeToBundle();
 }
Пример #10
0
        public void CanRenderAGlobalVariable()
        {
            //Given a layout in the root which contains an @ variable
            var files = new FakeFileSystem()
            {
                { "views\\someview.hbs", "This is the {{@body.title}}"}
            };

            //When a viewengine renders that view
            var handlebarsConfiguration = new HandlebarsConfiguration() {FileSystem = files};
            var handlebars = Handlebars.Create(handlebarsConfiguration);
            var render = handlebars.CompileView("views\\someview.hbs");
            var output = render(new {@body = new {title = "THING"}});

            //Then the correct output should be rendered
            Assert.AreEqual("This is the THING", output);
        }
 public StylesheetBundleDeserializer_Tests()
 {
     mediaElement = new XElement("HtmlAttribute", new XAttribute("Name", "media"), new XAttribute("Value", "expected-media"));
     element = new XElement(
         "StylesheetBundle",
         new XAttribute("Path", "~"),
         new XAttribute("Hash", "010203"),
         new XAttribute("Condition", "expected-condition"),
         mediaElement
     );
     directory = new FakeFileSystem
     {
         { "~/stylesheet/010203.css", "content" }
     };
     var urlModifier = new VirtualDirectoryPrepender("/");
     reader = new StylesheetBundleDeserializer(urlModifier);
     DeserializeBundle();
 }
Пример #12
0
        public void CanLoadAViewWithALayoutInTheRoot()
        {
            //Given a layout in the root
            var files = new FakeFileSystem()
            {
                {"somelayout.hbs", "layout start\r\n{{{body}}}\r\nlayout end"},
                //And a view in a subfolder folder which uses that layout
                { "views\\someview.hbs", "{{!< somelayout}}This is the body"}
            };

            //When a viewengine renders that view
            var handlebars = HandlebarsDotNet.Handlebars.Create(new HandlebarsConfiguration() {FileSystem = files});
            var render = handlebars.CompileView("views\\someview.hbs");
            var output = render(null);

            //Then the correct output should be rendered
            Assert.AreEqual("layout start\r\nThis is the body\r\nlayout end", output);
        }
        public ExternalStylesheetBundleDeserializer_Tests()
        {
            element = new XElement(
                "ExternalStylesheetBundle",
                new XAttribute("Path", "~"),
                new XAttribute("Hash", "010203"),
                new XAttribute("Url", "http://example.com/"),
                new XAttribute("Condition", "CONDITION"),
                new XElement("HtmlAttribute", new XAttribute("Name", "media"), new XAttribute("Value", "MEDIA"))
            );
            directory = new FakeFileSystem
            {
                { "~/stylesheet/010203.css", "content"}
            };
            var urlModifier = new VirtualDirectoryPrepender("/");

            reader = new ExternalStylesheetBundleDeserializer(urlModifier);

            DeserializeElement();
        }
 public StylesheetBundleDeserializer_Tests()
 {
     mediaElement = new XElement("HtmlAttribute", new XAttribute("Name", "media"), new XAttribute("Value", "expected-media"));
     element = new XElement(
         "StylesheetBundle",
         new XAttribute("Path", "~"),
         new XAttribute("Hash", "010203"),
         new XAttribute("Condition", "expected-condition"),
         new XAttribute("Renderer", typeof(StylesheetHtmlRenderer).AssemblyQualifiedName),
         mediaElement
     );
     directory = new FakeFileSystem
     {
         { "~/stylesheet/010203.css", "content" }
     };
     var container = new TinyIoCContainer();
     container.Register(Mock.Of<IUrlGenerator>());
     reader = new StylesheetBundleDeserializer(container);
     DeserializeBundle();
 }
 public ExternalScriptBundleDeserializer_Tests()
 {
     element = new XElement(
         "ExternalScriptBundle",
         new XAttribute("Path", "~"),
         new XAttribute("Hash", "010203"),
         new XAttribute("Url", "http://example.com/"),
         new XAttribute("FallbackCondition", "CONDITION"),
         new XAttribute("Renderer", typeof(ExternalScriptBundle.ExternalScriptBundleRenderer).AssemblyQualifiedName),
         new XAttribute("FallbackRenderer", typeof(ScriptBundleHtmlRenderer).AssemblyQualifiedName)
     );
     directory = new FakeFileSystem
     {
         { "~/script/010203.js", "content" }
     };
     var container = new TinyIoCContainer();
     container.Register(Mock.Of<IUrlGenerator>());
     reader = new ExternalScriptBundleDeserializer(container);
     DeserializeToBundle();
 }
Пример #16
0
        public ScriptBundleDeserializer_Tests()
        {
            element = new XElement("ScriptBundle",
                new XAttribute("Path", "~"),
                new XAttribute("Hash", "010203"),
                new XAttribute("Condition", "expected-condition"),
                new XAttribute("ContentType", "text/javascript"),
                new XAttribute("PageLocation", "PAGE-LOCATION"),
                new XAttribute("Renderer", typeof(ScriptBundleHtmlRenderer).AssemblyQualifiedName),
                new XElement("Asset", new XAttribute("Path", "~/asset-1"), new XAttribute("AssetCacheValidatorType", typeof(FileAssetCacheValidator).FullName)),
                new XElement("Asset", new XAttribute("Path", "~/asset-2"), new XAttribute("AssetCacheValidatorType", typeof(FileAssetCacheValidator).FullName)),
                new XElement("Reference", new XAttribute("Path", "~/reference-1")),
                new XElement("Reference", new XAttribute("Path", "~/reference-2")),
                new XElement(
                    "HtmlAttribute",
                    new XAttribute("Name", "type"),
                    new XAttribute("Value", "text/javascript")
                ),
                new XElement(
                    "HtmlAttribute",
                    new XAttribute("Name", "attribute1"),
                    new XAttribute("Value", "value1")
                ),
                new XElement(
                    "HtmlAttribute",
                    new XAttribute("Name", "attribute2"),
                    new XAttribute("Value", "value2")
                )
            );

            directory = new FakeFileSystem
            {
                { "~/script/010203.js", "CONTENT" }
            };
            var container = new TinyIoCContainer();
            container.Register(Mock.Of<IUrlGenerator>());

            deserializer = new ScriptBundleDeserializer(container);

            DeserializeBundle();
        }
Пример #17
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);
            }
Пример #18
0
        public void CanUseDictionaryModelInLayout()
        {
            var files = new FakeFileSystem
            {
                { "views\\layout.hbs", "Layout: {{property}}\r\n{{{body}}}" },
                { "views\\someview.hbs", "{{!< layout}}\r\n\r\nBody: {{property}}" },
            };

            var handlebarsConfiguration = new HandlebarsConfiguration {
                FileSystem = files
            };
            var handlebars = Handlebars.Create(handlebarsConfiguration);
            var render     = handlebars.CompileView("views\\someview.hbs");
            var output     = render(
                new Dictionary <string, object>
            {
                { "property", "Foo" },
            }
                );

            Assert.Equal("Layout: Foo\r\n\r\nBody: Foo", output);
        }
Пример #19
0
        public NuGetPackageInstallerFixture()
        {
            Environment     = FakeEnvironment.CreateUnixEnvironment();
            FileSystem      = new FakeFileSystem(Environment);
            ContentResolver = Substitute.For <INuGetContentResolver>();
            Log             = Substitute.For <ICakeLog>();
            Config          = Substitute.For <ICakeConfiguration>();

            ToolResolver = Substitute.For <INuGetToolResolver>();
            ToolResolver.ResolvePath().Returns(new FilePath("/Working/tools/nuget.exe"));

            Package     = new PackageReference("nuget:https://myget.org/temp/?package=Cake.Foo&prerelease&version=1.2.3");
            PackageType = PackageType.Addin;
            InstallPath = new DirectoryPath("./nuget");

            ProcessRunner = Substitute.For <IProcessRunner>();
            ProcessRunner.When(p => p.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>()))
            .Do(info => FileSystem.CreateDirectory(InstallPath.Combine(Package.Package.ToLowerInvariant()).Combine(Package.Package)));

            InProc  = new InProcessInstaller(FileSystem, Environment, ContentResolver, Log, Config);
            OutProc = new OutOfProcessInstaller(FileSystem, Environment, ProcessRunner, ToolResolver, ContentResolver, Log, Config);
        }
        public void SavePost_SaveSimplePost()
        {
            IFileSystem   testFileSystem = new FakeFileSystem();
            BlogDataStore testDataStore  = new BlogDataStore(testFileSystem);
            Post          testPost       = new Post
            {
                Slug     = "Test-Post-Slug",
                Title    = "Test Title",
                Body     = "Test contents",
                IsPublic = true
            };

            testPost.PubDate = DateTime.UtcNow;
            testDataStore.SavePost(testPost);

            Assert.True(testFileSystem.FileExists($"BlogFiles\\Posts\\{testPost.PubDate.UtcDateTime.ToString("s").Replace(":","-")}_{testPost.Id.ToString("N")}.xml"));
            Post result = testDataStore.GetPost(testPost.Id.ToString("N"));

            Assert.Equal("Test-Post-Slug", result.Slug);
            Assert.Equal("Test Title", result.Title);
            Assert.Equal("Test contents", result.Body);
        }
Пример #21
0
        public ProgramFixture()
        {
            Bootstrapper   = new TestContainerConfigurator();
            Environment    = FakeEnvironment.CreateUnixEnvironment();
            FileSystem     = new FakeFileSystem(Environment);
            Log            = new FakeLog();
            Console        = new FakeConsole();
            ModuleSearcher = Substitute.For <IModuleSearcher>();
            Builder        = new BuildFeatureFixture(FileSystem, Environment, Bootstrapper, Log, Console, ModuleSearcher);

            // CLI overrides
            Overrides = new List <Action <ContainerBuilder> >()
            {
                builder => builder.RegisterInstance(Bootstrapper).As <IContainerConfigurator>(),
                builder => builder.RegisterInstance(Environment).As <ICakeEnvironment>(),
                builder => builder.RegisterInstance(FileSystem).As <IFileSystem>(),
                builder => builder.RegisterInstance(Log).As <ICakeLog>(),
                builder => builder.RegisterInstance(Console).As <IConsole>(),
                builder => builder.RegisterInstance(ModuleSearcher).As <IModuleSearcher>(),
                builder => builder.RegisterInstance(Builder).As <IBuildFeature>()
            };
        }
Пример #22
0
        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");
        }
        public void SaveFiles_CreatesFilesInUploadsFolder()
        {
            FakeFormFile file1 = new FakeFormFile();

            file1.FileName = "file1";
            file1.Length   = 5;
            FakeFormFile file2 = new FakeFormFile();

            file2.FileName = "file2";
            file2.Length   = 5;
            List <IFormFile> files = new List <IFormFile>();

            files.Add(file1);
            files.Add(file2);
            IFileSystem   testFileSystem = new FakeFileSystem();
            BlogDataStore testDataStore  = new BlogDataStore(testFileSystem);

            testDataStore.SaveFiles(files);

            Assert.True(testFileSystem.FileExists("wwwroot\\Uploads\\file1"));
            Assert.True(testFileSystem.FileExists("wwwroot\\Uploads\\file2"));
        }
Пример #24
0
        public ScriptBundleDeserializer_Tests()
        {
            element = new XElement("ScriptBundle",
                                   new XAttribute("Path", "~"),
                                   new XAttribute("Hash", "010203"),
                                   new XAttribute("Condition", "expected-condition"),
                                   new XAttribute("ContentType", "text/javascript"),
                                   new XAttribute("PageLocation", "PAGE-LOCATION"),
                                   new XElement("Asset", new XAttribute("Path", "~/asset-1"), new XAttribute("AssetCacheValidatorType", typeof(FileAssetCacheValidator).FullName)),
                                   new XElement("Asset", new XAttribute("Path", "~/asset-2"), new XAttribute("AssetCacheValidatorType", typeof(FileAssetCacheValidator).FullName)),
                                   new XElement("Reference", new XAttribute("Path", "~/reference-1")),
                                   new XElement("Reference", new XAttribute("Path", "~/reference-2")),
                                   new XElement(
                                       "HtmlAttribute",
                                       new XAttribute("Name", "type"),
                                       new XAttribute("Value", "text/javascript")
                                       ),
                                   new XElement(
                                       "HtmlAttribute",
                                       new XAttribute("Name", "attribute1"),
                                       new XAttribute("Value", "value1")
                                       ),
                                   new XElement(
                                       "HtmlAttribute",
                                       new XAttribute("Name", "attribute2"),
                                       new XAttribute("Value", "value2")
                                       )
                                   );

            directory = new FakeFileSystem
            {
                { "~/script/010203.js", "CONTENT" }
            };
            var urlModifier = new VirtualDirectoryPrepender("/");

            deserializer = new ScriptBundleDeserializer(urlModifier);

            DeserializeBundle();
        }
Пример #25
0
        public ScriptProcessorFixture()
        {
            Environment = FakeEnvironment.CreateUnixEnvironment();
            FileSystem  = new FakeFileSystem(Environment);

            Log             = Substitute.For <ICakeLog>();
            Installer       = Substitute.For <INuGetPackageInstaller>();
            ApplicationRoot = new DirectoryPath("/Working/Bin");

            // Create the script analyzer result.
            var script1 = new ScriptInformation("/Working/build.cake");

            script1.Addins.Add(new NuGetPackage("Addin")
            {
                Source = "http://example.com"
            });
            script1.Tools.Add(new NuGetPackage("Tool")
            {
                Source = "http://example.com"
            });
            Result = new ScriptAnalyzerResult(script1, new List <string>());
        }
Пример #26
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");
            FileSystem.CreateFile("C:/Some %2F Directory/MyTool.dll");
        }
Пример #27
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));
        }
Пример #28
0
        public XmlPeekAliasesFixture(bool xmlExists = true, bool xmlWithDtd = false)
        {
            Settings = new XmlPeekSettings();

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

            fileSystem.CreateDirectory("/Working");

            if (xmlExists)
            {
                string content = xmlWithDtd ? Resources.XmlPeek_Xml_Dtd : Resources.XmlPeek_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);
        }
Пример #29
0
        public async Task A_Valid_Folder_Structure_Is_Generated_For_A_Sequence_With_A_Server()
        {
            // Arrange
            var fs = new FakeFileSystem();
            var fakeComponentRepo = new FakeComponentRepo
            {
                Components =
                    new List <RMComponent>
                {
                    new RMComponent
                    {
                        Id = 3981,
                        WorkflowActivityId
                            =
                                Guid
                                .Parse(
                                    "a122e31d-9faa-4468-b09b-2ec09ea51567")
                    }
                }
            };

            var fakeUserRepo         = new FakeUserRepo();
            var fakeDeployerToolRepo = new FakeDeployerToolRepo();

            var gen     = new ScriptGenerator(fs, fakeComponentRepo, fakeUserRepo, fakeDeployerToolRepo);
            var testXml =
                @"<DeploymentSequenceActivity xmlns=""clr-namespace:Microsoft.TeamFoundation.Release.Workflow.Activities;assembly=Microsoft.TeamFoundation.Release.Workflow"" xmlns:mtrdm=""clr-namespace:Microsoft.TeamFoundation.Release.Data.Model;assembly=Microsoft.TeamFoundation.Release.Data"" xmlns:mva=""clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"" xmlns:p=""http://schemas.microsoft.com/netfx/2009/xaml/activities"" xmlns:sap=""http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"" xmlns:scg=""clr-namespace:System.Collections.Generic;assembly=mscorlib"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" DisplayName=""Deployment Sequence"" sap:VirtualizedContainerService.HintSize=""244.8,302.4"" mva:VisualBasic.Settings=""Assembly references and imported namespaces serialized as XML namespaces""><sap:WorkflowViewStateService.ViewState><scg:Dictionary x:TypeArguments=""x:String, x:Object""><x:Boolean x:Key=""IsExpanded"">True</x:Boolean></scg:Dictionary></sap:WorkflowViewStateService.ViewState><ServerActivity sap:VirtualizedContainerService.HintSize=""222.4,177.6"" InstanceSequenceNumber=""1"" ServerId=""19"" ServerName=""lab-dmann""><ActionActivity DisplayName=""Copy File or Folder"" sap:VirtualizedContainerService.HintSize=""200,52.8"" IsSkipped=""False"" WorkflowActivityId=""a122e31d-9faa-4468-b09b-2ec09ea51567""><ActionActivity.StageActivity><mtrdm:StageActivity ActivityDisplayName=""Copy File or Folder"" ApplyFullValidation=""False"" CanEditVariables=""True"" ComponentId=""3981"" HasPendingSecurityChanges=""False"" Id=""-835378"" IsDeletable=""True"" IsDirty=""True"" IsSerializing=""False"" IsTagBased=""0"" LinkedV2ComponentId=""0"" ServerId=""19"" ServerInstanceSequenceNumber=""1"" ServerName=""lab-dmann"" StatusId=""2"" StatusName=""Active"" WorkflowActivityId=""a122e31d-9faa-4468-b09b-2ec09ea51567""><mtrdm:StageActivity.Component><mtrdm:Component ActionTypeId=""2"" ActionTypeName=""Custom action"" ApplyFullValidation=""False"" CategoryId=""1998"" CategoryName=""Windows OS"" DeployerToolId=""0"" DeploymentMethod=""2013"" Description=""Copy file(s) or folder (wildcards can be used)"" HasPendingSecurityChanges=""False"" Id=""3981"" InMemoryStatus=""New"" IsDeletable=""True"" IsDirty=""False"" IsPublishedByMicrosoft=""True"" IsSerializing=""False"" Name=""Copy File or Folder"" StatusId=""2"" StatusName=""Active"" TeamFoundationServerId=""0"" TeamProjectCollectionId=""0"" Timeout=""5"" TypeId=""4"" TypeName=""Without source"" VariableReplacementModeId=""1"" Version=""2013""><mtrdm:Component.ConfigurationVariables><mtrdm:SortableObservableCollection x:TypeArguments=""mtrdm:ConfigurationVariable"" /></mtrdm:Component.ConfigurationVariables><mtrdm:Component.PropertyBagVariables><mtrdm:SortableObservableCollection x:TypeArguments=""mtrdm:ConfigurationVariable"" /></mtrdm:Component.PropertyBagVariables></mtrdm:Component></mtrdm:StageActivity.Component><mtrdm:StageActivity.Variables><mtrdm:ConfigurationVariable x:Name=""__ReferenceID0"" Id=""9950"" Name=""SourceFileFolder"" Value="""" /><mtrdm:ConfigurationVariable x:Name=""__ReferenceID1"" Id=""9951"" Name=""DestinationFileFolder"" Value="""" /></mtrdm:StageActivity.Variables></mtrdm:StageActivity></ActionActivity.StageActivity><ActionActivity.StageActivityVariables><x:Reference>__ReferenceID0</x:Reference><x:Reference>__ReferenceID1</x:Reference></ActionActivity.StageActivityVariables></ActionActivity></ServerActivity></DeploymentSequenceActivity>";
            var targetPath = @"C:\RMWorkflow\";

            // Act
            var sequence = (new RMDeploymentSequence {
                StageId = 100, WorkflowXaml = testXml
            }).ToReleaseTemplate();
            await gen.GenerateScriptAsync(sequence, targetPath);

            // Assert
            Assert.IsTrue(fs.Directories.Contains(@"C:\RMWorkflow\1_Server_lab-dmann"));
        }
Пример #30
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);
                    }
                }
            }
Пример #31
0
        public FakeCakeContext()
        {
            WorkingDirectory = new DirectoryPath(
                System.IO.Path.GetFullPath(
                    System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../")));

            var environment = FakeEnvironment.CreateUnixEnvironment(false);

            var fileSystem = new FakeFileSystem(environment);
            var globber    = new Globber(fileSystem, environment);

            _log = new FakeLog();
            var args          = new FakeCakeArguments();
            var processRunner = new ProcessRunner(environment, _log);
            var registry      = new WindowsRegistry();

            CakeContext = new CakeContext(
                fileSystem,
                environment,
                globber,
                _log,
                args,
                processRunner,
                registry,
                new ToolLocator(
                    environment,
                    new ToolRepository(environment),
                    new ToolResolutionStrategy(
                        fileSystem,
                        environment,
                        globber,
                        new FakeConfiguration()
                        )
                    )
                );

            CakeContext.Environment.WorkingDirectory = WorkingDirectory;
        }
Пример #32
0
        public ScriptBundleDeserializer_Tests()
        {
            element = new XElement("ScriptBundle",
                new XAttribute("Path", "~"),
                new XAttribute("Hash", "010203"),
                new XAttribute("Condition", "expected-condition"),
                new XAttribute("ContentType", "text/javascript"),
                new XAttribute("PageLocation", "PAGE-LOCATION"),
                new XElement("Asset", new XAttribute("Path", "~/asset-1"), new XAttribute("AssetCacheValidatorType", typeof(FileAssetCacheValidator).FullName)),
                new XElement("Asset", new XAttribute("Path", "~/asset-2"), new XAttribute("AssetCacheValidatorType", typeof(FileAssetCacheValidator).FullName)),
                new XElement("Reference", new XAttribute("Path", "~/reference-1")),
                new XElement("Reference", new XAttribute("Path", "~/reference-2")),
                new XElement(
                    "HtmlAttribute",
                    new XAttribute("Name", "type"),
                    new XAttribute("Value", "text/javascript")
                ),
                new XElement(
                    "HtmlAttribute",
                    new XAttribute("Name", "attribute1"),
                    new XAttribute("Value", "value1")
                ),
                new XElement(
                    "HtmlAttribute",
                    new XAttribute("Name", "attribute2"),
                    new XAttribute("Value", "value2")
                )
            );

            directory = new FakeFileSystem
            {
                { "~/script/010203.js", "CONTENT" }
            };
            var urlModifier = new VirtualDirectoryPrepender("/");
            deserializer = new ScriptBundleDeserializer(urlModifier);

            DeserializeBundle();
        }
Пример #33
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);
                }
Пример #34
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());
                }
        public ProcessRunnerFixture(bool windows = false)
        {
            var environment = windows
                ? FakeEnvironment.CreateWindowsEnvironment()
                : FakeEnvironment.CreateUnixEnvironment();

            environment.WorkingDirectory = "/Working";

            Environment     = environment;
            FileSystem      = new FakeFileSystem(Environment);
            Log             = Substitute.For <ICakeLog>();
            Tools           = Substitute.For <IToolLocator>();
            Configuration   = Substitute.For <ICakeConfiguration>();
            ProcessFilePath = "/Program Files/Cake.exe";
            ProcessSettings = new ProcessSettings();

            FileSystem.CreateDirectory("/Working");
            FileSystem.CreateDirectory("/Program Files");
            FileSystem.CreateFile("/Program Files/Cake.exe", ClrAssemblyData);
            MonoFile = FileSystem.CreateFile("/Program Files/mono.exe", NonClrAssemblyData);

            Tools.Resolve("mono").Returns(file => MonoFile.Exists ? MonoFile.Path : null);
        }
Пример #36
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]);
        }
Пример #37
0
        public void Constructor_PostAndDraftExist_IncrementsNextId()
        {
            FakeFileSystem fileSystem = new FakeFileSystem();

            fileSystem.AddFile("BlogFiles\\Drafts\\1.xml");
            fileSystem.AddFile("BlogFiles\\Posts\\date_2.xml");
            TestDataStore.ResetCurrentId();
            TestDataStore dataStore = new TestDataStore(fileSystem);
            Post          testPost  = new Post
            {
                Slug         = "Test-slug",
                Title        = "Test title",
                Body         = "Test body",
                PubDate      = DateTime.Now,
                LastModified = DateTime.Now,
                IsPublic     = false,
                Excerpt      = "Test excerpt"
            };

            dataStore.SavePost(testPost);

            Assert.Equal(3, testPost.Id);
        }
Пример #38
0
        public void UnDeletePost_MoveToIndex()
        {
            IFileSystem      fakeFileSystem   = new FakeFileSystem();
            BlogDataStore    testDataStore    = new BlogDataStore(fakeFileSystem);
            MarkdownRenderer markdownRenderer = new MarkdownRenderer();
            PostModel        testPostModel    = new PostModel(testDataStore, markdownRenderer);

            testPostModel.PageContext = new PageContext();

            Post post = new Post
            {
                Title     = "Title",
                Body      = "This is the body of my post",
                IsDeleted = true,
            };

            testDataStore.SavePost(post);

            testPostModel.OnPostUnDeletePost(post.Id.ToString("N"));
            Post result = testDataStore.GetPost(post.Id.ToString("N"));

            Assert.False(result.IsDeleted);
        }
Пример #39
0
        public void DeletePost_MoveToTrash()
        {
            IFileSystem fakeFileSystem   = new FakeFileSystem();
            var         testDataStore    = new BlogDataStore(fakeFileSystem);
            var         markdownRenderer = new MarkdownRenderer();
            var         testPostModel    = new PostModel(testDataStore, markdownRenderer);

            testPostModel.PageContext = new PageContext();

            var post = new Post
            {
                Title     = "Title",
                Body      = "This is the body of my post",
                IsDeleted = false,
            };

            testDataStore.SavePost(post);

            testPostModel.OnPostDeletePost(post.Id.ToString("N"));
            var result = testDataStore.GetPost(post.Id.ToString("N"));

            Assert.True(result.IsDeleted);
        }
Пример #40
0
        public void Build_IfGivenAViewModelWithNoMetalFilterSetToDefaultOf1()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = TAB_ID1;

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);

            viewModel = tabsViewModelBuilder.Build();

            //Act

            var tabsContainers = viewModel.JewelryInTabContainersCollection;

            //Assert
            tabsContainers.Should().OnlyContain(x => x.Metal == "White Gold 18K");
        }
Пример #41
0
        public void CanBindToModelInNestedLayout()
        {
            var files = new FakeFileSystem
            {
                { "views\\parent_layout.hbs", "Parent layout: {{property}}\r\n{{{body}}}" },
                { "views\\layout.hbs", "{{!< parent_layout}}\r\nLayout: {{property}}\r\n{{{body}}}" },
                { "views\\someview.hbs", "{{!< layout}}\r\n\r\nBody: {{property}}" },
            };

            var handlebarsConfiguration = new HandlebarsConfiguration {
                FileSystem = files
            };
            var handlebars = Handlebars.Create(handlebarsConfiguration);
            var render     = handlebars.CompileView("views\\someview.hbs");
            var output     = render(
                new
            {
                property = "Foo"
            }
                );

            Assert.Equal("Parent layout: Foo\r\nLayout: Foo\r\n\r\nBody: Foo", output);
        }
Пример #42
0
        public void Build_ShouldPassTheCurrentValueOfTheGeneralFilterToTheViewModelForPresistance()
        {
            //Arrange


            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            var viewModel = new TabsViewModel
            {
                TabKey        = TAB_KEY,
                TabId         = TAB_ID1,
                CustomFilters = new List <CustomTabFilterViewModel>
                {
                    new CustomTabFilterViewModel()
                    {
                        Name  = "gemstone-center-stone",
                        Value = (int)GemstoneCenterStoneFilterValues.Ruby
                    }
                }
            };



            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                jewelryRepository, fileSystem);


            //Act
            var result = tabsViewModelBuilder.Build();

            //Assert
            result.CustomFilters[0].Value.Should().Be(1);
        }
            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);
            }
Пример #44
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);
            }
Пример #45
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("/Foo/Bar.baz");
            FileSystem.CreateFile("/Foo (Bar)/Baz.c");
        }
Пример #46
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]);
        }
Пример #47
0
        public void Verify_ShouldReturnMovieAsNullIfMovieIsNotPresentOnDisk()
        {
            //Arrange

            const string itemNumber = "0101-15001";

            var fakeFileSystem = FakeFileSystem.MediaFileSystemForItemNumber(new Dictionary <string, MockFileData>()
            {
                { String.Format(@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\{0}-pic-wg.jpg", itemNumber), new MockFileData("") },
                { String.Format(@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\{0}-icon-wg.jpg", itemNumber), new MockFileData("") },
                { String.Format(@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\{0}-hand-wg.jpg", itemNumber), new MockFileData("") },
                { String.Format(@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\{0}-hires-wg.jpg", itemNumber), new MockFileData("") },
//                                                        {String.Format(@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\{0}-mov-wg.flv",itemNumber),new MockFileData("")}
            });

            var media = CreateMedia();

            var mediaVerifier = new MediaVerifier(fakeFileSystem);
            //Act
            var verifiedmedia = mediaVerifier.Verify(media);

            //Assert
            verifiedmedia.MovieURLForWebDisplay.Should().BeNull();
        }
Пример #48
0
 static TinyIoCContainer CreateContainer()
 {
     var container = new TinyIoCContainer();
     new SpritingContainerConfiguration().Configure(container);
     sourceDirectory = new FakeFileSystem();
     var settings = new CassetteSettings
     {
         SourceDirectory = sourceDirectory
     };
     container.Register(settings);
     container.Register<IUrlGenerator>(new UrlGenerator(new VirtualDirectoryPrepender("/"), sourceDirectory, "cassette.axd/"));
     container.Register<IConfiguration<SpritingSettings>, DefaultSpritingSettingsConfiguration>();
     return container;
 }
Пример #49
0
        public void Can_Compile_LESS_with_two_levels_of_import()
        {
            var source = "@import \"../bundle-b/_lib.less\";\nbody{ color: @color }";

            var fileSystem = new FakeFileSystem
            {
                { "~/_base.less", "@size: 100px;" },
                { "~/bundle-b/_lib.less", "@import \"../_base.less\";\n@color: red; p { height: @size; }" },
                { "~/bundle-a/test.less", source }
            };
            compileContext.SourceFilePath = "~/bundle-a/test.less";
            compileContext.RootDirectory = fileSystem;

            var css = compiler.Compile(
                source,
                compileContext
            );
            css.Output.ShouldEqual("p {\n  height: 100px;\n}\nbody {\n  color: red;\n}\n");
        }
Пример #50
0
        public void Import_less_file_that_uses_outer_variable()
        {
            var fileSystem = new FakeFileSystem
            {
                {"~/Framework.less", ".object { padding: @objectpadding; }" },
                "~/test.less"
            };
            compileContext.RootDirectory = fileSystem;
            compileContext.SourceFilePath = "~/test.less";

            var result = compiler.Compile(
                "@objectpadding: 20px;\n@import \"Framework.less\";",
                compileContext
            );
            result.Output.ShouldEqual(".object {\n  padding: 20px;\n}\n");
        }
Пример #51
0
        public void Can_Compile_LESS_that_imports_another_LESS_file_from_different_directory()
        {
            var fileSystem = new FakeFileSystem
            {
                {"~/bundle-b/lib.less", "@color: red;"},
                "~/bundle-a/test.less"
            };
            compileContext.RootDirectory = fileSystem;
            compileContext.SourceFilePath = "~/bundle-a/test.less";

            var css = compiler.Compile(
                "@import \"../bundle-b/lib.less\";\nbody{ color: @color }",
                compileContext
            );
            css.Output.ShouldEqual("body {\n  color: red;\n}\n");
        }