Esempio n. 1
0
            public void TrimWhitespace()
            {
                // Given
                string input  = "   myfile.html   ";
                string output = "myfile.html";

                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(new MetadataItems
                    {
                        new MetadataItem("MyKey", input)
                    })
                };
                FileName fileName = new FileName("MyKey");

                // When
                IEnumerable <IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
Esempio n. 2
0
            public void MultipleInputDocumentsResultsInMultipleOutputs()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(@"AA
-
XX"),
                    context.GetDocument(@"BB
-
YY")
                };
                string      frontMatterContent = string.Empty;
                FrontMatter frontMatter        = new FrontMatter(new Execute((x, ctx) =>
                {
                    frontMatterContent += x.Content;
                    return(new[] { x });
                }));

                // When
                IEnumerable <IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(2, documents.Count());
                Assert.AreEqual(@"AA
BB
", frontMatterContent);
                Assert.AreEqual(@"XX", documents.First().Content);
                Assert.AreEqual(@"YY", documents.Skip(1).First().Content);
            }
Esempio n. 3
0
            public void MatchingStringSplitsAtCorrectLocation()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(@"FM1
FM2
ABC
Content1
Content2")
                };
                string      frontMatterContent = null;
                FrontMatter frontMatter        = new FrontMatter("ABC", new Execute((x, ctx) =>
                {
                    frontMatterContent = x.Content;
                    return(new[] { x });
                }));

                // When
                IEnumerable <IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.AreEqual(@"FM1
FM2
", frontMatterContent);
                Assert.AreEqual(@"Content1
Content2", documents.First().Content);
            }
Esempio n. 4
0
            public void CollapseRoot()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs = GetDocuments(
                    context,
                    "a/2.txt",
                    "b/3.txt",
                    "a/1.txt",
                    "b/x/4.txt",
                    "c/d/5.txt",
                    "6.txt");
                Tree tree = new Tree().WithNesting(true, true);

                // When
                List <IDocument> documents = tree.Execute(inputs, context).ToList();

                // Then
                Assert.AreEqual(4, documents.Count);
                CollectionAssert.AreEquivalent(
                    new[] { "a/index.html", "b/index.html", "c/index.html", "6.txt" },
                    documents.Select(x => x.FilePath(Keys.RelativeFilePath).FullPath));
            }
Esempio n. 5
0
            public void NoIgnoreDelimiterOnFirstLine()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(@"---
FM1
FM2
---
Content1
Content2")
                };
                string      frontMatterContent = null;
                FrontMatter frontMatter        = new FrontMatter(new Execute((x, ctx) =>
                {
                    frontMatterContent = x.Content;
                    return(new[] { x });
                })).IgnoreDelimiterOnFirstLine(false);

                // When
                IEnumerable <IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.AreEqual("\n", frontMatterContent);
                Assert.AreEqual(@"FM1
FM2
---
Content1
Content2", documents.First().Content);
            }
            public void FileNameIsConvertedCorrectlyWithReservedChar(string character)
            {
                // Given
                Engine            engine            = new Engine();
                ExecutionPipeline pipeline          = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context           = new ExecutionContext(engine, Guid.Empty, pipeline);
                string            manyCharactersWow = new string(character[0], 10);

                IDocument[] inputs =
                {
                    context.GetDocument(new MetadataItems
                    {
                        new MetadataItem(
                            Keys.SourceFileName,
                            string.Format("testing {0} some of {0} these {0}", manyCharactersWow))
                    })
                };
                FileName fileName = new FileName();

                // When
                IEnumerable <IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual("testing-some-of-these-", documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
Esempio n. 7
0
            public void GetsPreviousUpTree()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs = GetDocuments(
                    context,
                    "root/a/2.txt",
                    "root/a/3.txt",
                    "root/a/1.txt",
                    "root/b/4.txt");
                Tree tree = new Tree().WithNesting();

                // When
                List <IDocument> documents = tree.Execute(inputs, context).ToList();

                // Then
                IDocument document = FindTreeNode(documents[0], "root/b/4.txt");

                Assert.AreEqual(
                    "root/b/index.html",
                    document.Document(Keys.Previous).FilePath(Keys.RelativeFilePath).FullPath);
            }
Esempio n. 8
0
            public void SplitsTree()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs = GetDocuments(
                    context,
                    "root/a/2.txt",
                    "root/b/index.html",
                    "root/a/1.txt",
                    "root/b/4.txt");
                Tree tree = new Tree()
                            .WithNesting()
                            .WithRoots((doc, ctx) => doc.FilePath(Keys.RelativeFilePath).FullPath.EndsWith("b/index.html"));

                // When
                List <IDocument> documents = tree.Execute(inputs, context).ToList();

                // Then
                Assert.AreEqual(2, documents.Count);
                AssertTree(
                    documents[0],
                    "root/b/index.html",
                    "root/b/4.txt");
                AssertTree(
                    documents[1],
                    "index.html",
                    "root/index.html",
                    "root/a/index.html",
                    "root/a/1.txt",
                    "root/a/2.txt");
            }
            public void WithAllowedCharactersDoesNotReplaceProvidedCharacters()
            {
                // Given
                const string input  = "this-is-a-.net-tag";
                const string output = "this-is-a-.net-tag";

                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, Guid.Empty, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(new MetadataItems
                    {
                        new MetadataItem(Keys.SourceFileName, new FilePath(input))
                    })
                };
                FileName fileName = new FileName();

                // When
                fileName = fileName.WithAllowedCharacters(new string[] { "-" });
                IEnumerable <IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
            public void FileNameShouldBeLowercase()
            {
                // Given
                const string input  = "FileName With MiXeD CapS";
                const string output = "filename-with-mixed-caps";

                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, Guid.Empty, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(new MetadataItems
                    {
                        new MetadataItem(Keys.SourceFileName, new FilePath(input))
                    })
                };
                FileName fileName = new FileName();

                // When
                IEnumerable <IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
Esempio n. 11
0
            public void DashStringDoesNotSplitAtNonmatchingDashes()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(@"FM1
FM2
---
Content1
Content2")
                };
                bool        executed    = false;
                FrontMatter frontMatter = new FrontMatter("-", new Execute((x, ctx) =>
                {
                    executed = true;
                    return(new[] { x });
                }));

                // When
                IEnumerable <IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.IsFalse(executed);
                Assert.AreEqual(@"FM1
FM2
---
Content1
Content2", documents.First().Content);
            }
Esempio n. 12
0
            public void SingleCharWithRepeatedDelimiterWithLeadingSpacesDoesNotSplit()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs =
                {
                    context.GetDocument(@"FM1
FM2
  !!!!
Content1
Content2")
                };
                bool        executed    = false;
                FrontMatter frontMatter = new FrontMatter('!', new Execute((x, ctx) =>
                {
                    executed = true;
                    return(new[] { x });
                }));

                // When
                IEnumerable <IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.IsFalse(executed);
                Assert.AreEqual(@"FM1
FM2
  !!!!
Content1
Content2", documents.First().Content);
            }
Esempio n. 13
0
 public void SetUp()
 {
     Engine = new Engine();
     Engine.FileSystem.FileProviders.Add(NormalizedPath.DefaultFileProvider.Scheme, GetFileProvider());
     Engine.FileSystem.RootPath = "/";
     Pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
     Context  = new ExecutionContext(Engine, Pipeline);
 }
Esempio n. 14
0
 public void SetUp()
 {
     Engine = new Engine();
     Engine.FileSystem.FileProviders.Add(NormalizedPath.DefaultFileProvider.Scheme, GetFileProvider());
     Engine.FileSystem.RootPath = "/";
     Engine.FileSystem.InputPaths.Clear();
     Engine.FileSystem.InputPaths.Add("/TestFiles/Input");
     Pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
     Context  = new ExecutionContext(Engine, Guid.Empty, Pipeline);
 }
Esempio n. 15
0
        public ExecutionPipelineContext(IExecutionContext context, ExecutionPipeline pipeline, object parameter) : base(context.Executor, parameter)
        {
            if (pipeline == null)
            {
                throw new ArgumentNullException("pipeline");
            }

            _context  = context;
            _pipeline = pipeline;
        }
        public void ExecutionPipeline_Constructor_InitializesMembers()
        {
            //// Arrange
            ExecutionPipeline pipeline = null;
            var executorProviderMock   = new Mock <IExecutorProvider>();

            //// Act
            pipeline = new ExecutionPipeline(executorProviderMock.Object);

            //// Assert
            Assert.IsNotNull(pipeline.Steps);
        }
        public void ExecutionPipeline_Add_ThrowsException_WhenActivityFailsValidation()
        {
            //// Arrange
            var executorProviderMock          = new Mock <IExecutorProvider>();
            ExecutionPipeline pipeline        = new ExecutionPipeline(executorProviderMock.Object);
            ExecutionActivity invalidActivity = GetInvalidActivity();

            //// Act
            pipeline.Add(invalidActivity);

            //// Assert
            Assert.Fail();
        }
        public void ExecutionPipeline_Add_AddsStep_WhenValid()
        {
            //// Arrange
            var executorProviderMock        = new Mock <IExecutorProvider>();
            ExecutionPipeline pipeline      = new ExecutionPipeline(executorProviderMock.Object);
            ExecutionActivity validActivity = GetValidActivity();

            //// Act
            pipeline.Add(validActivity);

            //// Assert
            Assert.IsTrue(pipeline.Steps.Count == 1);
            Assert.IsTrue(object.ReferenceEquals(pipeline.Steps.First(), validActivity));
        }
Esempio n. 19
0
            public void ReplaceWithName()
            {
                // Given
                IPipeline collection = new ExecutionPipeline("Test", new[]
                {
                    new CountModule("mykey1").WithName("First"),
                    new CountModule("mykey2").WithName("Second")
                });

                // When
                collection.Replace("Second", new CountModule("mykey3"));

                // Then
                Assert.AreEqual("mykey1", ((CountModule)collection[0]).ValueKey);
                Assert.AreEqual("mykey3", ((CountModule)collection[1]).ValueKey);
            }
        public void ExecutionPipeline_Add_ThrowsException_WhenActivityHasEmptyHost()
        {
            //// Arrange
            var executorProviderMock          = new Mock <ExecutorProvider>();
            ExecutionPipeline pipeline        = new ExecutionPipeline(executorProviderMock.Object);
            ExecutionActivity invalidActivity = new CopyFilesActivity()
            {
                Host = new HostInfo()
            };

            //// Act
            pipeline.Add(invalidActivity);

            //// Assert
            Assert.Fail();
        }
 public ActionResult <IEnumerable <WeatherForecast> > Get()
 {
     return(ExecutionPipeline.Wrap(() =>
     {
         var rng = new Random();
         return Enumerable.Range(1, 5).Select(index => new WeatherForecast
         {
             Date = DateTime.Now.AddDays(index),
             TemperatureC = rng.Next(-20, 55),
             Summary = Summaries[rng.Next(Summaries.Length)]
         })
         .ToArray();
     })
            .OnError <Exception>(ex => BadRequest(ex.Message))
            .OnSuccess(item => Ok(item))
            .Run());
 }
Esempio n. 22
0
            public void ReplaceLast()
            {
                // Given
                IPipeline collection = new ExecutionPipeline("Test", new IModule[]
                {
                    new ReadFiles(ctx => "*.md"),
                    new CountModule("mykey1"),
                    new CountModule("mykey2"),
                    new WriteFiles()
                });

                // When
                collection.ReplaceLast <CountModule>(new CountModule("replacedKey"));

                // Then
                Assert.AreEqual("mykey1", ((CountModule)collection[1]).ValueKey);
                Assert.AreEqual("replacedKey", ((CountModule)collection[2]).ValueKey);
            }
Esempio n. 23
0
            public void SitemapGeneratedWithSitemapItemAsString(string hostname, string formatterString, string expected)
            {
                // Given
                Engine engine = new Engine();

                if (!string.IsNullOrWhiteSpace(hostname))
                {
                    engine.Settings[Keys.Host] = hostname;
                }
                ExecutionPipeline contentPipeline = new ExecutionPipeline("Content", (IModuleList)null);
                IExecutionContext context         = new ExecutionContext(engine, Guid.Empty, contentPipeline);

                IDocument doc = context.GetDocument(context.GetContentStream("Test"), new[]
                {
                    new KeyValuePair <string, object>(Keys.RelativeFilePath, "sub/testfile.html")
                });

                IDocument[] inputs = { doc };

                Core.Modules.Metadata.Meta m = new Core.Modules.Metadata.Meta(
                    Keys.SitemapItem,
                    (d, c) => d[Keys.RelativeFilePath].ToString());
                var outputs = m.Execute(inputs, context);

                Func <string, string> formatter = null;

                if (!string.IsNullOrWhiteSpace(formatterString))
                {
                    formatter = f => string.Format(formatterString, f);
                }

                // When
                Sitemap          sitemap = new Sitemap(formatter);
                List <IDocument> results = sitemap.Execute(outputs.ToList(), context).ToList();

                foreach (IDocument document in inputs.Concat(outputs.ToList()))
                {
                    ((IDisposable)document).Dispose();
                }

                // Then
                Assert.AreEqual(1, results.Count);
                Assert.That(results[0].Content, Does.Contain($"<loc>{expected}</loc>"));
            }
Esempio n. 24
0
            public void InsertBeforeLast()
            {
                // Given
                IPipeline collection = new ExecutionPipeline("Test", new IModule[]
                {
                    new ReadFiles(ctx => "*.md"),
                    new ReadFiles(ctx => "*.md"),
                    new WriteFiles()
                });

                // When
                collection.InsertBeforeLast <ReadFiles>(new CountModule("foo"));

                // Then
                Assert.AreEqual(collection[0].GetType(), typeof(ReadFiles));
                Assert.AreEqual(collection[1].GetType(), typeof(CountModule));
                Assert.AreEqual(collection[2].GetType(), typeof(ReadFiles));
                Assert.AreEqual(collection[3].GetType(), typeof(WriteFiles));
            }
Esempio n. 25
0
            public void IgnoresNullOrWhiteSpaceStrings(string input)
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs = { context.GetDocument(new MetadataItems
                    {
                        new MetadataItem(Keys.SourceFileName, input)
                    }) };
                FileName    fileName = new FileName();

                // When
                IEnumerable <IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.IsFalse(documents.First().ContainsKey(Keys.WriteFileName));
            }
Esempio n. 26
0
            public void FileNameIsConvertedCorrectly(string input, string output)
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs = { context.GetDocument(new MetadataItems
                    {
                        new MetadataItem(Keys.SourceFileName, input)
                    }) };
                FileName    fileName = new FileName();

                // When
                IEnumerable <IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
        static void Main(string[] args)
        {
            ILog logger = LogManager.GetLogger(typeof(Program));

            logger.Info("Entered DeploymentAssistant.");

            var mode = args.FirstOrDefault();

            if ((mode == null) || (mode.Equals(RunPipelineMode, StringComparison.CurrentCultureIgnoreCase)))
            {
                logger.Info("Executing the default mode. Mode: RunPipeline.");
                var fileName = string.Empty;
                if (args.ElementAtOrDefault(args_index_file) != null)
                {
                    fileName = args.ElementAt(args_index_file);
                    if (!File.Exists(fileName))
                    {
                        logger.Error("Config File is not available at the given path. Please input a valid file name.");
                        return;
                    }
                }
                //// Call pipeline Maker
                var           executionPipeline = ExecutionPipeline.GetExecutionPipeline();
                PipelineMaker pipelineMaker     = new PipelineMaker(new FileOperations(), executionPipeline);
                pipelineMaker.Load(fileName);
            }
            else if (mode.Equals(DumpConfigMode, StringComparison.CurrentCultureIgnoreCase))
            {
                logger.Info("Executing the config helper mode. Mode: DumpConfig.");
                var fileName = string.Empty;
                if (args.ElementAtOrDefault(args_index_file) != null)
                {
                    fileName = args.ElementAt(args_index_file);
                }
                //// Call config Maker
                ConfigMaker configMaker = new ConfigMaker(new FileOperations());
                configMaker.Dump(fileName);
            }

            logger.Info("Finished the program.");
            //Console.Read();
        }
Esempio n. 28
0
            public void FlatTree()
            {
                // Given
                Engine            engine   = new Engine();
                ExecutionPipeline pipeline = new ExecutionPipeline("Pipeline", (IModuleList)null);
                IExecutionContext context  = new ExecutionContext(engine, pipeline);

                IDocument[] inputs = GetDocuments(
                    context,
                    "root/a/b/2.txt",
                    "root/a/3.txt",
                    "root/a/1.txt");
                Tree tree = new Tree();

                // When
                List <IDocument> documents = tree.Execute(inputs, context).ToList();

                // Then
                AssertTreeChildren(
                    documents[0],
                    "root/a/b/2.txt");
                AssertTreeChildren(
                    documents[1],
                    "root/a/3.txt");
                AssertTreeChildren(
                    documents[2],
                    "root/a/1.txt");
                AssertTreeChildren(
                    documents[3],
                    "root/a/b/index.html",
                    "root/a/b/2.txt");
                AssertTreeChildren(
                    documents[4],
                    "root/a/index.html",
                    "root/a/1.txt",
                    "root/a/3.txt",
                    "root/a/b/index.html");
                AssertTreeChildren(
                    documents[5],
                    "root/index.html",
                    "root/a/index.html");
            }
Esempio n. 29
0
            public void AlsoWorksWithModules()
            {
                // Given
                IPipeline collection = new ExecutionPipeline("Test", new []
                {
                    new CountModule("mykey1")
                    .WithName("First"),
                    new CountModule("mykey2")
                    .WithName("Second"),
                    new Concat(new CountModule("mysubkey1").WithName("inner"))
                    .WithName("Third")
                });

                // When
                (collection["Third"] as IModuleList)
                .Replace("inner", new CountModule("newsubkey"));

                // Then
                Assert.AreEqual("newsubkey", ((CountModule)((IModuleList)collection["Third"])["inner"]).ValueKey);
            }
        public void ExecutionPipeline_Add_RaisesEvent_AfterAddingStep_AndPassesActivityInEventArgs()
        {
            //// Arrange
            var executorProviderMock        = new Mock <IExecutorProvider>();
            ExecutionPipeline pipeline      = new ExecutionPipeline(executorProviderMock.Object);
            ExecutionActivity validActivity = GetValidActivity();
            bool      eventRaised           = false;
            EventArgs addedEventArgs        = null;

            pipeline.StepAdded += (sender, e) =>
            {
                eventRaised    = true;
                addedEventArgs = e;
            };

            //// Act
            pipeline.Add(validActivity);

            //// Assert
            Assert.IsTrue(eventRaised);
            Assert.IsTrue(object.ReferenceEquals(((ActivityEventArgs)addedEventArgs).Activity, validActivity));
        }