From fe6f72aa432f8c202b9e77b09e9b23950d728a91 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Sat, 27 Aug 2016 12:27:45 +0200 Subject: [PATCH 01/30] Delete CNAME as advised by github support --- CNAME | 1 - 1 file changed, 1 deletion(-) delete mode 100644 CNAME diff --git a/CNAME b/CNAME deleted file mode 100644 index 632b59178..000000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -www.picklesdoc.com From 4f3fb7b1b6685052bc989ac20da18c327ae80da8 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Sat, 27 Aug 2016 12:30:17 +0200 Subject: [PATCH 02/30] Create CNAME --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..632b59178 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.picklesdoc.com From f131a382b01359bcdb0ba720106d66762954946b Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Fri, 16 Sep 2016 14:51:59 +0200 Subject: [PATCH 03/30] Get rid of ngenerics (#370) * Use Tree instead of NGenerics.GeneralTree * Use visitor instead of ActionVisitor * Rename Visitor to Traversor * Remove reference to unused NGenerics library * Fix whitespace * Remove NGenerics from nuspecs and build scripts * Get rid of traversor --- chocolatey.fsx | 2 - chocolatey/pickles.nuspec | 1 - chocolatey/picklesui.nuspec | 1 - nuget.fsx | 3 - .../Pickles.CommandLine.nuspec | 1 - .../Pickles.MSBuild/Pickles.MSBuild.nuspec | 1 - src/Pickles/Pickles.PowerShell/Pickles.nuspec | 1 - .../JSON/AutomationLayer/StepDefinitions.cs | 6 +- ...WithMetaInfoAndTestResultInMstestFormat.cs | 4 +- ...nFormattingAFolderStructureWithFeatures.cs | 4 +- ...entsShouldBeCreatedFromAFolderStructure.cs | 4 +- src/Pickles/Pickles.Test/Pickles.Test.csproj | 4 - .../WhenCrawlingFoldersForFeatures.cs | 8 +- src/Pickles/Pickles.Test/packages.config | 1 - src/Pickles/Pickles/DataStructures/Tree.cs | 83 +++++++++++++++++++ .../DirectoryCrawler/DirectoryTreeCrawler.cs | 18 ++-- .../DHTML/DhtmlDocumentationBuilder.cs | 6 +- .../Excel/ExcelDocumentationBuilder.cs | 11 +-- .../Excel/ExcelTableOfContentsFormatter.cs | 6 +- .../HTML/HtmlDocumentFormatter.cs | 4 +- .../HTML/HtmlDocumentationBuilder.cs | 18 ++-- .../HTML/HtmlTableOfContentsFormatter.cs | 10 +-- .../IDocumentationBuilder.cs | 4 +- .../JSON/JSONDocumentationBuilder.cs | 17 ++-- .../Word/WordDocumentationBuilder.cs | 11 +-- src/Pickles/Pickles/Pickles.csproj | 5 +- src/Pickles/Pickles/Runner.cs | 13 ++- src/Pickles/Pickles/packages.config | 1 - 28 files changed, 152 insertions(+), 96 deletions(-) create mode 100644 src/Pickles/Pickles/DataStructures/Tree.cs diff --git a/chocolatey.fsx b/chocolatey.fsx index 8cf94e4da..f1a2ab5a6 100644 --- a/chocolatey.fsx +++ b/chocolatey.fsx @@ -26,7 +26,6 @@ Target "CreatePackage CMD" (fun _ -> cmdDir + "MarkdownDeep.dll"; cmdDir + "NDesk.Options.dll"; cmdDir + "Newtonsoft.Json.dll"; - cmdDir + "NGenerics.dll"; cmdDir + "NLog.dll"; cmdDir + "PicklesDoc.Pickles.Library.dll"; cmdDir + "PicklesDoc.Pickles.ObjectModel.dll"; @@ -63,7 +62,6 @@ Target "CreatePackage GUI" (fun _ -> guiDir + "Microsoft.Practices.ServiceLocation.dll"; guiDir + "NDesk.Options.dll"; guiDir + "Newtonsoft.Json.dll"; - guiDir + "NGenerics.dll"; guiDir + "NLog.dll"; guiDir + "NlogViewer.dll"; guiDir + "Ookii.Dialogs.Wpf.dll"; diff --git a/chocolatey/pickles.nuspec b/chocolatey/pickles.nuspec index ed52f12fc..fe3b75be7 100644 --- a/chocolatey/pickles.nuspec +++ b/chocolatey/pickles.nuspec @@ -43,7 +43,6 @@ Optionally, *Pickles* can **integrate test results**, so that your stakeholders - diff --git a/chocolatey/picklesui.nuspec b/chocolatey/picklesui.nuspec index e06d23645..4d77ba2f2 100644 --- a/chocolatey/picklesui.nuspec +++ b/chocolatey/picklesui.nuspec @@ -48,7 +48,6 @@ Optionally, *Pickles* can **integrate test results**, so that your stakeholders - diff --git a/nuget.fsx b/nuget.fsx index e1f15f32f..a39552cbc 100644 --- a/nuget.fsx +++ b/nuget.fsx @@ -28,7 +28,6 @@ Target "CreatePackageCommandLine" (fun _ -> cmdDir + "MarkdownDeep.dll"; cmdDir + "NDesk.Options.dll"; cmdDir + "Newtonsoft.Json.dll"; - cmdDir + "NGenerics.dll"; cmdDir + "NLog.dll"; cmdDir + "PicklesDoc.Pickles.Library.dll"; cmdDir + "PicklesDoc.Pickles.ObjectModel.dll"; @@ -59,7 +58,6 @@ Target "CreatePackageMsBuild" (fun _ -> msBuildDir + "MarkdownDeep.dll"; msBuildDir + "NDesk.Options.dll"; msBuildDir + "Newtonsoft.Json.dll"; - msBuildDir + "NGenerics.dll"; msBuildDir + "NLog.dll"; msBuildDir + "PicklesDoc.Pickles.Library.dll"; msBuildDir + "PicklesDoc.Pickles.ObjectModel.dll"; @@ -90,7 +88,6 @@ Target "CreatePackagePowerShell" (fun _ -> powerShellDir + "MarkdownDeep.dll"; powerShellDir + "NDesk.Options.dll"; powerShellDir + "Newtonsoft.Json.dll"; - powerShellDir + "NGenerics.dll"; powerShellDir + "NLog.dll"; powerShellDir + "PicklesDoc.Pickles.Library.dll"; powerShellDir + "PicklesDoc.Pickles.ObjectModel.dll"; diff --git a/src/Pickles/Pickles.CommandLine/Pickles.CommandLine.nuspec b/src/Pickles/Pickles.CommandLine/Pickles.CommandLine.nuspec index 68b35363d..5dac88d79 100644 --- a/src/Pickles/Pickles.CommandLine/Pickles.CommandLine.nuspec +++ b/src/Pickles/Pickles.CommandLine/Pickles.CommandLine.nuspec @@ -44,7 +44,6 @@ - diff --git a/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec b/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec index 9f0f1532e..3111fecd5 100644 --- a/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec +++ b/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec @@ -44,7 +44,6 @@ - diff --git a/src/Pickles/Pickles.PowerShell/Pickles.nuspec b/src/Pickles/Pickles.PowerShell/Pickles.nuspec index 76aa84642..ff180697e 100644 --- a/src/Pickles/Pickles.PowerShell/Pickles.nuspec +++ b/src/Pickles/Pickles.PowerShell/Pickles.nuspec @@ -44,7 +44,6 @@ - diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs index 14caf5bed..27a07843e 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs @@ -22,7 +22,7 @@ using System.IO; using Autofac; using NFluent; -using NGenerics.DataStructures.Trees; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.JSON; using TechTalk.SpecFlow; @@ -33,7 +33,7 @@ namespace PicklesDoc.Pickles.Test.DocumentationBuilders.JSON.AutomationLayer [Scope(Tag = "json")] public sealed class StepDefinitions : BaseFixture /* God object antipattern */ { - private GeneralTree nodes; + private Tree nodes; [Given("I have this feature description")] public void IHaveThisFeatureDescription(string featureDescription) @@ -43,7 +43,7 @@ public void IHaveThisFeatureDescription(string featureDescription) var feature = parser.Parse(new StringReader(featureDescription)); - this.nodes = new GeneralTree(new FeatureNode(this.FileSystem.DirectoryInfo.FromDirectoryName(@"c:\output\"), string.Empty, feature)); + this.nodes = new Tree(new FeatureNode(this.FileSystem.DirectoryInfo.FromDirectoryName(@"c:\output\"), string.Empty, feature)); } [When(@"I generate the documentation")] diff --git a/src/Pickles/Pickles.Test/Formatters/JSON/WhenCreatingAFeatureWithMetaInfoAndTestResultInMstestFormat.cs b/src/Pickles/Pickles.Test/Formatters/JSON/WhenCreatingAFeatureWithMetaInfoAndTestResultInMstestFormat.cs index 53b60e9d8..3884e207d 100644 --- a/src/Pickles/Pickles.Test/Formatters/JSON/WhenCreatingAFeatureWithMetaInfoAndTestResultInMstestFormat.cs +++ b/src/Pickles/Pickles.Test/Formatters/JSON/WhenCreatingAFeatureWithMetaInfoAndTestResultInMstestFormat.cs @@ -24,8 +24,8 @@ using Autofac; using Newtonsoft.Json.Linq; using NFluent; -using NGenerics.DataStructures.Trees; using NUnit.Framework; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.JSON; using PicklesDoc.Pickles.ObjectModel; @@ -59,7 +59,7 @@ public string Setup() var resultFile = RetrieveContentOfFileFromResources(ResourcePrefix + "JSON.results-example-failing-and-pasing-mstest.trx"); FileSystem.AddFile(TestResultFilePath, resultFile); - GeneralTree features = Container.Resolve().Crawl(RootPath); + Tree features = Container.Resolve().Crawl(RootPath); var outputDirectory = FileSystem.DirectoryInfo.FromDirectoryName(OutputDirectoryName); if (!outputDirectory.Exists) diff --git a/src/Pickles/Pickles.Test/Formatters/JSON/WhenFormattingAFolderStructureWithFeatures.cs b/src/Pickles/Pickles.Test/Formatters/JSON/WhenFormattingAFolderStructureWithFeatures.cs index 75c62c2e5..3f24c003c 100644 --- a/src/Pickles/Pickles.Test/Formatters/JSON/WhenFormattingAFolderStructureWithFeatures.cs +++ b/src/Pickles/Pickles.Test/Formatters/JSON/WhenFormattingAFolderStructureWithFeatures.cs @@ -20,8 +20,8 @@ using System; using Autofac; -using NGenerics.DataStructures.Trees; using NUnit.Framework; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.JSON; using PicklesDoc.Pickles.Test.Helpers; @@ -37,7 +37,7 @@ public void Setup() { this.AddFakeFolderStructures(); - GeneralTree features = Container.Resolve().Crawl(FileSystemPrefix); + Tree features = Container.Resolve().Crawl(FileSystemPrefix); var outputDirectory = FileSystem.DirectoryInfo.FromDirectoryName(OutputDirectory); if (!outputDirectory.Exists) diff --git a/src/Pickles/Pickles.Test/Formatters/TableOfContentsShouldBeCreatedFromAFolderStructure.cs b/src/Pickles/Pickles.Test/Formatters/TableOfContentsShouldBeCreatedFromAFolderStructure.cs index 6f6867395..a6b4ee954 100644 --- a/src/Pickles/Pickles.Test/Formatters/TableOfContentsShouldBeCreatedFromAFolderStructure.cs +++ b/src/Pickles/Pickles.Test/Formatters/TableOfContentsShouldBeCreatedFromAFolderStructure.cs @@ -25,8 +25,8 @@ using Autofac; using NFluent; -using NGenerics.DataStructures.Trees; using NUnit.Framework; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.HTML; using PicklesDoc.Pickles.Test.Helpers; @@ -43,7 +43,7 @@ public void Setup() { this.AddFakeFolderStructures(); - GeneralTree features = Container.Resolve().Crawl(RootPath); + Tree features = Container.Resolve().Crawl(RootPath); var formatter = new HtmlTableOfContentsFormatter(null, this.FileSystem); this.toc = formatter.Format( diff --git a/src/Pickles/Pickles.Test/Pickles.Test.csproj b/src/Pickles/Pickles.Test/Pickles.Test.csproj index f77c66876..bd5bbc709 100644 --- a/src/Pickles/Pickles.Test/Pickles.Test.csproj +++ b/src/Pickles/Pickles.Test/Pickles.Test.csproj @@ -63,10 +63,6 @@ ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll True - - False - ..\packages\NGenerics.1.4.1.0\lib\net35\NGenerics.dll - ..\packages\NUnit.3.2.1\lib\net45\nunit.framework.dll True diff --git a/src/Pickles/Pickles.Test/WhenCrawlingFoldersForFeatures.cs b/src/Pickles/Pickles.Test/WhenCrawlingFoldersForFeatures.cs index 1fb9d757b..063be49f9 100644 --- a/src/Pickles/Pickles.Test/WhenCrawlingFoldersForFeatures.cs +++ b/src/Pickles/Pickles.Test/WhenCrawlingFoldersForFeatures.cs @@ -21,8 +21,8 @@ using System; using Autofac; using NFluent; -using NGenerics.DataStructures.Trees; using NUnit.Framework; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; namespace PicklesDoc.Pickles.Test @@ -36,7 +36,7 @@ public void Then_can_crawl_all_folders_including_subfolders_for_features_success this.AddFakeFolderStructures(); string rootPath = FileSystemPrefix + @"FeatureCrawlerTests"; - GeneralTree features = Container.Resolve().Crawl(rootPath); + Tree features = Container.Resolve().Crawl(rootPath); Check.That(features).IsNotNull(); @@ -64,7 +64,7 @@ public void Then_can_crawl_all_folders_including_subfolders_for_features_success Check.That(subLevelOneDirectory.RelativePathFromRoot).IsEqualTo(@"SubLevelOne\"); Check.That(subLevelOneDirectory).IsInstanceOf(); - GeneralTree subLevelOneNode = features.ChildNodes[3]; + Tree subLevelOneNode = features.ChildNodes[3]; Check.That(subLevelOneNode.ChildNodes.Count).IsEqualTo(3); INode levelOneSublevelOneFeature = subLevelOneNode.ChildNodes[0].Data; @@ -79,7 +79,7 @@ public void Then_can_crawl_all_folders_including_subfolders_for_features_success Check.That(levelOneSublevelTwoFeature.RelativePathFromRoot).IsEqualTo(@"SubLevelOne\LevelOneSublevelTwo.feature"); Check.That(levelOneSublevelTwoFeature).IsInstanceOf(); - GeneralTree subLevelTwoNode = subLevelOneNode.ChildNodes[2]; + Tree subLevelTwoNode = subLevelOneNode.ChildNodes[2]; Check.That(subLevelTwoNode.ChildNodes.Count).IsEqualTo(1); INode subLevelTwoDirectory = subLevelOneNode.ChildNodes[2].Data; diff --git a/src/Pickles/Pickles.Test/packages.config b/src/Pickles/Pickles.Test/packages.config index c16464529..015fd3151 100644 --- a/src/Pickles/Pickles.Test/packages.config +++ b/src/Pickles/Pickles.Test/packages.config @@ -7,7 +7,6 @@ - diff --git a/src/Pickles/Pickles/DataStructures/Tree.cs b/src/Pickles/Pickles/DataStructures/Tree.cs new file mode 100644 index 000000000..4a3d82473 --- /dev/null +++ b/src/Pickles/Pickles/DataStructures/Tree.cs @@ -0,0 +1,83 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System; +using System.Collections; +using System.Collections.Generic; + +using PicklesDoc.Pickles.DirectoryCrawler; + +namespace PicklesDoc.Pickles.DataStructures +{ + public class Tree : IEnumerable + { + private readonly INode currentNode; + + public Tree(INode currentNode) + { + this.currentNode = currentNode; + this.ChildNodes = new List(); + } + + public IList ChildNodes { get; } + + public INode Data + { + get + { + return this.currentNode; + } + } + + public IEnumerator GetEnumerator() + { + List result = new List(); + result.Add(this.currentNode); + + foreach(var childNode in this.ChildNodes) + { + using (var enumerator = childNode.GetEnumerator()) + { + while (enumerator.MoveNext()) + { + result.Add(enumerator.Current); + } + } + } + + return result.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return this.GetEnumerator(); + } + + public void Add(Tree node) + { + this.ChildNodes.Add(node); + } + + public void Add(INode node) + { + this.Add(new Tree(node)); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs b/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs index 52317186a..13424b27d 100644 --- a/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs +++ b/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs @@ -23,8 +23,8 @@ using System.IO.Abstractions; using System.Linq; using System.Reflection; -using NGenerics.DataStructures.Trees; using NLog; +using PicklesDoc.Pickles.DataStructures; namespace PicklesDoc.Pickles.DirectoryCrawler { @@ -44,17 +44,17 @@ public DirectoryTreeCrawler(RelevantFileDetector relevantFileDetector, FeatureNo this.fileSystem = fileSystem; } - public GeneralTree Crawl(string directory) + public Tree Crawl(string directory) { return this.Crawl(this.fileSystem.DirectoryInfo.FromDirectoryName(directory), null); } - public GeneralTree Crawl(DirectoryInfoBase directory) + public Tree Crawl(DirectoryInfoBase directory) { return this.Crawl(directory, null); } - private GeneralTree Crawl(DirectoryInfoBase directory, INode rootNode) + private Tree Crawl(DirectoryInfoBase directory, INode rootNode) { INode currentNode = this.featureNodeFactory.Create(rootNode != null ? rootNode.OriginalLocation : null, directory); @@ -64,7 +64,7 @@ private GeneralTree Crawl(DirectoryInfoBase directory, INode rootNode) rootNode = currentNode; } - var tree = new GeneralTree(currentNode); + var tree = new Tree(currentNode); var filesAreFound = this.CollectFiles(directory, rootNode, tree); @@ -78,13 +78,13 @@ private GeneralTree Crawl(DirectoryInfoBase directory, INode rootNode) return tree; } - private bool CollectDirectories(DirectoryInfoBase directory, INode rootNode, GeneralTree tree) + private bool CollectDirectories(DirectoryInfoBase directory, INode rootNode, Tree tree) { - List> collectedNodes = new List>(); + List collectedNodes = new List(); foreach (DirectoryInfoBase subDirectory in directory.GetDirectories().OrderBy(di => di.Name)) { - GeneralTree subTree = this.Crawl(subDirectory, rootNode); + Tree subTree = this.Crawl(subDirectory, rootNode); if (subTree != null) { collectedNodes.Add(subTree); @@ -99,7 +99,7 @@ private bool CollectDirectories(DirectoryInfoBase directory, INode rootNode, Gen return collectedNodes.Count > 0; } - private bool CollectFiles(DirectoryInfoBase directory, INode rootNode, GeneralTree tree) + private bool CollectFiles(DirectoryInfoBase directory, INode rootNode, Tree tree) { List collectedNodes = new List(); diff --git a/src/Pickles/Pickles/DocumentationBuilders/DHTML/DhtmlDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/DHTML/DhtmlDocumentationBuilder.cs index b19b37ad9..f82d1c4ed 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/DHTML/DhtmlDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/DHTML/DhtmlDocumentationBuilder.cs @@ -22,8 +22,8 @@ using System.IO.Abstractions; using System.Linq; using System.Reflection; -using NGenerics.DataStructures.Trees; using NLog; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.JSON; using PicklesDoc.Pickles.ObjectModel; @@ -47,7 +47,7 @@ public DhtmlDocumentationBuilder(IConfiguration configuration, ITestResults test this.fileSystem = fileSystem; } - public void Build(GeneralTree features) + public void Build(Tree features) { if (Log.IsInfoEnabled) { @@ -77,7 +77,7 @@ private void PullDownFeatureImages(IEnumerable features) } } - private void UtilizeJsonBuilderToDumpJsonFeatureFileNextToDthmlResources(GeneralTree features) + private void UtilizeJsonBuilderToDumpJsonFeatureFileNextToDthmlResources(Tree features) { var jsonBuilder = new JsonDocumentationBuilder(this.configuration, this.testResults, this.fileSystem); jsonBuilder.Build(features); diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs index e3e53e611..16fc90ab6 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs @@ -22,9 +22,8 @@ using System.IO.Abstractions; using System.Reflection; using ClosedXML.Excel; -using NGenerics.DataStructures.Trees; -using NGenerics.Patterns.Visitor; using NLog; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel @@ -56,7 +55,7 @@ public ExcelDocumentationBuilder( this.fileSystem = fileSystem; } - public void Build(GeneralTree features) + public void Build(Tree features) { if (Log.IsInfoEnabled) { @@ -66,7 +65,7 @@ public void Build(GeneralTree features) string spreadsheetPath = this.fileSystem.Path.Combine(this.configuration.OutputFolder.FullName, "features.xlsx"); using (var workbook = new XLWorkbook()) { - var actionVisitor = new ActionVisitor(node => + foreach (var node in features) { var featureDirectoryTreeNode = node as FeatureNode; @@ -82,9 +81,7 @@ public void Build(GeneralTree features) worksheet, featureDirectoryTreeNode.Feature); } - }); - - features.AcceptVisitor(actionVisitor); + } this.excelTableOfContentsFormatter.Format(workbook, features); diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableOfContentsFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableOfContentsFormatter.cs index b359b899d..5f45d744a 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableOfContentsFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableOfContentsFormatter.cs @@ -21,7 +21,7 @@ using System; using System.Linq; using ClosedXML.Excel; -using NGenerics.DataStructures.Trees; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel @@ -40,7 +40,7 @@ private void WriteDirectoryCell(IXLWorksheet worksheet, ref int row, int column, worksheet.Cell(row++, column).Value = directoryName; } - public void BuildTableOfContents(XLWorkbook workbook, IXLWorksheet worksheet, ref int row, int column, GeneralTree features) + public void BuildTableOfContents(XLWorkbook workbook, IXLWorksheet worksheet, ref int row, int column, Tree features) { foreach (var childNode in features.ChildNodes) { @@ -64,7 +64,7 @@ private static IXLWorksheet FindFirstMatchingA1TitleUsingFeatureName(XLWorkbook sheet => sheet.Cell("A1").Value.ToString() == featureChildNode.Feature.Name); } - public void Format(XLWorkbook workbook, GeneralTree features) + public void Format(XLWorkbook workbook, Tree features) { IXLWorksheet tocWorksheet = workbook.AddWorksheet("TOC", 0); diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs index b63f3bfa3..fdfe2fce9 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs @@ -21,7 +21,7 @@ using System; using System.IO.Abstractions; using System.Xml.Linq; -using NGenerics.DataStructures.Trees; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML @@ -60,7 +60,7 @@ public HtmlDocumentFormatter( this.fileSystem = fileSystem; } - public XDocument Format(INode featureNode, GeneralTree features, DirectoryInfoBase rootFolder) + public XDocument Format(INode featureNode, Tree features, DirectoryInfoBase rootFolder) { XNamespace xmlns = HtmlNamespace.Xhtml; string featureNodeOutputPath = this.fileSystem.Path.Combine( diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs index 40e8837bc..00f7e5831 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs @@ -23,9 +23,8 @@ using System.Reflection; using System.Text; using System.Xml.Linq; -using NGenerics.DataStructures.Trees; -using NGenerics.Patterns.Visitor; using NLog; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; @@ -55,7 +54,7 @@ public HtmlDocumentationBuilder( #region IDocumentationBuilder Members - public void Build(GeneralTree features) + public void Build(Tree features) { if (Log.IsInfoEnabled) { @@ -64,11 +63,16 @@ public void Build(GeneralTree features) this.htmlResourceWriter.WriteTo(this.configuration.OutputFolder.FullName); - var actionVisitor = new ActionVisitor(node => this.VisitNodes(features, node)); - features?.AcceptVisitor(actionVisitor); + if (features != null) + { + foreach (var node in features) + { + this.VisitNodes(features, node); + } + } } - private void VisitNodes(GeneralTree features, INode node) + private void VisitNodes(Tree features, INode node) { if (node.IsIndexMarkDownNode()) { @@ -97,7 +101,7 @@ private void VisitNodes(GeneralTree features, INode node) } } - private void WriteContentNode(GeneralTree features, INode node, string htmlFilePath) + private void WriteContentNode(Tree features, INode node, string htmlFilePath) { using (var writer = new System.IO.StreamWriter(htmlFilePath, false, Encoding.UTF8)) { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs index d2d639010..198eef7ab 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs @@ -21,7 +21,7 @@ using System; using System.IO.Abstractions; using System.Xml.Linq; -using NGenerics.DataStructures.Trees; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; using PicklesDoc.Pickles.ObjectModel; @@ -40,7 +40,7 @@ public HtmlTableOfContentsFormatter(HtmlImageResultFormatter imageResultFormatte this.fileSystem = fileSystem; } - private XElement BuildListItems(XNamespace xmlns, Uri file, GeneralTree features) + private XElement BuildListItems(XNamespace xmlns, Uri file, Tree features) { var ul = new XElement(xmlns + "ul", new XAttribute("class", "features")); @@ -64,7 +64,7 @@ private XElement BuildListItems(XNamespace xmlns, Uri file, GeneralTree f return ul; } - private XElement AddNodeForDirectory(XNamespace xmlns, Uri file, GeneralTree childNode) + private XElement AddNodeForDirectory(XNamespace xmlns, Uri file, Tree childNode) { var xElement = new XElement( xmlns + "li", @@ -131,7 +131,7 @@ private bool DetermineWhetherFileIsTheRootFile(Uri file, FileInfoBase rootfile) return false; } - private XElement AddNodeForFile(XNamespace xmlns, Uri file, GeneralTree childNode) + private XElement AddNodeForFile(XNamespace xmlns, Uri file, Tree childNode) { var xElement = new XElement(xmlns + "li", new XAttribute("class", "file")); @@ -170,7 +170,7 @@ private XElement BuildCollapser(XNamespace xmlns) new XText("«")); } - public XElement Format(Uri file, GeneralTree features, DirectoryInfoBase outputFolder) + public XElement Format(Uri file, Tree features, DirectoryInfoBase outputFolder) { XNamespace xmlns = HtmlNamespace.Xhtml; diff --git a/src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs index 3b60b6eca..eec3206be 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs @@ -19,13 +19,13 @@ // -------------------------------------------------------------------------------------------------------------------- using System; -using NGenerics.DataStructures.Trees; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; namespace PicklesDoc.Pickles.DocumentationBuilders { public interface IDocumentationBuilder { - void Build(GeneralTree features); + void Build(Tree features); } } diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs index 64e84d111..9854bf6af 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs @@ -24,9 +24,8 @@ using System.Reflection; using Newtonsoft.Json; using Newtonsoft.Json.Converters; -using NGenerics.DataStructures.Trees; -using NGenerics.Patterns.Visitor; using NLog; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.ObjectModel; @@ -59,7 +58,7 @@ public string OutputFilePath #region IDocumentationBuilder Members - public void Build(GeneralTree features) + public void Build(Tree features) { if (Log.IsInfoEnabled) { @@ -68,7 +67,7 @@ public void Build(GeneralTree features) var featuresToFormat = new List(); - var actionVisitor = new ActionVisitor(node => + foreach (var node in features) { var featureTreeNode = node as FeatureNode; @@ -89,9 +88,7 @@ public void Build(GeneralTree features) featureTreeNode)); } } - }); - - features.AcceptVisitor(actionVisitor); + } this.CreateFile(this.OutputFilePath, this.GenerateJson(featuresToFormat)); } @@ -176,7 +173,7 @@ private dynamic GenerateSummary(List features) .Where(s => filteredScenarios.Contains(s)) .ToList(); - return new + return new { Folder = folder, Total = scenariosInFolder.Count, @@ -221,8 +218,8 @@ private dynamic GenerateSummary(List features) NotTestedFolders = topLevelNotTestedFolderSummary, Scenarios = new { - Total = filteredScenarios.Count, - Passing = filteredScenarios.LongCount(x => x.Result.WasExecuted && x.Result.WasSuccessful), + Total = filteredScenarios.Count, + Passing = filteredScenarios.LongCount(x => x.Result.WasExecuted && x.Result.WasSuccessful), Failing = filteredScenarios.LongCount(x => x.Result.WasExecuted && !x.Result.WasSuccessful), Inconclusive = filteredScenarios.LongCount(x => !x.Result.WasExecuted) }, diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs index 072011147..ca0ae05bf 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs @@ -26,9 +26,8 @@ using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; -using NGenerics.DataStructures.Trees; -using NGenerics.Patterns.Visitor; using NLog; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.Word.TableOfContentsAdder; @@ -63,7 +62,7 @@ public WordDocumentationBuilder( this.fileSystem = fileSystem; } - public void Build(GeneralTree features) + public void Build(Tree features) { string filename = string.IsNullOrEmpty(this.configuration.SystemUnderTestName) ? "features.docx" @@ -99,7 +98,7 @@ public void Build(GeneralTree features) var body = new Body(); document.Append(body); - var actionVisitor = new ActionVisitor(node => + foreach (var node in features) { var featureDirectoryTreeNode = node as FeatureNode; @@ -107,9 +106,7 @@ public void Build(GeneralTree features) { this.wordFeatureFormatter.Format(body, featureDirectoryTreeNode); } - }); - - features.AcceptVisitor(actionVisitor); + } mainDocumentPart.Document = document; mainDocumentPart.Document.Save(); diff --git a/src/Pickles/Pickles/Pickles.csproj b/src/Pickles/Pickles/Pickles.csproj index db9414817..e69c75010 100644 --- a/src/Pickles/Pickles/Pickles.csproj +++ b/src/Pickles/Pickles/Pickles.csproj @@ -70,10 +70,6 @@ ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll True - - False - ..\packages\NGenerics.1.4.1.0\lib\net35\NGenerics.dll - ..\packages\NLog.4.3.3\lib\net45\NLog.dll True @@ -213,6 +209,7 @@ + diff --git a/src/Pickles/Pickles/Runner.cs b/src/Pickles/Pickles/Runner.cs index 4cfbc1f59..7c6ecaf5a 100644 --- a/src/Pickles/Pickles/Runner.cs +++ b/src/Pickles/Pickles/Runner.cs @@ -22,9 +22,8 @@ using System.Linq; using System.Reflection; using Autofac; -using NGenerics.DataStructures.Trees; -using NGenerics.Patterns.Visitor; using NLog; +using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders; using PicklesDoc.Pickles.ObjectModel; @@ -45,7 +44,7 @@ public void Run(IContainer container) } var featureCrawler = container.Resolve(); - GeneralTree features = featureCrawler.Crawl(configuration.FeatureFolder); + Tree features = featureCrawler.Crawl(configuration.FeatureFolder); if (features == null) { @@ -67,11 +66,11 @@ public void Run(IContainer container) } } - private static void ApplyTestResultsToFeatures(IContainer container, IConfiguration configuration, GeneralTree features) + private static void ApplyTestResultsToFeatures(IContainer container, IConfiguration configuration, Tree features) { var testResults = container.Resolve(); - var actionVisitor = new ActionVisitor(node => + foreach (var node in features) { var featureTreeNode = node as FeatureNode; if (featureTreeNode == null) @@ -88,9 +87,7 @@ private static void ApplyTestResultsToFeatures(IContainer container, IConfigurat { featureTreeNode.Feature.Result = TestResult.Inconclusive; } - }); - - features.AcceptVisitor(actionVisitor); + } } private static void SetResultsForIndividualScenariosUnderFeature(FeatureNode featureTreeNode, ITestResults testResults) diff --git a/src/Pickles/Pickles/packages.config b/src/Pickles/Pickles/packages.config index 9f18f12ae..b4d21ec8a 100644 --- a/src/Pickles/Pickles/packages.config +++ b/src/Pickles/Pickles/packages.config @@ -8,7 +8,6 @@ - \ No newline at end of file From b39829dc73ae1f5b1a911be7d9bcb705bf917870 Mon Sep 17 00:00:00 2001 From: Lars-Erik Aabech Date: Mon, 26 Sep 2016 11:49:29 +0200 Subject: [PATCH 04/30] Compatibility with nunit.console 3.4 and nunit.framework 2.6 (#369) * Compatibility with nunit.console 3.4 and nunit.framework 2.6 * Added example output file and test for nunit 2 tests ran with nunit 3 runner. --- ...nParsingNunit3ResultsFileForNunit2Tests.cs | 121 +++ ...ults-example-nunit2-with-nunit3-runner.xml | 789 ++++++++++++++++++ .../Pickles.TestFrameworks.UnitTests.csproj | 4 + .../NUnit/NUnit3/NUnit3SingleResult.cs | 16 +- 4 files changed, 926 insertions(+), 4 deletions(-) create mode 100644 src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs create mode 100644 src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs new file mode 100644 index 000000000..897e21025 --- /dev/null +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs @@ -0,0 +1,121 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System; + +using NUnit.Framework; + +using PicklesDoc.Pickles.TestFrameworks.NUnit.NUnit3; + +namespace PicklesDoc.Pickles.TestFrameworks.UnitTests.NUnit.NUnit3 +{ + [TestFixture] + public class WhenParsingNunit3ResultsFileForNunit2Tests : StandardTestSuite + { + public WhenParsingNunit3ResultsFileForNunit2Tests() + : base("NUnit.NUnit3." + "results-example-nunit2-with-nunit3-runner.xml") + { + } + + [Test] + public new void ThenCanReadFeatureResultSuccessfully() + { + base.ThenCanReadFeatureResultSuccessfully(); + } + + [Test] + public new void ThenCanReadScenarioOutlineResultSuccessfully() + { + base.ThenCanReadScenarioOutlineResultSuccessfully(); + } + + [Test] + public new void ThenCanReadSuccessfulScenarioResultSuccessfully() + { + base.ThenCanReadSuccessfulScenarioResultSuccessfully(); + } + + [Test] + public new void ThenCanReadFailedScenarioResultSuccessfully() + { + base.ThenCanReadFailedScenarioResultSuccessfully(); + } + + [Test] + public new void ThenCanReadIgnoredScenarioResultSuccessfully() + { + base.ThenCanReadIgnoredScenarioResultSuccessfully(); + } + + [Test] + public new void ThenCanReadNotFoundScenarioCorrectly() + { + base.ThenCanReadNotFoundScenarioCorrectly(); + } + + [Test] + public new void ThenCanReadResultsWithBackslashes() + { + base.ThenCanReadResultsWithBackslashes(); + } + + [Test] + public new void ThenCanReadResultsWithParenthesis() + { + base.ThenCanReadResultsWithParenthesis(); + } + + [Test] + public new void ThenCanReadResultOfScenarioWithFailingBackground() + { + base.ThenCanReadResultOfScenarioWithFailingBackground(); + } + + [Test] + public new void ThenCanReadResultOfFeatureWithFailingBackground() + { + base.ThenCanReadResultOfFeatureWithFailingBackground(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithFailingBackground() + { + base.ThenCanReadResultOfScenarioOutlineWithFailingBackground(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineExampleWithFailingBackground() + { + base.ThenCanReadResultOfScenarioOutlineExampleWithFailingBackground(); + } + + [Test] + public new void ThenCanReadResultOfScenarioWithSpecialCharacters() + { + base.ThenCanReadResultOfScenarioWithSpecialCharacters(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithSpecialCharacters() + { + base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); + } + } +} diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml new file mode 100644 index 000000000..8379a8e05 --- /dev/null +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 60 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(60) (0,0s) +And I have entered 70 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) +And I have entered 130 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(130) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 260 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 40 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(40) (0,0s) +And I have entered 50 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) +And I have entered 90 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(90) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 180 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) +]]> + + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 1 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) +And I have entered 2 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 3 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) +]]> + + + + + + + + + d__5`2.MoveNext() + bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) + bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + bei Pickles.TestHarness.nunit3.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\nunit3\Addition.feature.cs:Zeile 0. + bei Pickles.TestHarness.nunit3.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\nunit3\Addition.feature:Zeile 34.]]> + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 1 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) +And I have entered 2.2 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2,2) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 3.2 on the screen +-> error: Die Eingabezeichenfolge hat das falsche Format. +]]> + + + + + + + + + + + + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given unimplemented step +-> No matching step definition found for the step. Use the following code to create one: + [Given(@"unimplemented step")] + public void GivenUnimplementedStep() + { + ScenarioContext.Current.Pending(); + } + +When unimplemented step +-> No matching step definition found for the step. Use the following code to create one: + [When(@"unimplemented step")] + public void WhenUnimplementedStep() + { + ScenarioContext.Current.Pending(); + } + +Then unimplemented step +-> No matching step definition found for the step. Use the following code to create one: + [Then(@"unimplemented step")] + public void ThenUnimplementedStep() + { + ScenarioContext.Current.Pending(); + } + +]]> + + + + + + + + + + + + + + + + + + + + + + error: + 1 + should be + 2 + but was + 1 +And the calculator has clean memory +-> skipped because of previous errors +Given I have entered 60 into the calculator +-> skipped because of previous errors +And I have entered 70 into the calculator +-> skipped because of previous errors +And I have entered 130 into the calculator +-> skipped because of previous errors +When I press add +-> skipped because of previous errors +Then the result should be 260 on the screen +-> skipped because of previous errors +]]> + + + + + + + error: + 1 + should be + 2 + but was + 1 +And the calculator has clean memory +-> skipped because of previous errors +Given I have entered 40 into the calculator +-> skipped because of previous errors +And I have entered 50 into the calculator +-> skipped because of previous errors +And I have entered 90 into the calculator +-> skipped because of previous errors +When I press add +-> skipped because of previous errors +Then the result should be 180 on the screen +-> skipped because of previous errors +]]> + + + + + + + + + + + error: + 1 + should be + 2 + but was + 1 +And the calculator has clean memory +-> skipped because of previous errors +Given I have entered 50 into the calculator +-> skipped because of previous errors +And I have entered 70 into the calculator +-> skipped because of previous errors +When I press add +-> skipped because of previous errors +Then the result should be 120 on the screen +-> skipped because of previous errors +]]> + + + + + + + + + + + + + + + + + + + + + + error: + true + should be + False + but was + True +]]> + + + + + + + + + pending: MinimalSteps.ThenInconclusiveStep() +]]> + + + + + + done: MinimalSteps.ThenPassingStep() (0,0s) +]]> + + + + + + + + + + + + + + pending: MinimalSteps.ThenInconclusiveStep() +]]> + + + + + + done: MinimalSteps.ThenPassingStep() (0,0s) +]]> + + + + + + + + + + + done: MinimalSteps.ThenPassingStep() (0,0s) +]]> + + + + + + + + + + + + + + + + + + + + error: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. +And I have entered 70 into the calculator +-> skipped because of previous errors +When I press add +-> skipped because of previous errors +Then the result should be 120 on the screen +-> skipped because of previous errors +]]> + + + + + + + + + + + + + + + + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +]]> + + + + + + pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") +]]> + + + + + + pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") +]]> + + + + + + + error: + true + should be + False + but was + True +]]> + + + + + + + error: + true + should be + False + but was + True +]]> + + + + + + + + done: ScenarioOutlineSteps.WhenIHaveBackslashesInTheValueForExampleAFilePath("c:\Temp\") (0,0s) +]]> + + + + + + + + done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("Please enter a va...") (0,0s) +And I have a field with value 'This is just a very very very veery long error message!' +-> done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("This is just a ve...") (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + + + + + + done: ScenarioOutlineSteps.WhenIHaveParenthesisInTheValueForExampleAnOverlyDescriptiveField("This is a descrip...") (0,0s) +]]> + + + + + + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) +]]> + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +]]> + + + + + + + + + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +]]> + + + + + + + error: + true + should be + False + but was + True +]]> + + + + + + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +]]> + + + + + + pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") +]]> + + + + + + + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 50 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) +And I have entered 70 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 120 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(120) (0,0s) +]]> + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '^.*(?BAR)\s[^0-9]{3,4}A+$' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("^.*(?BAR)\s[...") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '**' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("**") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '++' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("++") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '.*' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex(".*") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '[]' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("[]") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '{}' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("{}") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '()' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("()") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj b/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj index 38cb30692..ed3d058e5 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj @@ -63,6 +63,7 @@ + @@ -205,6 +206,9 @@ Designer + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 60 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(60) (0,0s) -And I have entered 70 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) -And I have entered 130 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(130) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 260 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 40 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(40) (0,0s) -And I have entered 50 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) -And I have entered 90 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(90) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 180 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) -]]> - + + - + - + - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 1 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) -And I have entered 2 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 3 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) -]]> - + - + - - d__5`2.MoveNext() - bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) - bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.nunit3.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\nunit3\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.nunit3.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\nunit3\Addition.feature:Zeile 34.]]> + + d__5`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.nunit.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in C:\Dev\Code\GitHub\DirkRombauts\pickles\test-harness\nunit\Addition.feature:line 34]]> - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 1 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) -And I have entered 2.2 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2,2) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 3.2 on the screen --> error: Die Eingabezeichenfolge hat das falsche Format. -]]> - + - + - + @@ -162,50 +107,23 @@ namespace MyNamespace } ]]> - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given unimplemented step --> No matching step definition found for the step. Use the following code to create one: - [Given(@"unimplemented step")] - public void GivenUnimplementedStep() - { - ScenarioContext.Current.Pending(); - } - -When unimplemented step --> No matching step definition found for the step. Use the following code to create one: - [When(@"unimplemented step")] - public void WhenUnimplementedStep() - { - ScenarioContext.Current.Pending(); - } - -Then unimplemented step --> No matching step definition found for the step. Use the following code to create one: - [Then(@"unimplemented step")] - public void ThenUnimplementedStep() - { - ScenarioContext.Current.Pending(); - } - -]]> - + - + - + - + - error: - 1 - should be - 2 - but was - 1 -And the calculator has clean memory --> skipped because of previous errors -Given I have entered 60 into the calculator --> skipped because of previous errors -And I have entered 70 into the calculator --> skipped because of previous errors -And I have entered 130 into the calculator --> skipped because of previous errors -When I press add --> skipped because of previous errors -Then the result should be 260 on the screen --> skipped because of previous errors -]]> - + - + - error: - 1 - should be - 2 - but was - 1 -And the calculator has clean memory --> skipped because of previous errors -Given I have entered 40 into the calculator --> skipped because of previous errors -And I have entered 50 into the calculator --> skipped because of previous errors -And I have entered 90 into the calculator --> skipped because of previous errors -When I press add --> skipped because of previous errors -Then the result should be 180 on the screen --> skipped because of previous errors -]]> - + @@ -295,48 +173,30 @@ Then the result should be 180 on the screen 2 but was 1]]> - + - error: - 1 - should be - 2 - but was - 1 -And the calculator has clean memory --> skipped because of previous errors -Given I have entered 50 into the calculator --> skipped because of previous errors -And I have entered 70 into the calculator --> skipped because of previous errors -When I press add --> skipped because of previous errors -Then the result should be 120 on the screen --> skipped because of previous errors -]]> - + - + - + @@ -347,26 +207,18 @@ Then the result should be 120 on the screen False but was True]]> - + - error: - true - should be - False - but was - True -]]> - + @@ -374,24 +226,18 @@ Then the result should be 120 on the screen - pending: MinimalSteps.ThenInconclusiveStep() -]]> - + - done: MinimalSteps.ThenPassingStep() (0,0s) -]]> - + - + @@ -399,110 +245,166 @@ Then the result should be 120 on the screen - pending: MinimalSteps.ThenInconclusiveStep() -]]> - + - done: MinimalSteps.ThenPassingStep() (0,0s) -]]> - + - + - done: MinimalSteps.ThenPassingStep() (0,0s) -]]> - + - + - - - - + - - + - - - - - error: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. -And I have entered 70 into the calculator --> skipped because of previous errors -When I press add --> skipped because of previous errors -Then the result should be 120 on the screen --> skipped because of previous errors -]]> + + + + + + + + + + + + + + + + + + + - + - + - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -]]> - - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -]]> - - + + + - pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") -]]> - + - pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") -]]> - + - + - error: - true - should be - False - but was - True -]]> - + - + - error: - true - should be - False - but was - True -]]> - + - - done: ScenarioOutlineSteps.WhenIHaveBackslashesInTheValueForExampleAFilePath("c:\Temp\") (0,0s) -]]> - + - + - - done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("Please enter a va...") (0,0s) -And I have a field with value 'This is just a very very very veery long error message!' --> done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("This is just a ve...") (0,0s) -Then the scenario will 'pass_1' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -]]> - + - + - - done: ScenarioOutlineSteps.WhenIHaveParenthesisInTheValueForExampleAnOverlyDescriptiveField("This is a descrip...") (0,0s) -]]> - + - + - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) -]]> - - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -]]> - - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -]]> - + + + - + - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -]]> - - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -]]> - - + + + - + - error: - true - should be - False - but was - True -]]> - + - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -]]> - - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -]]> - - + + + - pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") -]]> - + - + - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Then the scenario will 'pass_1' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -]]> - + - + - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 50 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) -And I have entered 70 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 120 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(120) (0,0s) -]]> - + - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '^.*(?BAR)\s[^0-9]{3,4}A+$' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("^.*(?BAR)\s[...") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '**' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("**") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '++' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("++") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '.*' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex(".*") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '[]' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("[]") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '{}' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("{}") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '()' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("()") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - + + + + + + + From 419364648b1d7daddbbeb1072e86383ad3e722a0 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Mon, 26 Sep 2016 13:40:59 +0200 Subject: [PATCH 06/30] Move generation and commit of output to DeployArtifacts (#372) --- DeployArtifacts.cmd | 1 + build.bat | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/DeployArtifacts.cmd b/DeployArtifacts.cmd index 33efac0a0..aae3b8997 100644 --- a/DeployArtifacts.cmd +++ b/DeployArtifacts.cmd @@ -1,3 +1,4 @@ @ECHO OFF +call DeployOutput.cmd %1 call DeployToChocolatey.cmd %1 call DeployToNuget.cmd %1 diff --git a/build.bat b/build.bat index da74bcd5d..fe2208b44 100644 --- a/build.bat +++ b/build.bat @@ -21,8 +21,6 @@ call %%A.cmd %picklesVersion% if errorlevel 1 goto handleerror1orhigher ) -call DeployOutput.cmd %picklesVersion% - @ECHO all fine goto end From 4cf451b208abbef2e7f8ab01b431dd100a2541c3 Mon Sep 17 00:00:00 2001 From: Lars-Erik Aabech Date: Tue, 27 Sep 2016 11:08:38 +0200 Subject: [PATCH 07/30] Added test for sorting when generating word docs (#373) * Added test for sorting when generating word docs * Use stream overloads of WordprocessingDocument --- src/Pickles/Pickles.Test/BaseFixture.cs | 4 + .../Word/WhenBuildingWordDocuments.cs | 84 +++++++++++++++++++ .../OrderingTests/A/a-a.feature | 13 +++ .../OrderingTests/A/a-b.feature | 13 +++ .../OrderingTests/B/b-a.feature | 13 +++ .../OrderingTests/B/b-b.feature | 13 +++ src/Pickles/Pickles.Test/Pickles.Test.csproj | 14 ++++ .../Word/WordDocumentationBuilder.cs | 6 +- 8 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs create mode 100644 src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-a.feature create mode 100644 src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-b.feature create mode 100644 src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-a.feature create mode 100644 src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-b.feature diff --git a/src/Pickles/Pickles.Test/BaseFixture.cs b/src/Pickles/Pickles.Test/BaseFixture.cs index bbeffff82..0997f899d 100644 --- a/src/Pickles/Pickles.Test/BaseFixture.cs +++ b/src/Pickles/Pickles.Test/BaseFixture.cs @@ -92,6 +92,10 @@ protected void AddFakeFolderStructures() this.AddFakeFolderAndFiles(@"FeatureCrawlerTests\SubLevelOne", new[] { "ignorethisfile.ignore", "LevelOneSublevelOne.feature", "LevelOneSublevelTwo.feature" }); this.AddFakeFolderAndFiles(@"FeatureCrawlerTests\SubLevelOne\SubLevelTwo", new[] { "LevelOneSublevelOneSubLevelTwo.feature" }); this.AddFakeFolderAndFiles(@"FeatureCrawlerTests\SubLevelOne\SubLevelTwo\IgnoreThisDirectory", new[] { "IgnoreThisFile.ignore" }); + + this.AddFakeFolderAndFiles(@"OrderingTests", new string[0]); + this.AddFakeFolderAndFiles(@"OrderingTests\A", new [] {"a-a.feature", "a-b.feature"}); + this.AddFakeFolderAndFiles(@"OrderingTests\B", new [] {"b-a.feature", "b-b.feature"}); } protected void AddFakeFolderAndFiles(string directoryName, IEnumerable fileNames) diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs new file mode 100644 index 000000000..c6fccaf24 --- /dev/null +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs @@ -0,0 +1,84 @@ +using System.IO; +using System.Linq; +using Autofac; +using DocumentFormat.OpenXml; +using DocumentFormat.OpenXml.Packaging; +using DocumentFormat.OpenXml.Wordprocessing; +using NUnit.Framework; +using PicklesDoc.Pickles.DataStructures; +using PicklesDoc.Pickles.DirectoryCrawler; +using PicklesDoc.Pickles.DocumentationBuilders.Word; + +namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Word +{ + [TestFixture] + public class WhenBuildingWordDocuments : BaseFixture + { + private WordDocumentationBuilder builder; + private Tree features; + private const string RootPath = FileSystemPrefix + @"OrderingTests"; + + [SetUp] + public void Setup() + { + AddFakeFolderStructures(); + + Configuration.OutputFolder = this.FileSystem.DirectoryInfo.FromDirectoryName(FileSystemPrefix); + features = Container.Resolve().Crawl(RootPath); + builder = Container.Resolve(); + } + + [Test] + public void ShouldOutputFeaturesInParsedOrder() + { + string[] expectedSequence = { + "a-a", + "a-a-a", + "a-a-b", + "a-b", + "a-b-a", + "a-b-b", + "b-a", + "b-a-a", + "b-a-b", + "b-b", + "b-b-a", + "b-b-b", + }; + + builder.Build(features); + + var outputPath = Path.Combine(Configuration.OutputFolder.FullName, "features.docx"); + + using (var stream = this.FileSystem.File.OpenRead(outputPath)) + { + var doc = WordprocessingDocument.Open(stream, false); + var body = doc.MainDocumentPart.Document.Body; + var headings = body.Where(IsHeading).Select(InnerText); + + Assert.That(headings, Is.EquivalentTo(expectedSequence)); + } + + } + + private static string InnerText(OpenXmlElement part) + { + return part.InnerText; + } + + private static bool IsHeading(OpenXmlElement part) + { + return part.OfType().Any(IsHeading); + } + + private static bool IsHeading(ParagraphProperties property) + { + return property.OfType().Any(IsHeading); + } + + private static bool IsHeading(ParagraphStyleId styleId) + { + return styleId.Val.HasValue && styleId.Val.Value.StartsWith("Heading"); + } + } +} diff --git a/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-a.feature b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-a.feature new file mode 100644 index 000000000..3ff9ae752 --- /dev/null +++ b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-a.feature @@ -0,0 +1,13 @@ +Feature: a-a + In order to generate nice docs + As a generator + I want to output this feature first + +@mytag +Scenario: a-a-a + Given I am first + Then All is well + +Scenario: a-a-b + Given I am second + Then All is well diff --git a/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-b.feature b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-b.feature new file mode 100644 index 000000000..d6aabdf4e --- /dev/null +++ b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/A/a-b.feature @@ -0,0 +1,13 @@ +Feature: a-b + In order to generate nice docs + As a generator + I want to output this feature first + +@mytag +Scenario: a-b-a + Given I am first + Then All is well + +Scenario: a-b-b + Given I am second + Then All is well diff --git a/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-a.feature b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-a.feature new file mode 100644 index 000000000..77c90423d --- /dev/null +++ b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-a.feature @@ -0,0 +1,13 @@ +Feature: b-a + In order to generate nice docs + As a generator + I want to output this feature first + +@mytag +Scenario: b-a-a + Given I am first + Then All is well + +Scenario: b-a-b + Given I am second + Then All is well diff --git a/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-b.feature b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-b.feature new file mode 100644 index 000000000..ea817a6c4 --- /dev/null +++ b/src/Pickles/Pickles.Test/FakeFolderStructures/OrderingTests/B/b-b.feature @@ -0,0 +1,13 @@ +Feature: b-b + In order to generate nice docs + As a generator + I want to output this feature first + +@mytag +Scenario: b-b-a + Given I am first + Then All is well + +Scenario: b-b-b + Given I am second + Then All is well diff --git a/src/Pickles/Pickles.Test/Pickles.Test.csproj b/src/Pickles/Pickles.Test/Pickles.Test.csproj index bd5bbc709..8eaeb6286 100644 --- a/src/Pickles/Pickles.Test/Pickles.Test.csproj +++ b/src/Pickles/Pickles.Test/Pickles.Test.csproj @@ -86,6 +86,7 @@ ..\packages\SpecFlow.2.0.0\lib\net45\TechTalk.SpecFlow.dll True + @@ -108,6 +109,7 @@ FormattingAFeature.feature + @@ -226,6 +228,18 @@ FormattingAFeature.feature.cs + + a-b.feature.cs + + + a-a.feature.cs + + + a-a.feature.cs + + + a-b.feature.cs + ResXFileCodeGenerator diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs index ca0ae05bf..4be18fa2e 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs @@ -81,9 +81,10 @@ public void Build(Tree features) } } + using (var stream = this.fileSystem.File.Create(documentFileName)) using ( WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Create( - documentFileName, + stream, WordprocessingDocumentType.Document)) { MainDocumentPart mainDocumentPart = wordProcessingDocument.AddMainDocumentPart(); @@ -113,7 +114,8 @@ public void Build(Tree features) } // HACK - Add the table of contents - using (WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Open(documentFileName, true)) + using (var stream = this.fileSystem.File.Open(documentFileName, System.IO.FileMode.Open)) + using (WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Open(stream, true)) { XElement firstPara = wordProcessingDocument .MainDocumentPart From 172d7b4d12680bab26dff6e33310d89e3bd73c38 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Tue, 27 Sep 2016 11:39:48 +0200 Subject: [PATCH 08/30] Improve tree (#374) * Add test about sorting * Make it compile * Make it pass * Check for null in constructor * Add test about null names in iteration * Factory method for creating trees * Check for null tree when adding * Add test for null node --- .../Pickles.Test/DataStructures/TreeTests.cs | 122 ++++++++++++++++++ src/Pickles/Pickles.Test/Pickles.Test.csproj | 1 + src/Pickles/Pickles/DataStructures/Tree.cs | 15 ++- 3 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 src/Pickles/Pickles.Test/DataStructures/TreeTests.cs diff --git a/src/Pickles/Pickles.Test/DataStructures/TreeTests.cs b/src/Pickles/Pickles.Test/DataStructures/TreeTests.cs new file mode 100644 index 000000000..d302700f7 --- /dev/null +++ b/src/Pickles/Pickles.Test/DataStructures/TreeTests.cs @@ -0,0 +1,122 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System; +using System.IO.Abstractions; +using System.Linq; + +using NFluent; + +using NUnit.Framework; + +using PicklesDoc.Pickles.DataStructures; +using PicklesDoc.Pickles.DirectoryCrawler; + +namespace PicklesDoc.Pickles.Test.DataStructures +{ + [TestFixture] + public class TreeTests : BaseFixture + { + private const string RootPath = FileSystemPrefix + @"OrderingTests"; + + [Test] + public void ShouldIterateInRightOrder() + { + var tree = CreateTree("root"); + + Tree treeB = tree.Add(new MyNode("B")); + treeB.Add(new MyNode("b-b")); + treeB.Add(new MyNode("b-a")); + + Tree treeA = tree.Add(new MyNode("A")); + treeA.Add(new MyNode("a-b")); + treeA.Add(new MyNode("a-a")); + + var actualSequence = tree.Select(n => n.Name).ToList(); + + Check.That(actualSequence).ContainsExactly("root", "A", "a-a", "a-b", "B", "b-a", "b-b"); + } + + [Test] + public void Constructor_NullArgument_ShouldThrowArgumentNullException() + { + Check.ThatCode(() => new Tree(null)).Throws(); + } + + [Test] + public void Iterator_NodeWithNullName_ShouldNotThrowException() + { + var tree = CreateTree("node"); + tree.Add(new MyNode(null)); + tree.Add(new MyNode("name")); + + Check.ThatCode(() => tree.ToList()).DoesNotThrow(); + } + + private static Tree CreateTree(string name) + { + return new Tree(new MyNode(name)); + } + + [Test] + public void Add_NullTree_ThrowArgumentNullException() + { + var tree = CreateTree("root"); + + Check.ThatCode(() => tree.Add((Tree)null)).Throws(); + } + + [Test] + public void Add_NullNode_ThrowArgumentNullException() + { + var tree = CreateTree("root"); + + Check.ThatCode(() => tree.Add((INode)null)).Throws(); + } + + private class MyNode : INode + { + public MyNode(string name) + { + this.Name = name; + } + + public NodeType NodeType { get; } + + public string Name { get; } + + public FileSystemInfoBase OriginalLocation { get; } + + public Uri OriginalLocationUrl { get; } + + public string RelativePathFromRoot { get; } + + public string GetRelativeUriTo(Uri other) + { + throw new NotImplementedException(); + } + + public string GetRelativeUriTo(Uri other, string newExtension) + { + throw new NotImplementedException(); + } + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/Pickles.Test.csproj b/src/Pickles/Pickles.Test/Pickles.Test.csproj index 8eaeb6286..c7e6fe397 100644 --- a/src/Pickles/Pickles.Test/Pickles.Test.csproj +++ b/src/Pickles/Pickles.Test/Pickles.Test.csproj @@ -94,6 +94,7 @@ + diff --git a/src/Pickles/Pickles/DataStructures/Tree.cs b/src/Pickles/Pickles/DataStructures/Tree.cs index 4a3d82473..b9cb034c1 100644 --- a/src/Pickles/Pickles/DataStructures/Tree.cs +++ b/src/Pickles/Pickles/DataStructures/Tree.cs @@ -21,6 +21,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; using PicklesDoc.Pickles.DirectoryCrawler; @@ -32,6 +33,8 @@ public class Tree : IEnumerable public Tree(INode currentNode) { + if (currentNode == null) throw new ArgumentNullException(nameof(currentNode)); + this.currentNode = currentNode; this.ChildNodes = new List(); } @@ -51,7 +54,7 @@ public IEnumerator GetEnumerator() List result = new List(); result.Add(this.currentNode); - foreach(var childNode in this.ChildNodes) + foreach(var childNode in this.ChildNodes.OrderBy(n => n.Data.Name)) { using (var enumerator = childNode.GetEnumerator()) { @@ -72,12 +75,18 @@ IEnumerator IEnumerable.GetEnumerator() public void Add(Tree node) { + if (node == null) throw new ArgumentNullException(nameof(node)); + this.ChildNodes.Add(node); } - public void Add(INode node) + public Tree Add(INode node) { - this.Add(new Tree(node)); + if (node == null) throw new ArgumentNullException(nameof(node)); + + var tree = new Tree(node); + this.Add(tree); + return tree; } } } \ No newline at end of file From 3a4786d4fcf1eccfe8fb6147d6cfb03cc04a0fa9 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Wed, 28 Sep 2016 10:57:09 +0200 Subject: [PATCH 09/30] Release 2.8.3 (#377) * Release 2.6.3 (#347) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Version Bump * Update change log * Release 2.7.0 (#351) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Release 2.6.3 (#348) * Version Bump * Update change log * Add --enableComments Flag to Command Line - Default to True (#346) * Command-Line Flag --comments - Default to True - Incl Unit Test * Changed Command Line Argument --comments to --enableComments * Added Enable Comments Option to MSBuild - Powershell - WPF Runners * Fixed Bug with enableComments Property Not Being Used in MainViewModel * Add EnableComments to the targets file * Adapt change log * Version bump to 2.7.0 * Release 2.8.0 (#355) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Release 2.6.3 (#348) * Version Bump * Update change log * Add --enableComments Flag to Command Line - Default to True (#346) * Command-Line Flag --comments - Default to True - Incl Unit Test * Changed Command Line Argument --comments to --enableComments * Added Enable Comments Option to MSBuild - Powershell - WPF Runners * Fixed Bug with enableComments Property Not Being Used in MainViewModel * Release 2.7.0 (#352) * Release 2.6.3 (#347) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Version Bump * Update change log * Add EnableComments to the targets file * Adapt change log * Version bump to 2.7.0 * #320 - Scenario Deep Linking - DHTML and HTML Output (#350) * #320 - Scenario Deep Linking - DHTML and HTML Output * #320 - Fix Failing Unit Tests * #320 - Resolved Issue with Image Resource Not Copying * #320 - Add Backward-Compatibility for Hashed Feature Path * #320 - Added Modal Dialog for Link Copy * Edit release notes * Version Bump (2.8.0) * Release 2.8.1 (#360) * Add release notes * Fix some markdown syntax things * Bump version number (2.8.3) * Version 2.8.3 --- CHANGELOG.md | 23 +- build.bat | 2 +- docs/Output/Dhtml/pickledFeatures.js | 2560 ++++++++--------- docs/Output/Excel/features.xlsx | Bin 37345 -> 37306 bytes .../Features/00BasicGherkin/BasicGherkin.html | 6 +- .../Html/Features/00BasicGherkin/index.html | 6 +- .../TestRunnerIsNotImportant.html | 6 +- .../Html/Features/01TestRunner/index.html | 6 +- .../Html/Features/02TagsAndHooks/Hooks.html | 6 +- .../Html/Features/02TagsAndHooks/TagDemo.html | 6 +- .../Html/Features/02TagsAndHooks/index.html | 6 +- .../031ScenarioContext/ScenarioContext.html | 6 +- .../Features/031ScenarioContext/index.html | 6 +- .../FeatureContextFeatures.html | 6 +- .../Features/032FeatureContext/index.html | 6 +- .../03ScenarioOutline/ScenarioOutline.html | 6 +- .../Features/03ScenarioOutline/index.html | 6 +- .../04Background/BackgroundFeature.html | 6 +- .../Html/Features/04Background/index.html | 6 +- .../05TablesAndAssist/TableScenario.html | 6 +- .../Features/05TablesAndAssist/index.html | 6 +- .../Features/06CompareToAssist/CompareTo.html | 6 +- .../Features/06CompareToAssist/index.html | 6 +- .../Html/Features/07Svenska/Svenska.html | 6 +- .../Output/Html/Features/07Svenska/index.html | 6 +- .../AttributeOverloading.html | 6 +- .../08AttributeOverloading/index.html | 6 +- .../CallingStepsFromSteps.html | 6 +- .../09CallingStepsFromSteps/index.html | 6 +- .../StepTransformation.html | 6 +- .../Features/10StepTransformation/index.html | 6 +- .../11ContextInjection/ContextInjection.html | 6 +- .../Features/11ContextInjection/index.html | 6 +- .../ChildChildFolder/NestedFolderExample.html | 6 +- .../ChildFolder/ChildChildFolder/index.html | 6 +- .../12NestedFolders/ChildFolder/index.html | 6 +- .../Html/Features/12NestedFolders/index.html | 6 +- .../MultilineFeatureExample.html | 6 +- .../Html/Features/13MultilineText/index.html | 6 +- .../14MarkdownExample/MarkdownExamples.html | 6 +- .../Features/14MarkdownExample/index.html | 6 +- .../15Pickles/InteractiveDHTMLView.html | 6 +- .../Output/Html/Features/15Pickles/index.html | 6 +- docs/Output/Html/Features/Arithmetic.html | 6 +- docs/Output/Html/Features/Trigonometry.html | 6 +- .../Features/Workflow/ClearingScreen.html | 6 +- docs/Output/Html/Features/Workflow/index.html | 6 +- docs/Output/Html/Features/index.html | 6 +- docs/Output/Html/index.html | 6 +- docs/Output/Html/readme.html | 6 +- docs/Output/JSON/pickledFeatures.json | 2560 ++++++++--------- docs/Output/Word/Pickles.docx | Bin 13739 -> 13684 bytes docs/Output/Word/features.docx | Bin 13725 -> 13670 bytes docs/index.html | 2 +- src/Pickles/VersionInfo.cs | 8 +- 55 files changed, 2719 insertions(+), 2712 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a7069364..a17cb8661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,33 +4,40 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org). We consider the following to be the API of Pickles for the purposes of Semantic Versioning: - - The arguments of the command line runner - - The arguments of the PowerShell runner - - The arguments of the MSBuild configuration - - The settings file of the GUI runner - - The JSON output of the JSON format +- The arguments of the command line runner +- The arguments of the PowerShell runner +- The arguments of the MSBuild configuration +- The settings file of the GUI runner +- The JSON output of the JSON format Features in Experimental are subject to change and removal without being considered breaking. This document is formatted according to the principles of [Keep A CHANGELOG](http://keepachangelog.com). +## [2.8.3] - 2016-09-28 + +### Fixed + +- Compatibility with nunit.console 3.x and nunit.framework 2.x ([369](https://github.com/picklesdoc/pickles/pull/369)) (by [@lars-erik](https://github.com/lars-erik)). +- Correct sorting of features in output file (MS Word) ([357](https://github.com/picklesdoc/pickles/issues/357)) (by [@lars-erik](https://github.com/lars-erik) and [@dirkrombauts](https://github.com/dirkrombauts)). + ## [2.8.2] - 2016-08-18 ### Fixed -* Handle Encoding or Opposite Slash in Feature Paths ([358](https://github.com/picklesdoc/pickles/pull/362)) (by [@ocsurfnut](https://github.com/ocsurfnut)). +- Handle Encoding or Opposite Slash in Feature Paths ([358](https://github.com/picklesdoc/pickles/pull/362)) (by [@ocsurfnut](https://github.com/ocsurfnut)). ## [2.8.1] - 2016-07-29 ### Fixed -* Blank Example Entries in a Scenario Outline cause Pickles not to Find the matching Scenario Outline ([358](https://github.com/picklesdoc/pickles/pull/358)) (by [@aaronjrich](https://github.com/aaronjrich)). +- Blank Example Entries in a Scenario Outline cause Pickles not to Find the matching Scenario Outline ([358](https://github.com/picklesdoc/pickles/pull/358)) (by [@aaronjrich](https://github.com/aaronjrich)). ## [2.8.0] - 2016-06-29 ### Added -* Hyperlink Feature #1: Automatic Hyperlink Generation for Scenario Titles ([320](https://github.com/picklesdoc/pickles/issues/320)) (by [@ocsurfnut](https://github.com/ocsurfnut)). +- Hyperlink Feature #1: Automatic Hyperlink Generation for Scenario Titles ([320](https://github.com/picklesdoc/pickles/issues/320)) (by [@ocsurfnut](https://github.com/ocsurfnut)). ## [2.7.0] - 2016-06-14 diff --git a/build.bat b/build.bat index fe2208b44..977a3da05 100644 --- a/build.bat +++ b/build.bat @@ -1,5 +1,5 @@ @echo off -set "picklesVersion=2.8.2" +set "picklesVersion=2.8.3" cls diff --git a/docs/Output/Dhtml/pickledFeatures.js b/docs/Output/Dhtml/pickledFeatures.js index e2590e464..6f1e0392d 100644 --- a/docs/Output/Dhtml/pickledFeatures.js +++ b/docs/Output/Dhtml/pickledFeatures.js @@ -1,49 +1,93 @@ jsonPWrapper ({ "Features": [ { - "RelativeFolder": "Features\\Workflow\\ClearingScreen.feature", + "RelativeFolder": "Features\\00BasicGherkin\\BasicGherkin.feature", "Feature": { - "Name": "Clearing Screen", - "Description": "\tIn order to restart a new set of calculations\r\n\tAs a math idiot\r\n\tI want to be able to clear the screen", + "Name": "Showing basic gherkin syntax", + "Description": "In order to see that gherkin is a very simple language\r\nAs a SpecFlow evangelist\r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", "FeatureElements": [ { - "Name": "Clear the screen", - "Slug": "clear-the-screen", + "Name": "Simple GWT", + "Slug": "simple-gwt", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", + "Name": "the initial state of the application is Running", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I ask what the application state is", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "I should see Running as the answer", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Using And and But", + "Slug": "using-and-and-but", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "the initial state of the application is Running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have authorization to ask application state", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press C", + "Name": "I ask what the application state is", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the screen should be empty", + "Name": "I should see Running as the answer", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I should see the time of the application", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "the state of the application should not be Stopped", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@workflow", - "@slow" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -62,130 +106,34 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\15Pickles\\InteractiveDHTMLView.feature", + "RelativeFolder": "Features\\01TestRunner\\TestRunnerIsNotImportant.feature", "Feature": { - "Name": "Interactive DHTML View", - "Description": "\tIn order to increase stakeholder engagement with pickled specs\r\n\tAs a SpecFlow evangelist \r\n\tI want to adjust the level of detail in the DHTML view to suit my audience\r\n\tSo that I do not overwhelm them.", + "Name": "The test runner is not (very) important", + "Description": "\tIn order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\n\tAs a SpecFlow evanglist \r\n\tI want to be able to call my steps in the same manner inspite of the testrunner configured ", "FeatureElements": [ { - "Name": "Scenario with large data table", - "Slug": "scenario-with-large-data-table", + "Name": "A couple of simple steps", + "Slug": "a-couple-of-simple-steps", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature with a large table of data:", - "TableArgument": { - "HeaderRow": [ - "heading", - "page #" - ], - "DataRows": [ - [ - "Chapter 1", - "1" - ], - [ - "Chapter 2", - "5" - ], - [ - "Chapter 3", - "10" - ], - [ - "Chapter 4", - "15" - ], - [ - "Chapter 5", - "20" - ], - [ - "Chapter 6", - "25" - ], - [ - "Chapter 7", - "30" - ], - [ - "Chapter 8", - "35" - ], - [ - "Chapter 9", - "40" - ], - [ - "Chapter 10", - "45" - ], - [ - "Chapter 11", - "50" - ], - [ - "Chapter 12", - "55" - ], - [ - "Chapter 13", - "60" - ], - [ - "Chapter 14", - "65" - ], - [ - "Chapter 15", - "70" - ], - [ - "Chapter 16", - "75" - ], - [ - "Chapter 17", - "80" - ], - [ - "Chapter 18", - "85" - ], - [ - "Chapter 19", - "90" - ], - [ - "Chapter 20", - "95" - ], - [ - "Chapter 21", - "100" - ], - [ - "Chapter 22", - "105" - ] - ] - }, + "Name": "I have step defintions in place", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I click on the table heading", + "Name": "I call a step", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the table body should collapse", + "Name": "the step should have been called", "StepComments": [], "AfterLastStepComments": [] } @@ -209,27 +157,27 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\14MarkdownExample\\MarkdownExamples.feature", + "RelativeFolder": "Features\\02TagsAndHooks\\Hooks.feature", "Feature": { - "Name": "Sample Markdown Feature", - "Description": "Header 1\r\n========\r\n\r\nHeader 2\r\n--------\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", + "Name": "Addition", + "Description": "\tIn order to explain the order in which hooks are run\r\n\tAs a SpecFlow evanglist\r\n\tI wan to be able to hook into pre and post conditions in SpecFlow", "FeatureElements": [ { - "Name": "Sample Markdown Scenario Example", - "Slug": "sample-markdown-scenario-example", - "Description": "This is **important** text\r\n\r\nCode Block:\r\n\r\n```\r\nvar x = 2;\r\n```\r\n\r\nApple\r\n: Pomaceous fruit of plants of the genus Malus in\r\n the family Rosaceae.\r\n: An American computer company.\r\n\r\nOrange\r\n: The fruit of an evergreen tree of the genus Citrus.", + "Name": "Hooking into pre conditions for Test Runs in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-test-runs-in-specflow", + "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "this", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "that", + "Name": "the BeforeTestRun hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } @@ -241,185 +189,104 @@ jsonPWrapper ({ } }, { - "Examples": [ + "Name": "Hooking into pre conditions for Features in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-features-in-specflow", + "Description": "", + "Steps": [ { - "Name": "", - "Description": "This __message__ is important too and is for an *Example* table.", - "TableArgument": { - "HeaderRow": [ - "test", - "test2" - ], - "DataRows": [ - [ - "value", - "value2" - ] - ] - } + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "the scenario is running", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the BeforeFeature hook should have been executed", + "StepComments": [], + "AfterLastStepComments": [] } ], - "Name": "Sample Markdown Scenario Outline Example", - "Slug": "sample-markdown-scenario-outline-example", - "Description": "This is [an example link to pickles](https://github.com/picklesdoc/pickles/wiki \"Pickles\") inline link.\r\n\r\n[This link to pickles](https://github.com/picklesdoc/pickles/wiki) has no title attribute.", + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Hooking into pre conditions for Scenarios in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-scenarios-in-specflow", + "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "this: ", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "that: ", + "Name": "the BeforeScenario hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@AddingATag" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } - } - ], - "Background": { - "Name": "", - "Description": "This is the *coolest* background", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have initialized the Sum-variable to 0", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 1 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\13MultilineText\\MultilineFeatureExample.feature", - "Feature": { - "Name": "Multiline Feature Example", - "Description": "\tIn order capture this particular Gherkin feature\r\n\tAs a Pickles contributer\r\n\tI want to demonstrate an example of using multiline text in a Scenario", - "FeatureElements": [ + }, { - "Name": "Mutliline Output", - "Slug": "mutliline-output", + "Name": "Hooking into pre conditions for ScenarioBlocks in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-scenarioblocks-in-specflow", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have read in some text from the user", - "DocStringArgument": "This is line 1.\r\nThis is line 2!\r\nThis is line 3!!", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I process this input", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result will be saved to the multiline text data store", + "Name": "the BeforeScenarioBlock hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@mytag" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", - "Feature": { - "Name": "Nested Folder Example", - "Description": "\tIn order to test nested folder output\r\n\tAs a silly contributer\r\n\tI want to create an example of something several folders deep", - "FeatureElements": [ + }, { - "Name": "Nested - Add two numbers", - "Slug": "nested---add-two-numbers", + "Name": "Hooking into pre conditions for Steps in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-steps-in-specflow", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I press add", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 120 on the screen", + "Name": "the BeforeStep hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@nestedFolders" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -438,53 +305,76 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\11ContextInjection\\ContextInjection.feature", + "RelativeFolder": "Features\\02TagsAndHooks\\TagDemo.feature", "Feature": { - "Name": "Injecting context into step specifications", - "Description": "\tIn order to don't have to rely on the global shared state\r\n\t\tand to be able to define the contexts required for each scenario.\r\n\tAs a SpecFlow Evanglist\r\n\tI would like to have the system automatically inject an instance of any class as \r\n\t\tdefined in the constructor of a step file", + "Name": "Tag demonstrator", + "Description": "\tIn order to show the capabilities of tags in SpecFlow\r\n\tAs a SpecFlow evanglist\r\n\tI want to write scenarios that has tags and show their usage in code", "FeatureElements": [ { - "Name": "Feature with no context", - "Slug": "feature-with-no-context", + "Name": "Ignored scenario", + "Slug": "ignored-scenario", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires no context", + "Name": "that my scenario has the @ignore tag", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "everything is dandy", + "Name": "the scenario is ignored", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "the missing step definitions are not reported", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@ignore" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Feature with a single context", - "Slug": "feature-with-a-single-context", + "Name": "A scenario without tags", + "Slug": "a-scenario-without-tags", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires a single context", + "Name": "that my scenario has 0 tags", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the context is set", + "Name": "before scenario hook with '' is run", "StepComments": [], "AfterLastStepComments": [] } @@ -496,92 +386,108 @@ jsonPWrapper ({ } }, { - "Name": "Feature with multiple contexts", - "Slug": "feature-with-multiple-contexts", + "Name": "A scenario with 1 tag", + "Slug": "a-scenario-with-1-tag", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires multiple contexts", + "Name": "that my scenario has 1 tags", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the contexts are set", + "Name": "before scenario hook with 'testTag1' is run", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@testTag1" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Feature with recursive contexts", - "Slug": "feature-with-recursive-contexts", + "Name": "A scenario with 3 tags", + "Slug": "a-scenario-with-3-tags", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires a recursive context", + "Name": "that my scenario has 3 tags", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the context is set", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "its sub-context is set", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "before scenario hook with 'testTag1, testTag2, testTag3' is run", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@testTag1", + "@testTag2", + "@testTag3" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Feature with a dependent context", - "Slug": "feature-with-a-dependent-context", + "Name": "A scenario with 2 tags", + "Slug": "a-scenario-with-2-tags", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires a single context", + "Name": "that my scenario has 2 tags", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the context is set", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "the context was created by the feature with a single context scenario", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "before scenario hook with 'testTag1, testTag3' is run", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@testTag1", + "@testTag3" + ], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -592,7 +498,10 @@ jsonPWrapper ({ "WasExecuted": false, "WasSuccessful": false }, - "Tags": [] + "Tags": [ + "@allAboutTags", + "@important" + ] }, "Result": { "WasExecuted": false, @@ -600,94 +509,98 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\10StepTransformation\\StepTransformation.feature", + "RelativeFolder": "Features\\03ScenarioOutline\\ScenarioOutline.feature", "Feature": { - "Name": "Step Argument Transformations", - "Description": "\tIn order to reduce the amount of code and repetitive tasks in my steps\r\n\tAs a SpecFlow evanglist\r\n\tI want to define reusable transformations for my step arguments", + "Name": "Scenario outline", + "Description": "\tIn order to not have to type the same scenario over and over\r\n\tAs a SpecFlow evangelist\r\n\tI want to show how to use ScenarioOutline", "FeatureElements": [ { - "Name": "Steps with non-string arguments", - "Slug": "steps-with-non-string-arguments", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "Dan has been registered at date 2003/03/13", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "Aslak has been registered at terminal 2", - "StepComments": [], - "AfterLastStepComments": [] - }, + "Examples": [ { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should be able to see Aslak at terminal 2", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\09CallingStepsFromSteps\\CallingStepsFromSteps.feature", - "Feature": { - "Name": "Calling Steps from StepDefinitions", - "Description": "\tIn order to create steps of a higher abstraction\r\n\tAs a SpecFlow evangelist\r\n\tI want reuse other steps in my step definitions", - "FeatureElements": [ - { - "Name": "Log in", - "Slug": "log-in", + "Name": "less than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "10", + "20", + "30" + ], + [ + "20", + "20", + "40" + ], + [ + "20", + "30", + "50" + ] + ] + } + }, + { + "Name": "more than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "100", + "20", + "120" + ], + [ + "1000", + "20", + "1020" + ] + ] + } + } + ], + "Name": "Add two positive numbers with many examples", + "Slug": "add-two-positive-numbers-with-many-examples", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I am on the index page", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I enter my unsername nad password", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I click the login button", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I perform add", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the welcome page should be displayed", + "Name": "the result should be ", "StepComments": [], - "AfterLastStepComments": [] + "AfterLastStepComments": [ + { + "Text": "# This is called Abstrakt Scenario in Swedish (!!!)" + } + ] } ], "Tags": [], @@ -697,107 +610,86 @@ jsonPWrapper ({ } }, { - "Name": "Do something meaningful", - "Slug": "do-something-meaningful", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I am logged in", - "StepComments": [], - "AfterLastStepComments": [] - }, + "Examples": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I dosomething meaningful", - "StepComments": [], - "AfterLastStepComments": [] + "Name": "less than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "10", + "20", + "30" + ], + [ + "20", + "20", + "40" + ], + [ + "20", + "30", + "50" + ] + ] + } }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should get rewarded", - "StepComments": [], - "AfterLastStepComments": [] + "Name": "more than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "100", + "20", + "120" + ], + [ + "1000", + "20", + "1020" + ] + ] + } } ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\08AttributeOverloading\\AttributeOverloading.feature", - "Feature": { - "Name": "Attribute overloading", - "Description": "\tIn order to show that steps can be used with multiple attributes\r\n\tAs a SpecFlow Evangelist\r\n\tI want to show that similar attributes can be applied to the same step definition", - "FeatureElements": [ - { - "Name": "Checking number for evenness", - "Slug": "checking-number-for-evenness", + "Name": "Add two negative numbers with many examples", + "Slug": "add-two-negative-numbers-with-many-examples", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have this simple step", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "this simple step", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "also this step", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I do something", + "Name": "I perform add", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "I could validate that the number 2 is even", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "that the number 4 is even", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "the number 3 is odd", + "Name": "the result should be ", "StepComments": [], "AfterLastStepComments": [] } @@ -821,41 +713,27 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\07Svenska\\Svenska.feature", + "RelativeFolder": "Features\\031ScenarioContext\\ScenarioContext.feature", "Feature": { - "Name": "Summering", - "Description": "\tFör att slippa att göra dumma fel\r\n\tSom räknare\r\n\tVill jag kunna lägga summera", + "Name": "Scenario Context features", + "Description": "\tIn order to show how to use ScenarioContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in ScenarioContext", "FeatureElements": [ { - "Name": "Summera 5 och 7 ska vara 12", - "Slug": "summera-5-och-7-ska-vara-12", + "Name": "Store and retrive Person Marcus from ScenarioContext", + "Slug": "store-and-retrive-person-marcus-from-scenariocontext", "Description": "", "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Givet ", - "Name": "att jag har knappat in 5", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "Och ", - "Name": "att jag har knappat in 7", - "StepComments": [], - "AfterLastStepComments": [] - }, { "Keyword": "When", - "NativeKeyword": "När ", - "Name": "jag summerar", + "NativeKeyword": "When ", + "Name": "I store a person called Marcus in the Current ScenarioContext", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", - "NativeKeyword": "Så ", - "Name": "ska resultatet vara 12", + "NativeKeyword": "Then ", + "Name": "a person called Marcus can easily be retrieved", "StepComments": [], "AfterLastStepComments": [] } @@ -865,61 +743,23 @@ jsonPWrapper ({ "WasExecuted": false, "WasSuccessful": false } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\06CompareToAssist\\CompareTo.feature", - "Feature": { - "Name": "Show the compare to feature", - "Description": "\tIn order to show the compare to features of SpecFlow Assist\r\n\tAs a SpecFlow evanglist\r\n\tI want to show how the different versions of compareTo works", - "FeatureElements": [ + }, { - "Name": "CompareToInstance", - "Slug": "comparetoinstance", + "Name": "Showing information of the scenario", + "Slug": "showing-information-of-the-scenario", "Description": "", "Steps": [ { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have the following person", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Name", - "Marcus" - ], - [ - "Style", - "Butch" - ], - [ - "Birth date", - "1972-10-09" - ] - ] - }, + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I execute any scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "CompareToInstance should match this guy", + "Name": "the ScenarioInfo contains the following information", "TableArgument": { "HeaderRow": [ "Field", @@ -927,76 +767,65 @@ jsonPWrapper ({ ], "DataRows": [ [ - "Name", - "Marcus" - ], - [ - "Style", - "Butch" + "Tags", + "showUpInScenarioInfo, andThisToo" ], [ - "BirthDate", - "10/9/1972 12:00:00 AM" + "Title", + "Showing information of the scenario" ] ] }, "StepComments": [], "AfterLastStepComments": [] + } + ], + "Tags": [ + "@showUpInScenarioInfo", + "@andThisToo" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Show the type of step we're currently on", + "Slug": "show-the-type-of-step-were-currently-on", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have a Given step", + "StepComments": [], + "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "CompareToInstance should match this guy", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Name", - "Marcus" - ], - [ - "BirthDate", - "10/9/1972 12:00:00 AM" - ] - ] - }, + "Name": "I have another Given step", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "CompareToInstance should not match this guy", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Name", - "Anders" - ], - [ - "Style", - "very cool" - ], - [ - "BirthDate", - "10/9/1974 12:00:00 AM" - ] - ] - }, + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I have a When step", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "I have a Then step", "StepComments": [], "AfterLastStepComments": [ { - "Text": "# CompareToSet will test only the properties that you define in the table." + "Text": "#This is not so easy to write a scenario for but I've created an AfterScenario-hook" }, { - "Text": "# CompareToSet does not test the order of the objects, only that one was found that matches" + "Text": "#To see this in action remove the @ignore tag below" } ] } @@ -1008,95 +837,214 @@ jsonPWrapper ({ } }, { - "Name": "CompareToSet", - "Slug": "comparetoset", + "Name": "Display error information in AfterScenario", + "Slug": "display-error-information-in-afterscenario", "Description": "", "Steps": [ { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have the following persons using assist", - "TableArgument": { - "HeaderRow": [ - "Name", - "Style", - "Birth date" - ], - "DataRows": [ - [ - "Marcus", - "Cool", - "1972-10-09" - ], - [ - "Anders", - "Butch", - "1977-01-01" - ], - [ - "Jocke", - "Soft", - "1974-04-04" - ] - ] - }, + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "an error occurs in a step", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [ + "@ignore", + "@showingErrorHandling" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Pending step", + "Slug": "pending-step", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I set the ScenarioContext.Current to pending", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "CompareToSet should match this", + "Name": "this step will not even be executed", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\032FeatureContext\\FeatureContextFeatures.feature", + "Feature": { + "Name": "FeatureContext features", + "Description": "\tIn order to show how to use FeatureContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in FeatureContext", + "FeatureElements": [ + { + "Name": "Store and retrive Person Marcus from FeatureContext Current", + "Slug": "store-and-retrive-person-marcus-from-featurecontext-current", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I store a person called Marcus in the current FeatureContext", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "a person called Marcus can easily be retrieved from the current FeatureContext", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Showing information of the feature", + "Slug": "showing-information-of-the-feature", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I execute any scenario in the feature", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the FeatureInfo contains the following information", "TableArgument": { "HeaderRow": [ - "Name", - "Style", - "BirthDate" + "Field", + "Value" ], "DataRows": [ [ - "Marcus", - "Cool", - "10/9/1972 12:00:00 AM" + "Tags", + "showUpInScenarioInfo, andThisToo" ], [ - "Anders", - "Butch", - "1/1/1977 12:00:00 AM" + "Title", + "FeatureContext features" ], [ - "Jocke", - "Soft", - "4/4/1974 12:00:00 AM" + "TargetLanguage", + "CSharp" + ], + [ + "Language", + "en-US" + ], + [ + "Description", + "In order to" ] ] }, "StepComments": [], "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [ + "@showUpInScenarioInfo", + "@andThisToo" + ] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\04Background\\BackgroundFeature.feature", + "Feature": { + "Name": "Show the use of background", + "Description": "\tIn order to show how to use the Background keyword of Gherkin\r\n\tAs a SpecFlow evanglist\r\n\tI want to show that background steps are called before any scenario step", + "FeatureElements": [ + { + "Name": "Add 1 to the sum", + "Slug": "add-1-to-the-sum", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 1 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] }, { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "CompareToSet should not match this", - "TableArgument": { - "HeaderRow": [ - "Name", - "Style", - "BirthDate" - ], - "DataRows": [ - [ - "Marcus", - "Cool", - "10/9/1972 12:00:00 AM" - ], - [ - "Anders", - "Butch", - "1/1/1977 12:00:00 AM" - ] - ] - }, + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the total sum should be 2", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Add 2 to the sum", + "Slug": "add-2-to-the-sum", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 2 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the total sum should be 3", "StepComments": [], "AfterLastStepComments": [] } @@ -1108,6 +1056,31 @@ jsonPWrapper ({ } } ], + "Background": { + "Name": "", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have initialized the Sum-variable to 0", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 1 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, "Result": { "WasExecuted": false, "WasSuccessful": false @@ -1429,109 +1402,14 @@ jsonPWrapper ({ "StepComments": [], "AfterLastStepComments": [] } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\04Background\\BackgroundFeature.feature", - "Feature": { - "Name": "Show the use of background", - "Description": "\tIn order to show how to use the Background keyword of Gherkin\r\n\tAs a SpecFlow evanglist\r\n\tI want to show that background steps are called before any scenario step", - "FeatureElements": [ - { - "Name": "Add 1 to the sum", - "Slug": "add-1-to-the-sum", - "Description": "", - "Steps": [ - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 1 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the total sum should be 2", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Add 2 to the sum", - "Slug": "add-2-to-the-sum", - "Description": "", - "Steps": [ - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 2 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the total sum should be 3", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Background": { - "Name": "", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have initialized the Sum-variable to 0", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 1 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false } - }, + ], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -1544,96 +1422,124 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\03ScenarioOutline\\ScenarioOutline.feature", + "RelativeFolder": "Features\\06CompareToAssist\\CompareTo.feature", "Feature": { - "Name": "Scenario outline", - "Description": "\tIn order to not have to type the same scenario over and over\r\n\tAs a SpecFlow evangelist\r\n\tI want to show how to use ScenarioOutline", + "Name": "Show the compare to feature", + "Description": "\tIn order to show the compare to features of SpecFlow Assist\r\n\tAs a SpecFlow evanglist\r\n\tI want to show how the different versions of compareTo works", "FeatureElements": [ { - "Examples": [ + "Name": "CompareToInstance", + "Slug": "comparetoinstance", + "Description": "", + "Steps": [ { - "Name": "less than 100", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have the following person", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Field", + "Value" ], "DataRows": [ [ - "10", - "20", - "30" + "Name", + "Marcus" ], [ - "20", - "20", - "40" + "Style", + "Butch" ], [ - "20", - "30", - "50" + "Birth date", + "1972-10-09" ] ] - } + }, + "StepComments": [], + "AfterLastStepComments": [] }, { - "Name": "more than 100", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "CompareToInstance should match this guy", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Field", + "Value" ], "DataRows": [ [ - "100", - "20", - "120" + "Name", + "Marcus" ], [ - "1000", - "20", - "1020" + "Style", + "Butch" + ], + [ + "BirthDate", + "10/9/1972 12:00:00 AM" ] ] - } - } - ], - "Name": "Add two positive numbers with many examples", - "Slug": "add-two-positive-numbers-with-many-examples", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I enter into the calculator", + }, "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I enter into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I perform add", + "Name": "CompareToInstance should match this guy", + "TableArgument": { + "HeaderRow": [ + "Field", + "Value" + ], + "DataRows": [ + [ + "Name", + "Marcus" + ], + [ + "BirthDate", + "10/9/1972 12:00:00 AM" + ] + ] + }, "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the result should be ", + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "CompareToInstance should not match this guy", + "TableArgument": { + "HeaderRow": [ + "Field", + "Value" + ], + "DataRows": [ + [ + "Name", + "Anders" + ], + [ + "Style", + "very cool" + ], + [ + "BirthDate", + "10/9/1974 12:00:00 AM" + ] + ] + }, "StepComments": [], "AfterLastStepComments": [ { - "Text": "# This is called Abstrakt Scenario in Swedish (!!!)" + "Text": "# CompareToSet will test only the properties that you define in the table." + }, + { + "Text": "# CompareToSet does not test the order of the objects, only that one was found that matches" } ] } @@ -1645,86 +1551,153 @@ jsonPWrapper ({ } }, { - "Examples": [ + "Name": "CompareToSet", + "Slug": "comparetoset", + "Description": "", + "Steps": [ { - "Name": "less than 100", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have the following persons using assist", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Name", + "Style", + "Birth date" ], "DataRows": [ [ - "10", - "20", - "30" + "Marcus", + "Cool", + "1972-10-09" ], [ - "20", - "20", - "40" + "Anders", + "Butch", + "1977-01-01" ], [ - "20", - "30", - "50" + "Jocke", + "Soft", + "1974-04-04" ] ] - } + }, + "StepComments": [], + "AfterLastStepComments": [] }, { - "Name": "more than 100", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "CompareToSet should match this", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Name", + "Style", + "BirthDate" ], "DataRows": [ [ - "100", - "20", - "120" + "Marcus", + "Cool", + "10/9/1972 12:00:00 AM" ], [ - "1000", - "20", - "1020" + "Anders", + "Butch", + "1/1/1977 12:00:00 AM" + ], + [ + "Jocke", + "Soft", + "4/4/1974 12:00:00 AM" ] ] - } + }, + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "CompareToSet should not match this", + "TableArgument": { + "HeaderRow": [ + "Name", + "Style", + "BirthDate" + ], + "DataRows": [ + [ + "Marcus", + "Cool", + "10/9/1972 12:00:00 AM" + ], + [ + "Anders", + "Butch", + "1/1/1977 12:00:00 AM" + ] + ] + }, + "StepComments": [], + "AfterLastStepComments": [] } ], - "Name": "Add two negative numbers with many examples", - "Slug": "add-two-negative-numbers-with-many-examples", + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\07Svenska\\Svenska.feature", + "Feature": { + "Name": "Summering", + "Description": "\tFör att slippa att göra dumma fel\r\n\tSom räknare\r\n\tVill jag kunna lägga summera", + "FeatureElements": [ + { + "Name": "Summera 5 och 7 ska vara 12", + "Slug": "summera-5-och-7-ska-vara-12", "Description": "", "Steps": [ { "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I enter into the calculator", + "NativeKeyword": "Givet ", + "Name": "att jag har knappat in 5", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I enter into the calculator", + "NativeKeyword": "Och ", + "Name": "att jag har knappat in 7", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I perform add", + "NativeKeyword": "När ", + "Name": "jag summerar", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the result should be ", + "NativeKeyword": "Så ", + "Name": "ska resultatet vara 12", "StepComments": [], "AfterLastStepComments": [] } @@ -1748,81 +1721,62 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\032FeatureContext\\FeatureContextFeatures.feature", + "RelativeFolder": "Features\\08AttributeOverloading\\AttributeOverloading.feature", "Feature": { - "Name": "FeatureContext features", - "Description": "\tIn order to show how to use FeatureContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in FeatureContext", + "Name": "Attribute overloading", + "Description": "\tIn order to show that steps can be used with multiple attributes\r\n\tAs a SpecFlow Evangelist\r\n\tI want to show that similar attributes can be applied to the same step definition", "FeatureElements": [ { - "Name": "Store and retrive Person Marcus from FeatureContext Current", - "Slug": "store-and-retrive-person-marcus-from-featurecontext-current", + "Name": "Checking number for evenness", + "Slug": "checking-number-for-evenness", "Description": "", "Steps": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I store a person called Marcus in the current FeatureContext", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have this simple step", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "a person called Marcus can easily be retrieved from the current FeatureContext", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "this simple step", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Showing information of the feature", - "Slug": "showing-information-of-the-feature", - "Description": "", - "Steps": [ + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "also this step", + "StepComments": [], + "AfterLastStepComments": [] + }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I execute any scenario in the feature", + "Name": "I do something", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the FeatureInfo contains the following information", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Tags", - "showUpInScenarioInfo, andThisToo" - ], - [ - "Title", - "FeatureContext features" - ], - [ - "TargetLanguage", - "CSharp" - ], - [ - "Language", - "en-US" - ], - [ - "Description", - "In order to" - ] - ] - }, + "Name": "I could validate that the number 2 is even", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "that the number 4 is even", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "the number 3 is odd", "StepComments": [], "AfterLastStepComments": [] } @@ -1838,10 +1792,7 @@ jsonPWrapper ({ "WasExecuted": false, "WasSuccessful": false }, - "Tags": [ - "@showUpInScenarioInfo", - "@andThisToo" - ] + "Tags": [] }, "Result": { "WasExecuted": false, @@ -1849,121 +1800,76 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\031ScenarioContext\\ScenarioContext.feature", + "RelativeFolder": "Features\\09CallingStepsFromSteps\\CallingStepsFromSteps.feature", "Feature": { - "Name": "Scenario Context features", - "Description": "\tIn order to show how to use ScenarioContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in ScenarioContext", + "Name": "Calling Steps from StepDefinitions", + "Description": "\tIn order to create steps of a higher abstraction\r\n\tAs a SpecFlow evangelist\r\n\tI want reuse other steps in my step definitions", "FeatureElements": [ { - "Name": "Store and retrive Person Marcus from ScenarioContext", - "Slug": "store-and-retrive-person-marcus-from-scenariocontext", + "Name": "Log in", + "Slug": "log-in", "Description": "", "Steps": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I store a person called Marcus in the Current ScenarioContext", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I am on the index page", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "a person called Marcus can easily be retrieved", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I enter my unsername nad password", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Showing information of the scenario", - "Slug": "showing-information-of-the-scenario", - "Description": "", - "Steps": [ + }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I execute any scenario", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I click the login button", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the ScenarioInfo contains the following information", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Tags", - "showUpInScenarioInfo, andThisToo" - ], - [ - "Title", - "Showing information of the scenario" - ] - ] - }, + "Name": "the welcome page should be displayed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@showUpInScenarioInfo", - "@andThisToo" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Show the type of step we're currently on", - "Slug": "show-the-type-of-step-were-currently-on", + "Name": "Do something meaningful", + "Slug": "do-something-meaningful", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have a Given step", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have another Given step", + "Name": "I am logged in", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I have a When step", + "Name": "I dosomething meaningful", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "I have a Then step", + "Name": "I should get rewarded", "StepComments": [], - "AfterLastStepComments": [ - { - "Text": "#This is not so easy to write a scenario for but I've created an AfterScenario-hook" - }, - { - "Text": "#To see this in action remove the @ignore tag below" - } - ] + "AfterLastStepComments": [] } ], "Tags": [], @@ -1971,45 +1877,48 @@ jsonPWrapper ({ "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\10StepTransformation\\StepTransformation.feature", + "Feature": { + "Name": "Step Argument Transformations", + "Description": "\tIn order to reduce the amount of code and repetitive tasks in my steps\r\n\tAs a SpecFlow evanglist\r\n\tI want to define reusable transformations for my step arguments", + "FeatureElements": [ { - "Name": "Display error information in AfterScenario", - "Slug": "display-error-information-in-afterscenario", + "Name": "Steps with non-string arguments", + "Slug": "steps-with-non-string-arguments", "Description": "", "Steps": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "an error occurs in a step", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "Dan has been registered at date 2003/03/13", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [ - "@ignore", - "@showingErrorHandling" - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Pending step", - "Slug": "pending-step", - "Description": "", - "Steps": [ + }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I set the ScenarioContext.Current to pending", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "Aslak has been registered at terminal 2", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "this step will not even be executed", + "Name": "I should be able to see Aslak at terminal 2", "StepComments": [], "AfterLastStepComments": [] } @@ -2033,76 +1942,53 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\02TagsAndHooks\\TagDemo.feature", + "RelativeFolder": "Features\\11ContextInjection\\ContextInjection.feature", "Feature": { - "Name": "Tag demonstrator", - "Description": "\tIn order to show the capabilities of tags in SpecFlow\r\n\tAs a SpecFlow evanglist\r\n\tI want to write scenarios that has tags and show their usage in code", + "Name": "Injecting context into step specifications", + "Description": "\tIn order to don't have to rely on the global shared state\r\n\t\tand to be able to define the contexts required for each scenario.\r\n\tAs a SpecFlow Evanglist\r\n\tI would like to have the system automatically inject an instance of any class as \r\n\t\tdefined in the constructor of a step file", "FeatureElements": [ { - "Name": "Ignored scenario", - "Slug": "ignored-scenario", + "Name": "Feature with no context", + "Slug": "feature-with-no-context", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has the @ignore tag", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Name": "a feature which requires no context", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the scenario is ignored", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "the missing step definitions are not reported", + "Name": "everything is dandy", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@ignore" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "A scenario without tags", - "Slug": "a-scenario-without-tags", + "Name": "Feature with a single context", + "Slug": "feature-with-a-single-context", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 0 tags", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Name": "a feature which requires a single context", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "before scenario hook with '' is run", + "Name": "the context is set", "StepComments": [], "AfterLastStepComments": [] } @@ -2114,108 +2000,92 @@ jsonPWrapper ({ } }, { - "Name": "A scenario with 1 tag", - "Slug": "a-scenario-with-1-tag", + "Name": "Feature with multiple contexts", + "Slug": "feature-with-multiple-contexts", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 1 tags", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Name": "a feature which requires multiple contexts", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "before scenario hook with 'testTag1' is run", + "Name": "the contexts are set", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@testTag1" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "A scenario with 3 tags", - "Slug": "a-scenario-with-3-tags", + "Name": "Feature with recursive contexts", + "Slug": "feature-with-recursive-contexts", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 3 tags", + "Name": "a feature which requires a recursive context", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the context is set", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "before scenario hook with 'testTag1, testTag2, testTag3' is run", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "its sub-context is set", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@testTag1", - "@testTag2", - "@testTag3" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "A scenario with 2 tags", - "Slug": "a-scenario-with-2-tags", + "Name": "Feature with a dependent context", + "Slug": "feature-with-a-dependent-context", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 2 tags", + "Name": "a feature which requires a single context", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the context is set", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "before scenario hook with 'testTag1, testTag3' is run", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "the context was created by the feature with a single context scenario", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@testTag1", - "@testTag3" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -2226,10 +2096,7 @@ jsonPWrapper ({ "WasExecuted": false, "WasSuccessful": false }, - "Tags": [ - "@allAboutTags", - "@important" - ] + "Tags": [] }, "Result": { "WasExecuted": false, @@ -2237,105 +2104,141 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\02TagsAndHooks\\Hooks.feature", + "RelativeFolder": "Features\\12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", "Feature": { - "Name": "Addition", - "Description": "\tIn order to explain the order in which hooks are run\r\n\tAs a SpecFlow evanglist\r\n\tI wan to be able to hook into pre and post conditions in SpecFlow", + "Name": "Nested Folder Example", + "Description": "\tIn order to test nested folder output\r\n\tAs a silly contributer\r\n\tI want to create an example of something several folders deep", "FeatureElements": [ { - "Name": "Hooking into pre conditions for Test Runs in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-test-runs-in-specflow", + "Name": "Nested - Add two numbers", + "Slug": "nested---add-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "I have entered 50 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the BeforeTestRun hook should have been executed", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Hooking into pre conditions for Features in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-features-in-specflow", - "Description": "", - "Steps": [ + }, { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I press add", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeFeature hook should have been executed", + "Name": "the result should be 120 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@nestedFolders" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\13MultilineText\\MultilineFeatureExample.feature", + "Feature": { + "Name": "Multiline Feature Example", + "Description": "\tIn order capture this particular Gherkin feature\r\n\tAs a Pickles contributer\r\n\tI want to demonstrate an example of using multiline text in a Scenario", + "FeatureElements": [ { - "Name": "Hooking into pre conditions for Scenarios in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-scenarios-in-specflow", + "Name": "Mutliline Output", + "Slug": "mutliline-output", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "I have read in some text from the user", + "DocStringArgument": "This is line 1.\r\nThis is line 2!\r\nThis is line 3!!", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I process this input", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeScenario hook should have been executed", + "Name": "the result will be saved to the multiline text data store", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@mytag" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\14MarkdownExample\\MarkdownExamples.feature", + "Feature": { + "Name": "Sample Markdown Feature", + "Description": "Header 1\r\n========\r\n\r\nHeader 2\r\n--------\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", + "FeatureElements": [ { - "Name": "Hooking into pre conditions for ScenarioBlocks in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-scenarioblocks-in-specflow", - "Description": "", + "Name": "Sample Markdown Scenario Example", + "Slug": "sample-markdown-scenario-example", + "Description": "This is **important** text\r\n\r\nCode Block:\r\n\r\n```\r\nvar x = 2;\r\n```\r\n\r\nApple\r\n: Pomaceous fruit of plants of the genus Malus in\r\n the family Rosaceae.\r\n: An American computer company.\r\n\r\nOrange\r\n: The fruit of an evergreen tree of the genus Citrus.", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "this", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeScenarioBlock hook should have been executed", + "Name": "that", "StepComments": [], "AfterLastStepComments": [] } @@ -2347,32 +2250,77 @@ jsonPWrapper ({ } }, { - "Name": "Hooking into pre conditions for Steps in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-steps-in-specflow", - "Description": "", + "Examples": [ + { + "Name": "", + "Description": "This __message__ is important too and is for an *Example* table.", + "TableArgument": { + "HeaderRow": [ + "test", + "test2" + ], + "DataRows": [ + [ + "value", + "value2" + ] + ] + } + } + ], + "Name": "Sample Markdown Scenario Outline Example", + "Slug": "sample-markdown-scenario-outline-example", + "Description": "This is [an example link to pickles](https://github.com/picklesdoc/pickles/wiki \"Pickles\") inline link.\r\n\r\n[This link to pickles](https://github.com/picklesdoc/pickles/wiki) has no title attribute.", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "this: ", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeStep hook should have been executed", + "Name": "that: ", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@AddingATag" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } } ], + "Background": { + "Name": "", + "Description": "This is the *coolest* background", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have initialized the Sum-variable to 0", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 1 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, "Result": { "WasExecuted": false, "WasSuccessful": false @@ -2385,34 +2333,130 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\01TestRunner\\TestRunnerIsNotImportant.feature", + "RelativeFolder": "Features\\15Pickles\\InteractiveDHTMLView.feature", "Feature": { - "Name": "The test runner is not (very) important", - "Description": "\tIn order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\n\tAs a SpecFlow evanglist \r\n\tI want to be able to call my steps in the same manner inspite of the testrunner configured ", + "Name": "Interactive DHTML View", + "Description": "\tIn order to increase stakeholder engagement with pickled specs\r\n\tAs a SpecFlow evangelist \r\n\tI want to adjust the level of detail in the DHTML view to suit my audience\r\n\tSo that I do not overwhelm them.", "FeatureElements": [ { - "Name": "A couple of simple steps", - "Slug": "a-couple-of-simple-steps", + "Name": "Scenario with large data table", + "Slug": "scenario-with-large-data-table", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have step defintions in place", + "Name": "a feature with a large table of data:", + "TableArgument": { + "HeaderRow": [ + "heading", + "page #" + ], + "DataRows": [ + [ + "Chapter 1", + "1" + ], + [ + "Chapter 2", + "5" + ], + [ + "Chapter 3", + "10" + ], + [ + "Chapter 4", + "15" + ], + [ + "Chapter 5", + "20" + ], + [ + "Chapter 6", + "25" + ], + [ + "Chapter 7", + "30" + ], + [ + "Chapter 8", + "35" + ], + [ + "Chapter 9", + "40" + ], + [ + "Chapter 10", + "45" + ], + [ + "Chapter 11", + "50" + ], + [ + "Chapter 12", + "55" + ], + [ + "Chapter 13", + "60" + ], + [ + "Chapter 14", + "65" + ], + [ + "Chapter 15", + "70" + ], + [ + "Chapter 16", + "75" + ], + [ + "Chapter 17", + "80" + ], + [ + "Chapter 18", + "85" + ], + [ + "Chapter 19", + "90" + ], + [ + "Chapter 20", + "95" + ], + [ + "Chapter 21", + "100" + ], + [ + "Chapter 22", + "105" + ] + ] + }, "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I call a step", + "Name": "I click on the table heading", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the step should have been called", + "Name": "the table body should collapse", "StepComments": [], "AfterLastStepComments": [] } @@ -2436,145 +2480,94 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\00BasicGherkin\\BasicGherkin.feature", + "RelativeFolder": "Features\\Arithmetic.feature", "Feature": { - "Name": "Showing basic gherkin syntax", - "Description": "In order to see that gherkin is a very simple language\r\nAs a SpecFlow evangelist\r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", + "Name": "Arithmetic", + "Description": "In order to avoid silly mistakes\r\nAs a math idiot\r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", "FeatureElements": [ { - "Name": "Simple GWT", - "Slug": "simple-gwt", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "the initial state of the application is Running", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I ask what the application state is", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should see Running as the answer", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Using And and But", - "Slug": "using-and-and-but", - "Description": "", + "Name": "Add two numbers", + "Slug": "add-two-numbers", + "Description": "$50 + 70 = 120$", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the initial state of the application is Running", - "StepComments": [], + "Name": "I have entered 50 into the calculator", + "StepComments": [ + { + "Text": "# In the DHTML version, the description will be rendered with mathematical formulas if the experimental features are enabled." + } + ], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I have authorization to ask application state", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I ask what the application state is", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should see Running as the answer", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I should see the time of the application", + "Name": "I press add", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "the state of the application should not be Stopped", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\Trigonometry.feature", - "Feature": { - "Name": "Trigonometry", - "Description": "\tIn order to avoid perform more advanced calculations\r\n\tAs a math idiot\r\n\tI want to be able to use trigonometric functions", - "FeatureElements": [ + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the result should be 120 on the screen", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [ + "@arithmetic", + "@fast" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, { - "Name": "Sine", - "Slug": "sine", + "Name": "Subtract two numbers", + "Slug": "subtract-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 90 into the calculator", + "Name": "I have entered 50 into the calculator", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press sin", + "Name": "I press subtract", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 1 on the screen", + "Name": "the result should be -20 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@trigonometric", + "@arithmetic", "@fast" ], "Result": { @@ -2583,34 +2576,41 @@ jsonPWrapper ({ } }, { - "Name": "Cosine", - "Slug": "cosine", + "Name": "Multiply two numbers", + "Slug": "multiply-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 0 into the calculator", + "Name": "I have entered 50 into the calculator", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press cos", + "Name": "I press multiply", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 1 on the screen", + "Name": "the result should be 3500 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@trigonometric", + "@arithmetic", "@fast" ], "Result": { @@ -2619,34 +2619,41 @@ jsonPWrapper ({ } }, { - "Name": "Tangent", - "Slug": "tangent", + "Name": "Divide two numbers", + "Slug": "divide-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 45 into the calculator", + "Name": "I have entered 50 into the calculator", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 2 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press tan", + "Name": "I press divide", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 1 on the screen", + "Name": "the result should be 25 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@trigonometric", + "@arithmetic", "@fast" ], "Result": { @@ -2667,51 +2674,40 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\Arithmetic.feature", + "RelativeFolder": "Features\\Trigonometry.feature", "Feature": { - "Name": "Arithmetic", - "Description": "In order to avoid silly mistakes\r\nAs a math idiot\r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", + "Name": "Trigonometry", + "Description": "\tIn order to avoid perform more advanced calculations\r\n\tAs a math idiot\r\n\tI want to be able to use trigonometric functions", "FeatureElements": [ { - "Name": "Add two numbers", - "Slug": "add-two-numbers", - "Description": "$50 + 70 = 120$", + "Name": "Sine", + "Slug": "sine", + "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [ - { - "Text": "# In the DHTML version, the description will be rendered with mathematical formulas if the experimental features are enabled." - } - ], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have entered 90 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press add", + "Name": "I press sin", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 120 on the screen", + "Name": "the result should be 1 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", + "@trigonometric", "@fast" ], "Result": { @@ -2720,41 +2716,34 @@ jsonPWrapper ({ } }, { - "Name": "Subtract two numbers", - "Slug": "subtract-two-numbers", + "Name": "Cosine", + "Slug": "cosine", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have entered 0 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press subtract", + "Name": "I press cos", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be -20 on the screen", + "Name": "the result should be 1 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", + "@trigonometric", "@fast" ], "Result": { @@ -2763,51 +2752,62 @@ jsonPWrapper ({ } }, { - "Name": "Multiply two numbers", - "Slug": "multiply-two-numbers", + "Name": "Tangent", + "Slug": "tangent", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have entered 45 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press multiply", + "Name": "I press tan", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 3500 on the screen", + "Name": "the result should be 1 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", + "@trigonometric", "@fast" ], "Result": { "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\Workflow\\ClearingScreen.feature", + "Feature": { + "Name": "Clearing Screen", + "Description": "\tIn order to restart a new set of calculations\r\n\tAs a math idiot\r\n\tI want to be able to clear the screen", + "FeatureElements": [ { - "Name": "Divide two numbers", - "Slug": "divide-two-numbers", + "Name": "Clear the screen", + "Slug": "clear-the-screen", "Description": "", "Steps": [ { @@ -2820,28 +2820,28 @@ jsonPWrapper ({ { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I have entered 2 into the calculator", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press divide", + "Name": "I press C", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 25 on the screen", + "Name": "the screen should be empty", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", - "@fast" + "@workflow", + "@slow" ], "Result": { "WasExecuted": false, @@ -2863,6 +2863,20 @@ jsonPWrapper ({ ], "Summary": { "Tags": [ + { + "Tag": "@allAboutTags", + "Total": 5, + "Passing": 0, + "Failing": 0, + "Inconclusive": 5 + }, + { + "Tag": "@important", + "Total": 5, + "Passing": 0, + "Failing": 0, + "Inconclusive": 5 + }, { "Tag": "@showUpInScenarioInfo", "Total": 3, @@ -2878,88 +2892,74 @@ jsonPWrapper ({ "Inconclusive": 3 }, { - "Tag": "@allAboutTags", - "Total": 5, + "Tag": "@ignore", + "Total": 2, "Passing": 0, "Failing": 0, - "Inconclusive": 5 + "Inconclusive": 2 }, { - "Tag": "@important", - "Total": 5, + "Tag": "@testTag1", + "Total": 3, "Passing": 0, "Failing": 0, - "Inconclusive": 5 + "Inconclusive": 3 }, { - "Tag": "@workflow", + "Tag": "@testTag2", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@slow", - "Total": 1, + "Tag": "@testTag3", + "Total": 2, "Passing": 0, "Failing": 0, - "Inconclusive": 1 + "Inconclusive": 2 }, { - "Tag": "@AddingATag", + "Tag": "@showingErrorHandling", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@mytag", + "Tag": "@nestedFolders", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@nestedFolders", + "Tag": "@mytag", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@ignore", - "Total": 2, - "Passing": 0, - "Failing": 0, - "Inconclusive": 2 - }, - { - "Tag": "@showingErrorHandling", + "Tag": "@AddingATag", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@testTag1", - "Total": 3, - "Passing": 0, - "Failing": 0, - "Inconclusive": 3 - }, - { - "Tag": "@testTag2", - "Total": 1, + "Tag": "@arithmetic", + "Total": 4, "Passing": 0, "Failing": 0, - "Inconclusive": 1 + "Inconclusive": 4 }, { - "Tag": "@testTag3", - "Total": 2, + "Tag": "@fast", + "Total": 7, "Passing": 0, "Failing": 0, - "Inconclusive": 2 + "Inconclusive": 7 }, { "Tag": "@trigonometric", @@ -2969,18 +2969,18 @@ jsonPWrapper ({ "Inconclusive": 3 }, { - "Tag": "@fast", - "Total": 7, + "Tag": "@workflow", + "Total": 1, "Passing": 0, "Failing": 0, - "Inconclusive": 7 + "Inconclusive": 1 }, { - "Tag": "@arithmetic", - "Total": 4, + "Tag": "@slow", + "Total": 1, "Passing": 0, "Failing": 0, - "Inconclusive": 4 + "Inconclusive": 1 } ], "Folders": [ @@ -3016,7 +3016,7 @@ jsonPWrapper ({ }, "Configuration": { "SutName": "Pickles", - "SutVersion": "2.8.2", - "GeneratedOn": "18 August 2016 17:56:48" + "SutVersion": "2.8.3", + "GeneratedOn": "28 September 2016 10:45:41" } }); \ No newline at end of file diff --git a/docs/Output/Excel/features.xlsx b/docs/Output/Excel/features.xlsx index 9fcf84e14ffb433c2c371976e5a69569df234070..73fe93281feff79c52ec34d2d187b0c709fffb93 100644 GIT binary patch delta 27325 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 delta 27430 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 H{PX_+ys?_d diff --git a/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html b/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html index 2c2379ba8..b59324823 100644 --- a/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html +++ b/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html @@ -304,9 +304,9 @@

Using And and But

diff --git a/docs/Output/Html/Features/00BasicGherkin/index.html b/docs/Output/Html/Features/00BasicGherkin/index.html index 4c0640749..97f8191fa 100644 --- a/docs/Output/Html/Features/00BasicGherkin/index.html +++ b/docs/Output/Html/Features/00BasicGherkin/index.html @@ -265,9 +265,9 @@

00 Basic Gherkin

diff --git a/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html b/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html index 80cc0da58..1db70109c 100644 --- a/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html +++ b/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html @@ -280,9 +280,9 @@

A couple of simple steps

diff --git a/docs/Output/Html/Features/01TestRunner/index.html b/docs/Output/Html/Features/01TestRunner/index.html index 3d80c8954..d22340a87 100644 --- a/docs/Output/Html/Features/01TestRunner/index.html +++ b/docs/Output/Html/Features/01TestRunner/index.html @@ -263,9 +263,9 @@

01 Test Runner

diff --git a/docs/Output/Html/Features/02TagsAndHooks/Hooks.html b/docs/Output/Html/Features/02TagsAndHooks/Hooks.html index eff2dbd03..ce739d4dc 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/Hooks.html +++ b/docs/Output/Html/Features/02TagsAndHooks/Hooks.html @@ -342,9 +342,9 @@

Hooking into pre conditions for Steps in SpecFlow

diff --git a/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html b/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html index db19fac8f..526ebb4c2 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html +++ b/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html @@ -360,9 +360,9 @@

A scenario with 2 tags

diff --git a/docs/Output/Html/Features/02TagsAndHooks/index.html b/docs/Output/Html/Features/02TagsAndHooks/index.html index 4bdefec77..dd3b76202 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/index.html +++ b/docs/Output/Html/Features/02TagsAndHooks/index.html @@ -272,9 +272,9 @@

02 Tags And Hooks

diff --git a/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html b/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html index 467302f05..144038e65 100644 --- a/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html +++ b/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html @@ -346,9 +346,9 @@

Pending step

diff --git a/docs/Output/Html/Features/031ScenarioContext/index.html b/docs/Output/Html/Features/031ScenarioContext/index.html index 9950e1a04..23b30fd79 100644 --- a/docs/Output/Html/Features/031ScenarioContext/index.html +++ b/docs/Output/Html/Features/031ScenarioContext/index.html @@ -263,9 +263,9 @@

031 Scenario Context

diff --git a/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html b/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html index f86720629..a74ac09f4 100644 --- a/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html +++ b/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html @@ -297,9 +297,9 @@

Showing information of the feature

diff --git a/docs/Output/Html/Features/032FeatureContext/index.html b/docs/Output/Html/Features/032FeatureContext/index.html index aee9eaff3..cf526fbfb 100644 --- a/docs/Output/Html/Features/032FeatureContext/index.html +++ b/docs/Output/Html/Features/032FeatureContext/index.html @@ -263,9 +263,9 @@

032 Feature Context

diff --git a/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html b/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html index 0493246da..47037499e 100644 --- a/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html +++ b/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html @@ -434,9 +434,9 @@

Examples: more than 100

diff --git a/docs/Output/Html/Features/03ScenarioOutline/index.html b/docs/Output/Html/Features/03ScenarioOutline/index.html index b5803c916..f5688ce6a 100644 --- a/docs/Output/Html/Features/03ScenarioOutline/index.html +++ b/docs/Output/Html/Features/03ScenarioOutline/index.html @@ -263,9 +263,9 @@

03 Scenario Outline

diff --git a/docs/Output/Html/Features/04Background/BackgroundFeature.html b/docs/Output/Html/Features/04Background/BackgroundFeature.html index aa20533c5..316e88148 100644 --- a/docs/Output/Html/Features/04Background/BackgroundFeature.html +++ b/docs/Output/Html/Features/04Background/BackgroundFeature.html @@ -307,9 +307,9 @@

Add 2 to the sum

diff --git a/docs/Output/Html/Features/04Background/index.html b/docs/Output/Html/Features/04Background/index.html index 4a1ba06fe..00cac4fa7 100644 --- a/docs/Output/Html/Features/04Background/index.html +++ b/docs/Output/Html/Features/04Background/index.html @@ -263,9 +263,9 @@

04 Background

diff --git a/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html b/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html index b904754af..207caedc7 100644 --- a/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html +++ b/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html @@ -328,9 +328,9 @@

Example of a wide table

diff --git a/docs/Output/Html/Features/05TablesAndAssist/index.html b/docs/Output/Html/Features/05TablesAndAssist/index.html index 208628e61..269df0fa6 100644 --- a/docs/Output/Html/Features/05TablesAndAssist/index.html +++ b/docs/Output/Html/Features/05TablesAndAssist/index.html @@ -263,9 +263,9 @@

05 Tables And Assist

diff --git a/docs/Output/Html/Features/06CompareToAssist/CompareTo.html b/docs/Output/Html/Features/06CompareToAssist/CompareTo.html index 418064f2c..9725c90a8 100644 --- a/docs/Output/Html/Features/06CompareToAssist/CompareTo.html +++ b/docs/Output/Html/Features/06CompareToAssist/CompareTo.html @@ -300,9 +300,9 @@

CompareToSet

diff --git a/docs/Output/Html/Features/06CompareToAssist/index.html b/docs/Output/Html/Features/06CompareToAssist/index.html index 6f1ff2033..fbfe485e4 100644 --- a/docs/Output/Html/Features/06CompareToAssist/index.html +++ b/docs/Output/Html/Features/06CompareToAssist/index.html @@ -263,9 +263,9 @@

06 Compare To Assist

diff --git a/docs/Output/Html/Features/07Svenska/Svenska.html b/docs/Output/Html/Features/07Svenska/Svenska.html index 1ea3924ef..48709ba7e 100644 --- a/docs/Output/Html/Features/07Svenska/Svenska.html +++ b/docs/Output/Html/Features/07Svenska/Svenska.html @@ -282,9 +282,9 @@

Summera 5 och 7 ska vara 12

diff --git a/docs/Output/Html/Features/07Svenska/index.html b/docs/Output/Html/Features/07Svenska/index.html index e2e4df9a3..f6472aaa6 100644 --- a/docs/Output/Html/Features/07Svenska/index.html +++ b/docs/Output/Html/Features/07Svenska/index.html @@ -263,9 +263,9 @@

07 Svenska

diff --git a/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html b/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html index 3ee356443..8c4e381b2 100644 --- a/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html +++ b/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html @@ -288,9 +288,9 @@

Checking number for evenness

diff --git a/docs/Output/Html/Features/08AttributeOverloading/index.html b/docs/Output/Html/Features/08AttributeOverloading/index.html index b67296704..4838b3145 100644 --- a/docs/Output/Html/Features/08AttributeOverloading/index.html +++ b/docs/Output/Html/Features/08AttributeOverloading/index.html @@ -263,9 +263,9 @@

08 Attribute Overloading

diff --git a/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html b/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html index 1e7c5479f..064287ce6 100644 --- a/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html +++ b/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html @@ -300,9 +300,9 @@

Do something meaningful

diff --git a/docs/Output/Html/Features/09CallingStepsFromSteps/index.html b/docs/Output/Html/Features/09CallingStepsFromSteps/index.html index 54729bb46..eabcc611a 100644 --- a/docs/Output/Html/Features/09CallingStepsFromSteps/index.html +++ b/docs/Output/Html/Features/09CallingStepsFromSteps/index.html @@ -263,9 +263,9 @@

09 Calling Steps From Steps

diff --git a/docs/Output/Html/Features/10StepTransformation/StepTransformation.html b/docs/Output/Html/Features/10StepTransformation/StepTransformation.html index 36b940650..2d92e788b 100644 --- a/docs/Output/Html/Features/10StepTransformation/StepTransformation.html +++ b/docs/Output/Html/Features/10StepTransformation/StepTransformation.html @@ -280,9 +280,9 @@

Steps with non-string arguments

diff --git a/docs/Output/Html/Features/10StepTransformation/index.html b/docs/Output/Html/Features/10StepTransformation/index.html index 2f4bad41a..9e6b21d4a 100644 --- a/docs/Output/Html/Features/10StepTransformation/index.html +++ b/docs/Output/Html/Features/10StepTransformation/index.html @@ -263,9 +263,9 @@

10 Step Transformation

diff --git a/docs/Output/Html/Features/11ContextInjection/ContextInjection.html b/docs/Output/Html/Features/11ContextInjection/ContextInjection.html index 068f6329b..36ab26cc8 100644 --- a/docs/Output/Html/Features/11ContextInjection/ContextInjection.html +++ b/docs/Output/Html/Features/11ContextInjection/ContextInjection.html @@ -348,9 +348,9 @@

Feature with a dependent context

diff --git a/docs/Output/Html/Features/11ContextInjection/index.html b/docs/Output/Html/Features/11ContextInjection/index.html index 46760012d..38e48bffb 100644 --- a/docs/Output/Html/Features/11ContextInjection/index.html +++ b/docs/Output/Html/Features/11ContextInjection/index.html @@ -265,9 +265,9 @@

11 Context Injection

diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html index 791d2698d..6b7eb399b 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html @@ -283,9 +283,9 @@

Nested - Add two numbers

diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html index 33d0f2d7a..65fb79414 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html @@ -263,9 +263,9 @@

Child Child Folder

diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html index d42fdfc24..03b8160c7 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html @@ -253,9 +253,9 @@

Child Folder

    diff --git a/docs/Output/Html/Features/12NestedFolders/index.html b/docs/Output/Html/Features/12NestedFolders/index.html index c11ff02b6..6cacfadd4 100644 --- a/docs/Output/Html/Features/12NestedFolders/index.html +++ b/docs/Output/Html/Features/12NestedFolders/index.html @@ -253,9 +253,9 @@

    12 Nested Folders

      diff --git a/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html b/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html index bca2a0783..39e76d8cb 100644 --- a/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html +++ b/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html @@ -283,9 +283,9 @@

      Mutliline Output

    diff --git a/docs/Output/Html/Features/13MultilineText/index.html b/docs/Output/Html/Features/13MultilineText/index.html index 8e81a417e..5b55301d7 100644 --- a/docs/Output/Html/Features/13MultilineText/index.html +++ b/docs/Output/Html/Features/13MultilineText/index.html @@ -263,9 +263,9 @@

    13 Multiline Text

diff --git a/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html b/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html index dbe14533a..8389cd5d4 100644 --- a/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html +++ b/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html @@ -386,9 +386,9 @@

Examples:

diff --git a/docs/Output/Html/Features/14MarkdownExample/index.html b/docs/Output/Html/Features/14MarkdownExample/index.html index dd5c377df..5566289ea 100644 --- a/docs/Output/Html/Features/14MarkdownExample/index.html +++ b/docs/Output/Html/Features/14MarkdownExample/index.html @@ -289,9 +289,9 @@

14 Markdown Example

diff --git a/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html b/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html index eac7b7f72..ba95d02cb 100644 --- a/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html +++ b/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html @@ -281,9 +281,9 @@

Scenario with large data table

diff --git a/docs/Output/Html/Features/15Pickles/index.html b/docs/Output/Html/Features/15Pickles/index.html index 6ae8ea36b..d398482cf 100644 --- a/docs/Output/Html/Features/15Pickles/index.html +++ b/docs/Output/Html/Features/15Pickles/index.html @@ -264,9 +264,9 @@

15 Pickles

diff --git a/docs/Output/Html/Features/Arithmetic.html b/docs/Output/Html/Features/Arithmetic.html index fcf639ecc..79fe9aa31 100644 --- a/docs/Output/Html/Features/Arithmetic.html +++ b/docs/Output/Html/Features/Arithmetic.html @@ -349,9 +349,9 @@

Divide two numbers

diff --git a/docs/Output/Html/Features/Trigonometry.html b/docs/Output/Html/Features/Trigonometry.html index 718fd648d..c8f19310d 100644 --- a/docs/Output/Html/Features/Trigonometry.html +++ b/docs/Output/Html/Features/Trigonometry.html @@ -319,9 +319,9 @@

Tangent

diff --git a/docs/Output/Html/Features/Workflow/ClearingScreen.html b/docs/Output/Html/Features/Workflow/ClearingScreen.html index 5f2b6b43b..e56c3072b 100644 --- a/docs/Output/Html/Features/Workflow/ClearingScreen.html +++ b/docs/Output/Html/Features/Workflow/ClearingScreen.html @@ -283,9 +283,9 @@

Clear the screen

diff --git a/docs/Output/Html/Features/Workflow/index.html b/docs/Output/Html/Features/Workflow/index.html index 061a4998f..fed3f10e1 100644 --- a/docs/Output/Html/Features/Workflow/index.html +++ b/docs/Output/Html/Features/Workflow/index.html @@ -263,9 +263,9 @@

Workflow

diff --git a/docs/Output/Html/Features/index.html b/docs/Output/Html/Features/index.html index 010cb2036..f6543eeb6 100644 --- a/docs/Output/Html/Features/index.html +++ b/docs/Output/Html/Features/index.html @@ -275,9 +275,9 @@

Features

diff --git a/docs/Output/Html/index.html b/docs/Output/Html/index.html index f2a085b88..97f44d53b 100644 --- a/docs/Output/Html/index.html +++ b/docs/Output/Html/index.html @@ -253,9 +253,9 @@

Examples

    diff --git a/docs/Output/Html/readme.html b/docs/Output/Html/readme.html index 3c4b55388..8935fbd6c 100644 --- a/docs/Output/Html/readme.html +++ b/docs/Output/Html/readme.html @@ -252,9 +252,9 @@

    In the Features-folders you'll find quite a large population of .feature files that you can use to test out pickles on.

    diff --git a/docs/Output/JSON/pickledFeatures.json b/docs/Output/JSON/pickledFeatures.json index e00855e99..21f283e2a 100644 --- a/docs/Output/JSON/pickledFeatures.json +++ b/docs/Output/JSON/pickledFeatures.json @@ -1,49 +1,93 @@ { "Features": [ { - "RelativeFolder": "Features\\Workflow\\ClearingScreen.feature", + "RelativeFolder": "Features\\00BasicGherkin\\BasicGherkin.feature", "Feature": { - "Name": "Clearing Screen", - "Description": "\tIn order to restart a new set of calculations\r\n\tAs a math idiot\r\n\tI want to be able to clear the screen", + "Name": "Showing basic gherkin syntax", + "Description": "In order to see that gherkin is a very simple language\r\nAs a SpecFlow evangelist\r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", "FeatureElements": [ { - "Name": "Clear the screen", - "Slug": "clear-the-screen", + "Name": "Simple GWT", + "Slug": "simple-gwt", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", + "Name": "the initial state of the application is Running", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I ask what the application state is", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "I should see Running as the answer", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Using And and But", + "Slug": "using-and-and-but", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "the initial state of the application is Running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have authorization to ask application state", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press C", + "Name": "I ask what the application state is", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the screen should be empty", + "Name": "I should see Running as the answer", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I should see the time of the application", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "the state of the application should not be Stopped", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@workflow", - "@slow" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -62,130 +106,34 @@ } }, { - "RelativeFolder": "Features\\15Pickles\\InteractiveDHTMLView.feature", + "RelativeFolder": "Features\\01TestRunner\\TestRunnerIsNotImportant.feature", "Feature": { - "Name": "Interactive DHTML View", - "Description": "\tIn order to increase stakeholder engagement with pickled specs\r\n\tAs a SpecFlow evangelist \r\n\tI want to adjust the level of detail in the DHTML view to suit my audience\r\n\tSo that I do not overwhelm them.", + "Name": "The test runner is not (very) important", + "Description": "\tIn order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\n\tAs a SpecFlow evanglist \r\n\tI want to be able to call my steps in the same manner inspite of the testrunner configured ", "FeatureElements": [ { - "Name": "Scenario with large data table", - "Slug": "scenario-with-large-data-table", + "Name": "A couple of simple steps", + "Slug": "a-couple-of-simple-steps", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature with a large table of data:", - "TableArgument": { - "HeaderRow": [ - "heading", - "page #" - ], - "DataRows": [ - [ - "Chapter 1", - "1" - ], - [ - "Chapter 2", - "5" - ], - [ - "Chapter 3", - "10" - ], - [ - "Chapter 4", - "15" - ], - [ - "Chapter 5", - "20" - ], - [ - "Chapter 6", - "25" - ], - [ - "Chapter 7", - "30" - ], - [ - "Chapter 8", - "35" - ], - [ - "Chapter 9", - "40" - ], - [ - "Chapter 10", - "45" - ], - [ - "Chapter 11", - "50" - ], - [ - "Chapter 12", - "55" - ], - [ - "Chapter 13", - "60" - ], - [ - "Chapter 14", - "65" - ], - [ - "Chapter 15", - "70" - ], - [ - "Chapter 16", - "75" - ], - [ - "Chapter 17", - "80" - ], - [ - "Chapter 18", - "85" - ], - [ - "Chapter 19", - "90" - ], - [ - "Chapter 20", - "95" - ], - [ - "Chapter 21", - "100" - ], - [ - "Chapter 22", - "105" - ] - ] - }, + "Name": "I have step defintions in place", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I click on the table heading", + "Name": "I call a step", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the table body should collapse", + "Name": "the step should have been called", "StepComments": [], "AfterLastStepComments": [] } @@ -209,27 +157,27 @@ } }, { - "RelativeFolder": "Features\\14MarkdownExample\\MarkdownExamples.feature", + "RelativeFolder": "Features\\02TagsAndHooks\\Hooks.feature", "Feature": { - "Name": "Sample Markdown Feature", - "Description": "Header 1\r\n========\r\n\r\nHeader 2\r\n--------\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", + "Name": "Addition", + "Description": "\tIn order to explain the order in which hooks are run\r\n\tAs a SpecFlow evanglist\r\n\tI wan to be able to hook into pre and post conditions in SpecFlow", "FeatureElements": [ { - "Name": "Sample Markdown Scenario Example", - "Slug": "sample-markdown-scenario-example", - "Description": "This is **important** text\r\n\r\nCode Block:\r\n\r\n```\r\nvar x = 2;\r\n```\r\n\r\nApple\r\n: Pomaceous fruit of plants of the genus Malus in\r\n the family Rosaceae.\r\n: An American computer company.\r\n\r\nOrange\r\n: The fruit of an evergreen tree of the genus Citrus.", + "Name": "Hooking into pre conditions for Test Runs in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-test-runs-in-specflow", + "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "this", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "that", + "Name": "the BeforeTestRun hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } @@ -241,185 +189,104 @@ } }, { - "Examples": [ + "Name": "Hooking into pre conditions for Features in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-features-in-specflow", + "Description": "", + "Steps": [ { - "Name": "", - "Description": "This __message__ is important too and is for an *Example* table.", - "TableArgument": { - "HeaderRow": [ - "test", - "test2" - ], - "DataRows": [ - [ - "value", - "value2" - ] - ] - } + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "the scenario is running", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the BeforeFeature hook should have been executed", + "StepComments": [], + "AfterLastStepComments": [] } ], - "Name": "Sample Markdown Scenario Outline Example", - "Slug": "sample-markdown-scenario-outline-example", - "Description": "This is [an example link to pickles](https://github.com/picklesdoc/pickles/wiki \"Pickles\") inline link.\r\n\r\n[This link to pickles](https://github.com/picklesdoc/pickles/wiki) has no title attribute.", + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Hooking into pre conditions for Scenarios in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-scenarios-in-specflow", + "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "this: ", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "that: ", + "Name": "the BeforeScenario hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@AddingATag" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } - } - ], - "Background": { - "Name": "", - "Description": "This is the *coolest* background", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have initialized the Sum-variable to 0", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 1 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\13MultilineText\\MultilineFeatureExample.feature", - "Feature": { - "Name": "Multiline Feature Example", - "Description": "\tIn order capture this particular Gherkin feature\r\n\tAs a Pickles contributer\r\n\tI want to demonstrate an example of using multiline text in a Scenario", - "FeatureElements": [ + }, { - "Name": "Mutliline Output", - "Slug": "mutliline-output", + "Name": "Hooking into pre conditions for ScenarioBlocks in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-scenarioblocks-in-specflow", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have read in some text from the user", - "DocStringArgument": "This is line 1.\r\nThis is line 2!\r\nThis is line 3!!", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I process this input", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result will be saved to the multiline text data store", + "Name": "the BeforeScenarioBlock hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@mytag" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", - "Feature": { - "Name": "Nested Folder Example", - "Description": "\tIn order to test nested folder output\r\n\tAs a silly contributer\r\n\tI want to create an example of something several folders deep", - "FeatureElements": [ + }, { - "Name": "Nested - Add two numbers", - "Slug": "nested---add-two-numbers", + "Name": "Hooking into pre conditions for Steps in SpecFlow", + "Slug": "hooking-into-pre-conditions-for-steps-in-specflow", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I press add", + "Name": "the scenario is running", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 120 on the screen", + "Name": "the BeforeStep hook should have been executed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@nestedFolders" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -438,53 +305,76 @@ } }, { - "RelativeFolder": "Features\\11ContextInjection\\ContextInjection.feature", + "RelativeFolder": "Features\\02TagsAndHooks\\TagDemo.feature", "Feature": { - "Name": "Injecting context into step specifications", - "Description": "\tIn order to don't have to rely on the global shared state\r\n\t\tand to be able to define the contexts required for each scenario.\r\n\tAs a SpecFlow Evanglist\r\n\tI would like to have the system automatically inject an instance of any class as \r\n\t\tdefined in the constructor of a step file", + "Name": "Tag demonstrator", + "Description": "\tIn order to show the capabilities of tags in SpecFlow\r\n\tAs a SpecFlow evanglist\r\n\tI want to write scenarios that has tags and show their usage in code", "FeatureElements": [ { - "Name": "Feature with no context", - "Slug": "feature-with-no-context", + "Name": "Ignored scenario", + "Slug": "ignored-scenario", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires no context", + "Name": "that my scenario has the @ignore tag", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "everything is dandy", + "Name": "the scenario is ignored", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "the missing step definitions are not reported", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@ignore" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Feature with a single context", - "Slug": "feature-with-a-single-context", + "Name": "A scenario without tags", + "Slug": "a-scenario-without-tags", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires a single context", + "Name": "that my scenario has 0 tags", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the context is set", + "Name": "before scenario hook with '' is run", "StepComments": [], "AfterLastStepComments": [] } @@ -496,92 +386,108 @@ } }, { - "Name": "Feature with multiple contexts", - "Slug": "feature-with-multiple-contexts", + "Name": "A scenario with 1 tag", + "Slug": "a-scenario-with-1-tag", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires multiple contexts", + "Name": "that my scenario has 1 tags", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the contexts are set", + "Name": "before scenario hook with 'testTag1' is run", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@testTag1" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Feature with recursive contexts", - "Slug": "feature-with-recursive-contexts", + "Name": "A scenario with 3 tags", + "Slug": "a-scenario-with-3-tags", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires a recursive context", + "Name": "that my scenario has 3 tags", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the context is set", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "its sub-context is set", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "before scenario hook with 'testTag1, testTag2, testTag3' is run", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@testTag1", + "@testTag2", + "@testTag3" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Feature with a dependent context", - "Slug": "feature-with-a-dependent-context", + "Name": "A scenario with 2 tags", + "Slug": "a-scenario-with-2-tags", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "a feature which requires a single context", + "Name": "that my scenario has 2 tags", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the context is set", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I run the scenario", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "the context was created by the feature with a single context scenario", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "before scenario hook with 'testTag1, testTag3' is run", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@testTag1", + "@testTag3" + ], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -592,7 +498,10 @@ "WasExecuted": false, "WasSuccessful": false }, - "Tags": [] + "Tags": [ + "@allAboutTags", + "@important" + ] }, "Result": { "WasExecuted": false, @@ -600,94 +509,98 @@ } }, { - "RelativeFolder": "Features\\10StepTransformation\\StepTransformation.feature", + "RelativeFolder": "Features\\03ScenarioOutline\\ScenarioOutline.feature", "Feature": { - "Name": "Step Argument Transformations", - "Description": "\tIn order to reduce the amount of code and repetitive tasks in my steps\r\n\tAs a SpecFlow evanglist\r\n\tI want to define reusable transformations for my step arguments", + "Name": "Scenario outline", + "Description": "\tIn order to not have to type the same scenario over and over\r\n\tAs a SpecFlow evangelist\r\n\tI want to show how to use ScenarioOutline", "FeatureElements": [ { - "Name": "Steps with non-string arguments", - "Slug": "steps-with-non-string-arguments", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "Dan has been registered at date 2003/03/13", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "Aslak has been registered at terminal 2", - "StepComments": [], - "AfterLastStepComments": [] - }, + "Examples": [ { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should be able to see Aslak at terminal 2", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\09CallingStepsFromSteps\\CallingStepsFromSteps.feature", - "Feature": { - "Name": "Calling Steps from StepDefinitions", - "Description": "\tIn order to create steps of a higher abstraction\r\n\tAs a SpecFlow evangelist\r\n\tI want reuse other steps in my step definitions", - "FeatureElements": [ - { - "Name": "Log in", - "Slug": "log-in", + "Name": "less than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "10", + "20", + "30" + ], + [ + "20", + "20", + "40" + ], + [ + "20", + "30", + "50" + ] + ] + } + }, + { + "Name": "more than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "100", + "20", + "120" + ], + [ + "1000", + "20", + "1020" + ] + ] + } + } + ], + "Name": "Add two positive numbers with many examples", + "Slug": "add-two-positive-numbers-with-many-examples", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I am on the index page", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I enter my unsername nad password", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I click the login button", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I perform add", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the welcome page should be displayed", + "Name": "the result should be ", "StepComments": [], - "AfterLastStepComments": [] + "AfterLastStepComments": [ + { + "Text": "# This is called Abstrakt Scenario in Swedish (!!!)" + } + ] } ], "Tags": [], @@ -697,107 +610,86 @@ } }, { - "Name": "Do something meaningful", - "Slug": "do-something-meaningful", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I am logged in", - "StepComments": [], - "AfterLastStepComments": [] - }, + "Examples": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I dosomething meaningful", - "StepComments": [], - "AfterLastStepComments": [] + "Name": "less than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "10", + "20", + "30" + ], + [ + "20", + "20", + "40" + ], + [ + "20", + "30", + "50" + ] + ] + } }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should get rewarded", - "StepComments": [], - "AfterLastStepComments": [] + "Name": "more than 100", + "TableArgument": { + "HeaderRow": [ + "number 1", + "number 2", + "result" + ], + "DataRows": [ + [ + "100", + "20", + "120" + ], + [ + "1000", + "20", + "1020" + ] + ] + } } ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\08AttributeOverloading\\AttributeOverloading.feature", - "Feature": { - "Name": "Attribute overloading", - "Description": "\tIn order to show that steps can be used with multiple attributes\r\n\tAs a SpecFlow Evangelist\r\n\tI want to show that similar attributes can be applied to the same step definition", - "FeatureElements": [ - { - "Name": "Checking number for evenness", - "Slug": "checking-number-for-evenness", + "Name": "Add two negative numbers with many examples", + "Slug": "add-two-negative-numbers-with-many-examples", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have this simple step", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "this simple step", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "also this step", + "Name": "I enter into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I do something", + "Name": "I perform add", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "I could validate that the number 2 is even", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "that the number 4 is even", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "the number 3 is odd", + "Name": "the result should be ", "StepComments": [], "AfterLastStepComments": [] } @@ -821,41 +713,27 @@ } }, { - "RelativeFolder": "Features\\07Svenska\\Svenska.feature", + "RelativeFolder": "Features\\031ScenarioContext\\ScenarioContext.feature", "Feature": { - "Name": "Summering", - "Description": "\tFör att slippa att göra dumma fel\r\n\tSom räknare\r\n\tVill jag kunna lägga summera", + "Name": "Scenario Context features", + "Description": "\tIn order to show how to use ScenarioContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in ScenarioContext", "FeatureElements": [ { - "Name": "Summera 5 och 7 ska vara 12", - "Slug": "summera-5-och-7-ska-vara-12", + "Name": "Store and retrive Person Marcus from ScenarioContext", + "Slug": "store-and-retrive-person-marcus-from-scenariocontext", "Description": "", "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Givet ", - "Name": "att jag har knappat in 5", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "Och ", - "Name": "att jag har knappat in 7", - "StepComments": [], - "AfterLastStepComments": [] - }, { "Keyword": "When", - "NativeKeyword": "När ", - "Name": "jag summerar", + "NativeKeyword": "When ", + "Name": "I store a person called Marcus in the Current ScenarioContext", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", - "NativeKeyword": "SÃ¥ ", - "Name": "ska resultatet vara 12", + "NativeKeyword": "Then ", + "Name": "a person called Marcus can easily be retrieved", "StepComments": [], "AfterLastStepComments": [] } @@ -865,61 +743,23 @@ "WasExecuted": false, "WasSuccessful": false } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\06CompareToAssist\\CompareTo.feature", - "Feature": { - "Name": "Show the compare to feature", - "Description": "\tIn order to show the compare to features of SpecFlow Assist\r\n\tAs a SpecFlow evanglist\r\n\tI want to show how the different versions of compareTo works", - "FeatureElements": [ + }, { - "Name": "CompareToInstance", - "Slug": "comparetoinstance", + "Name": "Showing information of the scenario", + "Slug": "showing-information-of-the-scenario", "Description": "", "Steps": [ { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have the following person", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Name", - "Marcus" - ], - [ - "Style", - "Butch" - ], - [ - "Birth date", - "1972-10-09" - ] - ] - }, + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I execute any scenario", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "CompareToInstance should match this guy", + "Name": "the ScenarioInfo contains the following information", "TableArgument": { "HeaderRow": [ "Field", @@ -927,76 +767,65 @@ ], "DataRows": [ [ - "Name", - "Marcus" - ], - [ - "Style", - "Butch" + "Tags", + "showUpInScenarioInfo, andThisToo" ], [ - "BirthDate", - "10/9/1972 12:00:00 AM" + "Title", + "Showing information of the scenario" ] ] }, "StepComments": [], "AfterLastStepComments": [] + } + ], + "Tags": [ + "@showUpInScenarioInfo", + "@andThisToo" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Show the type of step we're currently on", + "Slug": "show-the-type-of-step-were-currently-on", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have a Given step", + "StepComments": [], + "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "CompareToInstance should match this guy", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Name", - "Marcus" - ], - [ - "BirthDate", - "10/9/1972 12:00:00 AM" - ] - ] - }, + "Name": "I have another Given step", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "CompareToInstance should not match this guy", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Name", - "Anders" - ], - [ - "Style", - "very cool" - ], - [ - "BirthDate", - "10/9/1974 12:00:00 AM" - ] - ] - }, + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I have a When step", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "I have a Then step", "StepComments": [], "AfterLastStepComments": [ { - "Text": "# CompareToSet will test only the properties that you define in the table." + "Text": "#This is not so easy to write a scenario for but I've created an AfterScenario-hook" }, { - "Text": "# CompareToSet does not test the order of the objects, only that one was found that matches" + "Text": "#To see this in action remove the @ignore tag below" } ] } @@ -1008,95 +837,214 @@ } }, { - "Name": "CompareToSet", - "Slug": "comparetoset", + "Name": "Display error information in AfterScenario", + "Slug": "display-error-information-in-afterscenario", "Description": "", "Steps": [ { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have the following persons using assist", - "TableArgument": { - "HeaderRow": [ - "Name", - "Style", - "Birth date" - ], - "DataRows": [ - [ - "Marcus", - "Cool", - "1972-10-09" - ], - [ - "Anders", - "Butch", - "1977-01-01" - ], - [ - "Jocke", - "Soft", - "1974-04-04" - ] - ] - }, + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "an error occurs in a step", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [ + "@ignore", + "@showingErrorHandling" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Pending step", + "Slug": "pending-step", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I set the ScenarioContext.Current to pending", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "CompareToSet should match this", + "Name": "this step will not even be executed", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\032FeatureContext\\FeatureContextFeatures.feature", + "Feature": { + "Name": "FeatureContext features", + "Description": "\tIn order to show how to use FeatureContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in FeatureContext", + "FeatureElements": [ + { + "Name": "Store and retrive Person Marcus from FeatureContext Current", + "Slug": "store-and-retrive-person-marcus-from-featurecontext-current", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I store a person called Marcus in the current FeatureContext", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "a person called Marcus can easily be retrieved from the current FeatureContext", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Showing information of the feature", + "Slug": "showing-information-of-the-feature", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I execute any scenario in the feature", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the FeatureInfo contains the following information", "TableArgument": { "HeaderRow": [ - "Name", - "Style", - "BirthDate" + "Field", + "Value" ], "DataRows": [ [ - "Marcus", - "Cool", - "10/9/1972 12:00:00 AM" + "Tags", + "showUpInScenarioInfo, andThisToo" ], [ - "Anders", - "Butch", - "1/1/1977 12:00:00 AM" + "Title", + "FeatureContext features" ], [ - "Jocke", - "Soft", - "4/4/1974 12:00:00 AM" + "TargetLanguage", + "CSharp" + ], + [ + "Language", + "en-US" + ], + [ + "Description", + "In order to" ] ] }, "StepComments": [], "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [ + "@showUpInScenarioInfo", + "@andThisToo" + ] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\04Background\\BackgroundFeature.feature", + "Feature": { + "Name": "Show the use of background", + "Description": "\tIn order to show how to use the Background keyword of Gherkin\r\n\tAs a SpecFlow evanglist\r\n\tI want to show that background steps are called before any scenario step", + "FeatureElements": [ + { + "Name": "Add 1 to the sum", + "Slug": "add-1-to-the-sum", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 1 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] }, { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "CompareToSet should not match this", - "TableArgument": { - "HeaderRow": [ - "Name", - "Style", - "BirthDate" - ], - "DataRows": [ - [ - "Marcus", - "Cool", - "10/9/1972 12:00:00 AM" - ], - [ - "Anders", - "Butch", - "1/1/1977 12:00:00 AM" - ] - ] - }, + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the total sum should be 2", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "Name": "Add 2 to the sum", + "Slug": "add-2-to-the-sum", + "Description": "", + "Steps": [ + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 2 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the total sum should be 3", "StepComments": [], "AfterLastStepComments": [] } @@ -1108,6 +1056,31 @@ } } ], + "Background": { + "Name": "", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have initialized the Sum-variable to 0", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 1 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, "Result": { "WasExecuted": false, "WasSuccessful": false @@ -1429,109 +1402,14 @@ "StepComments": [], "AfterLastStepComments": [] } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\04Background\\BackgroundFeature.feature", - "Feature": { - "Name": "Show the use of background", - "Description": "\tIn order to show how to use the Background keyword of Gherkin\r\n\tAs a SpecFlow evanglist\r\n\tI want to show that background steps are called before any scenario step", - "FeatureElements": [ - { - "Name": "Add 1 to the sum", - "Slug": "add-1-to-the-sum", - "Description": "", - "Steps": [ - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 1 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the total sum should be 2", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Add 2 to the sum", - "Slug": "add-2-to-the-sum", - "Description": "", - "Steps": [ - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 2 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the total sum should be 3", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Background": { - "Name": "", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I have initialized the Sum-variable to 0", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I add 1 to the Sum-variable", - "StepComments": [], - "AfterLastStepComments": [] + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false } - }, + ], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -1544,96 +1422,124 @@ } }, { - "RelativeFolder": "Features\\03ScenarioOutline\\ScenarioOutline.feature", + "RelativeFolder": "Features\\06CompareToAssist\\CompareTo.feature", "Feature": { - "Name": "Scenario outline", - "Description": "\tIn order to not have to type the same scenario over and over\r\n\tAs a SpecFlow evangelist\r\n\tI want to show how to use ScenarioOutline", + "Name": "Show the compare to feature", + "Description": "\tIn order to show the compare to features of SpecFlow Assist\r\n\tAs a SpecFlow evanglist\r\n\tI want to show how the different versions of compareTo works", "FeatureElements": [ { - "Examples": [ + "Name": "CompareToInstance", + "Slug": "comparetoinstance", + "Description": "", + "Steps": [ { - "Name": "less than 100", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have the following person", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Field", + "Value" ], "DataRows": [ [ - "10", - "20", - "30" + "Name", + "Marcus" ], [ - "20", - "20", - "40" + "Style", + "Butch" ], [ - "20", - "30", - "50" + "Birth date", + "1972-10-09" ] ] - } + }, + "StepComments": [], + "AfterLastStepComments": [] }, { - "Name": "more than 100", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "CompareToInstance should match this guy", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Field", + "Value" ], "DataRows": [ [ - "100", - "20", - "120" + "Name", + "Marcus" ], [ - "1000", - "20", - "1020" + "Style", + "Butch" + ], + [ + "BirthDate", + "10/9/1972 12:00:00 AM" ] ] - } - } - ], - "Name": "Add two positive numbers with many examples", - "Slug": "add-two-positive-numbers-with-many-examples", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I enter into the calculator", + }, "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I enter into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I perform add", + "Name": "CompareToInstance should match this guy", + "TableArgument": { + "HeaderRow": [ + "Field", + "Value" + ], + "DataRows": [ + [ + "Name", + "Marcus" + ], + [ + "BirthDate", + "10/9/1972 12:00:00 AM" + ] + ] + }, "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the result should be ", + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "CompareToInstance should not match this guy", + "TableArgument": { + "HeaderRow": [ + "Field", + "Value" + ], + "DataRows": [ + [ + "Name", + "Anders" + ], + [ + "Style", + "very cool" + ], + [ + "BirthDate", + "10/9/1974 12:00:00 AM" + ] + ] + }, "StepComments": [], "AfterLastStepComments": [ { - "Text": "# This is called Abstrakt Scenario in Swedish (!!!)" + "Text": "# CompareToSet will test only the properties that you define in the table." + }, + { + "Text": "# CompareToSet does not test the order of the objects, only that one was found that matches" } ] } @@ -1645,86 +1551,153 @@ } }, { - "Examples": [ + "Name": "CompareToSet", + "Slug": "comparetoset", + "Description": "", + "Steps": [ { - "Name": "less than 100", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have the following persons using assist", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Name", + "Style", + "Birth date" ], "DataRows": [ [ - "10", - "20", - "30" + "Marcus", + "Cool", + "1972-10-09" ], [ - "20", - "20", - "40" + "Anders", + "Butch", + "1977-01-01" ], [ - "20", - "30", - "50" + "Jocke", + "Soft", + "1974-04-04" ] ] - } + }, + "StepComments": [], + "AfterLastStepComments": [] }, { - "Name": "more than 100", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "CompareToSet should match this", "TableArgument": { "HeaderRow": [ - "number 1", - "number 2", - "result" + "Name", + "Style", + "BirthDate" ], "DataRows": [ [ - "100", - "20", - "120" + "Marcus", + "Cool", + "10/9/1972 12:00:00 AM" ], [ - "1000", - "20", - "1020" + "Anders", + "Butch", + "1/1/1977 12:00:00 AM" + ], + [ + "Jocke", + "Soft", + "4/4/1974 12:00:00 AM" ] ] - } + }, + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "CompareToSet should not match this", + "TableArgument": { + "HeaderRow": [ + "Name", + "Style", + "BirthDate" + ], + "DataRows": [ + [ + "Marcus", + "Cool", + "10/9/1972 12:00:00 AM" + ], + [ + "Anders", + "Butch", + "1/1/1977 12:00:00 AM" + ] + ] + }, + "StepComments": [], + "AfterLastStepComments": [] } ], - "Name": "Add two negative numbers with many examples", - "Slug": "add-two-negative-numbers-with-many-examples", + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\07Svenska\\Svenska.feature", + "Feature": { + "Name": "Summering", + "Description": "\tFör att slippa att göra dumma fel\r\n\tSom räknare\r\n\tVill jag kunna lägga summera", + "FeatureElements": [ + { + "Name": "Summera 5 och 7 ska vara 12", + "Slug": "summera-5-och-7-ska-vara-12", "Description": "", "Steps": [ { "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "I enter into the calculator", + "NativeKeyword": "Givet ", + "Name": "att jag har knappat in 5", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I enter into the calculator", + "NativeKeyword": "Och ", + "Name": "att jag har knappat in 7", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I perform add", + "NativeKeyword": "När ", + "Name": "jag summerar", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the result should be ", + "NativeKeyword": "SÃ¥ ", + "Name": "ska resultatet vara 12", "StepComments": [], "AfterLastStepComments": [] } @@ -1748,81 +1721,62 @@ } }, { - "RelativeFolder": "Features\\032FeatureContext\\FeatureContextFeatures.feature", + "RelativeFolder": "Features\\08AttributeOverloading\\AttributeOverloading.feature", "Feature": { - "Name": "FeatureContext features", - "Description": "\tIn order to show how to use FeatureContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in FeatureContext", + "Name": "Attribute overloading", + "Description": "\tIn order to show that steps can be used with multiple attributes\r\n\tAs a SpecFlow Evangelist\r\n\tI want to show that similar attributes can be applied to the same step definition", "FeatureElements": [ { - "Name": "Store and retrive Person Marcus from FeatureContext Current", - "Slug": "store-and-retrive-person-marcus-from-featurecontext-current", + "Name": "Checking number for evenness", + "Slug": "checking-number-for-evenness", "Description": "", "Steps": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I store a person called Marcus in the current FeatureContext", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have this simple step", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "a person called Marcus can easily be retrieved from the current FeatureContext", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "this simple step", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Showing information of the feature", - "Slug": "showing-information-of-the-feature", - "Description": "", - "Steps": [ + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "also this step", + "StepComments": [], + "AfterLastStepComments": [] + }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I execute any scenario in the feature", + "Name": "I do something", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the FeatureInfo contains the following information", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Tags", - "showUpInScenarioInfo, andThisToo" - ], - [ - "Title", - "FeatureContext features" - ], - [ - "TargetLanguage", - "CSharp" - ], - [ - "Language", - "en-US" - ], - [ - "Description", - "In order to" - ] - ] - }, + "Name": "I could validate that the number 2 is even", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "that the number 4 is even", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "But", + "NativeKeyword": "But ", + "Name": "the number 3 is odd", "StepComments": [], "AfterLastStepComments": [] } @@ -1838,10 +1792,7 @@ "WasExecuted": false, "WasSuccessful": false }, - "Tags": [ - "@showUpInScenarioInfo", - "@andThisToo" - ] + "Tags": [] }, "Result": { "WasExecuted": false, @@ -1849,121 +1800,76 @@ } }, { - "RelativeFolder": "Features\\031ScenarioContext\\ScenarioContext.feature", + "RelativeFolder": "Features\\09CallingStepsFromSteps\\CallingStepsFromSteps.feature", "Feature": { - "Name": "Scenario Context features", - "Description": "\tIn order to show how to use ScenarioContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in ScenarioContext", + "Name": "Calling Steps from StepDefinitions", + "Description": "\tIn order to create steps of a higher abstraction\r\n\tAs a SpecFlow evangelist\r\n\tI want reuse other steps in my step definitions", "FeatureElements": [ { - "Name": "Store and retrive Person Marcus from ScenarioContext", - "Slug": "store-and-retrive-person-marcus-from-scenariocontext", + "Name": "Log in", + "Slug": "log-in", "Description": "", "Steps": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I store a person called Marcus in the Current ScenarioContext", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I am on the index page", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "a person called Marcus can easily be retrieved", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I enter my unsername nad password", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Showing information of the scenario", - "Slug": "showing-information-of-the-scenario", - "Description": "", - "Steps": [ + }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I execute any scenario", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I click the login button", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the ScenarioInfo contains the following information", - "TableArgument": { - "HeaderRow": [ - "Field", - "Value" - ], - "DataRows": [ - [ - "Tags", - "showUpInScenarioInfo, andThisToo" - ], - [ - "Title", - "Showing information of the scenario" - ] - ] - }, + "Name": "the welcome page should be displayed", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@showUpInScenarioInfo", - "@andThisToo" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "Show the type of step we're currently on", - "Slug": "show-the-type-of-step-were-currently-on", + "Name": "Do something meaningful", + "Slug": "do-something-meaningful", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have a Given step", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have another Given step", + "Name": "I am logged in", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I have a When step", + "Name": "I dosomething meaningful", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "I have a Then step", + "Name": "I should get rewarded", "StepComments": [], - "AfterLastStepComments": [ - { - "Text": "#This is not so easy to write a scenario for but I've created an AfterScenario-hook" - }, - { - "Text": "#To see this in action remove the @ignore tag below" - } - ] + "AfterLastStepComments": [] } ], "Tags": [], @@ -1971,45 +1877,48 @@ "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\10StepTransformation\\StepTransformation.feature", + "Feature": { + "Name": "Step Argument Transformations", + "Description": "\tIn order to reduce the amount of code and repetitive tasks in my steps\r\n\tAs a SpecFlow evanglist\r\n\tI want to define reusable transformations for my step arguments", + "FeatureElements": [ { - "Name": "Display error information in AfterScenario", - "Slug": "display-error-information-in-afterscenario", + "Name": "Steps with non-string arguments", + "Slug": "steps-with-non-string-arguments", "Description": "", "Steps": [ { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "an error occurs in a step", + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "Dan has been registered at date 2003/03/13", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [ - "@ignore", - "@showingErrorHandling" - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Pending step", - "Slug": "pending-step", - "Description": "", - "Steps": [ + }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I set the ScenarioContext.Current to pending", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "Aslak has been registered at terminal 2", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "this step will not even be executed", + "Name": "I should be able to see Aslak at terminal 2", "StepComments": [], "AfterLastStepComments": [] } @@ -2033,76 +1942,53 @@ } }, { - "RelativeFolder": "Features\\02TagsAndHooks\\TagDemo.feature", + "RelativeFolder": "Features\\11ContextInjection\\ContextInjection.feature", "Feature": { - "Name": "Tag demonstrator", - "Description": "\tIn order to show the capabilities of tags in SpecFlow\r\n\tAs a SpecFlow evanglist\r\n\tI want to write scenarios that has tags and show their usage in code", + "Name": "Injecting context into step specifications", + "Description": "\tIn order to don't have to rely on the global shared state\r\n\t\tand to be able to define the contexts required for each scenario.\r\n\tAs a SpecFlow Evanglist\r\n\tI would like to have the system automatically inject an instance of any class as \r\n\t\tdefined in the constructor of a step file", "FeatureElements": [ { - "Name": "Ignored scenario", - "Slug": "ignored-scenario", + "Name": "Feature with no context", + "Slug": "feature-with-no-context", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has the @ignore tag", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Name": "a feature which requires no context", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the scenario is ignored", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "the missing step definitions are not reported", + "Name": "everything is dandy", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@ignore" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "A scenario without tags", - "Slug": "a-scenario-without-tags", + "Name": "Feature with a single context", + "Slug": "feature-with-a-single-context", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 0 tags", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Name": "a feature which requires a single context", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "before scenario hook with '' is run", + "Name": "the context is set", "StepComments": [], "AfterLastStepComments": [] } @@ -2114,108 +2000,92 @@ } }, { - "Name": "A scenario with 1 tag", - "Slug": "a-scenario-with-1-tag", + "Name": "Feature with multiple contexts", + "Slug": "feature-with-multiple-contexts", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 1 tags", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Name": "a feature which requires multiple contexts", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "before scenario hook with 'testTag1' is run", + "Name": "the contexts are set", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@testTag1" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "A scenario with 3 tags", - "Slug": "a-scenario-with-3-tags", + "Name": "Feature with recursive contexts", + "Slug": "feature-with-recursive-contexts", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 3 tags", + "Name": "a feature which requires a recursive context", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the context is set", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "before scenario hook with 'testTag1, testTag2, testTag3' is run", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "its sub-context is set", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@testTag1", - "@testTag2", - "@testTag3" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false } }, { - "Name": "A scenario with 2 tags", - "Slug": "a-scenario-with-2-tags", + "Name": "Feature with a dependent context", + "Slug": "feature-with-a-dependent-context", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "that my scenario has 2 tags", + "Name": "a feature which requires a single context", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I run the scenario", + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the context is set", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "before scenario hook with 'testTag1, testTag3' is run", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "the context was created by the feature with a single context scenario", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [ - "@testTag1", - "@testTag3" - ], + "Tags": [], "Result": { "WasExecuted": false, "WasSuccessful": false @@ -2226,10 +2096,7 @@ "WasExecuted": false, "WasSuccessful": false }, - "Tags": [ - "@allAboutTags", - "@important" - ] + "Tags": [] }, "Result": { "WasExecuted": false, @@ -2237,105 +2104,141 @@ } }, { - "RelativeFolder": "Features\\02TagsAndHooks\\Hooks.feature", + "RelativeFolder": "Features\\12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", "Feature": { - "Name": "Addition", - "Description": "\tIn order to explain the order in which hooks are run\r\n\tAs a SpecFlow evanglist\r\n\tI wan to be able to hook into pre and post conditions in SpecFlow", + "Name": "Nested Folder Example", + "Description": "\tIn order to test nested folder output\r\n\tAs a silly contributer\r\n\tI want to create an example of something several folders deep", "FeatureElements": [ { - "Name": "Hooking into pre conditions for Test Runs in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-test-runs-in-specflow", + "Name": "Nested - Add two numbers", + "Slug": "nested---add-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "I have entered 50 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "the BeforeTestRun hook should have been executed", + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Hooking into pre conditions for Features in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-features-in-specflow", - "Description": "", - "Steps": [ + }, { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I press add", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeFeature hook should have been executed", + "Name": "the result should be 120 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@nestedFolders" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\13MultilineText\\MultilineFeatureExample.feature", + "Feature": { + "Name": "Multiline Feature Example", + "Description": "\tIn order capture this particular Gherkin feature\r\n\tAs a Pickles contributer\r\n\tI want to demonstrate an example of using multiline text in a Scenario", + "FeatureElements": [ { - "Name": "Hooking into pre conditions for Scenarios in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-scenarios-in-specflow", + "Name": "Mutliline Output", + "Slug": "mutliline-output", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "I have read in some text from the user", + "DocStringArgument": "This is line 1.\r\nThis is line 2!\r\nThis is line 3!!", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I process this input", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeScenario hook should have been executed", + "Name": "the result will be saved to the multiline text data store", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@mytag" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\14MarkdownExample\\MarkdownExamples.feature", + "Feature": { + "Name": "Sample Markdown Feature", + "Description": "Header 1\r\n========\r\n\r\nHeader 2\r\n--------\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", + "FeatureElements": [ { - "Name": "Hooking into pre conditions for ScenarioBlocks in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-scenarioblocks-in-specflow", - "Description": "", + "Name": "Sample Markdown Scenario Example", + "Slug": "sample-markdown-scenario-example", + "Description": "This is **important** text\r\n\r\nCode Block:\r\n\r\n```\r\nvar x = 2;\r\n```\r\n\r\nApple\r\n: Pomaceous fruit of plants of the genus Malus in\r\n the family Rosaceae.\r\n: An American computer company.\r\n\r\nOrange\r\n: The fruit of an evergreen tree of the genus Citrus.", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "this", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeScenarioBlock hook should have been executed", + "Name": "that", "StepComments": [], "AfterLastStepComments": [] } @@ -2347,32 +2250,77 @@ } }, { - "Name": "Hooking into pre conditions for Steps in SpecFlow", - "Slug": "hooking-into-pre-conditions-for-steps-in-specflow", - "Description": "", + "Examples": [ + { + "Name": "", + "Description": "This __message__ is important too and is for an *Example* table.", + "TableArgument": { + "HeaderRow": [ + "test", + "test2" + ], + "DataRows": [ + [ + "value", + "value2" + ] + ] + } + } + ], + "Name": "Sample Markdown Scenario Outline Example", + "Slug": "sample-markdown-scenario-outline-example", + "Description": "This is [an example link to pickles](https://github.com/picklesdoc/pickles/wiki \"Pickles\") inline link.\r\n\r\n[This link to pickles](https://github.com/picklesdoc/pickles/wiki) has no title attribute.", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the scenario is running", + "Name": "this: ", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the BeforeStep hook should have been executed", + "Name": "that: ", "StepComments": [], "AfterLastStepComments": [] } ], - "Tags": [], + "Tags": [ + "@AddingATag" + ], "Result": { "WasExecuted": false, "WasSuccessful": false } } ], + "Background": { + "Name": "", + "Description": "This is the *coolest* background", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have initialized the Sum-variable to 0", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I add 1 to the Sum-variable", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, "Result": { "WasExecuted": false, "WasSuccessful": false @@ -2385,34 +2333,130 @@ } }, { - "RelativeFolder": "Features\\01TestRunner\\TestRunnerIsNotImportant.feature", + "RelativeFolder": "Features\\15Pickles\\InteractiveDHTMLView.feature", "Feature": { - "Name": "The test runner is not (very) important", - "Description": "\tIn order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\n\tAs a SpecFlow evanglist \r\n\tI want to be able to call my steps in the same manner inspite of the testrunner configured ", + "Name": "Interactive DHTML View", + "Description": "\tIn order to increase stakeholder engagement with pickled specs\r\n\tAs a SpecFlow evangelist \r\n\tI want to adjust the level of detail in the DHTML view to suit my audience\r\n\tSo that I do not overwhelm them.", "FeatureElements": [ { - "Name": "A couple of simple steps", - "Slug": "a-couple-of-simple-steps", + "Name": "Scenario with large data table", + "Slug": "scenario-with-large-data-table", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have step defintions in place", + "Name": "a feature with a large table of data:", + "TableArgument": { + "HeaderRow": [ + "heading", + "page #" + ], + "DataRows": [ + [ + "Chapter 1", + "1" + ], + [ + "Chapter 2", + "5" + ], + [ + "Chapter 3", + "10" + ], + [ + "Chapter 4", + "15" + ], + [ + "Chapter 5", + "20" + ], + [ + "Chapter 6", + "25" + ], + [ + "Chapter 7", + "30" + ], + [ + "Chapter 8", + "35" + ], + [ + "Chapter 9", + "40" + ], + [ + "Chapter 10", + "45" + ], + [ + "Chapter 11", + "50" + ], + [ + "Chapter 12", + "55" + ], + [ + "Chapter 13", + "60" + ], + [ + "Chapter 14", + "65" + ], + [ + "Chapter 15", + "70" + ], + [ + "Chapter 16", + "75" + ], + [ + "Chapter 17", + "80" + ], + [ + "Chapter 18", + "85" + ], + [ + "Chapter 19", + "90" + ], + [ + "Chapter 20", + "95" + ], + [ + "Chapter 21", + "100" + ], + [ + "Chapter 22", + "105" + ] + ] + }, "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I call a step", + "Name": "I click on the table heading", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the step should have been called", + "Name": "the table body should collapse", "StepComments": [], "AfterLastStepComments": [] } @@ -2436,145 +2480,94 @@ } }, { - "RelativeFolder": "Features\\00BasicGherkin\\BasicGherkin.feature", + "RelativeFolder": "Features\\Arithmetic.feature", "Feature": { - "Name": "Showing basic gherkin syntax", - "Description": "In order to see that gherkin is a very simple language\r\nAs a SpecFlow evangelist\r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", + "Name": "Arithmetic", + "Description": "In order to avoid silly mistakes\r\nAs a math idiot\r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", "FeatureElements": [ { - "Name": "Simple GWT", - "Slug": "simple-gwt", - "Description": "", - "Steps": [ - { - "Keyword": "Given", - "NativeKeyword": "Given ", - "Name": "the initial state of the application is Running", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "When", - "NativeKeyword": "When ", - "Name": "I ask what the application state is", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should see Running as the answer", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "Name": "Using And and But", - "Slug": "using-and-and-but", - "Description": "", + "Name": "Add two numbers", + "Slug": "add-two-numbers", + "Description": "$50 + 70 = 120$", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "the initial state of the application is Running", - "StepComments": [], + "Name": "I have entered 50 into the calculator", + "StepComments": [ + { + "Text": "# In the DHTML version, the description will be rendered with mathematical formulas if the experimental features are enabled." + } + ], "AfterLastStepComments": [] }, { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I have authorization to ask application state", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I ask what the application state is", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "Then", - "NativeKeyword": "Then ", - "Name": "I should see Running as the answer", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I should see the time of the application", + "Name": "I press add", "StepComments": [], "AfterLastStepComments": [] }, { - "Keyword": "But", - "NativeKeyword": "But ", - "Name": "the state of the application should not be Stopped", - "StepComments": [], - "AfterLastStepComments": [] - } - ], - "Tags": [], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - } - ], - "Result": { - "WasExecuted": false, - "WasSuccessful": false - }, - "Tags": [] - }, - "Result": { - "WasExecuted": false, - "WasSuccessful": false - } - }, - { - "RelativeFolder": "Features\\Trigonometry.feature", - "Feature": { - "Name": "Trigonometry", - "Description": "\tIn order to avoid perform more advanced calculations\r\n\tAs a math idiot\r\n\tI want to be able to use trigonometric functions", - "FeatureElements": [ + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the result should be 120 on the screen", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [ + "@arithmetic", + "@fast" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, { - "Name": "Sine", - "Slug": "sine", + "Name": "Subtract two numbers", + "Slug": "subtract-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 90 into the calculator", + "Name": "I have entered 50 into the calculator", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press sin", + "Name": "I press subtract", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 1 on the screen", + "Name": "the result should be -20 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@trigonometric", + "@arithmetic", "@fast" ], "Result": { @@ -2583,34 +2576,41 @@ } }, { - "Name": "Cosine", - "Slug": "cosine", + "Name": "Multiply two numbers", + "Slug": "multiply-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 0 into the calculator", + "Name": "I have entered 50 into the calculator", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press cos", + "Name": "I press multiply", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 1 on the screen", + "Name": "the result should be 3500 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@trigonometric", + "@arithmetic", "@fast" ], "Result": { @@ -2619,34 +2619,41 @@ } }, { - "Name": "Tangent", - "Slug": "tangent", + "Name": "Divide two numbers", + "Slug": "divide-two-numbers", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 45 into the calculator", + "Name": "I have entered 50 into the calculator", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 2 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press tan", + "Name": "I press divide", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 1 on the screen", + "Name": "the result should be 25 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@trigonometric", + "@arithmetic", "@fast" ], "Result": { @@ -2667,51 +2674,40 @@ } }, { - "RelativeFolder": "Features\\Arithmetic.feature", + "RelativeFolder": "Features\\Trigonometry.feature", "Feature": { - "Name": "Arithmetic", - "Description": "In order to avoid silly mistakes\r\nAs a math idiot\r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", + "Name": "Trigonometry", + "Description": "\tIn order to avoid perform more advanced calculations\r\n\tAs a math idiot\r\n\tI want to be able to use trigonometric functions", "FeatureElements": [ { - "Name": "Add two numbers", - "Slug": "add-two-numbers", - "Description": "$50 + 70 = 120$", + "Name": "Sine", + "Slug": "sine", + "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [ - { - "Text": "# In the DHTML version, the description will be rendered with mathematical formulas if the experimental features are enabled." - } - ], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have entered 90 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press add", + "Name": "I press sin", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 120 on the screen", + "Name": "the result should be 1 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", + "@trigonometric", "@fast" ], "Result": { @@ -2720,41 +2716,34 @@ } }, { - "Name": "Subtract two numbers", - "Slug": "subtract-two-numbers", + "Name": "Cosine", + "Slug": "cosine", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have entered 0 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press subtract", + "Name": "I press cos", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be -20 on the screen", + "Name": "the result should be 1 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", + "@trigonometric", "@fast" ], "Result": { @@ -2763,51 +2752,62 @@ } }, { - "Name": "Multiply two numbers", - "Slug": "multiply-two-numbers", + "Name": "Tangent", + "Slug": "tangent", "Description": "", "Steps": [ { "Keyword": "Given", "NativeKeyword": "Given ", - "Name": "I have entered 50 into the calculator", - "StepComments": [], - "AfterLastStepComments": [] - }, - { - "Keyword": "And", - "NativeKeyword": "And ", - "Name": "I have entered 70 into the calculator", + "Name": "I have entered 45 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press multiply", + "Name": "I press tan", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 3500 on the screen", + "Name": "the result should be 1 on the screen", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", + "@trigonometric", "@fast" ], "Result": { "WasExecuted": false, "WasSuccessful": false } - }, + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, + { + "RelativeFolder": "Features\\Workflow\\ClearingScreen.feature", + "Feature": { + "Name": "Clearing Screen", + "Description": "\tIn order to restart a new set of calculations\r\n\tAs a math idiot\r\n\tI want to be able to clear the screen", + "FeatureElements": [ { - "Name": "Divide two numbers", - "Slug": "divide-two-numbers", + "Name": "Clear the screen", + "Slug": "clear-the-screen", "Description": "", "Steps": [ { @@ -2820,28 +2820,28 @@ { "Keyword": "And", "NativeKeyword": "And ", - "Name": "I have entered 2 into the calculator", + "Name": "I have entered 70 into the calculator", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "When", "NativeKeyword": "When ", - "Name": "I press divide", + "Name": "I press C", "StepComments": [], "AfterLastStepComments": [] }, { "Keyword": "Then", "NativeKeyword": "Then ", - "Name": "the result should be 25 on the screen", + "Name": "the screen should be empty", "StepComments": [], "AfterLastStepComments": [] } ], "Tags": [ - "@arithmetic", - "@fast" + "@workflow", + "@slow" ], "Result": { "WasExecuted": false, @@ -2863,6 +2863,20 @@ ], "Summary": { "Tags": [ + { + "Tag": "@allAboutTags", + "Total": 5, + "Passing": 0, + "Failing": 0, + "Inconclusive": 5 + }, + { + "Tag": "@important", + "Total": 5, + "Passing": 0, + "Failing": 0, + "Inconclusive": 5 + }, { "Tag": "@showUpInScenarioInfo", "Total": 3, @@ -2878,88 +2892,74 @@ "Inconclusive": 3 }, { - "Tag": "@allAboutTags", - "Total": 5, + "Tag": "@ignore", + "Total": 2, "Passing": 0, "Failing": 0, - "Inconclusive": 5 + "Inconclusive": 2 }, { - "Tag": "@important", - "Total": 5, + "Tag": "@testTag1", + "Total": 3, "Passing": 0, "Failing": 0, - "Inconclusive": 5 + "Inconclusive": 3 }, { - "Tag": "@workflow", + "Tag": "@testTag2", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@slow", - "Total": 1, + "Tag": "@testTag3", + "Total": 2, "Passing": 0, "Failing": 0, - "Inconclusive": 1 + "Inconclusive": 2 }, { - "Tag": "@AddingATag", + "Tag": "@showingErrorHandling", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@mytag", + "Tag": "@nestedFolders", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@nestedFolders", + "Tag": "@mytag", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@ignore", - "Total": 2, - "Passing": 0, - "Failing": 0, - "Inconclusive": 2 - }, - { - "Tag": "@showingErrorHandling", + "Tag": "@AddingATag", "Total": 1, "Passing": 0, "Failing": 0, "Inconclusive": 1 }, { - "Tag": "@testTag1", - "Total": 3, - "Passing": 0, - "Failing": 0, - "Inconclusive": 3 - }, - { - "Tag": "@testTag2", - "Total": 1, + "Tag": "@arithmetic", + "Total": 4, "Passing": 0, "Failing": 0, - "Inconclusive": 1 + "Inconclusive": 4 }, { - "Tag": "@testTag3", - "Total": 2, + "Tag": "@fast", + "Total": 7, "Passing": 0, "Failing": 0, - "Inconclusive": 2 + "Inconclusive": 7 }, { "Tag": "@trigonometric", @@ -2969,18 +2969,18 @@ "Inconclusive": 3 }, { - "Tag": "@fast", - "Total": 7, + "Tag": "@workflow", + "Total": 1, "Passing": 0, "Failing": 0, - "Inconclusive": 7 + "Inconclusive": 1 }, { - "Tag": "@arithmetic", - "Total": 4, + "Tag": "@slow", + "Total": 1, "Passing": 0, "Failing": 0, - "Inconclusive": 4 + "Inconclusive": 1 } ], "Folders": [ @@ -3016,7 +3016,7 @@ }, "Configuration": { "SutName": "Pickles", - "SutVersion": "2.8.2", - "GeneratedOn": "18 August 2016 17:56:49" + "SutVersion": "2.8.3", + "GeneratedOn": "28 September 2016 10:45:42" } } \ No newline at end of file diff --git a/docs/Output/Word/Pickles.docx b/docs/Output/Word/Pickles.docx index c08f32f0af58985b9ffef1bdfdddf598bd9bbb6d..8b0c089810046270ac582c80588552f2769c2ff4 100644 GIT binary patch delta 8002 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 LT9h^JzYqQ&=A_V= delta 8013 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®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 diff --git a/docs/Output/Word/features.docx b/docs/Output/Word/features.docx index 94facc785a6d2704bf2e5701ec3f440ca910585a..5a8b0f64bfed70f3c8f59cd31b4dfa16f8964b37 100644 GIT binary patch delta 7627 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

- If you prefer to download the .zip files, you can so from the Github release page. + If you prefer to download the .zip files, you can so from the Github release page.

- - - - + + + + - + - + - + - + - + - + - + - + - - d__5`2.MoveNext() -bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) -bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) -bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) -bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) -bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() -bei Pickles.TestHarness.nunit.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\nunit\Addition.feature.cs:Zeile 0. -bei Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\nunit\Addition.feature:Zeile 34. + + d__5`2.MoveNext() +at System.Linq.Buffer`1..ctor(IEnumerable`1 source) +at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) +at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) +at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) +at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() +at Pickles.TestHarness.nunit.AdditionFeature.ScenarioCleanup() +at Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\nunit\Addition.feature:line 34 ]]> @@ -53,7 +53,7 @@ bei Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in c:\Develo - + - + - + - + - - + - @@ -142,23 +142,23 @@ bei Pickles.TestHarness.nunit.FailingBackgroundFeature.AddingSeveralNumbers(Stri 2 but was 1]]> - - + - + @@ -168,19 +168,19 @@ bei Pickles.TestHarness.nunit.FailingBackgroundFeature.AddTwoNumbers() in c:\Dev False but was True]]> - - + @@ -189,7 +189,7 @@ bei Pickles.TestHarness.nunit.MinimalFeatures.FailingFeature.FailingFeatureFaili - + @@ -202,7 +202,7 @@ bei Pickles.TestHarness.nunit.MinimalFeatures.FailingFeature.FailingFeatureFaili - + @@ -242,7 +242,7 @@ namespace MyNamespace ]]> - + - + - + - + - + - + - @@ -356,15 +356,15 @@ bei Pickles.TestHarness.nunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWi False but was True]]> - @@ -375,7 +375,7 @@ bei Pickles.TestHarness.nunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWi - + @@ -385,18 +385,18 @@ bei Pickles.TestHarness.nunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWi - + + - - + - + - - + - + + + - - - + + + + + + + + + + + - + - - + + - - - + - + + + diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFile.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFile.cs index 0a68589ce..174b16256 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFile.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFile.cs @@ -117,5 +117,17 @@ public WhenParsingNunit3ResultsFile() { base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithUmlauts() + { + base.ThenCanReadResultOfScenarioOutlineWithUmlauts(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithAmpersand() + { + base.ThenCanReadResultOfScenarioOutlineWithAmpersand(); + } } } diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs index 897e21025..0779eae7c 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/WhenParsingNunit3ResultsFileForNunit2Tests.cs @@ -117,5 +117,17 @@ public WhenParsingNunit3ResultsFileForNunit2Tests() { base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithUmlauts() + { + base.ThenCanReadResultOfScenarioOutlineWithUmlauts(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithAmpersand() + { + base.ThenCanReadResultOfScenarioOutlineWithAmpersand(); + } } } diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml index 7270a85f3..b8b525394 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit2-with-nunit3-runner.xml @@ -1,48 +1,48 @@  - - - + + + - + - + - + - + - + - + - - + + - + - + @@ -60,10 +60,10 @@ at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() at Pickles.TestHarness.nunit.AdditionFeature.ScenarioCleanup() - at Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in C:\Dev\Code\GitHub\DirkRombauts\pickles\test-harness\nunit\Addition.feature:line 34]]> + at Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\nunit\Addition.feature:line 34]]> - + @@ -72,7 +72,7 @@ - + @@ -109,21 +109,21 @@ namespace MyNamespace - + - + - + + at Pickles.TestHarness.nunit.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\nunit\FailingBackground.feature:line 19]]> - + + at Pickles.TestHarness.nunit.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\nunit\FailingBackground.feature:line 19]]> - + @@ -175,28 +175,28 @@ namespace MyNamespace 1]]> + at Pickles.TestHarness.nunit.FailingBackgroundFeature.AddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\nunit\FailingBackground.feature:line 12]]> - + - + - + @@ -209,16 +209,16 @@ namespace MyNamespace True]]> + at Pickles.TestHarness.nunit.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in C:\DevProjects\Tools\pickles\test-harness\nunit\Minimal Features\Failing.feature:line 10]]> - + @@ -227,17 +227,17 @@ namespace MyNamespace MinimalSteps.ThenInconclusiveStep()]]> - + - + - + @@ -246,28 +246,28 @@ namespace MyNamespace MinimalSteps.ThenInconclusiveStep()]]> - + - + - + - + - + @@ -303,7 +303,7 @@ namespace MyNamespace ]]> - + @@ -339,7 +339,7 @@ namespace MyNamespace ]]> - + @@ -376,35 +376,35 @@ namespace MyNamespace - + - + - - - + + + - + - + + at Pickles.TestHarness.nunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\nunit\ScenarioOutlines.feature:line 45]]> - + + at Pickles.TestHarness.nunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\nunit\ScenarioOutlines.feature:line 45]]> - + - + - + - + - + - + - + - - - + + + - + - - - + + + + at Pickles.TestHarness.nunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\nunit\ScenarioOutlines.feature:line 34]]> - + - - - + + + @@ -512,32 +512,44 @@ namespace MyNamespace - + - + + + + + + + + + + + + + - + - + - + - - - - - - - + + + + + + + diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit3.xml b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit3.xml index e0e5aa14e..e9b8e8825 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit3.xml +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/NUnit/NUnit3/results-example-nunit3.xml @@ -1,44 +1,44 @@  - - - - + + + + - + - + - + - + - + - + - + - + - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given I have entered 60 into the calculator @@ -53,7 +53,7 @@ Then the result should be 260 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) ]]> - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given I have entered 40 into the calculator @@ -69,7 +69,7 @@ Then the result should be 180 on the screen ]]> - + @@ -86,25 +86,25 @@ Then the result should be 3 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) ]]> - + - + - - d__5`2.MoveNext() - bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) - bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.nunit3.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\nunit3\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.nunit3.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\nunit3\Addition.feature:Zeile 34.]]> + + d__5`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.nunit3.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.nunit3.AdditionFeature.FailToAddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\nunit3\Addition.feature:line 34]]> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -115,10 +115,10 @@ And I have entered 2.2 into the calculator When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) Then the result should be 3.2 on the screen --> error: Die Eingabezeichenfolge hat das falsche Format. +-> error: Input string was not in a correct format. ]]> - + @@ -127,7 +127,7 @@ Then the result should be 3.2 on the screen - + @@ -191,21 +191,21 @@ Then unimplemented step ]]> - + - + - + - + error: @@ -244,7 +244,7 @@ Then the result should be 260 on the screen -> skipped because of previous errors ]]> - + - + error: @@ -284,7 +284,7 @@ Then the result should be 180 on the screen ]]> - + @@ -295,15 +295,15 @@ Then the result should be 180 on the screen 2 but was 1]]> - + error: @@ -325,18 +325,18 @@ Then the result should be 120 on the screen ]]> - + - + - + @@ -347,15 +347,15 @@ Then the result should be 120 on the screen False but was True]]> - + error: @@ -366,7 +366,7 @@ Then the result should be 120 on the screen True ]]> - + @@ -378,7 +378,7 @@ Then the result should be 120 on the screen -> pending: MinimalSteps.ThenInconclusiveStep() ]]> - + @@ -387,11 +387,11 @@ Then the result should be 120 on the screen ]]> - + - + @@ -403,7 +403,7 @@ Then the result should be 120 on the screen -> pending: MinimalSteps.ThenInconclusiveStep() ]]> - + @@ -412,11 +412,11 @@ Then the result should be 120 on the screen ]]> - + - + @@ -426,31 +426,31 @@ Then the result should be 120 on the screen - + - + - - + + error: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. +-> error: Object reference not set to an instance of an object. And I have entered 70 into the calculator -> skipped because of previous errors When I press add @@ -460,31 +460,31 @@ Then the result should be 120 on the screen ]]> - + - + - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) ]]> - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) ]]> - + @@ -493,7 +493,7 @@ Then the result should be 120 on the screen -> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") ]]> - + @@ -502,7 +502,7 @@ Then the result should be 120 on the screen -> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") ]]> - + - + error: @@ -529,7 +529,7 @@ Then the result should be 120 on the screen True ]]> - + - + error: @@ -557,21 +557,21 @@ Then the result should be 120 on the screen ]]> - + - + done: ScenarioOutlineSteps.WhenIHaveBackslashesInTheValueForExampleAFilePath("c:\Temp\") (0,0s) ]]> - + - + done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("Please enter a va...") (0,0s) And I have a field with value 'This is just a very very very veery long error message!' @@ -581,54 +581,54 @@ Then the scenario will 'pass_1' ]]> - + - + done: ScenarioOutlineSteps.WhenIHaveParenthesisInTheValueForExampleAnOverlyDescriptiveField("This is a descrip...") (0,0s) ]]> - + - - done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) -]]> - - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) ]]> - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +]]> + + + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) ]]> - + - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) ]]> - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) ]]> - + - + error: @@ -656,21 +656,21 @@ Then the scenario will 'pass_1' ]]> - + - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) ]]> - + done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) ]]> - + @@ -681,15 +681,39 @@ Then the scenario will 'pass_1' - + - + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + + + + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +]]> + + + - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Then the scenario will 'pass_1' @@ -697,7 +721,7 @@ Then the scenario will 'pass_1' ]]> - + @@ -713,20 +737,11 @@ Then the result should be 120 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(120) (0,0s) ]]> - + - - done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '^.*(?BAR)\s[^0-9]{3,4}A+$' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("^.*(?BAR)\s[...") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -]]> - - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '**' @@ -735,7 +750,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) ]]> - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '++' @@ -744,7 +759,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) ]]> - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '.*' @@ -753,7 +768,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) ]]> - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '[]' @@ -762,7 +777,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) ]]> - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '{}' @@ -771,13 +786,22 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) ]]> - + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '()' -> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("()") (0,0s) Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +]]> + + + done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '^.*(?BAR)\s[^0-9]{3,4}A+$' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("^.*(?BAR)\s[...") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) ]]> diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/WhenParsingSpecRunTestResultsFile.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/WhenParsingSpecRunTestResultsFile.cs index b257f4fe9..6f55cc57c 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/WhenParsingSpecRunTestResultsFile.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/WhenParsingSpecRunTestResultsFile.cs @@ -123,5 +123,18 @@ public WhenParsingSpecRunTestResultsFile() { base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithUmlauts() + { + base.ThenCanReadResultOfScenarioOutlineWithUmlauts(); + } + + //SpecRun-Output does not encode & so it can not be read as xml + //[Test] + //public new void ThenCanReadResultOfScenarioOutlineWithAmpersand() + //{ + // base.ThenCanReadResultOfScenarioOutlineWithAmpersand(); + //} } } diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/results-example-specrun.html b/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/results-example-specrun.html index 8a7c34d66..bb560859d 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/results-example-specrun.html +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/SpecRun/results-example-specrun.html @@ -227,6 +227,10 @@ <title>This scenario contains examples with Regex-special characters, Variant 6</title> <result>Passed</result> </scenario> + <scenario> + <title>This is a scenario outline with german umlauts äöüß ÄÖÜ, pass_1</title> + <result>Passed</result> + </scenario> </scenarios> </feature> </features> diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/StandardTestSuite.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/StandardTestSuite.cs index e17a4f41b..ea74a6690 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/StandardTestSuite.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/StandardTestSuite.cs @@ -270,6 +270,32 @@ public void ThenCanReadResultOfScenarioOutlineWithSpecialCharacters() Check.That(actualResult).IsEqualTo(TestResult.Passed); } + public void ThenCanReadResultOfScenarioOutlineWithUmlauts() + { + var results = ParseResultsFile(); + + var feature = new Feature { Name = "Scenarios With Special Characters" }; + + var scenarioOutline = new ScenarioOutline { Name = "This is a scenario outline with german umlauts äöüß ÄÖÜ", Feature = feature }; + + var actualResult = results.GetExampleResult(scenarioOutline, new string[] { "pass_1" }); + + Check.That(actualResult).IsEqualTo(TestResult.Passed); + } + + public void ThenCanReadResultOfScenarioOutlineWithAmpersand() + { + var results = ParseResultsFile(); + + var feature = new Feature { Name = "Scenarios With Special Characters" }; + + var scenarioOutline = new ScenarioOutline { Name = "This is a scenario outline with ampersand &", Feature = feature }; + + var actualResult = results.GetExampleResult(scenarioOutline, new string[] { "pass_1" }); + + Check.That(actualResult).IsEqualTo(TestResult.Passed); + } + private Feature AdditionFeature() { return new Feature { Name = "Addition" }; diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/WhenParsingVsTestResultsFile.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/WhenParsingVsTestResultsFile.cs index 41ddf6984..4c6580a53 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/WhenParsingVsTestResultsFile.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/WhenParsingVsTestResultsFile.cs @@ -153,5 +153,17 @@ public WhenParsingVsTestResultsFile() { base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithUmlauts() + { + base.ThenCanReadResultOfScenarioOutlineWithUmlauts(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithAmpersand() + { + base.ThenCanReadResultOfScenarioOutlineWithAmpersand(); + } } } diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/results-example-vstest.trx b/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/results-example-vstest.trx index 0b5cf0f3a..994988c5d 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/results-example-vstest.trx +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/VsTest/results-example-vstest.trx @@ -1,15 +1,15 @@  - - - + + + - + - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -25,7 +25,7 @@ Then the result should be 260 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -41,7 +41,7 @@ Then the result should be 180 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -55,7 +55,7 @@ Then the result should be 3 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -66,34 +66,34 @@ And I have entered 2.2 into the calculator When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) Then the result should be 3.2 on the screen --> error: Die Eingabezeichenfolge hat das falsche Format. +-> error: Input string was not in a correct format. Test method Pickles.TestHarness.MsTest.AdditionFeature.FailToAddTwoNumbers threw exception: -System.FormatException: Die Eingabezeichenfolge hat das falsche Format. - bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) - bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) - bei System.String.System.IConvertible.ToInt32(IFormatProvider provider) - bei System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) - bei TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(Type typeToConvertTo, Object value, CultureInfo cultureInfo) - bei TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(IBindingType typeToConvertTo, Object value, CultureInfo cultureInfo) - bei TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.Convert(Object value, IBindingType typeToConvertTo, CultureInfo cultureInfo) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ConvertArg(Object value, IBindingType typeToConvertTo) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.<>c__DisplayClass5.<GetExecuteArguments>b__4(Object arg, Int32 argIndex) - bei System.Linq.Enumerable.<SelectIterator>d__5`2.MoveNext() - bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) - bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\MsTest\Addition.feature:Zeile 34. +System.FormatException: Input string was not in a correct format. + at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) + at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) + at System.String.System.IConvertible.ToInt32(IFormatProvider provider) + at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(Type typeToConvertTo, Object value, CultureInfo cultureInfo) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(IBindingType typeToConvertTo, Object value, CultureInfo cultureInfo) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.Convert(Object value, IBindingType typeToConvertTo, CultureInfo cultureInfo) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ConvertArg(Object value, IBindingType typeToConvertTo) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.<>c__DisplayClass5.<GetExecuteArguments>b__4(Object arg, Int32 argIndex) + at System.Linq.Enumerable.<SelectIterator>d__5`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.AdditionFeature.FailToAddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\MsTest\Addition.feature:line 34 - - + + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -150,19 +150,19 @@ namespace MyNamespace } } - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.AdditionFeature.NotAutomatedAddingTwoNumbers() in c:\Development\pickles-testresults\TestHarness\MsTest\Addition.feature:Zeile 46. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.AdditionFeature.NotAutomatedAddingTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\MsTest\Addition.feature:line 46 - + Given the background step fails -> error: @@ -189,22 +189,22 @@ Shouldly.ChuckedAWobbly: 2 but was 1 - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\AdditionSteps.cs:Zeile 25. - bei lambda_method(Closure , IContextManager ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature:Zeile 12. + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\AdditionSteps.cs:line 25 + at lambda_method(Closure , IContextManager ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\MsTest\FailingBackground.feature:line 12 - + Given the background step fails -> error: @@ -233,23 +233,23 @@ Shouldly.ChuckedAWobbly: 2 but was 1 - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\AdditionSteps.cs:Zeile 25. - bei lambda_method(Closure , IContextManager ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature:Zeile 19. - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers_60() in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature.cs:Zeile 0. + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\AdditionSteps.cs:line 25 + at lambda_method(Closure , IContextManager ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\FailingBackground.feature:line 19 + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers_60() - + Given the background step fails -> error: @@ -278,105 +278,23 @@ Shouldly.ChuckedAWobbly: 2 but was 1 - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\AdditionSteps.cs:Zeile 25. - bei lambda_method(Closure , IContextManager ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature:Zeile 19. - bei Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers_40() in c:\Development\pickles-testresults\TestHarness\MsTest\FailingBackground.feature.cs:Zeile 0. + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\AdditionSteps.cs:line 25 + at lambda_method(Closure , IContextManager ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\FailingBackground.feature:line 19 + at Pickles.TestHarness.MsTest.FailingBackgroundFeature.AddingSeveralNumbers_40() - - - Then passing step --> done: MinimalSteps.ThenPassingStep() (0,0s) - - - - - Then inconclusive step --> pending: MinimalSteps.ThenInconclusiveStep() - - Assert.Inconclusive failed. One or more step definitions are not implemented yet. - MinimalSteps.ThenInconclusiveStep() - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() in c:\Development\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature:Zeile 7. - - - - - - - Then failing step --> error: - true - should be - False - but was - True - - Test method Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario threw exception: -Shouldly.ChuckedAWobbly: - true - should be - False - but was - True - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.MinimalFeatures.MinimalSteps.ThenFailingStep() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\MinimalFeatures\MinimalSteps.cs:Zeile 24. - bei lambda_method(Closure , IContextManager ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in c:\Development\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature:Zeile 10. - - - - - - - Then passing step --> done: MinimalSteps.ThenPassingStep() (0,0s) - - - - - Then inconclusive step --> pending: MinimalSteps.ThenInconclusiveStep() - - Assert.Inconclusive failed. One or more step definitions are not implemented yet. - MinimalSteps.ThenInconclusiveStep() - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\Minimal Features\Inconclusive.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() in c:\Development\pickles-testresults\TestHarness\MsTest\Minimal Features\Inconclusive.feature:Zeile 7. - - - - - + Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -439,19 +357,19 @@ namespace MyNamespace } } - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario1() in c:\Development\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:Zeile 9. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario1() in C:\DevProjects\Tools\pickles\test-harness\MsTest\NotAutomatedAtAll.feature:line 9 - + Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -514,19 +432,19 @@ namespace MyNamespace } } - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario2() in c:\Development\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:Zeile 14. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario2() in C:\DevProjects\Tools\pickles\test-harness\MsTest\NotAutomatedAtAll.feature:line 14 - + Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -589,87 +507,81 @@ namespace MyNamespace } } - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario3() in c:\Development\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:Zeile 19. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario3() in C:\DevProjects\Tools\pickles\test-harness\MsTest\NotAutomatedAtAll.feature:line 19 - - - Then passing step --> done: MinimalSteps.ThenPassingStep() (0,0s) - - - + Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) - + Then the scenario will 'pass_2' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) - + Then the scenario will 'pass_3' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) - + Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) - + Then the scenario will 'pass_2' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) - + Then the scenario will 'inconclusive_1' -> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") Assert.Inconclusive failed. One or more step definitions are not implemented yet. ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:Zeile 21. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive_Inconclusive_1() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\ScenarioOutlines.feature:line 21 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive_Inconclusive_1() - + Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) - + Then the scenario will 'pass_2' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) - + Then the scenario will 'fail_1' -> error: @@ -686,75 +598,75 @@ Shouldly.ChuckedAWobbly: False but was True - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Development\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:Zeile 21. - bei lambda_method(Closure , IContextManager , String ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:Zeile 34. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails_Fail_1() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at lambda_method(Closure , IContextManager , String ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\ScenarioOutlines.feature:line 34 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails_Fail_1() - + Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) - + Then the scenario will 'pass_2' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) - + Then the scenario will 'inconclusive_1' -> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") Assert.Inconclusive failed. One or more step definitions are not implemented yet. ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:Zeile 45. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_1() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_1() - + Then the scenario will 'inconclusive_2' -> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") Assert.Inconclusive failed. One or more step definitions are not implemented yet. ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") - bei lambda_method(Closure , String , Object[] ) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - bei TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - bei TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:Zeile 45. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_2() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_2() - + Then the scenario will 'fail_1' -> error: @@ -771,23 +683,23 @@ Shouldly.ChuckedAWobbly: False but was True - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Development\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:Zeile 21. - bei lambda_method(Closure , IContextManager , String ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:Zeile 45. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_1() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at lambda_method(Closure , IContextManager , String ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_1() - + Then the scenario will 'fail_2' -> error: @@ -804,35 +716,35 @@ Shouldly.ChuckedAWobbly: False but was True - bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Development\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:Zeile 21. - bei lambda_method(Closure , IContextManager , String ) - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:Zeile 45. - bei Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_2() in c:\Development\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:Zeile 0. + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at lambda_method(Closure , IContextManager , String ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_2() - + When I have backslashes in the value, for example a 'c:\Temp\' -> done: ScenarioOutlineSteps.WhenIHaveBackslashesInTheValueForExampleAFilePath("c:\Temp\") (0,0s) - + When I have parenthesis in the value, for example an 'This is a description (and more)' -> done: ScenarioOutlineSteps.WhenIHaveParenthesisInTheValueForExampleAnOverlyDescriptiveField("This is a descrip...") (0,0s) - + When I have a field with value 'Please enter a valid two letter country code (e.g. DE)!' -> done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("Please enter a va...") (0,0s) @@ -842,8 +754,8 @@ Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) - - + + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -857,7 +769,7 @@ Then the result should be 120 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(120) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -865,7 +777,7 @@ Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -875,7 +787,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -885,7 +797,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -895,7 +807,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -905,7 +817,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -915,7 +827,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -925,7 +837,7 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -935,249 +847,375 @@ Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) + + + Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) + + + + + Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) + + + + + Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) + + + + + Then inconclusive step +-> pending: MinimalSteps.ThenInconclusiveStep() + + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() in C:\DevProjects\Tools\pickles\test-harness\MsTest\Minimal Features\Failing.feature:line 7 + + + + + + + Then failing step +-> error: + true + should be + False + but was + True + + Test method Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario threw exception: +Shouldly.ChuckedAWobbly: + true + should be + False + but was + True + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.MinimalFeatures.MinimalSteps.ThenFailingStep() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\MinimalFeatures\MinimalSteps.cs:line 24 + at lambda_method(Closure , IContextManager ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in C:\DevProjects\Tools\pickles\test-harness\MsTest\Minimal Features\Failing.feature:line 10 + + + + + + + Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) + + + + + Then inconclusive step +-> pending: MinimalSteps.ThenInconclusiveStep() + + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() + at Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() in C:\DevProjects\Tools\pickles\test-harness\MsTest\Minimal Features\Inconclusive.feature:line 7 + + + + + + + Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) + + - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - Test 'IgnoredAddingTwoNumbers' was skipped in the test run.Test 'NotAutomatedAddingTwoNumbers' was skipped in the test run.Test 'FailingFeatureInconclusiveScenario' was skipped in the test run.Test 'InconclusiveFeatureInconclusiveScenario' was skipped in the test run.Test 'NotAutomatedScenario1' was skipped in the test run.Test 'NotAutomatedScenario2' was skipped in the test run.Test 'NotAutomatedScenario3' was skipped in the test run.Test 'ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive_Inconclusive_1' was skipped in the test run.Test 'AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_1' was skipped in the test run.Test 'AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_2' was skipped in the test run. + Test 'IgnoredAddingTwoNumbers' was skipped in the test run.Test 'NotAutomatedAddingTwoNumbers' was skipped in the test run.Test 'NotAutomatedScenario1' was skipped in the test run.Test 'NotAutomatedScenario2' was skipped in the test run.Test 'NotAutomatedScenario3' was skipped in the test run.Test 'ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive_Inconclusive_1' was skipped in the test run.Test 'AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_1' was skipped in the test run.Test 'AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_2' was skipped in the test run.Test 'FailingFeatureInconclusiveScenario' was skipped in the test run.Test 'InconclusiveFeatureInconclusiveScenario' was skipped in the test run. \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/WhenParsingxUnitResultsFile.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/WhenParsingxUnitResultsFile.cs index c738dc9c6..7a9ca4540 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/WhenParsingxUnitResultsFile.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/WhenParsingxUnitResultsFile.cs @@ -123,5 +123,17 @@ public WhenParsingxUnitResultsFile() { base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithUmlauts() + { + base.ThenCanReadResultOfScenarioOutlineWithUmlauts(); + } + + [Test] + public new void ThenCanReadResultOfScenarioOutlineWithAmpersand() + { + base.ThenCanReadResultOfScenarioOutlineWithAmpersand(); + } } } diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/results-example-xunit.xml b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/results-example-xunit.xml index 58f1d8520..a58156a34 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/results-example-xunit.xml +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit1/results-example-xunit.xml @@ -1,4 +1,38 @@ -Given the calculator has clean memory +Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 60 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(60) (0,0s) +And I have entered 70 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) +And I have entered 130 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(130) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 260 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) +Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 40 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(40) (0,0s) +And I have entered 50 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) +And I have entered 90 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(90) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 180 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) +Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 1 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) +And I have entered 2 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 3 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) +IgnoredGiven the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -52,43 +86,10 @@ namespace MyNamespace } } } - bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.AdditionFeature.NotAutomatedAddingTwoNumbers() in c:\Development\pickles-testresults\TestHarness\xunit\Addition.feature:Zeile 46.IgnoredGiven the calculator has clean memory --> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 40 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(40) (0,0s) -And I have entered 50 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) -And I have entered 90 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(90) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 180 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) -Given the calculator has clean memory --> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 60 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(60) (0,0s) -And I have entered 70 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) -And I have entered 130 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(130) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 260 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) -Given the calculator has clean memory --> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 1 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) -And I have entered 2 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 3 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) -Given the calculator has clean memory + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.AdditionFeature.NotAutomatedAddingTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\xunit\Addition.feature:line 46Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given I have entered 1 into the calculator -> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) @@ -97,19 +98,19 @@ And I have entered 2.2 into the calculator When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) Then the result should be 3.2 on the screen --> error: Die Eingabezeichenfolge hat das falsche Format. -System.FormatException : Die Eingabezeichenfolge hat das falsche Format. bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) - bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) - bei System.String.System.IConvertible.ToInt32(IFormatProvider provider) - bei System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) - bei System.Linq.Enumerable.<SelectIterator>d__5`2.MoveNext() - bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) - bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\xunit\Addition.feature:Zeile 34.Given the background step fails +-> error: Input string was not in a correct format. +System.FormatException : Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) + at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) + at System.String.System.IConvertible.ToInt32(IFormatProvider provider) + at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) + at System.Linq.Enumerable.<SelectIterator>d__5`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.AdditionFeature.FailToAddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\xunit\Addition.feature:line 34Given the background step fails -> error: 1 should be @@ -118,30 +119,30 @@ Then the result should be 3.2 on the screen 1 And the calculator has clean memory -> skipped because of previous errors -Given I have entered 40 into the calculator +Given I have entered 60 into the calculator -> skipped because of previous errors -And I have entered 50 into the calculator +And I have entered 70 into the calculator -> skipped because of previous errors -And I have entered 90 into the calculator +And I have entered 130 into the calculator -> skipped because of previous errors When I press add -> skipped because of previous errors -Then the result should be 180 on the screen +Then the result should be 260 on the screen -> skipped because of previous errors Shouldly.ChuckedAWobbly : 1 should be 2 but was - 1 bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\AdditionSteps.cs:Zeile 25. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.FailingBackgroundFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\FailingBackground.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\FailingBackground.feature:Zeile 19.Given the background step fails + 1 at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\AdditionSteps.cs:line 25 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.FailingBackgroundFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\FailingBackground.feature:line 19Given the background step fails -> error: 1 should be @@ -150,30 +151,30 @@ Then the result should be 180 on the screen 1 And the calculator has clean memory -> skipped because of previous errors -Given I have entered 60 into the calculator +Given I have entered 40 into the calculator -> skipped because of previous errors -And I have entered 70 into the calculator +And I have entered 50 into the calculator -> skipped because of previous errors -And I have entered 130 into the calculator +And I have entered 90 into the calculator -> skipped because of previous errors When I press add -> skipped because of previous errors -Then the result should be 260 on the screen +Then the result should be 180 on the screen -> skipped because of previous errors Shouldly.ChuckedAWobbly : 1 should be 2 but was - 1 bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\AdditionSteps.cs:Zeile 25. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.FailingBackgroundFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\FailingBackground.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\FailingBackground.feature:Zeile 19.Given the background step fails + 1 at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\AdditionSteps.cs:line 25 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.FailingBackgroundFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.FailingBackgroundFeature.AddingSeveralNumbers(String firstNumber, String secondNumber, String thirdNumber, String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\FailingBackground.feature:line 19Given the background step fails -> error: 1 should be @@ -195,51 +196,15 @@ Then the result should be 120 on the screen should be 2 but was - 1 bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\AdditionSteps.cs:Zeile 25. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.FailingBackgroundFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\FailingBackground.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.FailingBackgroundFeature.AddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\xunit\FailingBackground.feature:Zeile 12.Then failing step --> error: - true - should be - False - but was - True -Shouldly.ChuckedAWobbly : - true - should be - False - but was - True bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.MinimalFeatures.MinimalSteps.ThenFailingStep() in c:\Development\pickles-testresults\TestHarness\AutomationLayer\MinimalFeatures\MinimalSteps.cs:Zeile 24. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in c:\Development\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature:Zeile 10.Then inconclusive step --> pending: MinimalSteps.ThenInconclusiveStep() -TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. - MinimalSteps.ThenInconclusiveStep() bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() in c:\Development\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature:Zeile 7.Then passing step --> done: MinimalSteps.ThenPassingStep() (0,0s) -Then inconclusive step --> pending: MinimalSteps.ThenInconclusiveStep() -TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. - MinimalSteps.ThenInconclusiveStep() bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\Minimal Features\Inconclusive.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() in c:\Development\pickles-testresults\TestHarness\xunit\Minimal Features\Inconclusive.feature:Zeile 7.Then passing step --> done: MinimalSteps.ThenPassingStep() (0,0s) -Then passing step --> done: MinimalSteps.ThenPassingStep() (0,0s) -Given unimplemented step + 1 at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.AdditionSteps.GivenTheBackgroundStepFails() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\AdditionSteps.cs:line 25 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.FailingBackgroundFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.FailingBackgroundFeature.AddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\xunit\FailingBackground.feature:line 12Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: [Given(@"unimplemented step")] public void GivenUnimplementedStep() @@ -299,9 +264,10 @@ namespace MyNamespace } } } - bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario2() in c:\Development\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature:Zeile 14.Given unimplemented step + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario3() in C:\DevProjects\Tools\pickles\test-harness\xunit\NotAutomatedAtAll.feature:line 19Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: [Given(@"unimplemented step")] public void GivenUnimplementedStep() @@ -361,9 +327,10 @@ namespace MyNamespace } } } - bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario1() in c:\Development\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature:Zeile 9.Given unimplemented step + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario1() in C:\DevProjects\Tools\pickles\test-harness\xunit\NotAutomatedAtAll.feature:line 9Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: [Given(@"unimplemented step")] public void GivenUnimplementedStep() @@ -423,9 +390,23 @@ namespace MyNamespace } } } - bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario3() in c:\Development\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature:Zeile 19.Then the scenario will 'fail_1' + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario2() in C:\DevProjects\Tools\pickles\test-harness\xunit\NotAutomatedAtAll.feature:line 14Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +Then the scenario will 'inconclusive_1' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\ScenarioOutlines.feature:line 21Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +Then the scenario will 'fail_1' -> error: true should be @@ -437,38 +418,29 @@ namespace MyNamespace should be False but was - True bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Development\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:Zeile 21. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:Zeile 34.Then the scenario will 'pass_2' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -Then the scenario will 'pass_1' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -When I have backslashes in the value, for example a 'c:\Temp\' --> done: ScenarioOutlineSteps.WhenIHaveBackslashesInTheValueForExampleAFilePath("c:\Temp\") (0,0s) -When I have parenthesis in the value, for example an 'This is a description (and more)' --> done: ScenarioOutlineSteps.WhenIHaveParenthesisInTheValueForExampleAnOverlyDescriptiveField("This is a descrip...") (0,0s) -Then the scenario will 'pass_1' + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\ScenarioOutlines.feature:line 34Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -Then the scenario will 'pass_2' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -Then the scenario will 'pass_3' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) -Then the scenario will 'pass_2' +Then the scenario will 'pass_2' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -Then the scenario will 'inconclusive_1' +Then the scenario will 'inconclusive_1' -> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. - ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:Zeile 21.Then the scenario will 'pass_1' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -Then the scenario will 'fail_1' + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'inconclusive_2' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'fail_1' -> error: true should be @@ -480,20 +452,15 @@ namespace MyNamespace should be False but was - True bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Development\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:Zeile 21. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:Zeile 45.Then the scenario will 'inconclusive_2' --> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") -TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. - ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:Zeile 45.Then the scenario will 'fail_2' + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'fail_2' -> error: true should be @@ -505,51 +472,48 @@ namespace MyNamespace should be False but was - True bei Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:Zeile 18. - bei Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:Zeile 17. - bei AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Development\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:Zeile 21. - bei TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:Zeile 45.Then the scenario will 'pass_2' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) -Then the scenario will 'inconclusive_1' --> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") -TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. - ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") bei TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Development\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:Zeile 45.Then the scenario will 'pass_1' + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in C:\DevProjects\Tools\pickles\test-harness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +Then the scenario will 'pass_3' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) +When I have parenthesis in the value, for example an 'This is a description (and more)' +-> done: ScenarioOutlineSteps.WhenIHaveParenthesisInTheValueForExampleAnOverlyDescriptiveField("This is a descrip...") (0,0s) When I have a field with value 'Please enter a valid two letter country code (e.g. DE)!' -> done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("Please enter a va...") (0,0s) And I have a field with value 'This is just a very very very veery long error message!' -> done: ScenarioOutlineSteps.WhenIHaveAFieldWithValue("This is just a ve...") (0,0s) Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -Given the calculator has clean memory +When I have backslashes in the value, for example a 'c:\Temp\' +-> done: ScenarioOutlineSteps.WhenIHaveBackslashesInTheValueForExampleAFilePath("c:\Temp\") (0,0s) +Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Then the scenario will 'pass_1' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) -Given the calculator has clean memory --> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '{}' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("{}") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -Given the calculator has clean memory +Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '()' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("()") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -Given the calculator has clean memory +Given I have entered 50 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) +And I have entered 70 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 120 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(120) (0,0s) +Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -When I have special characters for regexes in the value, for example a '^.*(?<foo>BAR)\s[^0-9]{3,4}A+$' --> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("^.*(?<foo>BAR)\s[...") (0,0s) -Then the scenario will 'PASS' --> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) When I have special characters for regexes in the value, for example a '**' @@ -574,14 +538,62 @@ When I have special characters for regexes in the value, for example a '[]' -> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("[]") (0,0s) Then the scenario will 'PASS' -> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) -Given the calculator has clean memory +Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 50 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) -And I have entered 70 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(70) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 120 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(120) (0,0s) +When I have special characters for regexes in the value, for example a '{}' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("{}") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '()' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("()") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +When I have special characters for regexes in the value, for example a '^.*(?<foo>BAR)\s[^0-9]{3,4}A+$' +-> done: ScenarioOutlineSteps.WhenIHaveSpecialCharactersForRegexesInTheValueForExampleARegex("^.*(?<foo>BAR)\s[...") (0,0s) +Then the scenario will 'PASS' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("PASS") (0,0s) +Given the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then failing step +-> error: + true + should be + False + but was + True +Shouldly.ChuckedAWobbly : + true + should be + False + but was + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.MinimalFeatures.MinimalSteps.ThenFailingStep() in C:\DevProjects\Tools\pickles\test-harness\AutomationLayer\MinimalFeatures\MinimalSteps.cs:line 24 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in C:\DevProjects\Tools\pickles\test-harness\xunit\Minimal Features\Failing.feature:line 10Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) +Then inconclusive step +-> pending: MinimalSteps.ThenInconclusiveStep() +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() in C:\DevProjects\Tools\pickles\test-harness\xunit\Minimal Features\Failing.feature:line 7Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) +Then inconclusive step +-> pending: MinimalSteps.ThenInconclusiveStep() +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at Pickles.TestHarness.xunit.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() in C:\DevProjects\Tools\pickles\test-harness\xunit\Minimal Features\Inconclusive.feature:line 7Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/WhenParsingxUnit2ResultsFile.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/WhenParsingxUnit2ResultsFile.cs index 21049ca06..ac2ca1e3f 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/WhenParsingxUnit2ResultsFile.cs +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/WhenParsingxUnit2ResultsFile.cs @@ -123,5 +123,5 @@ public WhenParsingxUnit2ResultsFile() { base.ThenCanReadResultOfScenarioOutlineWithSpecialCharacters(); } - } + } } diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/results-example-xunit2.xml b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/results-example-xunit2.xml index b7e7778ef..a961c0049 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/results-example-xunit2.xml +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/XUnit/XUnit2/results-example-xunit2.xml @@ -1,446 +1,450 @@  - + - - + + - - + + - - - - - + - - + + - - + + - + + + - - + + - - - - - - - + - - + + - + - - + + - - - - - - - + - - + + - - - + - - + + - + - - + + - + - - + + - + - - + + - - - - - + - - + + - + + + - - + + + + + + - + - - + + + + + + - + - - + + + + + + - + + + - - + + - - - - - + + + - - + + - + - - + + - + - + - - + + - - + + - + + + - - + + - + - - + + - - - - - + - - + + + + + + - + - - + + - - - - - + - - + + + - + - - + + + + + d__5`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit2.AdditionFeature.ScenarioCleanup() + at Pickles.TestHarness.xunit2.AdditionFeature.FailToAddTwoNumbers() in C:\DevProjects\Tools\pickles\test-harness\xunit2\Addition.feature:line 34]]> + - - + + - - + + - - - + + + - + - - + + - - - + + + - + - - + + - - - + + + - - + + - - - - - - - - - - - - - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + + + + + - + - - + + - - - + - - + + - + - - + + - + - - + + - - + + - + - - + + - + - - + + - - + - - + + - - - d__5`2.MoveNext() - bei System.Linq.Buffer`1..ctor(IEnumerable`1 source) - bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - bei TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - bei Pickles.TestHarness.xunit2.AdditionFeature.ScenarioCleanup() in c:\Development\pickles-testresults\TestHarness\xunit2\Addition.feature.cs:Zeile 0. - bei Pickles.TestHarness.xunit2.AdditionFeature.FailToAddTwoNumbers() in c:\Development\pickles-testresults\TestHarness\xunit2\Addition.feature:Zeile 34.]]> + + + - - - + - - + + + + + + - + - - + + - + - + - - + + - - - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks/SpecFlowNameMapping.cs b/src/Pickles/Pickles.TestFrameworks/SpecFlowNameMapping.cs index 66b00dd3f..fb679fa77 100644 --- a/src/Pickles/Pickles.TestFrameworks/SpecFlowNameMapping.cs +++ b/src/Pickles/Pickles.TestFrameworks/SpecFlowNameMapping.cs @@ -7,11 +7,20 @@ internal static class SpecFlowNameMapping private static readonly Regex PunctuationCharactersRegex = new Regex(@"[\n\.-]+", RegexOptions.Compiled); private static readonly Regex NonIdentifierCharacterRegex = new Regex(@"[^\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}\p{Pc}]", RegexOptions.Compiled); - public static string Build(string name) + public static string Build(string name) { name = PunctuationCharactersRegex.Replace(name, "_"); name = NonIdentifierCharacterRegex.Replace(name, string.Empty); - return name; + name = name + .Replace('ä', 'a') + .Replace('ö', 'o') + .Replace('ü', 'u') + .Replace('Ä', 'A') + .Replace('Ö', 'O') + .Replace('Ãœ', 'U') + .Replace('ß', 'b'); + + return name; } } } diff --git a/src/Pickles/Pickles.TestFrameworks/VsTest/VsTestScenarioOutlineExampleMatcher.cs b/src/Pickles/Pickles.TestFrameworks/VsTest/VsTestScenarioOutlineExampleMatcher.cs index 96b179b09..a35cc3076 100644 --- a/src/Pickles/Pickles.TestFrameworks/VsTest/VsTestScenarioOutlineExampleMatcher.cs +++ b/src/Pickles/Pickles.TestFrameworks/VsTest/VsTestScenarioOutlineExampleMatcher.cs @@ -38,12 +38,17 @@ public bool IsMatch(ScenarioOutline scenarioOutline, string[] exampleValues, obj .Replace(")", string.Empty) .Replace(".", "_") .Replace("!", string.Empty) - .ToUpperInvariant(); + .Replace("&", string.Empty) + .ToUpperInvariant() + .Replace("Ä", "A") + .Replace("Ö", "O") + .Replace("Ãœ", "U") + .Replace("ß", "B"); - var isMatch = element.Name().ToUpperInvariant() + var isMatch = element.Name().ToUpperInvariant() .EndsWith(matchValue); return isMatch; } } -} \ No newline at end of file +} diff --git a/test-harness/Cucumber/features/ScenariosWithSpecialCharacters.feature b/test-harness/Cucumber/features/ScenariosWithSpecialCharacters.feature index 408724653..ae331c2f2 100644 --- a/test-harness/Cucumber/features/ScenariosWithSpecialCharacters.feature +++ b/test-harness/Cucumber/features/ScenariosWithSpecialCharacters.feature @@ -30,4 +30,18 @@ Scenario Outline: This scenario contains examples with Regex-special characters | [] | | {} | | () | - | ^.*(?BAR)\s[^0-9]{3,4}A+$ | \ No newline at end of file + | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +Scenario Outline: This is a scenario outline with ampersand & + Then the scenario will '' + + Examples: + | result | + | pass_1 | \ No newline at end of file diff --git a/test-harness/CucumberJS/features/ScenariosWithSpecialCharacters.feature b/test-harness/CucumberJS/features/ScenariosWithSpecialCharacters.feature index 408724653..ae331c2f2 100644 --- a/test-harness/CucumberJS/features/ScenariosWithSpecialCharacters.feature +++ b/test-harness/CucumberJS/features/ScenariosWithSpecialCharacters.feature @@ -30,4 +30,18 @@ Scenario Outline: This scenario contains examples with Regex-special characters | [] | | {} | | () | - | ^.*(?BAR)\s[^0-9]{3,4}A+$ | \ No newline at end of file + | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +Scenario Outline: This is a scenario outline with ampersand & + Then the scenario will '' + + Examples: + | result | + | pass_1 | \ No newline at end of file diff --git a/test-harness/MsTest/ScenariosWithSpecialCharacters.feature b/test-harness/MsTest/ScenariosWithSpecialCharacters.feature index eec8f83ed..54a9b1d11 100644 --- a/test-harness/MsTest/ScenariosWithSpecialCharacters.feature +++ b/test-harness/MsTest/ScenariosWithSpecialCharacters.feature @@ -31,3 +31,17 @@ Scenario Outline: This scenario contains examples with Regex-special characters | {} | | () | | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +Scenario Outline: This is a scenario outline with ampersand & + Then the scenario will '' + + Examples: + | result | + | pass_1 | \ No newline at end of file diff --git a/test-harness/MsTest/ScenariosWithSpecialCharacters.feature.cs b/test-harness/MsTest/ScenariosWithSpecialCharacters.feature.cs index 943ea099e..0f3bc1cf1 100644 --- a/test-harness/MsTest/ScenariosWithSpecialCharacters.feature.cs +++ b/test-harness/MsTest/ScenariosWithSpecialCharacters.feature.cs @@ -205,6 +205,52 @@ public virtual void ThisScenarioContainsExamplesWithRegex_SpecialCharacters_Vari { this.ThisScenarioContainsExamplesWithRegex_SpecialCharacters("^.*(?BAR)\\s[^0-9]{3,4}A+$", ((string[])(null))); } + + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with german umlauts äöüß ÄÖÜ", exampleTags); +#line 35 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 36 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("This is a scenario outline with german umlauts äöüß ÄÖÜ")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Scenarios With Special Characters")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "pass_1")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:result", "pass_1")] + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU_Pass_1() + { + this.ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU("pass_1", ((string[])(null))); + } + + public virtual void ThisIsAScenarioOutlineWithAmpersand(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with ampersand &", exampleTags); +#line 42 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 43 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("This is a scenario outline with ampersand &")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Scenarios With Special Characters")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "pass_1")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:result", "pass_1")] + public virtual void ThisIsAScenarioOutlineWithAmpersand_Pass_1() + { + this.ThisIsAScenarioOutlineWithAmpersand("pass_1", ((string[])(null))); + } } } #pragma warning restore diff --git a/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature b/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature index 522ffd274..47ee7379e 100644 --- a/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature +++ b/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature @@ -30,4 +30,19 @@ Scenario Outline: This scenario contains examples with Regex-special characters | [] | | {} | | () | - | ^.*(?BAR)\s[^0-9]{3,4}A+$ | \ No newline at end of file + | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +#Excluding this test, because & is not properly encoded in the result so that xml-parsing fails +#Scenario Outline: This is a scenario outline with ampersand & +# Then the scenario will '' +# +# Examples: +# | result | +# | pass_1 | \ No newline at end of file diff --git a/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature.cs b/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature.cs index ceb9ab4f9..062c7c66a 100644 --- a/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature.cs +++ b/test-harness/SpecRun/ScenariosWithSpecialCharacters.feature.cs @@ -167,6 +167,25 @@ public virtual void ThisScenarioContainsExamplesWithRegex_SpecialCharacters_Vari this.ThisScenarioContainsExamplesWithRegex_SpecialCharacters("^.*(?BAR)\\s[^0-9]{3,4}A+$", ((string[])(null))); } + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with german umlauts äöüß ÄÖÜ", exampleTags); +#line 35 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 36 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [TechTalk.SpecRun.ScenarioAttribute("This is a scenario outline with german umlauts äöüß ÄÖÜ, pass_1", SourceLine=39)] + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU_Pass_1() + { + this.ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU("pass_1", ((string[])(null))); + } + [TechTalk.SpecRun.TestRunCleanup()] public virtual void TestRunCleanup() { diff --git a/test-harness/nunit/ScenariosWithSpecialCharacters.feature b/test-harness/nunit/ScenariosWithSpecialCharacters.feature index 522ffd274..54a9b1d11 100644 --- a/test-harness/nunit/ScenariosWithSpecialCharacters.feature +++ b/test-harness/nunit/ScenariosWithSpecialCharacters.feature @@ -30,4 +30,18 @@ Scenario Outline: This scenario contains examples with Regex-special characters | [] | | {} | | () | - | ^.*(?BAR)\s[^0-9]{3,4}A+$ | \ No newline at end of file + | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +Scenario Outline: This is a scenario outline with ampersand & + Then the scenario will '' + + Examples: + | result | + | pass_1 | \ No newline at end of file diff --git a/test-harness/nunit/ScenariosWithSpecialCharacters.feature.cs b/test-harness/nunit/ScenariosWithSpecialCharacters.feature.cs index 7c8caaf96..510cacc08 100644 --- a/test-harness/nunit/ScenariosWithSpecialCharacters.feature.cs +++ b/test-harness/nunit/ScenariosWithSpecialCharacters.feature.cs @@ -129,6 +129,38 @@ public virtual void ThisScenarioContainsExamplesWithRegex_SpecialCharacters(stri testRunner.When(string.Format("I have special characters for regexes in the value, for example a \'{0}\'", regex), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line 23 testRunner.Then("the scenario will \'PASS\'", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("This is a scenario outline with german umlauts äöüß ÄÖÜ")] + [NUnit.Framework.TestCaseAttribute("pass_1", null)] + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with german umlauts äöüß ÄÖÜ", exampleTags); +#line 35 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 36 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("This is a scenario outline with ampersand &")] + [NUnit.Framework.TestCaseAttribute("pass_1", null)] + public virtual void ThisIsAScenarioOutlineWithAmpersand(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with ampersand &", exampleTags); +#line 42 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 43 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden this.ScenarioCleanup(); } diff --git a/test-harness/nunit3/ScenariosWithSpecialCharacters.feature b/test-harness/nunit3/ScenariosWithSpecialCharacters.feature index 522ffd274..54a9b1d11 100644 --- a/test-harness/nunit3/ScenariosWithSpecialCharacters.feature +++ b/test-harness/nunit3/ScenariosWithSpecialCharacters.feature @@ -30,4 +30,18 @@ Scenario Outline: This scenario contains examples with Regex-special characters | [] | | {} | | () | - | ^.*(?BAR)\s[^0-9]{3,4}A+$ | \ No newline at end of file + | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +Scenario Outline: This is a scenario outline with ampersand & + Then the scenario will '' + + Examples: + | result | + | pass_1 | \ No newline at end of file diff --git a/test-harness/nunit3/ScenariosWithSpecialCharacters.feature.cs b/test-harness/nunit3/ScenariosWithSpecialCharacters.feature.cs index 233aa443f..98874c9e0 100644 --- a/test-harness/nunit3/ScenariosWithSpecialCharacters.feature.cs +++ b/test-harness/nunit3/ScenariosWithSpecialCharacters.feature.cs @@ -129,6 +129,38 @@ public virtual void ThisScenarioContainsExamplesWithRegex_SpecialCharacters(stri testRunner.When(string.Format("I have special characters for regexes in the value, for example a \'{0}\'", regex), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line 23 testRunner.Then("the scenario will \'PASS\'", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("This is a scenario outline with german umlauts äöüß ÄÖÜ")] + [NUnit.Framework.TestCaseAttribute("pass_1", null)] + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with german umlauts äöüß ÄÖÜ", exampleTags); +#line 35 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 36 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("This is a scenario outline with ampersand &")] + [NUnit.Framework.TestCaseAttribute("pass_1", null)] + public virtual void ThisIsAScenarioOutlineWithAmpersand(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with ampersand &", exampleTags); +#line 42 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 43 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden this.ScenarioCleanup(); } diff --git a/test-harness/xunit/ScenariosWithSpecialCharacters.feature b/test-harness/xunit/ScenariosWithSpecialCharacters.feature index 15e291a18..dcced7e87 100644 --- a/test-harness/xunit/ScenariosWithSpecialCharacters.feature +++ b/test-harness/xunit/ScenariosWithSpecialCharacters.feature @@ -31,3 +31,18 @@ Scenario Outline: This scenario contains examples with Regex-special characters | {} | | () | | ^.*(?BAR)\s[^0-9]{3,4}A+$ | + + +Scenario Outline: This is a scenario outline with german umlauts äöüß ÄÖÜ + Then the scenario will '' + + Examples: + | result | + | pass_1 | + +Scenario Outline: This is a scenario outline with ampersand & + Then the scenario will '' + + Examples: + | result | + | pass_1 | \ No newline at end of file diff --git a/test-harness/xunit/ScenariosWithSpecialCharacters.feature.cs b/test-harness/xunit/ScenariosWithSpecialCharacters.feature.cs index 15dd7704c..83736476e 100644 --- a/test-harness/xunit/ScenariosWithSpecialCharacters.feature.cs +++ b/test-harness/xunit/ScenariosWithSpecialCharacters.feature.cs @@ -144,6 +144,40 @@ public virtual void ThisScenarioContainsExamplesWithRegex_SpecialCharacters(stri this.ScenarioCleanup(); } + [Xunit.Extensions.TheoryAttribute()] + [Xunit.TraitAttribute("FeatureTitle", "Scenarios With Special Characters")] + [Xunit.TraitAttribute("Description", "This is a scenario outline with german umlauts äöüß ÄÖÜ")] + [Xunit.Extensions.InlineDataAttribute("pass_1", new string[0])] + public virtual void ThisIsAScenarioOutlineWithGermanUmlautsAouBAOU(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with german umlauts äöüß ÄÖÜ", exampleTags); +#line 36 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 37 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + + [Xunit.Extensions.TheoryAttribute()] + [Xunit.TraitAttribute("FeatureTitle", "Scenarios With Special Characters")] + [Xunit.TraitAttribute("Description", "This is a scenario outline with ampersand &")] + [Xunit.Extensions.InlineDataAttribute("pass_1", new string[0])] + public virtual void ThisIsAScenarioOutlineWithAmpersand(string result, string[] exampleTags) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("This is a scenario outline with ampersand &", exampleTags); +#line 43 +this.ScenarioSetup(scenarioInfo); +#line 4 +this.FeatureBackground(); +#line 44 + testRunner.Then(string.Format("the scenario will \'{0}\'", result), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + this.ScenarioCleanup(); + } + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.9.0.77")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class FixtureData : System.IDisposable From 3115b2e627e57f0f7720a060ab643ea3e13e33c9 Mon Sep 17 00:00:00 2001 From: wbagit Date: Thu, 6 Oct 2016 00:29:08 +0800 Subject: [PATCH 11/30] Fix Importing Test Results failure for MsTest (#378) * + fix null featureTreeNode in ApplyTestResultsToFeature + handle null value for GetExampleResults and defaulted to TestResult.Inconclusive * + added extra test scenario for MsTest with ignored ScenarioOutline examples * + refactored LINQ for FeatureNode in ApplyTestResultsToFeatures --- ...singMsTestResultsFileWithIgnoredExample.cs | 65 +++++++++++++++++++ .../results-example-mstest-ignoredexample.trx | 52 +++++++++++++++ .../Pickles.TestFrameworks.UnitTests.csproj | 2 + .../MsTest/MsTestSingleResults.cs | 4 ++ src/Pickles/Pickles/Runner.cs | 3 +- 5 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/WhenParsingMsTestResultsFileWithIgnoredExample.cs create mode 100644 src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/results-example-mstest-ignoredexample.trx diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/WhenParsingMsTestResultsFileWithIgnoredExample.cs b/src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/WhenParsingMsTestResultsFileWithIgnoredExample.cs new file mode 100644 index 000000000..6c4854866 --- /dev/null +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/WhenParsingMsTestResultsFileWithIgnoredExample.cs @@ -0,0 +1,65 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + + +using NUnit.Framework; +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.TestFrameworks.MsTest; +using System.Collections.Generic; +using NFluent; + +namespace PicklesDoc.Pickles.TestFrameworks.UnitTests.MsTest +{ + [TestFixture] + public class WhenParsingMsTestResultsFileWithIgnoredExample : StandardTestSuite + { + public WhenParsingMsTestResultsFileWithIgnoredExample() + : base("MsTest." + "results-example-mstest-ignoredexample.trx") + { + } + + [Test] + public new void ThenIgnoredScenarioOutlineIsSetToInconclusive() + { + var results = ParseResultsFile(); + + var feature = new Feature { Name = "Example With Ignored Scenario Outline" }; + var scenarioOutline = new ScenarioOutline { Name = "Add two numbers", Feature = feature }; + scenarioOutline.Steps = new List(); + + var examples = new Table(); + examples.HeaderRow = new TableRow(); + examples.HeaderRow.Cells.Add("TestCase"); + var row = new TableRow(); + row.Cells.Add("1"); + examples.DataRows = new List(); + examples.DataRows.Add(row); + + scenarioOutline.Examples = new List(); + scenarioOutline.Examples.Add(new Example() { TableArgument = examples }); + + var matchedExampleResult = results.GetExampleResult(scenarioOutline, new string[] { "1" }); + Check.That(matchedExampleResult).IsEqualTo(TestResult.Passed); + + var nonMatchExampleResult = results.GetExampleResult(scenarioOutline, new string[] { "2" }); + Check.That(nonMatchExampleResult).IsEqualTo(TestResult.Inconclusive); + } + } +} diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/results-example-mstest-ignoredexample.trx b/src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/results-example-mstest-ignoredexample.trx new file mode 100644 index 000000000..7dc647925 --- /dev/null +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/MsTest/results-example-mstest-ignoredexample.trx @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + Add two numbers: 1 + + + + FeatureTitle + Example With Ignored Scenario Outline + + + VariantName + 1 + + + Parameter:TestCase + 1 + + + + + + + + + + + + + + + + Given I test +-> done: StepDefinition1.GivenITest() (0.0s) + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj b/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj index ed3d058e5..25ac08130 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj @@ -62,6 +62,7 @@ + @@ -162,6 +163,7 @@ Designer +
diff --git a/src/Pickles/Pickles.TestFrameworks/MsTest/MsTestSingleResults.cs b/src/Pickles/Pickles.TestFrameworks/MsTest/MsTestSingleResults.cs index 6dd57865c..5ec10fd91 100644 --- a/src/Pickles/Pickles.TestFrameworks/MsTest/MsTestSingleResults.cs +++ b/src/Pickles/Pickles.TestFrameworks/MsTest/MsTestSingleResults.cs @@ -137,6 +137,10 @@ public override TestResult GetExampleResult(ScenarioOutline scenario, string[] e var scenarioElements = this.GetScenariosForScenarioOutline(scenario); var theScenario = this.GetScenarioThatMatchesTheExampleValues(scenario, exampleValues, scenarioElements); + if (theScenario == null) + { + return TestResult.Inconclusive; + } Guid executionId = theScenario.ExecutionIdElement(); diff --git a/src/Pickles/Pickles/Runner.cs b/src/Pickles/Pickles/Runner.cs index 7c6ecaf5a..1f8089e86 100644 --- a/src/Pickles/Pickles/Runner.cs +++ b/src/Pickles/Pickles/Runner.cs @@ -70,9 +70,8 @@ private static void ApplyTestResultsToFeatures(IContainer container, IConfigurat { var testResults = container.Resolve(); - foreach (var node in features) + foreach (var featureTreeNode in features.OfType()) { - var featureTreeNode = node as FeatureNode; if (featureTreeNode == null) { return; From 098c6c532d7d165b32c4e1205484ec0d8797d4da Mon Sep 17 00:00:00 2001 From: Sjaaky Date: Fri, 7 Oct 2016 16:41:39 +0200 Subject: [PATCH 12/30] Show parser failures and quit with an error (#379) * Don't swallow exceptions if parsing a feature file throws. If parsing fails we want the build to break. We don't want to silently ignore parts. * Improve NLog layout for console - Don't show datetime, loglevel and logger - Use colors - Show exception messages --- src/Pickles/Pickles.CommandLine/NLog.config | 2 +- .../DirectoryCrawler/DirectoryTreeCrawler.cs | 28 ++----------------- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/src/Pickles/Pickles.CommandLine/NLog.config b/src/Pickles/Pickles.CommandLine/NLog.config index 89a16b6aa..190f888d1 100644 --- a/src/Pickles/Pickles.CommandLine/NLog.config +++ b/src/Pickles/Pickles.CommandLine/NLog.config @@ -6,7 +6,7 @@ for information on customizing logging rules and outputs. --> - + diff --git a/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs b/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs index 13424b27d..e247a8a01 100644 --- a/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs +++ b/src/Pickles/Pickles/DirectoryCrawler/DirectoryTreeCrawler.cs @@ -105,32 +105,8 @@ private bool CollectFiles(DirectoryInfoBase directory, INode rootNode, Tree tree foreach (FileInfoBase file in directory.GetFiles().Where(file => this.relevantFileDetector.IsRelevant(file))) { - INode node = null; - try - { - node = this.featureNodeFactory.Create(rootNode.OriginalLocation, file); - } - catch (Exception ex) - { - if (Log.IsWarnEnabled) - { - // retrieving the name as file.FullName may trigger an exception if the FullName is too long - // so we retreive Name and DirectoryName separately - // https://github.com/picklesdoc/pickles/issues/199 - var fullName = file.Name + " in directory " + file.DirectoryName; - Log.Warn("The file {0} will be ignored because it could not be read in properly", fullName); - } - - if (Log.IsDebugEnabled) - { - Log.Debug(ex, "Exception received"); - } - } - - if (node != null) - { - collectedNodes.Add(node); - } + INode node = this.featureNodeFactory.Create(rootNode.OriginalLocation, file); + collectedNodes.Add(node); } foreach (var node in OrderFileNodes(collectedNodes)) From 1a9fe4ad4d2e9fcc5227cd344ec4c8062ad4d198 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Fri, 7 Oct 2016 17:12:08 +0200 Subject: [PATCH 13/30] Release 2.9.0 (#381) * Release 2.6.3 (#347) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Version Bump * Update change log * Release 2.7.0 (#351) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Release 2.6.3 (#348) * Version Bump * Update change log * Add --enableComments Flag to Command Line - Default to True (#346) * Command-Line Flag --comments - Default to True - Incl Unit Test * Changed Command Line Argument --comments to --enableComments * Added Enable Comments Option to MSBuild - Powershell - WPF Runners * Fixed Bug with enableComments Property Not Being Used in MainViewModel * Add EnableComments to the targets file * Adapt change log * Version bump to 2.7.0 * Release 2.8.0 (#355) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Release 2.6.3 (#348) * Version Bump * Update change log * Add --enableComments Flag to Command Line - Default to True (#346) * Command-Line Flag --comments - Default to True - Incl Unit Test * Changed Command Line Argument --comments to --enableComments * Added Enable Comments Option to MSBuild - Powershell - WPF Runners * Fixed Bug with enableComments Property Not Being Used in MainViewModel * Release 2.7.0 (#352) * Release 2.6.3 (#347) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Version Bump * Update change log * Add EnableComments to the targets file * Adapt change log * Version bump to 2.7.0 * #320 - Scenario Deep Linking - DHTML and HTML Output (#350) * #320 - Scenario Deep Linking - DHTML and HTML Output * #320 - Fix Failing Unit Tests * #320 - Resolved Issue with Image Resource Not Copying * #320 - Add Backward-Compatibility for Hashed Feature Path * #320 - Added Modal Dialog for Link Copy * Edit release notes * Version Bump (2.8.0) * Release 2.8.1 (#360) * Release 2.8.3 (#376) * Delete CNAME as advised by github support * Create CNAME * Get rid of ngenerics (#370) * Use Tree instead of NGenerics.GeneralTree * Use visitor instead of ActionVisitor * Rename Visitor to Traversor * Remove reference to unused NGenerics library * Fix whitespace * Remove NGenerics from nuspecs and build scripts * Get rid of traversor * Compatibility with nunit.console 3.4 and nunit.framework 2.6 (#369) * Compatibility with nunit.console 3.4 and nunit.framework 2.6 * Added example output file and test for nunit 2 tests ran with nunit 3 runner. * Add "NUnit 2 tests run by NUnit 3" to test harness (#371) * Move generation and commit of output to DeployArtifacts (#372) * Added test for sorting when generating word docs (#373) * Added test for sorting when generating word docs * Use stream overloads of WordprocessingDocument * Improve tree (#374) * Add test about sorting * Make it compile * Make it pass * Check for null in constructor * Add test about null names in iteration * Factory method for creating trees * Check for null tree when adding * Add test for null node * Add release notes * Fix some markdown syntax things * Bump version number (2.8.3) * Version 2.8.3 * Version Bump (2.9.0) --- CHANGELOG.md | 11 +++++++++++ build.bat | 2 +- src/Pickles/VersionInfo.cs | 14 ++++++++++---- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a17cb8661..faef42fc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,17 @@ Features in Experimental are subject to change and removal without being conside This document is formatted according to the principles of [Keep A CHANGELOG](http://keepachangelog.com). +## [2.9.0] - 2016-10-07 + +### Changed + +- Show parser failures and quit with an error ([379](https://github.com/picklesdoc/pickles/pull/379)) (by [@Sjaaky](https://github.com/Sjaaky)). + +### Fixed + +- Fix Importing Test Results Failure for MsTest for Ignored Scenarios ([378](https://github.com/picklesdoc/pickles/pull/378)) (by [@wbagit](https://github.com/wbagit)). +- Better Dealing with Special Characters in Scenario Examples ([375](https://github.com/picklesdoc/pickles/pull/375)) (by [@thopark](https://github.com/thopark)). + ## [2.8.3] - 2016-09-28 ### Fixed diff --git a/build.bat b/build.bat index 977a3da05..977b1bb76 100644 --- a/build.bat +++ b/build.bat @@ -1,5 +1,5 @@ @echo off -set "picklesVersion=2.8.3" +set "picklesVersion=2.9.0" cls diff --git a/src/Pickles/VersionInfo.cs b/src/Pickles/VersionInfo.cs index 5502baeed..b531ce311 100644 --- a/src/Pickles/VersionInfo.cs +++ b/src/Pickles/VersionInfo.cs @@ -8,11 +8,17 @@ [assembly: AssemblyTrademarkAttribute("")] [assembly: AssemblyCultureAttribute("")] [assembly: ComVisibleAttribute(false)] -[assembly: AssemblyVersionAttribute("2.8.3")] -[assembly: AssemblyFileVersionAttribute("2.8.3")] +[assembly: AssemblyVersionAttribute("2.9.0")] +[assembly: AssemblyFileVersionAttribute("2.9.0")] namespace System { internal static class AssemblyVersionInformation { - internal const string Version = "2.8.3"; - internal const string InformationalVersion = "2.8.3"; + internal const System.String AssemblyProduct = "Pickles"; + internal const System.String AssemblyCompany = "Pickles"; + internal const System.String AssemblyCopyright = "Copyright (c) Jeffrey Cameron 2010-2012, PicklesDoc 2012-present"; + internal const System.String AssemblyTrademark = ""; + internal const System.String AssemblyCulture = ""; + internal const System.Boolean ComVisible = false; + internal const System.String AssemblyVersion = "2.9.0"; + internal const System.String AssemblyFileVersion = "2.9.0"; } } From bb3f6faf9ef85380d862b413d3187d78d79aecbb Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Fri, 7 Oct 2016 17:49:54 +0200 Subject: [PATCH 14/30] Release 2.9.0 (#382) * Release 2.6.3 (#347) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Version Bump * Update change log * Release 2.7.0 (#351) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Release 2.6.3 (#348) * Version Bump * Update change log * Add --enableComments Flag to Command Line - Default to True (#346) * Command-Line Flag --comments - Default to True - Incl Unit Test * Changed Command Line Argument --comments to --enableComments * Added Enable Comments Option to MSBuild - Powershell - WPF Runners * Fixed Bug with enableComments Property Not Being Used in MainViewModel * Add EnableComments to the targets file * Adapt change log * Version bump to 2.7.0 * Release 2.8.0 (#355) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Release 2.6.3 (#348) * Version Bump * Update change log * Add --enableComments Flag to Command Line - Default to True (#346) * Command-Line Flag --comments - Default to True - Incl Unit Test * Changed Command Line Argument --comments to --enableComments * Added Enable Comments Option to MSBuild - Powershell - WPF Runners * Fixed Bug with enableComments Property Not Being Used in MainViewModel * Release 2.7.0 (#352) * Release 2.6.3 (#347) * Enhancement to support Unix path! (#344) I'm not sure you already got a try or a feedback about it but actually pickles run relatively well under Linux with mono which is interesting when like me you can't get a windows machine. However without this little change we can't get the folder structure display correctly. Could you integrate this modification? Thanks * Version Bump * Update change log * Add EnableComments to the targets file * Adapt change log * Version bump to 2.7.0 * #320 - Scenario Deep Linking - DHTML and HTML Output (#350) * #320 - Scenario Deep Linking - DHTML and HTML Output * #320 - Fix Failing Unit Tests * #320 - Resolved Issue with Image Resource Not Copying * #320 - Add Backward-Compatibility for Hashed Feature Path * #320 - Added Modal Dialog for Link Copy * Edit release notes * Version Bump (2.8.0) * Release 2.8.1 (#360) * Release 2.8.3 (#376) * Delete CNAME as advised by github support * Create CNAME * Get rid of ngenerics (#370) * Use Tree instead of NGenerics.GeneralTree * Use visitor instead of ActionVisitor * Rename Visitor to Traversor * Remove reference to unused NGenerics library * Fix whitespace * Remove NGenerics from nuspecs and build scripts * Get rid of traversor * Compatibility with nunit.console 3.4 and nunit.framework 2.6 (#369) * Compatibility with nunit.console 3.4 and nunit.framework 2.6 * Added example output file and test for nunit 2 tests ran with nunit 3 runner. * Add "NUnit 2 tests run by NUnit 3" to test harness (#371) * Move generation and commit of output to DeployArtifacts (#372) * Added test for sorting when generating word docs (#373) * Added test for sorting when generating word docs * Use stream overloads of WordprocessingDocument * Improve tree (#374) * Add test about sorting * Make it compile * Make it pass * Check for null in constructor * Add test about null names in iteration * Factory method for creating trees * Check for null tree when adding * Add test for null node * Add release notes * Fix some markdown syntax things * Bump version number (2.8.3) * Version 2.8.3 * Version Bump (2.9.0) * Version 2.9.0 --- docs/Output/Dhtml/pickledFeatures.js | 4 ++-- docs/Output/Excel/features.xlsx | Bin 37306 -> 37306 bytes .../Features/00BasicGherkin/BasicGherkin.html | 6 +++--- .../Html/Features/00BasicGherkin/index.html | 6 +++--- .../TestRunnerIsNotImportant.html | 6 +++--- .../Html/Features/01TestRunner/index.html | 6 +++--- .../Html/Features/02TagsAndHooks/Hooks.html | 6 +++--- .../Html/Features/02TagsAndHooks/TagDemo.html | 6 +++--- .../Html/Features/02TagsAndHooks/index.html | 6 +++--- .../031ScenarioContext/ScenarioContext.html | 6 +++--- .../Features/031ScenarioContext/index.html | 6 +++--- .../FeatureContextFeatures.html | 6 +++--- .../Features/032FeatureContext/index.html | 6 +++--- .../03ScenarioOutline/ScenarioOutline.html | 6 +++--- .../Features/03ScenarioOutline/index.html | 6 +++--- .../04Background/BackgroundFeature.html | 6 +++--- .../Html/Features/04Background/index.html | 6 +++--- .../05TablesAndAssist/TableScenario.html | 6 +++--- .../Features/05TablesAndAssist/index.html | 6 +++--- .../Features/06CompareToAssist/CompareTo.html | 6 +++--- .../Features/06CompareToAssist/index.html | 6 +++--- .../Html/Features/07Svenska/Svenska.html | 6 +++--- .../Output/Html/Features/07Svenska/index.html | 6 +++--- .../AttributeOverloading.html | 6 +++--- .../08AttributeOverloading/index.html | 6 +++--- .../CallingStepsFromSteps.html | 6 +++--- .../09CallingStepsFromSteps/index.html | 6 +++--- .../StepTransformation.html | 6 +++--- .../Features/10StepTransformation/index.html | 6 +++--- .../11ContextInjection/ContextInjection.html | 6 +++--- .../Features/11ContextInjection/index.html | 6 +++--- .../ChildChildFolder/NestedFolderExample.html | 6 +++--- .../ChildFolder/ChildChildFolder/index.html | 6 +++--- .../12NestedFolders/ChildFolder/index.html | 6 +++--- .../Html/Features/12NestedFolders/index.html | 6 +++--- .../MultilineFeatureExample.html | 6 +++--- .../Html/Features/13MultilineText/index.html | 6 +++--- .../14MarkdownExample/MarkdownExamples.html | 6 +++--- .../Features/14MarkdownExample/index.html | 6 +++--- .../15Pickles/InteractiveDHTMLView.html | 6 +++--- .../Output/Html/Features/15Pickles/index.html | 6 +++--- docs/Output/Html/Features/Arithmetic.html | 6 +++--- docs/Output/Html/Features/Trigonometry.html | 6 +++--- .../Features/Workflow/ClearingScreen.html | 6 +++--- docs/Output/Html/Features/Workflow/index.html | 6 +++--- docs/Output/Html/Features/index.html | 6 +++--- docs/Output/Html/index.html | 6 +++--- docs/Output/Html/readme.html | 6 +++--- docs/Output/JSON/pickledFeatures.json | 4 ++-- docs/Output/Word/Pickles.docx | Bin 13684 -> 13684 bytes docs/Output/Word/features.docx | Bin 13670 -> 13667 bytes docs/index.html | 2 +- 52 files changed, 143 insertions(+), 143 deletions(-) diff --git a/docs/Output/Dhtml/pickledFeatures.js b/docs/Output/Dhtml/pickledFeatures.js index 6f1e0392d..73aabe659 100644 --- a/docs/Output/Dhtml/pickledFeatures.js +++ b/docs/Output/Dhtml/pickledFeatures.js @@ -3016,7 +3016,7 @@ jsonPWrapper ({ }, "Configuration": { "SutName": "Pickles", - "SutVersion": "2.8.3", - "GeneratedOn": "28 September 2016 10:45:41" + "SutVersion": "2.9.0", + "GeneratedOn": "7 Oktober 2016 17:01:27" } }); \ No newline at end of file diff --git a/docs/Output/Excel/features.xlsx b/docs/Output/Excel/features.xlsx index 73fe93281feff79c52ec34d2d187b0c709fffb93..9df5e7bfd899a7efdfba80462452ef3854c1fa2c 100644 GIT binary patch delta 868 zcmdnBm}%EyCf)#VW)=|!1_llWy$<({yuX<^fV5|CLg&=Y0?g)&!pTPFW=W~3$*Cr( z#wIC7CQ1tWllL=6PTtIN%P!f}A~D&*+%P#QDaj`0C1~V3NiVA@lJEgZW zf*FOf$q=dQ3VYeWBGc9XF@YH~v?f3p+PZ2GH6aEwAdL6MhAezwZ`jo``!O>x?B<;u zZy>qZ-J+727bLzabkgVJObiSQCofc&+Wg%56U3xDb`K$p1CFOy!It#8&tL&FG<+68 zq|W+XgfJEcK7cSL;0r4_Qtlf4mzr!|W+qP{+&A}>WipBx8t59BhZve# z85mj_S?F1sTAG?$T2AJ!aKR;&TA>dK;tGEO5M%Po4l8(Sn5^At2o{X*vr z{Z3aft=?q;rjxpy!1VGiXE6O1N*i}W_?1w4Ka^(efrxuU>4{MKI+T{}g~%sE>6K9W zJ(M=>gUDC+xquzJFZpKFt)Vs>d4Dr;0BKKGPa&nv0?g)&!bWM9sVT|H7Um`v zsU}7SNlFU(llL=6PTtIN%g#JCDb*;+)X2=t!q~*n(!#>PBGoi0CE3tC(bU)?$xyGL zI5#D^KuN(f#a1cEBq=%3G}$uQG|4#0#K6>a@@ZB%W}s!8->`0C1~V3NiVA@lJEgZW zf*FOf$q=dQ3VYeWBGc9XF@YH~v?f3p+PZ2GH6aEwAdL6MhAey_Z}i&LGW#(zFzn`? z9B&}G+1;X&nHMC!Ds5f2ZA*q3E~QW0T5&I%ML4eYM89uX$TgK@3aQfb35(9 z^!-j(FsoWS(*E@v?P7D^j;L->_YdOwtA?SY7UL+Oc7`Z|=B?S;rEL+O=J z`aP63?Ssfy_ql)_yD#}>)a1emVw3OoX@VWV+3y0T1EBPDD18q~t4@H(=RoPr6KoN| g{bPcQ8G+!2CG!ApMkZYbE?`~)MkX-yiY9sh04~-pdjJ3c diff --git a/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html b/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html index b59324823..41c49c781 100644 --- a/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html +++ b/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html @@ -304,9 +304,9 @@

Using And and But

diff --git a/docs/Output/Html/Features/00BasicGherkin/index.html b/docs/Output/Html/Features/00BasicGherkin/index.html index 97f8191fa..95ff09bc3 100644 --- a/docs/Output/Html/Features/00BasicGherkin/index.html +++ b/docs/Output/Html/Features/00BasicGherkin/index.html @@ -265,9 +265,9 @@

00 Basic Gherkin

diff --git a/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html b/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html index 1db70109c..cfcedfe44 100644 --- a/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html +++ b/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html @@ -280,9 +280,9 @@

A couple of simple steps

diff --git a/docs/Output/Html/Features/01TestRunner/index.html b/docs/Output/Html/Features/01TestRunner/index.html index d22340a87..d28abf081 100644 --- a/docs/Output/Html/Features/01TestRunner/index.html +++ b/docs/Output/Html/Features/01TestRunner/index.html @@ -263,9 +263,9 @@

01 Test Runner

diff --git a/docs/Output/Html/Features/02TagsAndHooks/Hooks.html b/docs/Output/Html/Features/02TagsAndHooks/Hooks.html index ce739d4dc..b88968e32 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/Hooks.html +++ b/docs/Output/Html/Features/02TagsAndHooks/Hooks.html @@ -342,9 +342,9 @@

Hooking into pre conditions for Steps in SpecFlow

diff --git a/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html b/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html index 526ebb4c2..29d0c97a0 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html +++ b/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html @@ -360,9 +360,9 @@

A scenario with 2 tags

diff --git a/docs/Output/Html/Features/02TagsAndHooks/index.html b/docs/Output/Html/Features/02TagsAndHooks/index.html index dd3b76202..f5c4c79d1 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/index.html +++ b/docs/Output/Html/Features/02TagsAndHooks/index.html @@ -272,9 +272,9 @@

02 Tags And Hooks

diff --git a/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html b/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html index 144038e65..7300012ed 100644 --- a/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html +++ b/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html @@ -346,9 +346,9 @@

Pending step

diff --git a/docs/Output/Html/Features/031ScenarioContext/index.html b/docs/Output/Html/Features/031ScenarioContext/index.html index 23b30fd79..d43a060be 100644 --- a/docs/Output/Html/Features/031ScenarioContext/index.html +++ b/docs/Output/Html/Features/031ScenarioContext/index.html @@ -263,9 +263,9 @@

031 Scenario Context

diff --git a/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html b/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html index a74ac09f4..512386cfa 100644 --- a/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html +++ b/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html @@ -297,9 +297,9 @@

Showing information of the feature

diff --git a/docs/Output/Html/Features/032FeatureContext/index.html b/docs/Output/Html/Features/032FeatureContext/index.html index cf526fbfb..c917e704e 100644 --- a/docs/Output/Html/Features/032FeatureContext/index.html +++ b/docs/Output/Html/Features/032FeatureContext/index.html @@ -263,9 +263,9 @@

032 Feature Context

diff --git a/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html b/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html index 47037499e..85f5c0306 100644 --- a/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html +++ b/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html @@ -434,9 +434,9 @@

Examples: more than 100

diff --git a/docs/Output/Html/Features/03ScenarioOutline/index.html b/docs/Output/Html/Features/03ScenarioOutline/index.html index f5688ce6a..7da0d62bf 100644 --- a/docs/Output/Html/Features/03ScenarioOutline/index.html +++ b/docs/Output/Html/Features/03ScenarioOutline/index.html @@ -263,9 +263,9 @@

03 Scenario Outline

diff --git a/docs/Output/Html/Features/04Background/BackgroundFeature.html b/docs/Output/Html/Features/04Background/BackgroundFeature.html index 316e88148..c758cd8f8 100644 --- a/docs/Output/Html/Features/04Background/BackgroundFeature.html +++ b/docs/Output/Html/Features/04Background/BackgroundFeature.html @@ -307,9 +307,9 @@

Add 2 to the sum

diff --git a/docs/Output/Html/Features/04Background/index.html b/docs/Output/Html/Features/04Background/index.html index 00cac4fa7..a576671b8 100644 --- a/docs/Output/Html/Features/04Background/index.html +++ b/docs/Output/Html/Features/04Background/index.html @@ -263,9 +263,9 @@

04 Background

diff --git a/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html b/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html index 207caedc7..5f2fab4b7 100644 --- a/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html +++ b/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html @@ -328,9 +328,9 @@

Example of a wide table

diff --git a/docs/Output/Html/Features/05TablesAndAssist/index.html b/docs/Output/Html/Features/05TablesAndAssist/index.html index 269df0fa6..0019aa21a 100644 --- a/docs/Output/Html/Features/05TablesAndAssist/index.html +++ b/docs/Output/Html/Features/05TablesAndAssist/index.html @@ -263,9 +263,9 @@

05 Tables And Assist

diff --git a/docs/Output/Html/Features/06CompareToAssist/CompareTo.html b/docs/Output/Html/Features/06CompareToAssist/CompareTo.html index 9725c90a8..799b269f5 100644 --- a/docs/Output/Html/Features/06CompareToAssist/CompareTo.html +++ b/docs/Output/Html/Features/06CompareToAssist/CompareTo.html @@ -300,9 +300,9 @@

CompareToSet

diff --git a/docs/Output/Html/Features/06CompareToAssist/index.html b/docs/Output/Html/Features/06CompareToAssist/index.html index fbfe485e4..896cdae36 100644 --- a/docs/Output/Html/Features/06CompareToAssist/index.html +++ b/docs/Output/Html/Features/06CompareToAssist/index.html @@ -263,9 +263,9 @@

06 Compare To Assist

diff --git a/docs/Output/Html/Features/07Svenska/Svenska.html b/docs/Output/Html/Features/07Svenska/Svenska.html index 48709ba7e..f048cc883 100644 --- a/docs/Output/Html/Features/07Svenska/Svenska.html +++ b/docs/Output/Html/Features/07Svenska/Svenska.html @@ -282,9 +282,9 @@

Summera 5 och 7 ska vara 12

diff --git a/docs/Output/Html/Features/07Svenska/index.html b/docs/Output/Html/Features/07Svenska/index.html index f6472aaa6..7baaa912e 100644 --- a/docs/Output/Html/Features/07Svenska/index.html +++ b/docs/Output/Html/Features/07Svenska/index.html @@ -263,9 +263,9 @@

07 Svenska

diff --git a/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html b/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html index 8c4e381b2..1541db86f 100644 --- a/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html +++ b/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html @@ -288,9 +288,9 @@

Checking number for evenness

diff --git a/docs/Output/Html/Features/08AttributeOverloading/index.html b/docs/Output/Html/Features/08AttributeOverloading/index.html index 4838b3145..d50827317 100644 --- a/docs/Output/Html/Features/08AttributeOverloading/index.html +++ b/docs/Output/Html/Features/08AttributeOverloading/index.html @@ -263,9 +263,9 @@

08 Attribute Overloading

diff --git a/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html b/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html index 064287ce6..18e46bbbb 100644 --- a/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html +++ b/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html @@ -300,9 +300,9 @@

Do something meaningful

diff --git a/docs/Output/Html/Features/09CallingStepsFromSteps/index.html b/docs/Output/Html/Features/09CallingStepsFromSteps/index.html index eabcc611a..8d7535e48 100644 --- a/docs/Output/Html/Features/09CallingStepsFromSteps/index.html +++ b/docs/Output/Html/Features/09CallingStepsFromSteps/index.html @@ -263,9 +263,9 @@

09 Calling Steps From Steps

diff --git a/docs/Output/Html/Features/10StepTransformation/StepTransformation.html b/docs/Output/Html/Features/10StepTransformation/StepTransformation.html index 2d92e788b..2e4223091 100644 --- a/docs/Output/Html/Features/10StepTransformation/StepTransformation.html +++ b/docs/Output/Html/Features/10StepTransformation/StepTransformation.html @@ -280,9 +280,9 @@

Steps with non-string arguments

diff --git a/docs/Output/Html/Features/10StepTransformation/index.html b/docs/Output/Html/Features/10StepTransformation/index.html index 9e6b21d4a..532aabf61 100644 --- a/docs/Output/Html/Features/10StepTransformation/index.html +++ b/docs/Output/Html/Features/10StepTransformation/index.html @@ -263,9 +263,9 @@

10 Step Transformation

diff --git a/docs/Output/Html/Features/11ContextInjection/ContextInjection.html b/docs/Output/Html/Features/11ContextInjection/ContextInjection.html index 36ab26cc8..0b90785b8 100644 --- a/docs/Output/Html/Features/11ContextInjection/ContextInjection.html +++ b/docs/Output/Html/Features/11ContextInjection/ContextInjection.html @@ -348,9 +348,9 @@

Feature with a dependent context

diff --git a/docs/Output/Html/Features/11ContextInjection/index.html b/docs/Output/Html/Features/11ContextInjection/index.html index 38e48bffb..12bb1713c 100644 --- a/docs/Output/Html/Features/11ContextInjection/index.html +++ b/docs/Output/Html/Features/11ContextInjection/index.html @@ -265,9 +265,9 @@

11 Context Injection

diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html index 6b7eb399b..8b8061cf2 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html @@ -283,9 +283,9 @@

Nested - Add two numbers

diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html index 65fb79414..dfae5ad78 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html @@ -263,9 +263,9 @@

Child Child Folder

diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html index 03b8160c7..cf923b2eb 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html @@ -253,9 +253,9 @@

Child Folder

    diff --git a/docs/Output/Html/Features/12NestedFolders/index.html b/docs/Output/Html/Features/12NestedFolders/index.html index 6cacfadd4..852f57ac3 100644 --- a/docs/Output/Html/Features/12NestedFolders/index.html +++ b/docs/Output/Html/Features/12NestedFolders/index.html @@ -253,9 +253,9 @@

    12 Nested Folders

      diff --git a/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html b/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html index 39e76d8cb..e0ba2feff 100644 --- a/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html +++ b/docs/Output/Html/Features/13MultilineText/MultilineFeatureExample.html @@ -283,9 +283,9 @@

      Mutliline Output

    diff --git a/docs/Output/Html/Features/13MultilineText/index.html b/docs/Output/Html/Features/13MultilineText/index.html index 5b55301d7..0e6b09365 100644 --- a/docs/Output/Html/Features/13MultilineText/index.html +++ b/docs/Output/Html/Features/13MultilineText/index.html @@ -263,9 +263,9 @@

    13 Multiline Text

diff --git a/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html b/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html index 8389cd5d4..f2e1b281d 100644 --- a/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html +++ b/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html @@ -386,9 +386,9 @@

Examples:

diff --git a/docs/Output/Html/Features/14MarkdownExample/index.html b/docs/Output/Html/Features/14MarkdownExample/index.html index 5566289ea..ada000e88 100644 --- a/docs/Output/Html/Features/14MarkdownExample/index.html +++ b/docs/Output/Html/Features/14MarkdownExample/index.html @@ -289,9 +289,9 @@

14 Markdown Example

diff --git a/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html b/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html index ba95d02cb..32f7da9d5 100644 --- a/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html +++ b/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html @@ -281,9 +281,9 @@

Scenario with large data table

diff --git a/docs/Output/Html/Features/15Pickles/index.html b/docs/Output/Html/Features/15Pickles/index.html index d398482cf..488afbba1 100644 --- a/docs/Output/Html/Features/15Pickles/index.html +++ b/docs/Output/Html/Features/15Pickles/index.html @@ -264,9 +264,9 @@

15 Pickles

diff --git a/docs/Output/Html/Features/Arithmetic.html b/docs/Output/Html/Features/Arithmetic.html index 79fe9aa31..15d45c73a 100644 --- a/docs/Output/Html/Features/Arithmetic.html +++ b/docs/Output/Html/Features/Arithmetic.html @@ -349,9 +349,9 @@

Divide two numbers

diff --git a/docs/Output/Html/Features/Trigonometry.html b/docs/Output/Html/Features/Trigonometry.html index c8f19310d..a59463f7d 100644 --- a/docs/Output/Html/Features/Trigonometry.html +++ b/docs/Output/Html/Features/Trigonometry.html @@ -319,9 +319,9 @@

Tangent

diff --git a/docs/Output/Html/Features/Workflow/ClearingScreen.html b/docs/Output/Html/Features/Workflow/ClearingScreen.html index e56c3072b..341acbaa8 100644 --- a/docs/Output/Html/Features/Workflow/ClearingScreen.html +++ b/docs/Output/Html/Features/Workflow/ClearingScreen.html @@ -283,9 +283,9 @@

Clear the screen

diff --git a/docs/Output/Html/Features/Workflow/index.html b/docs/Output/Html/Features/Workflow/index.html index fed3f10e1..9d50f9251 100644 --- a/docs/Output/Html/Features/Workflow/index.html +++ b/docs/Output/Html/Features/Workflow/index.html @@ -263,9 +263,9 @@

Workflow

diff --git a/docs/Output/Html/Features/index.html b/docs/Output/Html/Features/index.html index f6543eeb6..16db61629 100644 --- a/docs/Output/Html/Features/index.html +++ b/docs/Output/Html/Features/index.html @@ -275,9 +275,9 @@

Features

diff --git a/docs/Output/Html/index.html b/docs/Output/Html/index.html index 97f44d53b..acf6f3b27 100644 --- a/docs/Output/Html/index.html +++ b/docs/Output/Html/index.html @@ -253,9 +253,9 @@

Examples

    diff --git a/docs/Output/Html/readme.html b/docs/Output/Html/readme.html index 8935fbd6c..5d62fcf50 100644 --- a/docs/Output/Html/readme.html +++ b/docs/Output/Html/readme.html @@ -252,9 +252,9 @@

    In the Features-folders you'll find quite a large population of .feature files that you can use to test out pickles on.

    diff --git a/docs/Output/JSON/pickledFeatures.json b/docs/Output/JSON/pickledFeatures.json index 21f283e2a..fa2b616db 100644 --- a/docs/Output/JSON/pickledFeatures.json +++ b/docs/Output/JSON/pickledFeatures.json @@ -3016,7 +3016,7 @@ }, "Configuration": { "SutName": "Pickles", - "SutVersion": "2.8.3", - "GeneratedOn": "28 September 2016 10:45:42" + "SutVersion": "2.9.0", + "GeneratedOn": "7 Oktober 2016 17:01:29" } } \ No newline at end of file diff --git a/docs/Output/Word/Pickles.docx b/docs/Output/Word/Pickles.docx index 8b0c089810046270ac582c80588552f2769c2ff4..7c070ccb0683b8050a74e115a17d48f472181748 100644 GIT binary patch delta 1348 zcmey8^(Bipz?+#xgn@y9gF&yueIswRBnOc8R24mVXY&L}OGbgzWP>Ej)I{^t)FcxV zGs~pOH>Kp5fl4<2lDfph2~xX3f0vTa&oD+}lD` zul3pbDNVB26uaR5u_pgV;v8F?UNUR0y0Y|r&-%W1XKHF|^upf9O7CeZ?S0AZ;@rga zVrignylBSjud!`mr;kcSJv`1AZr;p&Onsyz}<4cCzRb( z=5D};C0tw7e5UA3JD{R$6E4a1L1xLiiPtO^*J}8dFZj98LqEvId|%xasU`o}GcFk< zo=!fqq#E236Jb5wipzxI`5wK5r|#D|7I7A?NvK z>lea0s}^@mYciZwxNh_8XQ9mj3H}Sey<+jqoU7%bG|Tx&X3)K|mSgjk-(KYmnr3k9 zapBuytxC5W`a*WQ-aIu&iI~j=np>H`!LFg>$_QdiF3`OS4*tjq4L07B{q&sc(-sM< zGH*_NShUDLz+4o81;{rhkz!yGY%8 zX{P$jB1J)F;eG6Db58g6n*0o(rN2$^(*LrKxULn_XJ&1YI`QDS-cb>gj1{~Yr`CMk zeKjPe<95zb2KOV6A}$~Le&$A}N{p_=*U!K8Z>~H)uU#x)KKsYb66+^=w%xhE_18j& z$g<7*?}Y_fi)`1rHo^wc>g@?ygyG+HUri*+Z-4Hj`c&D7~*q)F&=aEF;I~nbFdcAi=+#>rPxq38S zuQ+~Vo}Yy92S0V;`lQ7!4|~i-zfC$4GF2ntR$6QHV{5OXU=uDAzP^pjl350~t{?g} zbJ;&{?t@irTk35Wg%+KA{YGm0rH^`FVozRNVZ3h3IgtmoJI)?|;B;q`DDNA=?j&DM zd)wz;BH~pCU)=w{zry`sb=IwhUsWD2T)5wG@|Zi&^&NpahG%=N#Ebs;LnM)hxVy%2SpIM@*iqp(kW>)AhSxcf|bu z=2N}55_vDrtz|+9+0DgfU<+DtYuHUy{Z6k{u-Vr99pBUtpcu{3jvCd1?g zO=;}_Z$>6v26&<6sqnO^?GLaBo5;w(AOxflKxVSPiK0BHkeXC;;!-bAVg(QjA`}2w qDU&Vuz)l6HiZ3RnU`OegdH?`mO+VNG delta 1348 zcmey8^(Bipz?+#xgn@y9gJDak%|_m8Ne&?Gx%d8tip>)wEg1zYOw&@5ElrG#EKLnf zQY}p;-;|PL1}fS7OX?C2CrEAj_ivZICtp=}slV*)ci2FH?ZIl7d&1UzpPhVnH?rPd zCG@(})=z1YMOW;C^yGsRcQ7@EY1AsXPTlq8#=ozb$Nv5L5wqsr?PJwP4_;e#+Vg?& zqeS)IRlAMUqnE!A+7zXC?M8#N|BY4e)|$t?%<5cE_9#0kkwqT zebP6D_ysPf>Lt5h8k|))KJ#AM^~ZBu7MJRNJa{6vd+u%lpS8D5Gdj07E_9hL{40&E zbj7b^sgLtQ{I0d0Q1Eh|w&1kN#vWVG0xdHt;5Txt1- zm5=$pa(cH&rL2))p2!*JvOOh~gR4FG%04T_rHX0`6fegV3NAgE>z;APGBbYegp^4w z2O?EeMVb_Ut6p3@fA1eQlz7=(sJWF19O{}nu8bhYEEw1i+vt~r93*< zwcIo3Ea=c&rM>Q)WmfFon~ReRUu<61bi#Y;S*vM_k6BJm%*i~gvT>uC&(EZ_jzZ7l zANHs=dS{!3cst9~KWo~peNXKqpRdH*j|=KIac-PAr)k@+vS!uGrDru~PrJ#OUF7b) zGE;kIk)j~8@ILmnIfr}aW`0_45}%Xi@%^@(uO zd;F1;&ty?%8G-I(U+(+H&;3*$W*uBH|9<_+zS?glTN-}Zbj&|m(Cc$0{olIKeoL=O zzwgFI1?OGd6S`^EmP55GS&nla`t)R7Q)Q;ROP`#?N{Iy=;_Q1o4jmR%_tS5>Is0dr z`|S$(`+Qd7R}8BDZJ%w(*#3Xn4+fMV_bk|LZ!r0hzH_~bZa`?@O)P7*YsJO7BSGW4v|9>AV?C#y`Umm{JL;HYtw$ZL$A+MH)+on8IUCbLc zo7wj1alN$y9v-H4xvp;6F4K=~e7^O<8TV_P!c9|I&l<=)RK3Qd*L%BQwXE|`ovBB% z_jpgTooitB;NTMB`lQ9G?5}fM_o{3SRoyvbTO?z4jk{-J<>JuTcvufxR)}YZvFmnn?y5r;p{aT3H=cw*Cuh^yM%bZvj3=Jl&a zCd44C-PEW2A16x4ZZ0+~gQVd%MmF%$X0m~?Avj^D7+WC~E6a@?!J@B?rJ0j8874Ps zN^1vrGcxHizzZ!;g{Mtze}F~UL`DV%As~$a(v$s76y-sM)TEjdmwJH`D}Y!Kp#aEA pp4@Mu09FIeNC%OQPfyZK4&5ab}Bekd@(TvJ4(mY0{|6+KY;)M diff --git a/docs/Output/Word/features.docx b/docs/Output/Word/features.docx index 5a8b0f64bfed70f3c8f59cd31b4dfa16f8964b37..5872ef901d0e5b4bfff84bbe3b49fae7075e1c19 100644 GIT binary patch delta 1060 zcmaEs^*D<+z?+#xgn@y9gF(B)eIswRBnOc844Exox_N@6C8I!!nW>4PVX}ppWon9v zVT$?Wn^JPjKqZ@hNnPR*2B}^2c&(EsBLjmF3j>1;gUsZO#vh8BD>BVDBt(ZM*={`U=_2I5jr&WEj)hRT!Ue9Sx*noI)8+c>YwK$F?9~rj zA1iIU_;c@D?ny^_TyAKup1n`&gxQSQmXW&R**S_mvitJbk=er_fBD(UwAzSB4Cau(!#6!~Fn*n0NZ+;d)$YC59f zmf_c1DtQuXTAs6)ukeqkI%X++pi*>izLc)N z&{lkDpH=P01y|-UCQnFlT6WXCQ||AZr|Kwiw7F1oD-$>dG<94VL5#_Tx>vyho_fuU z;OIMRabfo4EBem$N7gQATH$Ffn4@jc=&9BlxjBa0heM`eim>eby(p*?D@%3lER0cA1JxO&9q-x*=|= z@lH9}u{|Mm&LfGwcQV@V^m^}#xJC9oa`kAuUUB@!JU|4C9@1}T|e||=CXg@+y|@Lw$$4$3N1SK`i<1~OCR;V z#Gbsk!g$@5b0QCFcbq-`!0FB=QQkL#-ATTj_O{QxM8vBOzPSH?e}((O>a1H0zp6Z5 zxZ1l-EAgDM^^@k(p1bezxBcu3I2UdivS;ECT_X*@yc_dAYAG(+7PIWjK?xRj&pEP> zR8u1is#$pZl&35aj+i`ILr=)&rt5dX?uhyQ&8K>ACGuXLTg!wR_^F0vkTAbzWCPDB zla-7O!4VN=Y{d!B5|d{dJAy^;8cQ=LYBEf2)Rfi^@MdJvWq@ZmPlcyVZGV8-Zz3oI z0ciw~oa|_#C=W7iQq74=y+DZ-KrDz*0AwXjZZuH>QiU&24IhS@{geNifOGX^Ia6uI(8*S&YHVkWK*j(7@h_U3 delta 1027 zcmaEy^(>1wz?+#xgn@y9gJDys%|_m8Ne&?Gc|&r=w#^eHEg1z;%~FjFjm->`P0TG# zl8wzK-;|PL1}fS7OX?C2CrIs6ruUnCCSO%|sh{ka*K8o*y1r?TzFES75XGBYy7Lx$ z#NJL*TfpSD?Xp?=>qYLbM7^f2Q1aAX=n?tr{F&>Q=YPC@{CU#Xds`1`M_iw=PbKh# z2g6>o(98MWn?6^lpUB!7;jI1l#=}=>1qUrI?Vfby9{=|#RtNPz=SXy_#N%^4LE!`iJE|@2; zUM$s@r&6)XYm;BM$zv~$3p1ZNX$oDi^oU)&wverMg>U(ip9@d?Us91*^S6WJ)_-P` z%o!Uprxvf{7EE4LF;U(4=DIF!-}mN0TMPJpM9*kQY}83yp(GMD$9d9yp)-x&9}C8@ zm0wYhcw8`LS%j*O@^r8JLaW*SUIR$LZ!b3GE|5wgx`o_g{5*QZ3K>N`sU)IFG7 z#Fh)S`ZOMYGeOAq=grgkC=s(cPjf31IM~&6Tp2-($$7e0!2)i2&5YnUE7)ysF!`ds zbG?dgKxp9PJf$091x$}Ej;xB8@)xQy6O-xGeqh6>xUi#FxBA)te;+IC?%nHO9=_H? z`+#@0(XL)0ua<|~raV(!%o{eF+4kviy|n@!9;SA=u5Q^b(~oU@zV*Tx_iLQOO;cIV z8pu3Uy~d;0d%Iw@tn*KusYkN+cu%sOYhd=^;1c2bq{XW2uX9`Xs%#Ba-8o}hBx81s zyJuqM;?{!)4cQht@m~88Wo3W)OMRwd#Q6!|*1K@^t){ShMBUO!%1hA*0F!hP(|zyC+Ax$XsDX1j9T*-8JGVbK!r!)vDY zOZraQ{rBy*8y5q9t`ZQ<7OCsz=`!ZIEgUzMW2J7ef5j+qu zWy$1-$(x^utJ>UjZGWNW^{YlE#2~BP)TjI(Cu-m)8J0o9{I-z|JbO%*H#P)EM6j_H zQa+ew>lKi(Bxkx W;7mJN+Ekh`VzRlZ8ryjzkP-lN<(@16 diff --git a/docs/index.html b/docs/index.html index f3d76e7fa..499c791b4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -159,7 +159,7 @@

    Download

- If you prefer to download the .zip files, you can so from the Github release page. + If you prefer to download the .zip files, you can so from the Github release page.

+ \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5eda58709 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Dhtml")] +[assembly: AssemblyDescription("A Pickles output formatter that outputs DHTML documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config new file mode 100644 index 000000000..027ff798c --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentStringFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelDocumentStringFormatter.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentStringFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelDocumentStringFormatter.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelDocumentationBuilder.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelDocumentationBuilder.cs index 16fc90ab6..21474ba03 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelDocumentationBuilder.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelDocumentationBuilder.cs @@ -37,18 +37,15 @@ public class ExcelDocumentationBuilder : IDocumentationBuilder private readonly ExcelSheetNameGenerator excelSheetNameGenerator; private readonly ExcelTableOfContentsFormatter excelTableOfContentsFormatter; private readonly IFileSystem fileSystem; - private readonly DirectoryTreeCrawler featureCrawler; public ExcelDocumentationBuilder( IConfiguration configuration, - DirectoryTreeCrawler featureCrawler, ExcelFeatureFormatter excelFeatureFormatter, ExcelSheetNameGenerator excelSheetNameGenerator, ExcelTableOfContentsFormatter excelTableOfContentsFormatter, IFileSystem fileSystem) { this.configuration = configuration; - this.featureCrawler = featureCrawler; this.excelFeatureFormatter = excelFeatureFormatter; this.excelSheetNameGenerator = excelSheetNameGenerator; this.excelTableOfContentsFormatter = excelTableOfContentsFormatter; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelFeatureFormatter.cs similarity index 99% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelFeatureFormatter.cs index b29b2835b..4b82ce2ff 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelFeatureFormatter.cs @@ -23,7 +23,6 @@ using ClosedXML.Excel; using NLog; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel { diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelScenarioFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelScenarioFormatter.cs index 6fd293dd6..2b8000ee0 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelScenarioFormatter.cs @@ -22,7 +22,6 @@ using ClosedXML.Excel; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel { diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelScenarioOutlineFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelScenarioOutlineFormatter.cs index 354db31cc..998191251 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelScenarioOutlineFormatter.cs @@ -22,7 +22,6 @@ using ClosedXML.Excel; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel { diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelSheetNameGenerator.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelSheetNameGenerator.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelSheetNameGenerator.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelSheetNameGenerator.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelStepFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelStepFormatter.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelStepFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelStepFormatter.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelTableFormatter.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelTableFormatter.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableOfContentsFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelTableOfContentsFormatter.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableOfContentsFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelTableOfContentsFormatter.cs diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj b/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj new file mode 100644 index 000000000..81cd735e6 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj @@ -0,0 +1,90 @@ + + + + + Debug + AnyCPU + {A875B066-443A-420E-A1F5-7870CFF0A50C} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Excel + PicklesDoc.Pickles.DocumentationBuilders.Excel + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ClosedXML.0.76.0\lib\net40-client\ClosedXML.dll + True + + + ..\packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll + True + + + ..\packages\NLog.4.3.3\lib\net45\NLog.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + True + + + + + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + {55382AFC-E050-4DF7-AA4F-0ABA71E2E169} + Pickles.ObjectModel + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..01eb97519 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Excel")] +[assembly: AssemblyDescription("A Pickles output formatter that outputs MS Excel documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config new file mode 100644 index 000000000..6d922fbfc --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles/Extensions/NamespaceExtensions.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/Extensions/NamespaceExtensions.cs similarity index 96% rename from src/Pickles/Pickles/Extensions/NamespaceExtensions.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/Extensions/NamespaceExtensions.cs index 392633cbb..ca765dd09 100644 --- a/src/Pickles/Pickles/Extensions/NamespaceExtensions.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/Extensions/NamespaceExtensions.cs @@ -21,7 +21,7 @@ using System; using System.Xml.Linq; -namespace PicklesDoc.Pickles.Extensions +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.Extensions { /// /// Extension Methods to work with namespaces. diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlContentFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlContentFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlContentFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlContentFormatter.cs index 93548750c..a7eb092ff 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlContentFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlContentFormatter.cs @@ -21,9 +21,10 @@ using System; using System.Collections.Generic; using System.Xml.Linq; + using PicklesDoc.Pickles.DirectoryCrawler; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlContentFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDescriptionFormatter.cs similarity index 94% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDescriptionFormatter.cs index 1546b9004..de889fe7f 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDescriptionFormatter.cs @@ -21,9 +21,9 @@ using System; using System.Xml.Linq; -using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.DocumentationBuilders.Html.Extensions; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlDescriptionFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDocumentFormatter.cs similarity index 99% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDocumentFormatter.cs index fdfe2fce9..aeddd320c 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDocumentFormatter.cs @@ -21,10 +21,11 @@ using System; using System.IO.Abstractions; using System.Xml.Linq; + using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlDocumentFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDocumentationBuilder.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDocumentationBuilder.cs index 00f7e5831..889f3b17f 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDocumentationBuilder.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlDocumentationBuilder.cs @@ -23,12 +23,14 @@ using System.Reflection; using System.Text; using System.Xml.Linq; + using NLog; + using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlDocumentationBuilder : IDocumentationBuilder { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlFeatureFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlFeatureFormatter.cs index 47159d88e..95f122ba3 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlFeatureFormatter.cs @@ -24,7 +24,7 @@ using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlFeatureFormatter : IHtmlFeatureFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFooterFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlFooterFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFooterFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlFooterFormatter.cs index 164fbd03c..f09627ddc 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFooterFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlFooterFormatter.cs @@ -22,7 +22,7 @@ using System.Reflection; using System.Xml.Linq; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlFooterFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlHeaderFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlHeaderFormatter.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlHeaderFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlHeaderFormatter.cs index 31f2a6b06..740b2cde6 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlHeaderFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlHeaderFormatter.cs @@ -21,7 +21,7 @@ using System; using System.Xml.Linq; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlHeaderFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlImageResultFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlImageResultFormatter.cs index 2094bed1f..7bc1b27e8 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlImageResultFormatter.cs @@ -23,9 +23,8 @@ using System.Xml.Linq; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlImageResultFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlIndexFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlIndexFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlIndexFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlIndexFormatter.cs index 7b4c1499b..b47829b73 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlIndexFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlIndexFormatter.cs @@ -23,10 +23,11 @@ using System.IO.Abstractions; using System.Linq; using System.Xml.Linq; + using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlIndexFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlMarkdownFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlMarkdownFormatter.cs similarity index 93% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlMarkdownFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlMarkdownFormatter.cs index 7b3df74e9..ac32c5f8c 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlMarkdownFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlMarkdownFormatter.cs @@ -20,9 +20,10 @@ using System; using System.Xml.Linq; -using PicklesDoc.Pickles.Extensions; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +using PicklesDoc.Pickles.DocumentationBuilders.Html.Extensions; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlMarkdownFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlMultilineStringFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlMultilineStringFormatter.cs similarity index 97% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlMultilineStringFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlMultilineStringFormatter.cs index 20dab41da..a84d075f9 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlMultilineStringFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlMultilineStringFormatter.cs @@ -21,7 +21,7 @@ using System; using System.Xml.Linq; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlMultilineStringFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlNamespace.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlNamespace.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlNamespace.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlNamespace.cs index e1f1ca779..ce12ab981 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlNamespace.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlNamespace.cs @@ -21,7 +21,7 @@ using System; using System.Xml.Linq; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public static class HtmlNamespace { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResource.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResource.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResource.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResource.cs index d3b74c8b6..3a6dcc7cf 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResource.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResource.cs @@ -20,7 +20,7 @@ using System; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlResource { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResourceSet.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResourceSet.cs similarity index 99% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResourceSet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResourceSet.cs index aaddcfc59..2fd502a89 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResourceSet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResourceSet.cs @@ -23,9 +23,10 @@ using System.IO.Abstractions; using System.Linq; using System.Reflection; + using PicklesDoc.Pickles.Extensions; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlResourceSet { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResourceWriter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResourceWriter.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResourceWriter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResourceWriter.cs index 1dbecd98a..ad5aa0547 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlResourceWriter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlResourceWriter.cs @@ -21,12 +21,12 @@ using System; using System.IO.Abstractions; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlResourceWriter : ResourceWriter { public HtmlResourceWriter(IFileSystem fileSystem) - : base(fileSystem, "PicklesDoc.Pickles.Resources.Html.") + : base(fileSystem, "PicklesDoc.Pickles.DocumentationBuilders.Html.Resources.") { } diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlScenarioFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlScenarioFormatter.cs index df1094740..48b6775f7 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlScenarioFormatter.cs @@ -25,7 +25,7 @@ using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlScenarioFormatter { @@ -73,7 +73,7 @@ public XElement Format(Scenario scenario, int id) new XAttribute("class", "steps"), new XElement( this.xmlns + "ul", - scenario.Steps.Select(step => this.htmlStepFormatter.Format(step)))), + scenario.Steps.Select(step => this.htmlStepFormatter.Format(step)))), this.FormatLinkButton(scenario)); } diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlScenarioOutlineFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlScenarioOutlineFormatter.cs index 8ec8e9058..b1e0d6fb5 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlScenarioOutlineFormatter.cs @@ -23,9 +23,8 @@ using System.Xml.Linq; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlScenarioOutlineFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlStepFormatter.cs similarity index 93% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlStepFormatter.cs index 0024f4c62..56df4e64b 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlStepFormatter.cs @@ -21,27 +21,24 @@ using System; using System.Linq; using System.Xml.Linq; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlStepFormatter { private readonly HtmlMultilineStringFormatter htmlMultilineStringFormatter; private readonly HtmlTableFormatter htmlTableFormatter; - private readonly LanguageServices languageServices; - private readonly XNamespace xmlns; public HtmlStepFormatter( HtmlTableFormatter htmlTableFormatter, - HtmlMultilineStringFormatter htmlMultilineStringFormatter, - LanguageServices languageServices) + HtmlMultilineStringFormatter htmlMultilineStringFormatter) { this.htmlTableFormatter = htmlTableFormatter; this.htmlMultilineStringFormatter = htmlMultilineStringFormatter; - this.languageServices = languageServices; this.xmlns = HtmlNamespace.Xhtml; } diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlTableFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlTableFormatter.cs index 6ac532a21..84af4bf69 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlTableFormatter.cs @@ -24,7 +24,7 @@ using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlTableFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlTableOfContentsFormatter.cs similarity index 99% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/HtmlTableOfContentsFormatter.cs index 198eef7ab..96cb2ea3d 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlTableOfContentsFormatter.cs @@ -21,12 +21,13 @@ using System; using System.IO.Abstractions; using System.Xml.Linq; + using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class HtmlTableOfContentsFormatter { diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/IHtmlFeatureFormatter.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/IHtmlFeatureFormatter.cs index a683ca080..6e9305756 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/IHtmlFeatureFormatter.cs @@ -23,7 +23,7 @@ using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public interface IHtmlFeatureFormatter { diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj b/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj new file mode 100644 index 000000000..588ecbad0 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj @@ -0,0 +1,137 @@ + + + + + Debug + AnyCPU + {2C849AD2-D125-4754-8BBA-7C61FA6251E4} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Html + PicklesDoc.Pickles.DocumentationBuilders.Html + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\NLog.4.3.3\lib\net45\NLog.dll + True + + + + + + ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + True + + + + + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {55382AFC-E050-4DF7-AA4F-0ABA71E2E169} + Pickles.ObjectModel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..d7d0b17b3 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Html")] +[assembly: AssemblyDescription("A Pickles output formatter that outputs HTML documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/ResourceWriter.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/ResourceWriter.cs similarity index 80% rename from src/Pickles/Pickles/DocumentationBuilders/HTML/ResourceWriter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html/ResourceWriter.cs index a175ac765..62fce3316 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/ResourceWriter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/ResourceWriter.cs @@ -23,9 +23,8 @@ using System.Drawing.Imaging; using System.IO; using System.IO.Abstractions; -using System.Reflection; -namespace PicklesDoc.Pickles.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html { public class ResourceWriter { @@ -63,7 +62,7 @@ protected void WriteStyleSheet(string folder, string filename) { string path = this.fileSystem.Path.Combine(folder, filename); - using (var reader = GetResourceStreamReader(this.namespaceOfResources + "css." + filename)) + using (var reader = this.GetResourceStreamReader(this.namespaceOfResources + "css." + filename)) { this.fileSystem.File.WriteAllText(path, reader.ReadToEnd()); } @@ -78,7 +77,7 @@ protected void WriteTextFile(string folder, string filename, string toBeReplaced { string path = this.fileSystem.Path.Combine(folder, filename); - using (var reader = GetResourceStreamReader(this.namespaceOfResources + filename)) + using (var reader = this.GetResourceStreamReader(this.namespaceOfResources + filename)) { var contents = reader.ReadToEnd(); @@ -91,21 +90,21 @@ protected void WriteTextFile(string folder, string filename, string toBeReplaced } } - private static StreamReader GetResourceStreamReader(string nameOfResource) + private StreamReader GetResourceStreamReader(string nameOfResource) { - return new StreamReader(GetResourceStream(nameOfResource)); + return new StreamReader(this.GetResourceStream(nameOfResource)); } - private static Stream GetResourceStream(string nameOfResource) + private Stream GetResourceStream(string nameOfResource) { - return Assembly.GetExecutingAssembly().GetManifestResourceStream(nameOfResource); + return this.GetType().Assembly.GetManifestResourceStream(nameOfResource); } protected void WriteImage(string folder, string filename) { string path = this.fileSystem.Path.Combine(folder, filename); - using (Image image = Image.FromStream(GetResourceStream(this.namespaceOfResources + "img." + filename))) + using (Image image = Image.FromStream(this.GetResourceStream(this.namespaceOfResources + "img." + filename))) { using (var stream = this.fileSystem.File.Create(path)) { @@ -118,7 +117,7 @@ protected void WriteScript(string folder, string filename) { string path = this.fileSystem.Path.Combine(folder, filename); - using (var reader = GetResourceStreamReader(this.namespaceOfResources + "js." + filename)) + using (var reader = this.GetResourceStreamReader(this.namespaceOfResources + "js." + filename)) { this.fileSystem.File.WriteAllText(path, reader.ReadToEnd()); } @@ -126,7 +125,7 @@ protected void WriteScript(string folder, string filename) protected void WriteFont(string folder, string filename) { - using (var input = GetResourceStream(this.namespaceOfResources + "css.fonts." + filename)) + using (var input = this.GetResourceStream(this.namespaceOfResources + "css.fonts." + filename)) { using (var output = this.fileSystem.File.Create(this.fileSystem.Path.Combine(folder, filename))) { diff --git a/src/Pickles/Pickles/Resources/Html/css/font-awesome.css b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/font-awesome.css similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/font-awesome.css rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/font-awesome.css diff --git a/src/Pickles/Pickles/Resources/Html/css/fonts/FontAwesome.ttf b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/FontAwesome.ttf similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/fonts/FontAwesome.ttf rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/FontAwesome.ttf diff --git a/src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.eot b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.eot similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.eot rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.eot diff --git a/src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.svg b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.svg similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.svg rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.svg diff --git a/src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.ttf b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.ttf similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.ttf rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.ttf diff --git a/src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.woff b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.woff similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/fonts/fontawesome-webfont.woff rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/fonts/fontawesome-webfont.woff diff --git a/src/Pickles/Pickles/Resources/Html/css/global.css b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/global.css similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/global.css rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/global.css diff --git a/src/Pickles/Pickles/Resources/Html/css/master.css b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/master.css similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/master.css rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/master.css diff --git a/src/Pickles/Pickles/Resources/Html/css/print.css b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/print.css similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/print.css rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/print.css diff --git a/src/Pickles/Pickles/Resources/Html/css/reset.css b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/reset.css similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/reset.css rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/reset.css diff --git a/src/Pickles/Pickles/Resources/Html/css/structure.css b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/structure.css similarity index 100% rename from src/Pickles/Pickles/Resources/Html/css/structure.css rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/css/structure.css diff --git a/src/Pickles/Pickles/Resources/Html/img/failure.png b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/img/failure.png similarity index 100% rename from src/Pickles/Pickles/Resources/Html/img/failure.png rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/img/failure.png diff --git a/src/Pickles/Pickles/Resources/Html/img/inconclusive.png b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/img/inconclusive.png similarity index 100% rename from src/Pickles/Pickles/Resources/Html/img/inconclusive.png rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/img/inconclusive.png diff --git a/src/Pickles/Pickles/Resources/Html/img/success.png b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/img/success.png similarity index 100% rename from src/Pickles/Pickles/Resources/Html/img/success.png rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/img/success.png diff --git a/src/Pickles/Pickles/Resources/Html/js/jquery.js b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/js/jquery.js similarity index 100% rename from src/Pickles/Pickles/Resources/Html/js/jquery.js rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/js/jquery.js diff --git a/src/Pickles/Pickles/Resources/Html/js/scripts.js b/src/Pickles/Pickles.DocumentationBuilders.Html/Resources/js/scripts.js similarity index 100% rename from src/Pickles/Pickles/Resources/Html/js/scripts.js rename to src/Pickles/Pickles.DocumentationBuilders.Html/Resources/js/scripts.js diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config new file mode 100644 index 000000000..027ff798c --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/IJsonFeatureElement.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/IJsonFeatureElement.cs similarity index 92% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/IJsonFeatureElement.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/IJsonFeatureElement.cs index 8330e587d..eaa04c0d0 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/IJsonFeatureElement.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/IJsonFeatureElement.cs @@ -18,10 +18,11 @@ // // -------------------------------------------------------------------------------------------------------------------- -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON -{ - using System.Collections.Generic; +using System; +using System.Collections.Generic; +namespace PicklesDoc.Pickles.DocumentationBuilders.Json +{ public interface IJsonFeatureElement { JsonFeature Feature { get; set; } diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JSONDocumentationBuilder.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JSONDocumentationBuilder.cs index 9854bf6af..5eb7f6bf1 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JSONDocumentationBuilder.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JSONDocumentationBuilder.cs @@ -21,19 +21,21 @@ using System; using System.Collections.Generic; using System.IO.Abstractions; +using System.Linq; using System.Reflection; +using System.Text.RegularExpressions; + using Newtonsoft.Json; using Newtonsoft.Json.Converters; + using NLog; + using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { - using System.Linq; - using System.Text.RegularExpressions; - public class JsonDocumentationBuilder : IDocumentationBuilder { public const string JsonFileName = @"pickledFeatures.json"; diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonComment.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonComment.cs similarity index 89% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonComment.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonComment.cs index 2d6efde3f..c67c9a5b4 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonComment.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonComment.cs @@ -19,10 +19,8 @@ // -------------------------------------------------------------------------------------------------------------------- using System; -using System.Collections.Generic; -using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonComment { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonExample.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonExample.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonExample.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonExample.cs index ab513c9ac..08e386f22 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonExample.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonExample.cs @@ -20,7 +20,7 @@ using System; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonExample { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonFeature.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonFeature.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonFeature.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonFeature.cs index f05f744b2..40d9ece8e 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonFeature.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonFeature.cs @@ -21,7 +21,7 @@ using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonFeature { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonFeatureWithMetaInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonFeatureWithMetaInfo.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonFeatureWithMetaInfo.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonFeatureWithMetaInfo.cs index cd73d1eaf..7124b3a1a 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonFeatureWithMetaInfo.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonFeatureWithMetaInfo.cs @@ -19,10 +19,11 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonFeatureWithMetaInfo { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonKeyword.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonKeyword.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonKeyword.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonKeyword.cs index bccd583b5..d28b1409a 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonKeyword.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonKeyword.cs @@ -20,7 +20,7 @@ using System; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { /// /// The Gherkin Keywords. diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonMapper.cs similarity index 93% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonMapper.cs index a8e054b51..2dfe714ce 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonMapper.cs @@ -19,11 +19,10 @@ // -------------------------------------------------------------------------------------------------------------------- using System; -using System.Linq; -using System.Collections.Generic; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonScenario.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonScenario.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonScenario.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonScenario.cs index 6c2f92037..d59a389b6 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonScenario.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonScenario.cs @@ -21,7 +21,7 @@ using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonScenario : IJsonFeatureElement { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonScenarioOutline.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonScenarioOutline.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonScenarioOutline.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonScenarioOutline.cs index cdf018318..e0b91a12c 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonScenarioOutline.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonScenarioOutline.cs @@ -21,7 +21,7 @@ using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonScenarioOutline : IJsonFeatureElement { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonStep.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonStep.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonStep.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonStep.cs index 694127dc4..8d49f949f 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonStep.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonStep.cs @@ -21,7 +21,7 @@ using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonStep { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTable.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonTable.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTable.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonTable.cs index 3eb09f4ab..15c80921a 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTable.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonTable.cs @@ -21,7 +21,7 @@ using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonTable { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTableRow.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonTableRow.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTableRow.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonTableRow.cs index 6de061c14..768ebb3fc 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTableRow.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonTableRow.cs @@ -21,7 +21,7 @@ using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonTableRow : List { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTestResult.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonTestResult.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTestResult.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/JsonTestResult.cs index 2875305bb..fbabaaa0a 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/JsonTestResult.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonTestResult.cs @@ -20,7 +20,7 @@ using System; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json { public class JsonTestResult { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/CommentToJsonCommentMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/CommentToJsonCommentMapper.cs similarity index 94% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/CommentToJsonCommentMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/CommentToJsonCommentMapper.cs index 5b5876999..5f1f12697 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/CommentToJsonCommentMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/CommentToJsonCommentMapper.cs @@ -18,9 +18,11 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class CommentToJsonCommentMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ExampleToJsonExampleMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ExampleToJsonExampleMapper.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ExampleToJsonExampleMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ExampleToJsonExampleMapper.cs index acf52d465..f2566fba2 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ExampleToJsonExampleMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ExampleToJsonExampleMapper.cs @@ -18,9 +18,11 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class ExampleToJsonExampleMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/FeatureToJsonFeatureMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/FeatureToJsonFeatureMapper.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/FeatureToJsonFeatureMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/FeatureToJsonFeatureMapper.cs index c9b40a9ae..9786f5632 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/FeatureToJsonFeatureMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/FeatureToJsonFeatureMapper.cs @@ -20,9 +20,10 @@ using System; using System.Linq; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class FeatureToJsonFeatureMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/KeywordToJsonKeywordMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/KeywordToJsonKeywordMapper.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/KeywordToJsonKeywordMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/KeywordToJsonKeywordMapper.cs index 94cc4be20..7a8c5da3c 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/KeywordToJsonKeywordMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/KeywordToJsonKeywordMapper.cs @@ -19,9 +19,10 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class KeywordToJsonKeywordMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ScenarioOutlineToJsonScenarioOutlineMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ScenarioOutlineToJsonScenarioOutlineMapper.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ScenarioOutlineToJsonScenarioOutlineMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ScenarioOutlineToJsonScenarioOutlineMapper.cs index 118e667ec..ccf39b35c 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ScenarioOutlineToJsonScenarioOutlineMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ScenarioOutlineToJsonScenarioOutlineMapper.cs @@ -18,11 +18,13 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.Linq; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class ScenarioOutlineToJsonScenarioOutlineMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ScenarioToJsonScenarioMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ScenarioToJsonScenarioMapper.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ScenarioToJsonScenarioMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ScenarioToJsonScenarioMapper.cs index a52a7b8cd..76a6b7815 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/ScenarioToJsonScenarioMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/ScenarioToJsonScenarioMapper.cs @@ -18,11 +18,13 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.Linq; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class ScenarioToJsonScenarioMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/StepToJsonStepMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/StepToJsonStepMapper.cs similarity index 97% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/StepToJsonStepMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/StepToJsonStepMapper.cs index be7132784..b05fa4ba9 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/StepToJsonStepMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/StepToJsonStepMapper.cs @@ -18,11 +18,13 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.Linq; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class StepToJsonStepMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TableRowToJsonTableRowMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TableRowToJsonTableRowMapper.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TableRowToJsonTableRowMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TableRowToJsonTableRowMapper.cs index 6869768d2..6f16ccbcc 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TableRowToJsonTableRowMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TableRowToJsonTableRowMapper.cs @@ -18,9 +18,11 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class TableRowToJsonTableRowMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TableToJsonTableMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TableToJsonTableMapper.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TableToJsonTableMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TableToJsonTableMapper.cs index b8309f046..388daafcf 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TableToJsonTableMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TableToJsonTableMapper.cs @@ -18,11 +18,13 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.Linq; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class TableToJsonTableMapper { diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TestResultToJsonTestResultMapper.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TestResultToJsonTestResultMapper.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TestResultToJsonTestResultMapper.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TestResultToJsonTestResultMapper.cs index b05397de3..4c5390412 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/Mapper/TestResultToJsonTestResultMapper.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Mapper/TestResultToJsonTestResultMapper.cs @@ -18,9 +18,11 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; + using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.DocumentationBuilders.JSON.Mapper +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.Mapper { public class TestResultToJsonTestResultMapper { diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj b/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj new file mode 100644 index 000000000..35eb7c9ad --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj @@ -0,0 +1,101 @@ + + + + + Debug + AnyCPU + {836020D1-A309-4367-9654-EBB7C3F60D97} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Json + PicklesDoc.Pickles.DocumentationBuilders.Json + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + True + + + ..\packages\NLog.4.3.3\lib\net45\NLog.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + True + + + + + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {55382AFC-E050-4DF7-AA4F-0ABA71E2E169} + Pickles.ObjectModel + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..f4207cdfc --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Json")] +[assembly: AssemblyDescription("A Pickles output formatter that outputs Json documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config new file mode 100644 index 000000000..a326f3983 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles/Extensions/BodyExtensions.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/Extensions/BodyExtensions.cs similarity index 96% rename from src/Pickles/Pickles/Extensions/BodyExtensions.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/Extensions/BodyExtensions.cs index d467a0a5f..9b8dfa884 100644 --- a/src/Pickles/Pickles/Extensions/BodyExtensions.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/Extensions/BodyExtensions.cs @@ -19,9 +19,10 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using DocumentFormat.OpenXml.Wordprocessing; -namespace PicklesDoc.Pickles.Extensions +namespace PicklesDoc.Pickles.DocumentationBuilders.Word.Extensions { public static class BodyExtensions { diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj b/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj new file mode 100644 index 000000000..13dbebaac --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj @@ -0,0 +1,93 @@ + + + + + Debug + AnyCPU + {BDD5290E-BF98-436B-ADEE-A7479E22A875} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Word + PicklesDoc.Pickles.DocumentationBuilders.Word + v4.5 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll + + + ..\packages\NLog.4.3.3\lib\net45\NLog.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + True + + + + + + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + + + + + + + + + + {55382afc-e050-4df7-aa4f-0aba71e2e169} + Pickles.ObjectModel + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..aa57207fa --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Word")] +[assembly: AssemblyDescription("A Pickles output formatter that outputs MS Word documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/TableOfContentsAdder/PtOpenXmlUtil.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/TableOfContentsAdder/PtOpenXmlUtil.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/TableOfContentsAdder/PtOpenXmlUtil.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/TableOfContentsAdder/PtOpenXmlUtil.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/TableOfContentsAdder/PtUtil.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/TableOfContentsAdder/PtUtil.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/TableOfContentsAdder/PtUtil.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/TableOfContentsAdder/PtUtil.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/TableOfContentsAdder/TocAdder.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/TableOfContentsAdder/TocAdder.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/TableOfContentsAdder/TocAdder.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/TableOfContentsAdder/TocAdder.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordBackgroundFormatter.cs similarity index 92% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordBackgroundFormatter.cs index b7e42d067..1425c0e48 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordBackgroundFormatter.cs @@ -30,13 +30,13 @@ public class WordBackgroundFormatter { private const string DefaultBackgroundKeyword = "Background"; - private readonly LanguageServices languageSevices; + private readonly ILanguageServices languageServices; private readonly WordTableFormatter wordTableFormatter; - public WordBackgroundFormatter(IConfiguration configuration, WordTableFormatter wordTableFormatter) + public WordBackgroundFormatter(WordTableFormatter wordTableFormatter, ILanguageServices languageServices) { this.wordTableFormatter = wordTableFormatter; - this.languageSevices = new LanguageServices(configuration); + this.languageServices = languageServices; } public void Format(Body body, Scenario background) @@ -75,7 +75,7 @@ public void Format(Body body, Scenario background) private string GetLocalizedBackgroundKeyword() { - return this.languageSevices.BackgroundKeywords.FirstOrDefault() ?? DefaultBackgroundKeyword; + return this.languageServices.BackgroundKeywords.FirstOrDefault() ?? DefaultBackgroundKeyword; } private static TableProperties GenerateTableProperties() diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDescriptionFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordDescriptionFormatter.cs similarity index 96% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordDescriptionFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordDescriptionFormatter.cs index 8940ce167..4a7e785c9 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDescriptionFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordDescriptionFormatter.cs @@ -20,7 +20,8 @@ using System; using DocumentFormat.OpenXml.Wordprocessing; -using PicklesDoc.Pickles.Extensions; + +using PicklesDoc.Pickles.DocumentationBuilders.Word.Extensions; namespace PicklesDoc.Pickles.DocumentationBuilders.Word { diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordDocumentationBuilder.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordDocumentationBuilder.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordDocumentationBuilder.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordFeatureFormatter.cs similarity index 92% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordFeatureFormatter.cs index 47dd5af4f..7b085a304 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordFeatureFormatter.cs @@ -21,16 +21,15 @@ using System; using DocumentFormat.OpenXml.Wordprocessing; using PicklesDoc.Pickles.DirectoryCrawler; -using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.DocumentationBuilders.Word.Extensions; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.Word { public class WordFeatureFormatter { private readonly IConfiguration configuration; - private readonly ITestResults nunitResults; + private readonly ITestResults testResults; private readonly WordScenarioFormatter wordScenarioFormatter; private readonly WordScenarioOutlineFormatter wordScenarioOutlineFormatter; private readonly WordStyleApplicator wordStyleApplicator; @@ -44,7 +43,7 @@ public WordFeatureFormatter( WordDescriptionFormatter wordDescriptionFormatter, WordBackgroundFormatter wordBackgroundFormatter, IConfiguration configuration, - ITestResults nunitResults) + ITestResults testResults) { this.wordScenarioFormatter = wordScenarioFormatter; this.wordScenarioOutlineFormatter = wordScenarioOutlineFormatter; @@ -52,7 +51,7 @@ public WordFeatureFormatter( this.wordDescriptionFormatter = wordDescriptionFormatter; this.wordBackgroundFormatter = wordBackgroundFormatter; this.configuration = configuration; - this.nunitResults = nunitResults; + this.testResults = testResults; } public void Format(Body body, FeatureNode featureNode) @@ -63,7 +62,7 @@ public void Format(Body body, FeatureNode featureNode) if (this.configuration.HasTestResults) { - TestResult testResult = this.nunitResults.GetFeatureResult(feature); + TestResult testResult = this.testResults.GetFeatureResult(feature); if (testResult == TestResult.Passed) { body.GenerateParagraph("Passed", "Passed"); diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordFontApplicator.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordFontApplicator.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordFontApplicator.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordFontApplicator.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordHeaderFooterFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordHeaderFooterFormatter.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordHeaderFooterFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordHeaderFooterFormatter.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordScenarioFormatter.cs similarity index 87% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordScenarioFormatter.cs index 9d1cb04eb..511b7218d 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordScenarioFormatter.cs @@ -20,30 +20,30 @@ using System; using DocumentFormat.OpenXml.Wordprocessing; -using PicklesDoc.Pickles.Extensions; + +using PicklesDoc.Pickles.DocumentationBuilders.Word.Extensions; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.Word { public class WordScenarioFormatter { private readonly IConfiguration configuration; - private readonly ITestResults nunitResults; + private readonly ITestResults testResults; private readonly WordStepFormatter wordStepFormatter; - public WordScenarioFormatter(WordStepFormatter wordStepFormatter, IConfiguration configuration, ITestResults nunitResults) + public WordScenarioFormatter(WordStepFormatter wordStepFormatter, IConfiguration configuration, ITestResults testResults) { this.wordStepFormatter = wordStepFormatter; this.configuration = configuration; - this.nunitResults = nunitResults; + this.testResults = testResults; } public void Format(Body body, Scenario scenario) { if (this.configuration.HasTestResults) { - TestResult testResult = this.nunitResults.GetScenarioResult(scenario); + TestResult testResult = this.testResults.GetScenarioResult(scenario); if (testResult == TestResult.Passed) { body.GenerateParagraph("Passed", "Passed"); diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordScenarioOutlineFormatter.cs similarity index 97% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordScenarioOutlineFormatter.cs index a9fc768fa..3428b8a22 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordScenarioOutlineFormatter.cs @@ -20,9 +20,9 @@ using System; using DocumentFormat.OpenXml.Wordprocessing; -using PicklesDoc.Pickles.Extensions; + +using PicklesDoc.Pickles.DocumentationBuilders.Word.Extensions; using PicklesDoc.Pickles.ObjectModel; -using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.Word { diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordStepFormatter.cs similarity index 98% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordStepFormatter.cs index 13ac60dae..81d0a483f 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordStepFormatter.cs @@ -22,7 +22,8 @@ using System.Linq; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Wordprocessing; -using PicklesDoc.Pickles.Extensions; + +using PicklesDoc.Pickles.DocumentationBuilders.Word.Extensions; using PicklesDoc.Pickles.ObjectModel; namespace PicklesDoc.Pickles.DocumentationBuilders.Word diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordStyleApplicator.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordStyleApplicator.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordStyleApplicator.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordStyleApplicator.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordTableFormatter.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordTableFormatter.cs similarity index 100% rename from src/Pickles/Pickles/DocumentationBuilders/Word/WordTableFormatter.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word/WordTableFormatter.cs diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config new file mode 100644 index 000000000..027ff798c --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec b/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec index 3111fecd5..14720ea7b 100644 --- a/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec +++ b/src/Pickles/Pickles.MSBuild/Pickles.MSBuild.nuspec @@ -48,6 +48,11 @@ + + + + + diff --git a/src/Pickles/Pickles/DataStructures/Tree.cs b/src/Pickles/Pickles.ObjectModel/DataStructures/Tree.cs similarity index 100% rename from src/Pickles/Pickles/DataStructures/Tree.cs rename to src/Pickles/Pickles.ObjectModel/DataStructures/Tree.cs diff --git a/src/Pickles/Pickles/DirectoryCrawler/FeatureNode.cs b/src/Pickles/Pickles.ObjectModel/DirectoryCrawler/FeatureNode.cs similarity index 100% rename from src/Pickles/Pickles/DirectoryCrawler/FeatureNode.cs rename to src/Pickles/Pickles.ObjectModel/DirectoryCrawler/FeatureNode.cs diff --git a/src/Pickles/Pickles/DirectoryCrawler/FolderNode.cs b/src/Pickles/Pickles.ObjectModel/DirectoryCrawler/FolderNode.cs similarity index 100% rename from src/Pickles/Pickles/DirectoryCrawler/FolderNode.cs rename to src/Pickles/Pickles.ObjectModel/DirectoryCrawler/FolderNode.cs diff --git a/src/Pickles/Pickles/DirectoryCrawler/INode.cs b/src/Pickles/Pickles.ObjectModel/DirectoryCrawler/INode.cs similarity index 100% rename from src/Pickles/Pickles/DirectoryCrawler/INode.cs rename to src/Pickles/Pickles.ObjectModel/DirectoryCrawler/INode.cs diff --git a/src/Pickles/Pickles/DirectoryCrawler/ImageNode.cs b/src/Pickles/Pickles.ObjectModel/DirectoryCrawler/ImageNode.cs similarity index 100% rename from src/Pickles/Pickles/DirectoryCrawler/ImageNode.cs rename to src/Pickles/Pickles.ObjectModel/DirectoryCrawler/ImageNode.cs diff --git a/src/Pickles/Pickles/DirectoryCrawler/MarkdownNode.cs b/src/Pickles/Pickles.ObjectModel/DirectoryCrawler/MarkdownNode.cs similarity index 100% rename from src/Pickles/Pickles/DirectoryCrawler/MarkdownNode.cs rename to src/Pickles/Pickles.ObjectModel/DirectoryCrawler/MarkdownNode.cs diff --git a/src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs b/src/Pickles/Pickles.ObjectModel/DocumentationBuilders/IDocumentationBuilder.cs similarity index 95% rename from src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs rename to src/Pickles/Pickles.ObjectModel/DocumentationBuilders/IDocumentationBuilder.cs index eec3206be..b4179d6ec 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/IDocumentationBuilder.cs +++ b/src/Pickles/Pickles.ObjectModel/DocumentationBuilders/IDocumentationBuilder.cs @@ -18,9 +18,7 @@ // // -------------------------------------------------------------------------------------------------------------------- -using System; using PicklesDoc.Pickles.DataStructures; -using PicklesDoc.Pickles.DirectoryCrawler; namespace PicklesDoc.Pickles.DocumentationBuilders { diff --git a/src/Pickles/Pickles.ObjectModel/Extensions/StringExtensions.cs b/src/Pickles/Pickles.ObjectModel/Extensions/StringExtensions.cs new file mode 100644 index 000000000..fe403c874 --- /dev/null +++ b/src/Pickles/Pickles.ObjectModel/Extensions/StringExtensions.cs @@ -0,0 +1,51 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System.Linq; +using System.Text; + +namespace PicklesDoc.Pickles.Extensions +{ + public static class StringExtensions + { + public static string ExpandWikiWord(this string word) + { + var sb = new StringBuilder(); + char previous = char.MinValue; + foreach (char current in word.Where(x => char.IsLetterOrDigit(x))) + { + if (previous != char.MinValue && sb.Length > 1 + && ((char.IsUpper(current) || char.IsDigit(current)) && char.IsLower(previous))) + { + sb.Append(' '); + } + else if (char.IsNumber(previous) && char.IsUpper(current)) + { + sb.Append(' '); + } + + sb.Append(current); + previous = current; + } + + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles/Extensions/TreeNodeExtensions.cs b/src/Pickles/Pickles.ObjectModel/Extensions/TreeNodeExtensions.cs similarity index 100% rename from src/Pickles/Pickles/Extensions/TreeNodeExtensions.cs rename to src/Pickles/Pickles.ObjectModel/Extensions/TreeNodeExtensions.cs diff --git a/src/Pickles/Pickles/Extensions/UriExtensions.cs b/src/Pickles/Pickles.ObjectModel/Extensions/UriExtensions.cs similarity index 100% rename from src/Pickles/Pickles/Extensions/UriExtensions.cs rename to src/Pickles/Pickles.ObjectModel/Extensions/UriExtensions.cs diff --git a/src/Pickles/Pickles.ObjectModel/ILanguageServices.cs b/src/Pickles/Pickles.ObjectModel/ILanguageServices.cs new file mode 100644 index 000000000..88f525793 --- /dev/null +++ b/src/Pickles/Pickles.ObjectModel/ILanguageServices.cs @@ -0,0 +1,36 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- +namespace PicklesDoc.Pickles +{ + public interface ILanguageServices + { + string[] BackgroundKeywords { get; } + + string[] WhenStepKeywords { get; } + + string[] GivenStepKeywords { get; } + + string[] ThenStepKeywords { get; } + + string[] AndStepKeywords { get; } + + string[] ButStepKeywords { get; } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.ObjectModel/IMarkdownProvider.cs b/src/Pickles/Pickles.ObjectModel/IMarkdownProvider.cs new file mode 100644 index 000000000..63df8c3c1 --- /dev/null +++ b/src/Pickles/Pickles.ObjectModel/IMarkdownProvider.cs @@ -0,0 +1,29 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System; + +namespace PicklesDoc.Pickles +{ + public interface IMarkdownProvider + { + string Transform(string text); + } +} diff --git a/src/Pickles/Pickles.ObjectModel/Pickles.ObjectModel.csproj b/src/Pickles/Pickles.ObjectModel/Pickles.ObjectModel.csproj index afe1fdab8..8265e4fc1 100644 --- a/src/Pickles/Pickles.ObjectModel/Pickles.ObjectModel.csproj +++ b/src/Pickles/Pickles.ObjectModel/Pickles.ObjectModel.csproj @@ -44,8 +44,20 @@ + + + + + + + + + + + + @@ -66,6 +78,7 @@ + - - + diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs index dc9d9d3d7..05b513c0b 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs @@ -1,7 +1,7 @@ // ------------------------------------------------------------------------------ // // This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:2.0.0.0 +// SpecFlow Version:2.1.0.0 // SpecFlow Generator Version:2.0.0.0 // // Changes to this file may cause incorrect behavior and will be lost if @@ -15,7 +15,7 @@ namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML using TechTalk.SpecFlow; - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.0.0.0")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.1.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Formatting a Feature")] diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs index 0557ecac0..47e516bc3 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs @@ -1,7 +1,7 @@ // ------------------------------------------------------------------------------ // // This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:2.0.0.0 +// SpecFlow Version:2.1.0.0 // SpecFlow Generator Version:2.0.0.0 // // Changes to this file may cause incorrect behavior and will be lost if @@ -15,7 +15,7 @@ namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML using TechTalk.SpecFlow; - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.0.0.0")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.1.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Formatting a Feature Using Strike")] diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs index 5daa19297..eaf5e0cb0 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs @@ -1,7 +1,7 @@ // ------------------------------------------------------------------------------ // // This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:2.0.0.0 +// SpecFlow Version:2.1.0.0 // SpecFlow Generator Version:2.0.0.0 // // Changes to this file may cause incorrect behavior and will be lost if @@ -15,7 +15,7 @@ namespace PicklesDoc.Pickles.Test.DocumentationBuilders.JSON using TechTalk.SpecFlow; - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.0.0.0")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.1.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Formatting A Feature")] diff --git a/src/Pickles/Pickles.Test/Pickles.Test.csproj b/src/Pickles/Pickles.Test/Pickles.Test.csproj index 5c9fa7f79..5ca464e7e 100644 --- a/src/Pickles/Pickles.Test/Pickles.Test.csproj +++ b/src/Pickles/Pickles.Test/Pickles.Test.csproj @@ -35,12 +35,16 @@ false - - ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll True - - ..\packages\ClosedXML.0.76.0\lib\net40-client\ClosedXML.dll + + ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll + True + + + ..\packages\ClosedXML.0.80.1\lib\net40-client\ClosedXML.dll True @@ -51,39 +55,39 @@ ..\packages\Gherkin.4.0.0\lib\net45\Gherkin.dll True - - ..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll + + ..\packages\Moq.4.5.23\lib\net45\Moq.dll True - - ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll True - - ..\packages\NUnit.3.2.1\lib\net45\nunit.framework.dll + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll True - - ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll True - - ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.124\lib\net40\System.IO.Abstractions.TestingHelpers.dll + + ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.137\lib\net40\System.IO.Abstractions.TestingHelpers.dll True - - ..\packages\SpecFlow.2.0.0\lib\net45\TechTalk.SpecFlow.dll + + ..\packages\SpecFlow.2.1.0\lib\net45\TechTalk.SpecFlow.dll True diff --git a/src/Pickles/Pickles.Test/packages.config b/src/Pickles/Pickles.Test/packages.config index 015fd3151..14a7a9431 100644 --- a/src/Pickles/Pickles.Test/packages.config +++ b/src/Pickles/Pickles.Test/packages.config @@ -1,14 +1,15 @@  - - + + + - - + + - - - - + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj b/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj index 25ac08130..f73caab91 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/Pickles.TestFrameworks.UnitTests.csproj @@ -30,31 +30,35 @@ 4 - - ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll True - - ..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll + + ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll + True + + + ..\packages\Moq.4.5.23\lib\net45\Moq.dll True ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll True - - ..\packages\NUnit.3.2.1\lib\net45\nunit.framework.dll + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll True - - ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll True - - ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.124\lib\net40\System.IO.Abstractions.TestingHelpers.dll + + ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.137\lib\net40\System.IO.Abstractions.TestingHelpers.dll True diff --git a/src/Pickles/Pickles.TestFrameworks.UnitTests/packages.config b/src/Pickles/Pickles.TestFrameworks.UnitTests/packages.config index b4e803832..9e4e9f63a 100644 --- a/src/Pickles/Pickles.TestFrameworks.UnitTests/packages.config +++ b/src/Pickles/Pickles.TestFrameworks.UnitTests/packages.config @@ -1,9 +1,10 @@  - - + + + - - - + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.TestFrameworks/Pickles.TestFrameworks.csproj b/src/Pickles/Pickles.TestFrameworks/Pickles.TestFrameworks.csproj index b28ffae04..71d291362 100644 --- a/src/Pickles/Pickles.TestFrameworks/Pickles.TestFrameworks.csproj +++ b/src/Pickles/Pickles.TestFrameworks/Pickles.TestFrameworks.csproj @@ -30,15 +30,15 @@ 4 - - ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True - - ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll True diff --git a/src/Pickles/Pickles.TestFrameworks/packages.config b/src/Pickles/Pickles.TestFrameworks/packages.config index b8c73332b..a96e17c1c 100644 --- a/src/Pickles/Pickles.TestFrameworks/packages.config +++ b/src/Pickles/Pickles.TestFrameworks/packages.config @@ -1,5 +1,5 @@  - - + + \ No newline at end of file diff --git a/src/Pickles/Pickles.UserInterface/NLog.xsd b/src/Pickles/Pickles.UserInterface/NLog.xsd index dc821bc0d..f61050fc6 100644 --- a/src/Pickles/Pickles.UserInterface/NLog.xsd +++ b/src/Pickles/Pickles.UserInterface/NLog.xsd @@ -232,7 +232,6 @@ - @@ -369,6 +368,7 @@ + @@ -402,6 +402,11 @@ Instance of that is used to format log messages. + + + End of line value if a newline is appended at the end of log message . + + Maximum message size in bytes. @@ -526,6 +531,7 @@ + @@ -554,6 +560,11 @@ Indicates whether to use default row highlighting rules. + + + Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + The encoding for writing messages to the . @@ -665,6 +676,7 @@ + @@ -692,6 +704,11 @@ Indicates whether to send the log messages to the standard error instead of the standard output. + + + Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + The encoding for writing messages to the . @@ -1020,10 +1037,13 @@ - - + + + + + @@ -1033,15 +1053,15 @@ - + + - @@ -1093,19 +1113,24 @@ Size in bytes above which log files will be automatically archived. Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. Choose: + + + Indicates whether to compress archive files into the zip archive format. + + Maximum number of archive files that should be kept. - + - Indicates whether to compress archive files into the zip archive format. + Is the an absolute or relative path? - + - Gets or set a value indicating whether a managed file stream is forced, instead of used the native implementation. + Is the an absolute or relative path? @@ -1113,6 +1138,16 @@ Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong. + + + Gets or set a value indicating whether a managed file stream is forced, instead of used the native implementation. + + + + + Indicates whether the footer should be written only when the file is archived. + + Name of the file to write to. @@ -1158,9 +1193,9 @@ Indicates whether concurrent writes to the log file by multiple processes on the same host. - + - Delay in milliseconds to wait before attempting to write to the file again. + Indicates whether to keep log file open instead of opening and closing it on each logging event. @@ -1193,14 +1228,14 @@ Indicates whether to automatically flush the file buffers after each log message. - + - Number of times the write is appended on the file before NLog discards the log message. + Delay in milliseconds to wait before attempting to write to the file again. - + - Indicates whether to keep log file open instead of opening and closing it on each logging event. + Number of times the write is appended on the file before NLog discards the log message. @@ -1224,6 +1259,13 @@ + + + + + + + @@ -1704,6 +1746,7 @@ + @@ -1729,6 +1772,11 @@ Encoding to be used. + + + End of line value if a newline is appended at the end of log message . + + Maximum message size in bytes. @@ -1784,6 +1832,7 @@ + @@ -1817,6 +1866,11 @@ Instance of that is used to format log messages. + + + End of line value if a newline is appended at the end of log message . + + Maximum message size in bytes. @@ -2238,6 +2292,18 @@ + + + + + + + + + + + + @@ -2334,8 +2400,14 @@ + + + + Option to render the empty object value {} + + Option to suppress the extra spaces in the output json diff --git a/src/Pickles/Pickles.UserInterface/Pickles.UserInterface.csproj b/src/Pickles/Pickles.UserInterface/Pickles.UserInterface.csproj index 7e0166054..cde50a3f5 100644 --- a/src/Pickles/Pickles.UserInterface/Pickles.UserInterface.csproj +++ b/src/Pickles/Pickles.UserInterface/Pickles.UserInterface.csproj @@ -45,8 +45,9 @@ Pickles.ico - - ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.dll @@ -60,15 +61,15 @@ ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Platform.dll True - - ..\packages\MahApps.Metro.1.2.4.0\lib\net45\MahApps.Metro.dll + + ..\packages\MahApps.Metro.1.3.0\lib\net45\MahApps.Metro.dll True ..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll - ..\packages\NLog.4.3.3\lib\net45\NLog.dll + ..\packages\NLog.4.3.10\lib\net45\NLog.dll True @@ -81,13 +82,13 @@ - - ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll True - ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\System.Windows.Interactivity.dll + ..\packages\MahApps.Metro.1.3.0\lib\net45\System.Windows.Interactivity.dll True diff --git a/src/Pickles/Pickles.UserInterface/packages.config b/src/Pickles/Pickles.UserInterface/packages.config index 6804f3977..442509249 100644 --- a/src/Pickles/Pickles.UserInterface/packages.config +++ b/src/Pickles/Pickles.UserInterface/packages.config @@ -1,13 +1,13 @@  - + - + - - - + + + - + \ No newline at end of file diff --git a/src/Pickles/Pickles/Pickles.csproj b/src/Pickles/Pickles/Pickles.csproj index 46d603946..5ce166161 100644 --- a/src/Pickles/Pickles/Pickles.csproj +++ b/src/Pickles/Pickles/Pickles.csproj @@ -35,12 +35,12 @@ false - - ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll True - - ..\packages\ClosedXML.0.76.0\lib\net40-client\ClosedXML.dll + + ..\packages\ClosedXML.0.80.1\lib\net40-client\ClosedXML.dll True @@ -66,12 +66,12 @@ ..\packages\NDesk.Options.0.2.1\lib\NDesk.Options.dll - - ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True - ..\packages\NLog.4.3.3\lib\net45\NLog.dll + ..\packages\NLog.4.3.10\lib\net45\NLog.dll True @@ -80,8 +80,8 @@ - - ..\packages\System.IO.Abstractions.2.0.0.124\lib\net40\System.IO.Abstractions.dll + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll True diff --git a/src/Pickles/Pickles/packages.config b/src/Pickles/Pickles/packages.config index b4d21ec8a..7f6680548 100644 --- a/src/Pickles/Pickles/packages.config +++ b/src/Pickles/Pickles/packages.config @@ -1,13 +1,13 @@  - - + + - - - + + + \ No newline at end of file From e578456726a0968c20698bdc1249ec3e6f30adcc Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Mon, 17 Oct 2016 17:57:41 +0200 Subject: [PATCH 19/30] Create unit test projects for output formatters and improve the organization (#388) * Move the dhtml unit tests to their own project * Move dhtml unit tests to their own project * Moving Excel unit tests to their own project * Move Html unit tests to their own project * Move Json unit tests to their own project * Moving Word unit tests to their own project * Fix file header * Add new unit test projects to build scripts * Adjust namespaces * Explicitely link to system.io.abstractions * Move html formatter test files to html test project * Remove unused files * Move Excel registration to its own module * Move Html registration to its own module * Move Word registration to its own module * Move Json registration to its own module * Move Dhtml registration to its own module * Add file to project --- build.fsx | 35 +++++ ...cumentationBuilders.Dhtml.UnitTests.csproj | 98 ++++++++++++++ ...Builders.Dhtml.UnitTests.v2.ncrunchproject | 27 ++++ .../Properties/AssemblyInfo.cs | 7 + .../WhenDoingSomeIntegrationTests.cs | 7 +- .../packages.config | 7 + .../DhtmlModule.cs | 32 +++++ ...Pickles.DocumentationBuilders.Dhtml.csproj | 5 + .../packages.config | 1 + ...cumentationBuilders.Excel.UnitTests.csproj | 104 ++++++++++++++ ...Builders.Excel.UnitTests.v2.ncrunchproject | 28 ++++ .../Properties/AssemblyInfo.cs | 7 + .../WhenAddingADocumentStringToAWorksheet.cs | 8 +- .../WhenAddingAFeatureToAWorksheet.cs | 9 +- .../WhenAddingAScenarioOutlineToAWorksheet.cs | 9 +- .../WhenAddingAScenarioToAWorksheet.cs | 9 +- .../WhenAddingAStepToAWorksheet.cs | 9 +- .../WhenAddingATableOfContentsToAWorksheet.cs | 7 +- .../WhenAddingATableToAWorksheet.cs | 9 +- .../WhenCreatingSheetNamesFromFeatures.cs | 9 +- .../packages.config | 8 ++ .../ExcelModule.cs | 40 ++++++ ...Pickles.DocumentationBuilders.Excel.csproj | 5 + .../packages.config | 1 + .../AutomationLayer/CurrentScenarioContext.cs | 15 ++- .../AutomationLayer/Hooks.cs | 12 +- .../AutomationLayer/StepDefinitions.cs | 18 +-- .../FormattingAFeature.feature | 0 .../FormattingAFeature.feature.cs | 66 ++++----- .../FormattingAFeatureUsingStrike.feature | 0 .../FormattingAFeatureUsingStrike.feature.cs | 58 ++++---- ...ocumentationBuilders.Html.UnitTests.csproj | 127 ++++++++++++++++++ ...nBuilders.Html.UnitTests.v2.ncrunchproject | 27 ++++ .../Properties/AssemblyInfo.cs | 7 + .../StrikeMarkdownProviderTests.cs | 4 +- .../WhenFormattingFeatures.cs | 7 +- .../WhenFormattingMultilineStrings.cs | 7 +- .../WhenFormattingScenario.cs | 7 +- .../WhenFormattingScenarioOutlines.cs | 7 +- .../WhenFormattingStep.cs | 73 +++++----- .../WhenFormattingTables.cs | 7 +- .../packages.config | 7 + .../HtmlModule.cs | 45 +++++++ .../Pickles.DocumentationBuilders.Html.csproj | 5 + .../packages.config | 1 + .../AutomationLayer/StepDefinitions.cs | 7 +- .../FormattingAFeature.feature | 0 .../FormattingAFeature.feature.cs | 58 ++++---- ...ocumentationBuilders.Json.UnitTests.csproj | 110 +++++++++++++++ ...nBuilders.Json.UnitTests.v2.ncrunchproject | 27 ++++ .../Properties/AssemblyInfo.cs | 7 + .../packages.config | 8 ++ .../JsonModule.cs | 32 +++++ .../Pickles.DocumentationBuilders.Json.csproj | 5 + .../packages.config | 1 + ...ocumentationBuilders.Word.UnitTests.csproj | 104 ++++++++++++++ ...nBuilders.Word.UnitTests.v2.ncrunchproject | 27 ++++ .../Properties/AssemblyInfo.cs | 7 + .../WhenBuildingWordDocuments.cs | 37 ++++- .../WordDescriptionFormatterTests.cs | 4 +- .../packages.config | 9 ++ .../Pickles.DocumentationBuilders.Word.csproj | 5 + .../WordModule.cs | 42 ++++++ .../packages.config | 1 + .../HtmlFormatterTestFiles/Background.feature | 13 -- .../HtmlFormatterTestFiles/Background.html | 30 ----- .../HtmlFormatterTestFiles/Comment.feature | 25 ---- .../HtmlFormatterTestFiles/Comment.html | 51 ------- .../MultilineString.feature | 14 -- .../MultilineString.html | 32 ----- .../ScenarioOutline.feature | 14 -- .../ScenarioOutline.html | 53 -------- .../HtmlFormatterTestFiles/Simple.feature | 9 -- .../HtmlFormatterTestFiles/Simple.html | 30 ----- .../HtmlFormatterTestFiles/Table.feature | 11 -- .../HtmlFormatterTestFiles/Table.html | 45 ------- src/Pickles/Pickles.Test/Pickles.Test.csproj | 71 ---------- src/Pickles/Pickles.sln | 30 +++++ src/Pickles/Pickles/PicklesModule.cs | 45 +------ test.fsx | 53 +++++++- 80 files changed, 1376 insertions(+), 622 deletions(-) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.csproj create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.v2.ncrunchproject create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Properties/AssemblyInfo.cs rename src/Pickles/{Pickles.Test/DocumentationBuilders/DHTML => Pickles.DocumentationBuilders.Dhtml.UnitTests}/WhenDoingSomeIntegrationTests.cs (95%) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/packages.config create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Dhtml/DhtmlModule.cs create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.csproj create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.v2.ncrunchproject create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Properties/AssemblyInfo.cs rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingADocumentStringToAWorksheet.cs (94%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingAFeatureToAWorksheet.cs (97%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingAScenarioOutlineToAWorksheet.cs (98%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingAScenarioToAWorksheet.cs (96%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingAStepToAWorksheet.cs (98%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingATableOfContentsToAWorksheet.cs (93%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenAddingATableToAWorksheet.cs (96%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Excel => Pickles.DocumentationBuilders.Excel.UnitTests}/WhenCreatingSheetNamesFromFeatures.cs (97%) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/packages.config create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelModule.cs rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/AutomationLayer/CurrentScenarioContext.cs (81%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/AutomationLayer/Hooks.cs (84%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/AutomationLayer/StepDefinitions.cs (82%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/FormattingAFeature.feature (100%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/FormattingAFeature.feature.cs (83%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/FormattingAFeatureUsingStrike.feature (100%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/FormattingAFeatureUsingStrike.feature.cs (72%) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.csproj create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.v2.ncrunchproject create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Properties/AssemblyInfo.cs rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/StrikeMarkdownProviderTests.cs (94%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/WhenFormattingFeatures.cs (98%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/WhenFormattingMultilineStrings.cs (94%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/WhenFormattingScenario.cs (98%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/WhenFormattingScenarioOutlines.cs (98%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/WhenFormattingStep.cs (79%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/HTML => Pickles.DocumentationBuilders.Html.UnitTests}/WhenFormattingTables.cs (95%) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/packages.config create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Html/HtmlModule.cs rename src/Pickles/{Pickles.Test/DocumentationBuilders/JSON => Pickles.DocumentationBuilders.Json.UnitTests}/AutomationLayer/StepDefinitions.cs (95%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/JSON => Pickles.DocumentationBuilders.Json.UnitTests}/FormattingAFeature.feature (100%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/JSON => Pickles.DocumentationBuilders.Json.UnitTests}/FormattingAFeature.feature.cs (91%) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.csproj create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.v2.ncrunchproject create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Properties/AssemblyInfo.cs create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/packages.config create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Json/JsonModule.cs create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.csproj create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.v2.ncrunchproject create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Properties/AssemblyInfo.cs rename src/Pickles/{Pickles.Test/DocumentationBuilders/Word => Pickles.DocumentationBuilders.Word.UnitTests}/WhenBuildingWordDocuments.cs (62%) rename src/Pickles/{Pickles.Test/DocumentationBuilders/Word => Pickles.DocumentationBuilders.Word.UnitTests}/WordDescriptionFormatterTests.cs (93%) create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/packages.config create mode 100644 src/Pickles/Pickles.DocumentationBuilders.Word/WordModule.cs delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.feature delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.html delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.feature delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.html delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.feature delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.html delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.feature delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.html delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.feature delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.html delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.feature delete mode 100644 src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.html diff --git a/build.fsx b/build.fsx index 4baf7c332..ca05843fd 100644 --- a/build.fsx +++ b/build.fsx @@ -69,6 +69,36 @@ Target "BuildTest.TestFrameworks" (fun _ -> |> Log "AppBuild-Output: " ) +Target "BuildTest.DocumentationBuilders.Dhtml" (fun _ -> + !! "src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.csproj" + |> MSBuildRelease testDir "Build" + |> Log "AppBuild-Output: " +) + +Target "BuildTest.DocumentationBuilders.Excel" (fun _ -> + !! "src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.csproj" + |> MSBuildRelease testDir "Build" + |> Log "AppBuild-Output: " +) + +Target "BuildTest.DocumentationBuilders.Html" (fun _ -> + !! "src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.csproj" + |> MSBuildRelease testDir "Build" + |> Log "AppBuild-Output: " +) + +Target "BuildTest.DocumentationBuilders.Json" (fun _ -> + !! "src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.csproj" + |> MSBuildRelease testDir "Build" + |> Log "AppBuild-Output: " +) + +Target "BuildTest.DocumentationBuilders.Word" (fun _ -> + !! "src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.csproj" + |> MSBuildRelease testDir "Build" + |> Log "AppBuild-Output: " +) + let createZip (packageType : string) = !! (buildDir + "/" + packageType + "/*.*") -- "*.zip" |> Zip (buildDir + packageType) (deployDir + "Pickles-" + packageType + "-" + version + ".zip") @@ -94,6 +124,11 @@ Target "Default" (fun _ -> ==> "BuildGui" ==> "BuildTest" ==> "BuildTest.TestFrameworks" + ==> "BuildTest.DocumentationBuilders.Dhtml" + ==> "BuildTest.DocumentationBuilders.Excel" + ==> "BuildTest.DocumentationBuilders.Html" + ==> "BuildTest.DocumentationBuilders.Json" + ==> "BuildTest.DocumentationBuilders.Word" ==> "Zip" ==> "Default" diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.csproj b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.csproj new file mode 100644 index 000000000..0bdb07371 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.csproj @@ -0,0 +1,98 @@ + + + + + Debug + AnyCPU + {C40305BD-2BCE-4E43-8B06-20F48ADD6C49} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Dhtml.UnitTests + PicklesDoc.Pickles.DocumentationBuilders.Dhtml.UnitTests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll + True + + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll + True + + + ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.137\lib\net40\System.IO.Abstractions.TestingHelpers.dll + True + + + + + + + + + + + VersionInfo.cs + + + + + + + {8AC3AAFA-84DD-4437-962B-E6C5D6078E09} + Pickles.DocumentationBuilders.Dhtml + + + {2c849ad2-d125-4754-8bba-7c61fa6251e4} + Pickles.DocumentationBuilders.Html + + + {55382afc-e050-4df7-aa4f-0aba71e2e169} + Pickles.ObjectModel + + + {8BD9FCD2-7ED5-46B5-B6A4-7FA3775E159F} + Pickles.Test + + + {38BAD6E0-78AB-4AC3-91A8-BF72AF5EE394} + Pickles + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Pickles.DocumentationBuilders.Dhtml.UnitTests.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..293715c7c --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Dhtml.UnitTests")] +[assembly: AssemblyDescription("Unit tests for the Pickles output formatter that outputs DHTML documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/DHTML/WhenDoingSomeIntegrationTests.cs b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/WhenDoingSomeIntegrationTests.cs similarity index 95% rename from src/Pickles/Pickles.Test/DocumentationBuilders/DHTML/WhenDoingSomeIntegrationTests.cs rename to src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/WhenDoingSomeIntegrationTests.cs index c2b6637ab..026543ac1 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/DHTML/WhenDoingSomeIntegrationTests.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/WhenDoingSomeIntegrationTests.cs @@ -18,12 +18,15 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Dhtml; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.DHTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Dhtml.UnitTests { [TestFixture] public class WhenDoingSomeIntegrationTests : BaseFixture diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/packages.config new file mode 100644 index 000000000..90371e03a --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml.UnitTests/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/DhtmlModule.cs b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/DhtmlModule.cs new file mode 100644 index 000000000..244ec5832 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/DhtmlModule.cs @@ -0,0 +1,32 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using Autofac; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Dhtml +{ + public class DhtmlModule : Module + { + protected override void Load(ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.csproj b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.csproj index 5519fa9fc..f272bd58c 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.csproj +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/Pickles.DocumentationBuilders.Dhtml.csproj @@ -30,6 +30,10 @@ 4 + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + ..\packages\NLog.4.3.10\lib\net45\NLog.dll True @@ -52,6 +56,7 @@ VersionInfo.cs + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config index 7f4966694..722150ddc 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config +++ b/src/Pickles/Pickles.DocumentationBuilders.Dhtml/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.csproj b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.csproj new file mode 100644 index 000000000..0aff35c37 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.csproj @@ -0,0 +1,104 @@ + + + + + Debug + AnyCPU + {CDAD56FA-E3CF-4E4A-A5CB-5F43FF4FBCF5} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests + PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + + + ..\packages\ClosedXML.0.80.1\lib\net40-client\ClosedXML.dll + True + + + ..\packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll + True + + + ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll + True + + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll + True + + + + + + + + + + + + + VersionInfo.cs + + + + + + + + + + + + + + + + + + + + {a875b066-443a-420e-a1f5-7870cff0a50c} + Pickles.DocumentationBuilders.Excel + + + {55382afc-e050-4df7-aa4f-0aba71e2e169} + Pickles.ObjectModel + + + {8bd9fcd2-7ed5-46b5-b6a4-7fa3775e159f} + Pickles.Test + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.v2.ncrunchproject new file mode 100644 index 000000000..44ddebe76 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Pickles.DocumentationBuilders.Excel.UnitTests.v2.ncrunchproject @@ -0,0 +1,28 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + AbnormalReferenceResolution + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5a098ef09 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Excel.UnitTests")] +[assembly: AssemblyDescription("Unit Tests for the Pickles output formatter that outputs MS Excel documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingADocumentStringToAWorksheet.cs similarity index 94% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingADocumentStringToAWorksheet.cs index e2f5d2e61..cc2530332 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingADocumentStringToAWorksheet.cs @@ -19,12 +19,16 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +using PicklesDoc.Pickles.Test; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenAddingADocumentStringToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAFeatureToAWorksheet.cs similarity index 97% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAFeatureToAWorksheet.cs index 77aec7f4b..c63ece56c 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAFeatureToAWorksheet.cs @@ -20,14 +20,19 @@ using System; using System.Collections.Generic; + using Autofac; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; + using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenAddingAFeatureToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAScenarioOutlineToAWorksheet.cs similarity index 98% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAScenarioOutlineToAWorksheet.cs index 9830b52d1..8aff6e66d 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAScenarioOutlineToAWorksheet.cs @@ -20,14 +20,19 @@ using System; using System.Collections.Generic; + using Autofac; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; + using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenAddingAScenarioOutlineToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAScenarioToAWorksheet.cs similarity index 96% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAScenarioToAWorksheet.cs index a59b35554..2e7962ff2 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAScenarioToAWorksheet.cs @@ -20,14 +20,19 @@ using System; using System.Collections.Generic; + using Autofac; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; + using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenAddingAScenarioToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAStepToAWorksheet.cs similarity index 98% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAStepToAWorksheet.cs index 9bbec6250..390fcd7c4 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingAStepToAWorksheet.cs @@ -21,14 +21,19 @@ using System; using System.Collections.Generic; using System.Linq; + using Autofac; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; + using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenAddingAStepToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingATableOfContentsToAWorksheet.cs similarity index 93% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingATableOfContentsToAWorksheet.cs index f6d8196a1..9dd3ec9bd 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingATableOfContentsToAWorksheet.cs @@ -19,11 +19,14 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using ClosedXML.Excel; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +using PicklesDoc.Pickles.Test; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { // [TestFixture] public class WhenAddingATableOfContentsToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingATableToAWorksheet.cs similarity index 96% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingATableToAWorksheet.cs index 694dda886..1fb5dcb54 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenAddingATableToAWorksheet.cs @@ -20,14 +20,19 @@ using System; using System.Collections.Generic; + using Autofac; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; + using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenAddingATableToAWorksheet : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenCreatingSheetNamesFromFeatures.cs similarity index 97% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs rename to src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenCreatingSheetNamesFromFeatures.cs index cdce20ce6..6c82d8a03 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/WhenCreatingSheetNamesFromFeatures.cs @@ -19,14 +19,19 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using Autofac; + using ClosedXML.Excel; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Excel; + using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests { [TestFixture] public class WhenCreatingSheetNamesFromFeatures : BaseFixture diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/packages.config new file mode 100644 index 000000000..6be00d60c --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel.UnitTests/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelModule.cs b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelModule.cs new file mode 100644 index 000000000..c819a4225 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/ExcelModule.cs @@ -0,0 +1,40 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using Autofac; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Excel +{ + public class ExcelModule : Module + { + protected override void Load(ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj b/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj index f5d84191d..db5942a44 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/Pickles.DocumentationBuilders.Excel.csproj @@ -30,6 +30,10 @@ 4 + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + ..\packages\ClosedXML.0.80.1\lib\net40-client\ClosedXML.dll True @@ -62,6 +66,7 @@ + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config index 93f1481eb..20a4c3d68 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config +++ b/src/Pickles/Pickles.DocumentationBuilders.Excel/packages.config @@ -1,5 +1,6 @@  + diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/CurrentScenarioContext.cs similarity index 81% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/CurrentScenarioContext.cs index 0a6216046..ff1515e08 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/CurrentScenarioContext.cs @@ -21,11 +21,12 @@ using System; using System.Collections; using System.Xml.Linq; + using Autofac; using PicklesDoc.Pickles.ObjectModel; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML.AutomationLayer +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests.AutomationLayer { public class CurrentScenarioContext { @@ -35,9 +36,9 @@ public Feature Feature { get { - if (Current.ContainsKey("Feature")) + if (this.Current.ContainsKey("Feature")) { - return Current["Feature"] as Feature; + return this.Current["Feature"] as Feature; } else { @@ -47,7 +48,7 @@ public Feature Feature set { - Current["Feature"] = value; + this.Current["Feature"] = value; } } @@ -57,9 +58,9 @@ public XElement Html { get { - if (Current.ContainsKey("Html")) + if (this.Current.ContainsKey("Html")) { - return Current["Html"] as XElement; + return this.Current["Html"] as XElement; } else { @@ -69,7 +70,7 @@ public XElement Html set { - Current["Html"] = value; + this.Current["Html"] = value; } } } diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/Hooks.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/Hooks.cs similarity index 84% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/Hooks.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/Hooks.cs index e0feb819a..1d0be6793 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/Hooks.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/Hooks.cs @@ -20,10 +20,12 @@ using System; using System.Linq; + using Autofac; + using TechTalk.SpecFlow; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML.AutomationLayer +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests.AutomationLayer { [Binding] public class Hooks @@ -44,11 +46,11 @@ public void BeforeScenario() var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(typeof(Runner).Assembly); builder.RegisterModule(); - CurrentScenarioContext.Container = builder.Build(); + this.CurrentScenarioContext.Container = builder.Build(); if (this.scenarioContext.ScenarioInfo.Tags.Contains("enableExperimentalFeatures")) { - var configuration = CurrentScenarioContext.Container.Resolve(); + var configuration = this.CurrentScenarioContext.Container.Resolve(); configuration.EnableExperimentalFeatures(); } } @@ -56,11 +58,11 @@ public void BeforeScenario() [AfterScenario] public void AfterScenario() { - var container = CurrentScenarioContext.Container; + var container = this.CurrentScenarioContext.Container; container?.Dispose(); - CurrentScenarioContext.Container = null; + this.CurrentScenarioContext.Container = null; } } } diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/StepDefinitions.cs similarity index 82% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/StepDefinitions.cs index 41c0bb032..a17799182 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/AutomationLayer/StepDefinitions.cs @@ -20,14 +20,16 @@ using System; using System.Xml; + using Autofac; + using NFluent; -using PicklesDoc.Pickles.DocumentationBuilders.Html; using PicklesDoc.Pickles.ObjectModel; + using TechTalk.SpecFlow; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML.AutomationLayer +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests.AutomationLayer { [Binding] public class StepDefinitions @@ -42,7 +44,7 @@ public StepDefinitions(CurrentScenarioContext currentScenarioContext) [Given(@"I have this feature description")] public void GivenIHaveThisFeatureDescription(string multilineText) { - CurrentScenarioContext.Feature = new Feature + this.CurrentScenarioContext.Feature = new Feature { Name = "a feature", Description = multilineText @@ -52,7 +54,7 @@ public void GivenIHaveThisFeatureDescription(string multilineText) [Given(@"I have this feature file")] public void GivenIHaveThisFeatureFile(string multilineText) { - CurrentScenarioContext.Feature = new Feature + this.CurrentScenarioContext.Feature = new Feature { Name = "a feature", Description = multilineText @@ -62,16 +64,16 @@ public void GivenIHaveThisFeatureFile(string multilineText) [When(@"I generate the documentation")] public void WhenIGenerateTheDocumentation() { - var configuration = CurrentScenarioContext.Container.Resolve(); - var htmlFeatureFormatter = CurrentScenarioContext.Container.Resolve(); + var configuration = this.CurrentScenarioContext.Container.Resolve(); + var htmlFeatureFormatter = this.CurrentScenarioContext.Container.Resolve(); - CurrentScenarioContext.Html = htmlFeatureFormatter.Format(CurrentScenarioContext.Feature); + this.CurrentScenarioContext.Html = htmlFeatureFormatter.Format(this.CurrentScenarioContext.Feature); } [Then(@"the result should be")] public void ThenTheResultShouldBe(string multilineText) { - var actual = CurrentScenarioContext.Html.ToString(); + var actual = this.CurrentScenarioContext.Html.ToString(); actual = actual.Replace(" xmlns=\"http://www.w3.org/1999/xhtml\"", string.Empty); actual = FormatXml(actual); diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeature.feature similarity index 100% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeature.feature diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeature.feature.cs similarity index 83% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeature.feature.cs index 05b513c0b..75fc3d1d6 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeature.feature.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeature.feature.cs @@ -3,66 +3,68 @@ // This code was generated by SpecFlow (http://www.specflow.org/). // SpecFlow Version:2.1.0.0 // SpecFlow Generator Version:2.0.0.0 -// +// // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // // ------------------------------------------------------------------------------ #region Designer generated code + +using System; + +using TechTalk.SpecFlow; + #pragma warning disable -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { - using TechTalk.SpecFlow; - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.1.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Formatting a Feature")] public partial class FormattingAFeatureFeature { - + private TechTalk.SpecFlow.ITestRunner testRunner; - + #line 1 "FormattingAFeature.feature" #line hidden - + [NUnit.Framework.TestFixtureSetUpAttribute()] public virtual void FeatureSetup() { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + this.testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Formatting a Feature", null, ProgrammingLanguage.CSharp, ((string[])(null))); - testRunner.OnFeatureStart(featureInfo); + this.testRunner.OnFeatureStart(featureInfo); } - + [NUnit.Framework.TestFixtureTearDownAttribute()] public virtual void FeatureTearDown() { - testRunner.OnFeatureEnd(); - testRunner = null; + this.testRunner.OnFeatureEnd(); + this.testRunner = null; } - + [NUnit.Framework.SetUpAttribute()] public virtual void TestInitialize() { } - + [NUnit.Framework.TearDownAttribute()] public virtual void ScenarioTearDown() { - testRunner.OnScenarioEnd(); + this.testRunner.OnScenarioEnd(); } - + public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) { - testRunner.OnScenarioStart(scenarioInfo); + this.testRunner.OnScenarioStart(scenarioInfo); } - + public virtual void ScenarioCleanup() { - testRunner.CollectScenarioErrors(); + this.testRunner.CollectScenarioErrors(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("Description should be Formatted as Markdown")] public virtual void DescriptionShouldBeFormattedAsMarkdown() @@ -72,7 +74,7 @@ public virtual void DescriptionShouldBeFormattedAsMarkdown() this.ScenarioSetup(scenarioInfo); #line hidden #line 5 - testRunner.Given("I have this feature description", @"In order to see the description as nice HTML + this.testRunner.Given("I have this feature description", @"In order to see the description as nice HTML As a Pickles user I want to see the descriptions written in markdown rendered as HTML @@ -97,10 +99,10 @@ I also enjoy ordering things 1. This is the first reason 2. This is the second reason", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 32 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 33 - testRunner.Then("the result should be", @"
+ this.testRunner.Then("the result should be", @"

a feature

In order to see the description as nice HTML @@ -129,7 +131,7 @@ to describe text

#line hidden this.ScenarioCleanup(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("Markdown Tables should be Formatted as HTML Tables")] public virtual void MarkdownTablesShouldBeFormattedAsHTMLTables() @@ -139,7 +141,7 @@ public virtual void MarkdownTablesShouldBeFormattedAsHTMLTables() this.ScenarioSetup(scenarioInfo); #line hidden #line 65 - testRunner.Given("I have this feature description", @"In order to see the description as nice HTML + this.testRunner.Given("I have this feature description", @"In order to see the description as nice HTML As a Pickles user I want to see the descriptions written in markdown rendered with tables @@ -149,10 +151,10 @@ I want to see the descriptions written in markdown rendered with tables | Cell value 3 | | | Cell value 4 | Cell value 5 |", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 77 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 78 - testRunner.Then("the result should be", @"
+ this.testRunner.Then("the result should be", @"

a feature

In order to see the description as nice HTML @@ -186,7 +188,7 @@ I want to see the descriptions written in markdown rendered with tables

#line hidden this.ScenarioCleanup(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("Somewhat malformed Markdown Tables should be formatted as HTML Tables as well")] public virtual void SomewhatMalformedMarkdownTablesShouldBeFormattedAsHTMLTablesAsWell() @@ -196,7 +198,7 @@ public virtual void SomewhatMalformedMarkdownTablesShouldBeFormattedAsHTMLTables this.ScenarioSetup(scenarioInfo); #line hidden #line 115 - testRunner.Given("I have this feature description", @"In order to see the description as nice HTML + this.testRunner.Given("I have this feature description", @"In order to see the description as nice HTML As a Pickles user I want to see the descriptions written in markdown rendered with tables @@ -206,10 +208,10 @@ I want to see the descriptions written in markdown rendered with tables | Cell value 3 Note the missing column delimiter here | | Cell value 4 | Cell value 5 |", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 127 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 128 - testRunner.Then("the result should be", @"
+ this.testRunner.Then("the result should be", @"

a feature

In order to see the description as nice HTML diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeatureUsingStrike.feature similarity index 100% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeatureUsingStrike.feature diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeatureUsingStrike.feature.cs similarity index 72% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeatureUsingStrike.feature.cs index 47e516bc3..07091d1d6 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/FormattingAFeatureUsingStrike.feature.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/FormattingAFeatureUsingStrike.feature.cs @@ -3,66 +3,68 @@ // This code was generated by SpecFlow (http://www.specflow.org/). // SpecFlow Version:2.1.0.0 // SpecFlow Generator Version:2.0.0.0 -// +// // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // // ------------------------------------------------------------------------------ #region Designer generated code + +using System; + +using TechTalk.SpecFlow; + #pragma warning disable -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { - using TechTalk.SpecFlow; - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.1.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Formatting a Feature Using Strike")] public partial class FormattingAFeatureUsingStrikeFeature { - + private TechTalk.SpecFlow.ITestRunner testRunner; - + #line 1 "FormattingAFeatureUsingStrike.feature" #line hidden - + [NUnit.Framework.TestFixtureSetUpAttribute()] public virtual void FeatureSetup() { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + this.testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Formatting a Feature Using Strike", null, ProgrammingLanguage.CSharp, ((string[])(null))); - testRunner.OnFeatureStart(featureInfo); + this.testRunner.OnFeatureStart(featureInfo); } - + [NUnit.Framework.TestFixtureTearDownAttribute()] public virtual void FeatureTearDown() { - testRunner.OnFeatureEnd(); - testRunner = null; + this.testRunner.OnFeatureEnd(); + this.testRunner = null; } - + [NUnit.Framework.SetUpAttribute()] public virtual void TestInitialize() { } - + [NUnit.Framework.TearDownAttribute()] public virtual void ScenarioTearDown() { - testRunner.OnScenarioEnd(); + this.testRunner.OnScenarioEnd(); } - + public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) { - testRunner.OnScenarioStart(scenarioInfo); + this.testRunner.OnScenarioStart(scenarioInfo); } - + public virtual void ScenarioCleanup() { - testRunner.CollectScenarioErrors(); + this.testRunner.CollectScenarioErrors(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("Description with image should render correctly")] [NUnit.Framework.CategoryAttribute("enableExperimentalFeatures")] @@ -74,18 +76,18 @@ public virtual void DescriptionWithImageShouldRenderCorrectly() this.ScenarioSetup(scenarioInfo); #line hidden #line 6 - testRunner.Given("I have this feature description", "Including a picture: ![](./image.png)", ((TechTalk.SpecFlow.Table)(null)), "Given "); + this.testRunner.Given("I have this feature description", "Including a picture: ![](./image.png)", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 10 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 11 - testRunner.Then("the result should be", "

\r\n

a feature

\r\n
\r\n

Inc" + + this.testRunner.Then("the result should be", "

\r\n

a feature

\r\n
\r\n

Inc" + "luding a picture: \"\"

\r\n
\r\n
    \r\n
", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden this.ScenarioCleanup(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("Description with image with extra attributes should render correctly")] public virtual void DescriptionWithImageWithExtraAttributesShouldRenderCorrectly() @@ -95,12 +97,12 @@ public virtual void DescriptionWithImageWithExtraAttributesShouldRenderCorrectly this.ScenarioSetup(scenarioInfo); #line hidden #line 24 - testRunner.Given("I have this feature description", "Including a picture: ![alt text](./image.png \"Image Title\")", ((TechTalk.SpecFlow.Table)(null)), "Given "); + this.testRunner.Given("I have this feature description", "Including a picture: ![alt text](./image.png \"Image Title\")", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 28 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 29 - testRunner.Then("the result should be", "
\r\n

a feature

\r\n
\r\n

Inc" + + this.testRunner.Then("the result should be", "

\r\n

a feature

\r\n
\r\n

Inc" + "luding a picture: \"alt\r\n

\r\n
    \r\n
", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.csproj b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.csproj new file mode 100644 index 000000000..8c33fd746 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.csproj @@ -0,0 +1,127 @@ + + + + + Debug + AnyCPU + {B7CFAD40-9D85-4B4F-AB2C-F0D007083A99} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests + PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + + + ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll + True + + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll + True + + + + + + + + + ..\packages\SpecFlow.2.1.0\lib\net45\TechTalk.SpecFlow.dll + + + + + VersionInfo.cs + + + + + + FormattingAFeature.feature + True + True + + + FormattingAFeatureUsingStrike.feature + True + True + + + + + + + + + + + + + SpecFlowSingleFileGenerator + FormattingAFeature.feature.cs + + + SpecFlowSingleFileGenerator + FormattingAFeatureUsingStrike.feature.cs + + + + + + {2C849AD2-D125-4754-8BBA-7C61FA6251E4} + Pickles.DocumentationBuilders.Html + + + {55382AFC-E050-4DF7-AA4F-0ABA71E2E169} + Pickles.ObjectModel + + + {8BD9FCD2-7ED5-46B5-B6A4-7FA3775E159F} + Pickles.Test + + + {38BAD6E0-78AB-4AC3-91A8-BF72AF5EE394} + Pickles + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Pickles.DocumentationBuilders.Html.UnitTests.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..d7d0b17b3 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Html")] +[assembly: AssemblyDescription("A Pickles output formatter that outputs HTML documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/StrikeMarkdownProviderTests.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/StrikeMarkdownProviderTests.cs similarity index 94% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/StrikeMarkdownProviderTests.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/StrikeMarkdownProviderTests.cs index 7406e2c6d..8d78275dc 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/StrikeMarkdownProviderTests.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/StrikeMarkdownProviderTests.cs @@ -18,11 +18,13 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; + using NFluent; using NUnit.Framework; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class StrikeMarkdownProviderTests diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingFeatures.cs similarity index 98% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingFeatures.cs index caa71af03..481d2a8a9 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingFeatures.cs @@ -21,14 +21,17 @@ using System; using System.Linq; using System.Xml.Linq; + using Autofac; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Html; using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class WhenFormattingFeatures : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingMultilineStrings.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingMultilineStrings.cs similarity index 94% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingMultilineStrings.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingMultilineStrings.cs index 058a0757a..fb8f38d37 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingMultilineStrings.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingMultilineStrings.cs @@ -19,13 +19,16 @@ // -------------------------------------------------------------------------------------------------------------------- using System; + using Autofac; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Html; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class WhenFormattingMultilineStrings : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingScenario.cs similarity index 98% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingScenario.cs index c31060b36..1a0a4f8fc 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingScenario.cs @@ -21,14 +21,17 @@ using System; using System.Linq; using System.Xml.Linq; + using Autofac; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Html; using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class WhenFormattingScenario : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingScenarioOutlines.cs similarity index 98% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingScenarioOutlines.cs index aa9bc4100..f2b62c43d 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingScenarioOutlines.cs @@ -20,15 +20,18 @@ using System; using System.Collections.Generic; + using Autofac; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Html; using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; using PicklesDoc.Pickles.Test.Extensions; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class WhenFormattingScenarioOutlines : BaseFixture diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingStep.cs similarity index 79% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingStep.cs index 276abaa5a..354cc4ad6 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingStep.cs @@ -21,14 +21,17 @@ using System; using System.Collections.Generic; using System.Xml.Linq; + using Autofac; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Html; using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class WhenFormattingStep : BaseFixture @@ -52,17 +55,17 @@ public void Multiline_strings_are_formatted_as_list_items_with_pre_elements_form XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), new XText("a simple step"), new XElement( - xmlns + "div", + this.xmlns + "div", new XAttribute("class", "pre"), new XElement( - xmlns + "pre", + this.xmlns + "pre", new XElement( - xmlns + "code", + this.xmlns + "code", new XAttribute("class", "no-highlight"), new XText( "this is a\nmultiline table\nargument"))))); @@ -86,9 +89,9 @@ public void Simple_steps_are_formatted_as_list_items() XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), "a simple step"); Check.That(expected).IsDeeplyEqualTo(actual); @@ -113,9 +116,9 @@ public void Steps_get_selected_Language() XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), "Givet "), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), "Givet "), "ett enkelt steg"); Check.That(expected).IsDeeplyEqualTo(actual); @@ -143,38 +146,38 @@ public void Tables_are_formatted_as_list_items_with_tables_internal() XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), new XText("a simple step"), new XElement( - xmlns + "div", + this.xmlns + "div", new XAttribute("class", "table_container"), new XElement( - xmlns + "table", + this.xmlns + "table", new XAttribute("class", "datatable"), new XElement( - xmlns + "thead", + this.xmlns + "thead", new XElement( - xmlns + "tr", + this.xmlns + "tr", new XElement( - xmlns + "th", + this.xmlns + "th", "Column 1"), new XElement( - xmlns + "th", + this.xmlns + "th", "Column 2"), new XElement( - xmlns + "th", + this.xmlns + "th", " "))), new XElement( - xmlns + "tbody", + this.xmlns + "tbody", new XElement( - xmlns + "tr", + this.xmlns + "tr", new XElement( - xmlns + "td", + this.xmlns + "td", "Value 1"), new XElement( - xmlns + "td", + this.xmlns + "td", "Value 2")))))); Check.That(expected).IsDeeplyEqualTo(actual); @@ -204,10 +207,10 @@ public void Comments_are_displayed_above_their_related_step() XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "comment"), "# A simple comment"), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), + new XElement(this.xmlns + "span", new XAttribute("class", "comment"), "# A simple comment"), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), "a simple step"); Check.That(expected).IsDeeplyEqualTo(actual); @@ -242,12 +245,12 @@ public void Comments_after_the_last_step_are_displayed() XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "comment"), "# A simple comment"), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), + new XElement(this.xmlns + "span", new XAttribute("class", "comment"), "# A simple comment"), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), "a simple step", - new XElement(xmlns + "span", new XAttribute("class", "comment"), "# A comment after the last step")); + new XElement(this.xmlns + "span", new XAttribute("class", "comment"), "# A comment after the last step")); Check.That(expected).IsDeeplyEqualTo(actual); } @@ -281,14 +284,14 @@ public void Multiline_comments_are_displayed_in_the_same_element() XElement actual = formatter.Format(step); var expected = new XElement( - xmlns + "li", + this.xmlns + "li", new XAttribute("class", "step"), - new XElement(xmlns + "span", new XAttribute("class", "comment"), + new XElement(this.xmlns + "span", new XAttribute("class", "comment"), "# A first line", - new XElement(xmlns + "br"), + new XElement(this.xmlns + "br"), "# A second line" ), - new XElement(xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), + new XElement(this.xmlns + "span", new XAttribute("class", "keyword"), ExpectedGivenHtml), "a simple step"); Check.That(expected).IsDeeplyEqualTo(actual); diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingTables.cs similarity index 95% rename from src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs rename to src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingTables.cs index 5bf64427e..d5d5dfcef 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/WhenFormattingTables.cs @@ -21,14 +21,17 @@ using System; using System.Collections.Generic; using System.Xml.Linq; + using Autofac; + using NFluent; + using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Html; using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML +namespace PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests { [TestFixture] public class WhenFormattingTables : BaseFixture diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/packages.config new file mode 100644 index 000000000..8ead2c6a8 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html.UnitTests/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlModule.cs b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlModule.cs new file mode 100644 index 000000000..b41019e0b --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/HtmlModule.cs @@ -0,0 +1,45 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using Autofac; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Html +{ + public class HtmlModule : Autofac.Module + { + protected override void Load(ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj b/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj index a3f4dab63..99a43c31a 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/Pickles.DocumentationBuilders.Html.csproj @@ -30,6 +30,10 @@ 4 + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + ..\packages\NLog.4.3.10\lib\net45\NLog.dll True @@ -63,6 +67,7 @@ + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config index 7f4966694..722150ddc 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config +++ b/src/Pickles/Pickles.DocumentationBuilders.Html/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/AutomationLayer/StepDefinitions.cs similarity index 95% rename from src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/AutomationLayer/StepDefinitions.cs index abc491080..ce76c3bd8 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/AutomationLayer/StepDefinitions.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/AutomationLayer/StepDefinitions.cs @@ -20,15 +20,18 @@ using System; using System.IO; + using Autofac; + using NFluent; + using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; -using PicklesDoc.Pickles.DocumentationBuilders.Json; +using PicklesDoc.Pickles.Test; using TechTalk.SpecFlow; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.JSON.AutomationLayer +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.UnitTests.AutomationLayer { [Binding] [Scope(Tag = "json")] diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/FormattingAFeature.feature similarity index 100% rename from src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature rename to src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/FormattingAFeature.feature diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/FormattingAFeature.feature.cs similarity index 91% rename from src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs rename to src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/FormattingAFeature.feature.cs index eaf5e0cb0..bf6b518f2 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/JSON/FormattingAFeature.feature.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/FormattingAFeature.feature.cs @@ -3,66 +3,68 @@ // This code was generated by SpecFlow (http://www.specflow.org/). // SpecFlow Version:2.1.0.0 // SpecFlow Generator Version:2.0.0.0 -// +// // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // // ------------------------------------------------------------------------------ #region Designer generated code + +using System; + +using TechTalk.SpecFlow; + #pragma warning disable -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.JSON +namespace PicklesDoc.Pickles.DocumentationBuilders.Json.UnitTests { - using TechTalk.SpecFlow; - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.1.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Formatting A Feature")] public partial class FormattingAFeatureFeature { - + private TechTalk.SpecFlow.ITestRunner testRunner; - + #line 1 "FormattingAFeature.feature" #line hidden - + [NUnit.Framework.TestFixtureSetUpAttribute()] public virtual void FeatureSetup() { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + this.testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Formatting A Feature", null, ProgrammingLanguage.CSharp, ((string[])(null))); - testRunner.OnFeatureStart(featureInfo); + this.testRunner.OnFeatureStart(featureInfo); } - + [NUnit.Framework.TestFixtureTearDownAttribute()] public virtual void FeatureTearDown() { - testRunner.OnFeatureEnd(); - testRunner = null; + this.testRunner.OnFeatureEnd(); + this.testRunner = null; } - + [NUnit.Framework.SetUpAttribute()] public virtual void TestInitialize() { } - + [NUnit.Framework.TearDownAttribute()] public virtual void ScenarioTearDown() { - testRunner.OnScenarioEnd(); + this.testRunner.OnScenarioEnd(); } - + public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) { - testRunner.OnScenarioStart(scenarioInfo); + this.testRunner.OnScenarioStart(scenarioInfo); } - + public virtual void ScenarioCleanup() { - testRunner.CollectScenarioErrors(); + this.testRunner.CollectScenarioErrors(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("A simple feature")] [NUnit.Framework.CategoryAttribute("json")] @@ -74,7 +76,7 @@ public virtual void ASimpleFeature() this.ScenarioSetup(scenarioInfo); #line hidden #line 6 - testRunner.Given("I have this feature description", @"Feature: Clearing Screen + this.testRunner.Given("I have this feature description", @"Feature: Clearing Screen In order to restart a new set of calculations As a math idiot I want to be able to clear the screen @@ -86,10 +88,10 @@ And I have entered 70 into the calculator When I press C Then the screen should be empty", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 20 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 21 - testRunner.Then("the JSON file should contain", "{\r\n \"Features\": [\r\n {\r\n \"RelativeFolder\": \"\",\r\n \"Feature\": {\r\n " + + this.testRunner.Then("the JSON file should contain", "{\r\n \"Features\": [\r\n {\r\n \"RelativeFolder\": \"\",\r\n \"Feature\": {\r\n " + " \"Name\": \"Clearing Screen\",\r\n \"Description\": \"In order to restart a new" + " set of calculations\\r\\nAs a math idiot\\r\\nI want to be able to clear the screen" + "\",\r\n \"FeatureElements\": [\r\n {\r\n \"Name\": \"Clear the sc" + @@ -116,7 +118,7 @@ When I press C #line hidden this.ScenarioCleanup(); } - + [NUnit.Framework.TestAttribute()] [NUnit.Framework.DescriptionAttribute("A feature with a table")] [NUnit.Framework.CategoryAttribute("json")] @@ -128,7 +130,7 @@ public virtual void AFeatureWithATable() this.ScenarioSetup(scenarioInfo); #line hidden #line 92 - testRunner.Given("I have this feature description", @"Feature: Interactive DHTML View + this.testRunner.Given("I have this feature description", @"Feature: Interactive DHTML View In order to increase stakeholder engagement with pickled specs As a SpecFlow evangelist I want to adjust the level of detail in the DHTML view to suit my audience @@ -162,10 +164,10 @@ I want to adjust the level of detail in the DHTML view to suit my audience When I click on the table heading Then the table body should collapse", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 128 - testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + this.testRunner.When("I generate the documentation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 129 - testRunner.Then("the JSON file should contain", "{\r\n \"Features\": [\r\n {\r\n \"RelativeFolder\": \"\",\r\n \"Feature\": {\r\n " + + this.testRunner.Then("the JSON file should contain", "{\r\n \"Features\": [\r\n {\r\n \"RelativeFolder\": \"\",\r\n \"Feature\": {\r\n " + " \"Name\": \"Interactive DHTML View\",\r\n \"Description\": \"In order to increa" + "se stakeholder engagement with pickled specs\\r\\nAs a SpecFlow evangelist\\r\\nI wa" + "nt to adjust the level of detail in the DHTML view to suit my audience\\r\\nSo tha" + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.csproj b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.csproj new file mode 100644 index 000000000..2dedab2a1 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.csproj @@ -0,0 +1,110 @@ + + + + + Debug + AnyCPU + {D2432557-EF5A-45A3-A74F-3C59EF08533A} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Json.UnitTests + PicklesDoc.Pickles.DocumentationBuilders.Json.UnitTests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + + + ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll + True + + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll + True + + + ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.137\lib\net40\System.IO.Abstractions.TestingHelpers.dll + True + + + + + + + + + ..\packages\SpecFlow.2.1.0\lib\net45\TechTalk.SpecFlow.dll + + + + + VersionInfo.cs + + + + FormattingAFeature.feature + True + True + + + + + + SpecFlowSingleFileGenerator + FormattingAFeature.feature.cs + + + + + + {836020D1-A309-4367-9654-EBB7C3F60D97} + Pickles.DocumentationBuilders.Json + + + {55382AFC-E050-4DF7-AA4F-0ABA71E2E169} + Pickles.ObjectModel + + + {8BD9FCD2-7ED5-46B5-B6A4-7FA3775E159F} + Pickles.Test + + + {38BAD6E0-78AB-4AC3-91A8-BF72AF5EE394} + Pickles + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Pickles.DocumentationBuilders.Json.UnitTests.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..8fd2b6a20 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Json.UnitTests")] +[assembly: AssemblyDescription("Unit tests for the Pickles output formatter that outputs Json documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/packages.config new file mode 100644 index 000000000..673297f4c --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json.UnitTests/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/JsonModule.cs b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonModule.cs new file mode 100644 index 000000000..c23c1be86 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/JsonModule.cs @@ -0,0 +1,32 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using Autofac; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Json +{ + public class JsonModule : Module + { + protected override void Load(ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj b/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj index ae7a86fc2..1ce9c8b90 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/Pickles.DocumentationBuilders.Json.csproj @@ -30,6 +30,10 @@ 4 + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True @@ -63,6 +67,7 @@ + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config index 74272fd0a..c8f4aae05 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config +++ b/src/Pickles/Pickles.DocumentationBuilders.Json/packages.config @@ -1,5 +1,6 @@  + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.csproj b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.csproj new file mode 100644 index 000000000..a7cfb333e --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.csproj @@ -0,0 +1,104 @@ + + + + + Debug + AnyCPU + {EF6B5E30-B688-4D31-B97C-BCDFA569D1B3} + Library + Properties + PicklesDoc.Pickles.DocumentationBuilders.Word.UnitTests + PicklesDoc.Pickles.DocumentationBuilders.Word.UnitTests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + + + ..\packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll + True + + + ..\packages\NFluent.1.3.1.0\lib\net40\NFluent.dll + True + + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll + True + + + + + ..\packages\System.IO.Abstractions.2.0.0.137\lib\net40\System.IO.Abstractions.dll + True + + + ..\packages\System.IO.Abstractions.TestingHelpers.2.0.0.137\lib\net40\System.IO.Abstractions.TestingHelpers.dll + True + + + + + + + + + + + + VersionInfo.cs + + + + + + + + {BDD5290E-BF98-436B-ADEE-A7479E22A875} + Pickles.DocumentationBuilders.Word + + + {55382AFC-E050-4DF7-AA4F-0ABA71E2E169} + Pickles.ObjectModel + + + {8BD9FCD2-7ED5-46B5-B6A4-7FA3775E159F} + Pickles.Test + + + {38BAD6E0-78AB-4AC3-91A8-BF72AF5EE394} + Pickles + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.v2.ncrunchproject b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.v2.ncrunchproject new file mode 100644 index 000000000..05b974659 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Pickles.DocumentationBuilders.Word.UnitTests.v2.ncrunchproject @@ -0,0 +1,27 @@ + + true + 1000 + false + false + false + true + false + false + false + false + false + true + false + true + false + true + true + true + 60000 + + + + AutoDetect + STA + x86 + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Properties/AssemblyInfo.cs b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..b6d160a29 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/Properties/AssemblyInfo.cs @@ -0,0 +1,7 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Pickles.DocumentationBuilders.Word.UnitTests")] +[assembly: AssemblyDescription("Unit Tests for the Pickles output formatter that outputs MS Word documents")] \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/WhenBuildingWordDocuments.cs similarity index 62% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/WhenBuildingWordDocuments.cs index c6fccaf24..1c96dc39e 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WhenBuildingWordDocuments.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/WhenBuildingWordDocuments.cs @@ -1,15 +1,40 @@ -using System.IO; +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System; +using System.IO; using System.Linq; + using Autofac; + using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; + using NUnit.Framework; + using PicklesDoc.Pickles.DataStructures; using PicklesDoc.Pickles.DirectoryCrawler; -using PicklesDoc.Pickles.DocumentationBuilders.Word; +using PicklesDoc.Pickles.Test; -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Word +namespace PicklesDoc.Pickles.DocumentationBuilders.Word.UnitTests { [TestFixture] public class WhenBuildingWordDocuments : BaseFixture @@ -24,8 +49,8 @@ public void Setup() AddFakeFolderStructures(); Configuration.OutputFolder = this.FileSystem.DirectoryInfo.FromDirectoryName(FileSystemPrefix); - features = Container.Resolve().Crawl(RootPath); - builder = Container.Resolve(); + this.features = Container.Resolve().Crawl(RootPath); + this.builder = Container.Resolve(); } [Test] @@ -46,7 +71,7 @@ public void ShouldOutputFeaturesInParsedOrder() "b-b-b", }; - builder.Build(features); + this.builder.Build(this.features); var outputPath = Path.Combine(Configuration.OutputFolder.FullName, "features.docx"); diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WordDescriptionFormatterTests.cs b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/WordDescriptionFormatterTests.cs similarity index 93% rename from src/Pickles/Pickles.Test/DocumentationBuilders/Word/WordDescriptionFormatterTests.cs rename to src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/WordDescriptionFormatterTests.cs index f0c0fb62e..58b016508 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Word/WordDescriptionFormatterTests.cs +++ b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/WordDescriptionFormatterTests.cs @@ -24,9 +24,7 @@ using NUnit.Framework; -using PicklesDoc.Pickles.DocumentationBuilders.Word; - -namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Word +namespace PicklesDoc.Pickles.DocumentationBuilders.Word.UnitTests { [TestFixture] public class WordDescriptionFormatterTests diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/packages.config new file mode 100644 index 000000000..8f78f85c2 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word.UnitTests/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj b/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj index 637090b65..3c7a9ef0c 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/Pickles.DocumentationBuilders.Word.csproj @@ -31,6 +31,10 @@ 4 + + ..\packages\Autofac.4.1.1\lib\net45\Autofac.dll + True + ..\packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll @@ -67,6 +71,7 @@ + diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/WordModule.cs b/src/Pickles/Pickles.DocumentationBuilders.Word/WordModule.cs new file mode 100644 index 000000000..d19178e70 --- /dev/null +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/WordModule.cs @@ -0,0 +1,42 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using Autofac; + +namespace PicklesDoc.Pickles.DocumentationBuilders.Word +{ + public class WordModule : Module + { + protected override void Load(ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + builder.RegisterType().SingleInstance(); + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config b/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config index 7f4966694..722150ddc 100644 --- a/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config +++ b/src/Pickles/Pickles.DocumentationBuilders.Word/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.feature b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.feature deleted file mode 100644 index 1e36de0bb..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.feature +++ /dev/null @@ -1,13 +0,0 @@ -Feature: Test - In order to do something - As a user - I want to run this scenario - - Background: Setup some stuff - Given we have set up some stuff - And some other stuff - - Scenario: A scenario - Given some feature - When it runs - Then I should see that this thing happens diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.html b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.html deleted file mode 100644 index 18644901d..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Background.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Feature: Test - - -
-

Feature: Test

-

In order to do something

-

As a user

-

I want to run this scenario

-
-
    -
  • -
    -

    Scenario: A scenario

    -

    -
    -
    -
      -
    • Given some feature
    • -
    • When it runs
    • -
    • Then I should see that this thing happens
    • -
    -
    -
  • -
- - \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.feature b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.feature deleted file mode 100644 index 88236250e..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.feature +++ /dev/null @@ -1,25 +0,0 @@ -Feature: Test - In order to do something - As a user - I want to run this scenario - - Scenario: A scenario - # A single line comment - Given some feature - # A multiline comment - first line - # second line - And another feature - # - # Multiline with empty first line - # But the last lines are not empty - And another feature - # Multiline with empty last line - # But the first lines are not empty - # - When it runs - # Multiline with first and last last lines not empty - # - # But the middle line is empty - Then I should see that this thing happens - And there is no comment here - # A comment after the last step \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.html b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.html deleted file mode 100644 index 0dd51bb87..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Comment.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Feature: Test - - -
-

Feature: Test

-

In order to do something

-

As a user

-

I want to run this scenario

-
-
    -
  • -
    -

    Scenario: A scenario

    -

    -
    -
    -
      -
    • - # A single line comment - Given some feature -
    • -
    • - # A multiline comment - first line
      # second line
      - And another feature -
    • -
    • -
      # Multiline with empty first line
      # But the last lines are not empty
      - And another feature -
    • -
    • - # Multiline with empty last line
      # But the first lines are not empty

      - When it runs -
    • -
    • - # Multiline with first and last last lines not empty

      # But the middle line is empty
      - Then I should see that this thing happens -
    • -
    • - And there is no comment here - # A comment after the last step -
    • -
    -
    -
  • -
- - \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.feature b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.feature deleted file mode 100644 index bf9848084..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.feature +++ /dev/null @@ -1,14 +0,0 @@ -Feature: Test - In order to do something - As a user - I want to run this scenario - - Scenario: A scenario - Given some feature with a multiline string - """ - This is an - example of a multiline - string - """ - When it runs - Then I should see that this thing happens diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.html b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.html deleted file mode 100644 index dec26e61a..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/MultilineString.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Feature: Test - - -
-

Feature: Test

-

In order to do something

-

As a user

-

I want to run this scenario

-
-
    -
  • -
    -

    Scenario: A scenario

    -

    -
    -
    -
      -
    • Given some feature with a multiline string
      This is an
      -example of a multiline
      -string
    • -
    • When it runs
    • -
    • Then I should see that this thing happens
    • -
    -
    -
  • -
- - \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.feature b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.feature deleted file mode 100644 index 761278a66..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.feature +++ /dev/null @@ -1,14 +0,0 @@ -Feature: Test - In order to do something - As a user - I want to run this scenario - - Scenario Outline: A scenario - Given some feature with - When it runs - Then I should see that this thing happens - - Examples: - | First | Second | - | 1 | 1 | - | 2 | 2 | diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.html b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.html deleted file mode 100644 index 70af52f3e..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/ScenarioOutline.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Feature: Test - - -
-

Feature: Test

-

In order to do something

-

As a user

-

I want to run this scenario

-
-
    -
  • -
    -

    Scenario: A scenario

    -

    -
    -
    -
      -
    • Given some feature with <first>
    • -
    • When it runs
    • -
    • - Then I should see that this <second> thing happens -
    • -
    -
    -
    -

    Examples

    - - - - - - - - - - - - - - - - - -
    FirstSecond
    11
    22
    -
    -
  • -
- - \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.feature b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.feature deleted file mode 100644 index 35de260d5..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.feature +++ /dev/null @@ -1,9 +0,0 @@ -Feature: Test - In order to do something - As a user - I want to run this scenario - - Scenario: A scenario - Given some feature - When it runs - Then I should see that this thing happens diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.html b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.html deleted file mode 100644 index 18644901d..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Simple.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Feature: Test - - -
-

Feature: Test

-

In order to do something

-

As a user

-

I want to run this scenario

-
-
    -
  • -
    -

    Scenario: A scenario

    -

    -
    -
    -
      -
    • Given some feature
    • -
    • When it runs
    • -
    • Then I should see that this thing happens
    • -
    -
    -
  • -
- - \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.feature b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.feature deleted file mode 100644 index 7dfd75961..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.feature +++ /dev/null @@ -1,11 +0,0 @@ -Feature: Test - In order to do something - As a user - I want to run this scenario - - Scenario: A scenario - Given some feature with a table - | Column1 | Column2 | - | Value 1 | Value 2 | - When it runs - Then I should see that this thing happens diff --git a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.html b/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.html deleted file mode 100644 index 39b9c447c..000000000 --- a/src/Pickles/Pickles.Test/HtmlFormatterTestFiles/Table.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Feature: Test - - -
-

Feature: Test

-

In order to do something

-

As a user

-

I want to run this scenario

-
-
    -
  • -
    -

    Scenario: A scenario

    -

    -
    -
    -
      -
    • - Given some feature with a table - - - - - - - - - - - - -
      Column1Column2
      Value 1Value 2
      -
    • -
    • When it runs
    • -
    • Then I should see that this thing happens
    • -
    -
    -
  • -
- - \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/Pickles.Test.csproj b/src/Pickles/Pickles.Test/Pickles.Test.csproj index 5ca464e7e..14b9d98a5 100644 --- a/src/Pickles/Pickles.Test/Pickles.Test.csproj +++ b/src/Pickles/Pickles.Test/Pickles.Test.csproj @@ -102,20 +102,6 @@ - - FormattingAFeatureUsingStrike.feature - True - True - - - - - True - True - FormattingAFeature.feature - - - @@ -142,29 +128,8 @@ - - - - True - True - FormattingAFeature.feature - - - - - - - - - - - - - - - @@ -188,8 +153,6 @@ - - @@ -232,14 +195,6 @@
- - SpecFlowSingleFileGenerator - FormattingAFeatureUsingStrike.feature.cs - - - SpecFlowSingleFileGenerator - FormattingAFeature.feature.cs - @@ -249,11 +204,6 @@ - - SpecFlowSingleFileGenerator - FormattingAFeature.feature.cs - - a-b.feature.cs @@ -271,29 +221,8 @@ ResXFileCodeGenerator Resources.Designer.cs - - SimplestFile.feature.cs - - - - - SimplestFile.feature.cs - - - - Table.feature.cs - - - ScenarioOutline.feature.cs - - - - - Background.feature.cs - - OneScenarioTransferingMoneyBetweenAccountsFailing.feature.cs diff --git a/src/Pickles/Pickles.sln b/src/Pickles/Pickles.sln index 419fbb9ef..2bdbd0332 100644 --- a/src/Pickles/Pickles.sln +++ b/src/Pickles/Pickles.sln @@ -74,6 +74,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilde EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilders.Dhtml", "Pickles.DocumentationBuilders.Dhtml\Pickles.DocumentationBuilders.Dhtml.csproj", "{8AC3AAFA-84DD-4437-962B-E6C5D6078E09}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilders.Dhtml.UnitTests", "Pickles.DocumentationBuilders.Dhtml.UnitTests\Pickles.DocumentationBuilders.Dhtml.UnitTests.csproj", "{C40305BD-2BCE-4E43-8B06-20F48ADD6C49}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilders.Excel.UnitTests", "Pickles.DocumentationBuilders.Excel.UnitTests\Pickles.DocumentationBuilders.Excel.UnitTests.csproj", "{CDAD56FA-E3CF-4E4A-A5CB-5F43FF4FBCF5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilders.Html.UnitTests", "Pickles.DocumentationBuilders.Html.UnitTests\Pickles.DocumentationBuilders.Html.UnitTests.csproj", "{B7CFAD40-9D85-4B4F-AB2C-F0D007083A99}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilders.Json.UnitTests", "Pickles.DocumentationBuilders.Json.UnitTests\Pickles.DocumentationBuilders.Json.UnitTests.csproj", "{D2432557-EF5A-45A3-A74F-3C59EF08533A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pickles.DocumentationBuilders.Word.UnitTests", "Pickles.DocumentationBuilders.Word.UnitTests\Pickles.DocumentationBuilders.Word.UnitTests.csproj", "{EF6B5E30-B688-4D31-B97C-BCDFA569D1B3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -140,6 +150,26 @@ Global {8AC3AAFA-84DD-4437-962B-E6C5D6078E09}.Debug|Any CPU.Build.0 = Debug|Any CPU {8AC3AAFA-84DD-4437-962B-E6C5D6078E09}.Release|Any CPU.ActiveCfg = Release|Any CPU {8AC3AAFA-84DD-4437-962B-E6C5D6078E09}.Release|Any CPU.Build.0 = Release|Any CPU + {C40305BD-2BCE-4E43-8B06-20F48ADD6C49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C40305BD-2BCE-4E43-8B06-20F48ADD6C49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C40305BD-2BCE-4E43-8B06-20F48ADD6C49}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C40305BD-2BCE-4E43-8B06-20F48ADD6C49}.Release|Any CPU.Build.0 = Release|Any CPU + {CDAD56FA-E3CF-4E4A-A5CB-5F43FF4FBCF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CDAD56FA-E3CF-4E4A-A5CB-5F43FF4FBCF5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CDAD56FA-E3CF-4E4A-A5CB-5F43FF4FBCF5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CDAD56FA-E3CF-4E4A-A5CB-5F43FF4FBCF5}.Release|Any CPU.Build.0 = Release|Any CPU + {B7CFAD40-9D85-4B4F-AB2C-F0D007083A99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7CFAD40-9D85-4B4F-AB2C-F0D007083A99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7CFAD40-9D85-4B4F-AB2C-F0D007083A99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7CFAD40-9D85-4B4F-AB2C-F0D007083A99}.Release|Any CPU.Build.0 = Release|Any CPU + {D2432557-EF5A-45A3-A74F-3C59EF08533A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D2432557-EF5A-45A3-A74F-3C59EF08533A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2432557-EF5A-45A3-A74F-3C59EF08533A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D2432557-EF5A-45A3-A74F-3C59EF08533A}.Release|Any CPU.Build.0 = Release|Any CPU + {EF6B5E30-B688-4D31-B97C-BCDFA569D1B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF6B5E30-B688-4D31-B97C-BCDFA569D1B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF6B5E30-B688-4D31-B97C-BCDFA569D1B3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF6B5E30-B688-4D31-B97C-BCDFA569D1B3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Pickles/Pickles/PicklesModule.cs b/src/Pickles/Pickles/PicklesModule.cs index f68a3fdf9..9155c8860 100644 --- a/src/Pickles/Pickles/PicklesModule.cs +++ b/src/Pickles/Pickles/PicklesModule.cs @@ -50,46 +50,11 @@ protected override void Load(ContainerBuilder builder) builder.RegisterType().SingleInstance(); builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - - builder.RegisterType().SingleInstance(); - - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - builder.RegisterType().SingleInstance(); - - builder.RegisterType().SingleInstance(); + builder.RegisterModule(); + builder.RegisterModule(); + builder.RegisterModule(); + builder.RegisterModule(); + builder.RegisterModule(); builder.Register(c => { diff --git a/test.fsx b/test.fsx index c91033623..b9e2f200f 100644 --- a/test.fsx +++ b/test.fsx @@ -25,7 +25,58 @@ Target "Test.TestFrameworks" (fun _ -> ToolPath = "packages/NUnit.ConsoleRunner/tools/nunit3-console.exe" }) ) -"Test" ==> "Test.TestFrameworks" +Target "Test.DocumentationBuilders.Dhtml" (fun _ -> + !! (testDir + "PicklesDoc.Pickles.DocumentationBuilders.Dhtml.UnitTests.dll") + |> NUnit3 (fun p -> + {p with + ShadowCopy = false; + OutputDir = testDir + "PicklesDoc.Pickles.DocumentationBuilders.Dhtml.UnitTests.TestResults.xml"; + ToolPath = "packages/NUnit.ConsoleRunner/tools/nunit3-console.exe" }) +) + +Target "Test.DocumentationBuilders.Excel" (fun _ -> + !! (testDir + "PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests.dll") + |> NUnit3 (fun p -> + {p with + ShadowCopy = false; + OutputDir = testDir + "PicklesDoc.Pickles.DocumentationBuilders.Excel.UnitTests.TestResults.xml"; + ToolPath = "packages/NUnit.ConsoleRunner/tools/nunit3-console.exe" }) +) + +Target "Test.DocumentationBuilders.Html" (fun _ -> + !! (testDir + "PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests.dll") + |> NUnit3 (fun p -> + {p with + ShadowCopy = false; + OutputDir = testDir + "PicklesDoc.Pickles.DocumentationBuilders.Html.UnitTests.TestResults.xml"; + ToolPath = "packages/NUnit.ConsoleRunner/tools/nunit3-console.exe" }) +) + +Target "Test.DocumentationBuilders.Json" (fun _ -> + !! (testDir + "PicklesDoc.Pickles.DocumentationBuilders.Json.UnitTests.dll") + |> NUnit3 (fun p -> + {p with + ShadowCopy = false; + OutputDir = testDir + "PicklesDoc.Pickles.DocumentationBuilders.Json.UnitTests.TestResults.xml"; + ToolPath = "packages/NUnit.ConsoleRunner/tools/nunit3-console.exe" }) +) + +Target "Test.DocumentationBuilders.Word" (fun _ -> + !! (testDir + "PicklesDoc.Pickles.DocumentationBuilders.Word.UnitTests.dll") + |> NUnit3 (fun p -> + {p with + ShadowCopy = false; + OutputDir = testDir + "PicklesDoc.Pickles.DocumentationBuilders.Word.UnitTests.TestResults.xml"; + ToolPath = "packages/NUnit.ConsoleRunner/tools/nunit3-console.exe" }) +) + +"Test" + ==> "Test.DocumentationBuilders.Dhtml" + ==> "Test.DocumentationBuilders.Excel" + ==> "Test.DocumentationBuilders.Html" + ==> "Test.DocumentationBuilders.Json" + ==> "Test.DocumentationBuilders.Word" + ==> "Test.TestFrameworks" // start build RunTargetOrDefault "Test.TestFrameworks" \ No newline at end of file From 6e592d45e7b03765a2ca6b59654d7bd5daf0aa85 Mon Sep 17 00:00:00 2001 From: Dirk Rombauts Date: Sat, 22 Oct 2016 16:06:31 +0200 Subject: [PATCH 20/30] Release 2.10.0 (#389) * Change Version number (2.10.0) * Update Changelog * Remove output generation from deployment * Version 2.10.0 --- CHANGELOG.md | 7 + DeployArtifacts.cmd | 2 +- build.bat | 2 +- docs/Output/Dhtml/pickledFeatures.js | 124 ++++++-- docs/Output/Excel/features.xlsx | Bin 37306 -> 38187 bytes .../Features/00BasicGherkin/BasicGherkin.html | 17 +- .../Html/Features/00BasicGherkin/index.html | 17 +- .../TestRunnerIsNotImportant.html | 20 +- .../Html/Features/01TestRunner/index.html | 19 +- .../Html/Features/02TagsAndHooks/Hooks.html | 20 +- .../Html/Features/02TagsAndHooks/TagDemo.html | 20 +- .../Html/Features/02TagsAndHooks/index.html | 25 +- .../031ScenarioContext/ScenarioContext.html | 20 +- .../Features/031ScenarioContext/index.html | 19 +- .../FeatureContextFeatures.html | 20 +- .../Features/032FeatureContext/index.html | 19 +- .../03ScenarioOutline/ScenarioOutline.html | 20 +- .../Features/03ScenarioOutline/index.html | 19 +- .../04Background/BackgroundFeature.html | 20 +- .../Html/Features/04Background/index.html | 19 +- .../05TablesAndAssist/TableScenario.html | 20 +- .../Features/05TablesAndAssist/index.html | 19 +- .../Features/06CompareToAssist/CompareTo.html | 20 +- .../Features/06CompareToAssist/index.html | 19 +- .../Html/Features/07Localization/Svenska.html | 289 ++++++++++++++++++ .../Html/Features/07Localization/Vlaams.html | 286 +++++++++++++++++ .../Html/Features/07Localization/index.html | 282 +++++++++++++++++ .../Html/Features/07Svenska/Svenska.html | 9 +- .../Output/Html/Features/07Svenska/index.html | 8 +- .../AttributeOverloading.html | 20 +- .../08AttributeOverloading/index.html | 19 +- .../CallingStepsFromSteps.html | 20 +- .../09CallingStepsFromSteps/index.html | 19 +- .../StepTransformation.html | 20 +- .../Features/10StepTransformation/index.html | 19 +- .../11ContextInjection/ContextInjection.html | 24 +- .../Features/11ContextInjection/index.html | 23 +- .../ChildChildFolder/NestedFolderExample.html | 20 +- .../ChildFolder/ChildChildFolder/index.html | 19 +- .../12NestedFolders/ChildFolder/index.html | 13 +- .../Html/Features/12NestedFolders/index.html | 13 +- .../MultilineFeatureExample.html | 20 +- .../Html/Features/13MultilineText/index.html | 19 +- .../14MarkdownExample/MarkdownExamples.html | 22 +- .../Features/14MarkdownExample/index.html | 27 +- .../15Pickles/InteractiveDHTMLView.html | 21 +- .../Output/Html/Features/15Pickles/index.html | 21 +- docs/Output/Html/Features/Arithmetic.html | 17 +- docs/Output/Html/Features/Trigonometry.html | 20 +- .../Features/Workflow/ClearingScreen.html | 20 +- docs/Output/Html/Features/Workflow/index.html | 19 +- docs/Output/Html/Features/index.html | 23 +- docs/Output/Html/index.html | 13 +- docs/Output/Html/pickles - Shortcut.lnk | Bin 0 -> 1194 bytes docs/Output/Html/readme.html | 13 +- docs/Output/JSON/pickledFeatures.json | 124 ++++++-- docs/Output/Word/Pickles.docx | Bin 13684 -> 13794 bytes docs/Output/Word/features.docx | Bin 13667 -> 13782 bytes docs/index.html | 2 +- src/Pickles/VersionInfo.cs | 8 +- 60 files changed, 1512 insertions(+), 487 deletions(-) create mode 100644 docs/Output/Html/Features/07Localization/Svenska.html create mode 100644 docs/Output/Html/Features/07Localization/Vlaams.html create mode 100644 docs/Output/Html/Features/07Localization/index.html create mode 100644 docs/Output/Html/pickles - Shortcut.lnk diff --git a/CHANGELOG.md b/CHANGELOG.md index faef42fc1..2b41a831a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,13 @@ Features in Experimental are subject to change and removal without being conside This document is formatted according to the principles of [Keep A CHANGELOG](http://keepachangelog.com). +## [2.10.0] - 2016-10-22 + +### Changed + +- Enable Pickles to with cultures in the language setting ([308](https://github.com/picklesdoc/pickles/pull/308)) (by [@dirkrombauts](https://github.com/dirkrombauts)) +- Improve Markdown Parsing to Reduce Unintended Block Quotes ([302](https://github.com/picklesdoc/pickles/pull/302)) (by [@dirkrombauts](https://github.com/dirkrombauts)) + ## [2.9.0] - 2016-10-07 ### Changed diff --git a/DeployArtifacts.cmd b/DeployArtifacts.cmd index aae3b8997..aad36f1f7 100644 --- a/DeployArtifacts.cmd +++ b/DeployArtifacts.cmd @@ -1,4 +1,4 @@ @ECHO OFF -call DeployOutput.cmd %1 +REM call DeployOutput.cmd %1 call DeployToChocolatey.cmd %1 call DeployToNuget.cmd %1 diff --git a/build.bat b/build.bat index 977b1bb76..50d4fe636 100644 --- a/build.bat +++ b/build.bat @@ -1,5 +1,5 @@ @echo off -set "picklesVersion=2.9.0" +set "picklesVersion=2.10.0" cls diff --git a/docs/Output/Dhtml/pickledFeatures.js b/docs/Output/Dhtml/pickledFeatures.js index 73aabe659..acec76513 100644 --- a/docs/Output/Dhtml/pickledFeatures.js +++ b/docs/Output/Dhtml/pickledFeatures.js @@ -4,7 +4,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\00BasicGherkin\\BasicGherkin.feature", "Feature": { "Name": "Showing basic gherkin syntax", - "Description": "In order to see that gherkin is a very simple language\r\nAs a SpecFlow evangelist\r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", + "Description": "In order to see that gherkin is a very simple language \r\nAs a SpecFlow evangelist \r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", "FeatureElements": [ { "Name": "Simple GWT", @@ -109,7 +109,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\01TestRunner\\TestRunnerIsNotImportant.feature", "Feature": { "Name": "The test runner is not (very) important", - "Description": "\tIn order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\n\tAs a SpecFlow evanglist \r\n\tI want to be able to call my steps in the same manner inspite of the testrunner configured ", + "Description": "In order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\nAs a SpecFlow evanglist \r\nI want to be able to call my steps in the same manner inspite of the testrunner configured", "FeatureElements": [ { "Name": "A couple of simple steps", @@ -160,7 +160,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\02TagsAndHooks\\Hooks.feature", "Feature": { "Name": "Addition", - "Description": "\tIn order to explain the order in which hooks are run\r\n\tAs a SpecFlow evanglist\r\n\tI wan to be able to hook into pre and post conditions in SpecFlow", + "Description": "In order to explain the order in which hooks are run \r\nAs a SpecFlow evanglist \r\nI wan to be able to hook into pre and post conditions in SpecFlow", "FeatureElements": [ { "Name": "Hooking into pre conditions for Test Runs in SpecFlow", @@ -308,7 +308,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\02TagsAndHooks\\TagDemo.feature", "Feature": { "Name": "Tag demonstrator", - "Description": "\tIn order to show the capabilities of tags in SpecFlow\r\n\tAs a SpecFlow evanglist\r\n\tI want to write scenarios that has tags and show their usage in code", + "Description": "In order to show the capabilities of tags in SpecFlow \r\nAs a SpecFlow evanglist \r\nI want to write scenarios that has tags and show their usage in code", "FeatureElements": [ { "Name": "Ignored scenario", @@ -512,7 +512,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\03ScenarioOutline\\ScenarioOutline.feature", "Feature": { "Name": "Scenario outline", - "Description": "\tIn order to not have to type the same scenario over and over\r\n\tAs a SpecFlow evangelist\r\n\tI want to show how to use ScenarioOutline", + "Description": "In order to not have to type the same scenario over and over \r\nAs a SpecFlow evangelist \r\nI want to show how to use ScenarioOutline", "FeatureElements": [ { "Examples": [ @@ -716,7 +716,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\031ScenarioContext\\ScenarioContext.feature", "Feature": { "Name": "Scenario Context features", - "Description": "\tIn order to show how to use ScenarioContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in ScenarioContext", + "Description": "In order to show how to use ScenarioContext \r\nAs a SpecFlow evangelist \r\nI want to write some simple scenarios with data in ScenarioContext", "FeatureElements": [ { "Name": "Store and retrive Person Marcus from ScenarioContext", @@ -900,7 +900,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\032FeatureContext\\FeatureContextFeatures.feature", "Feature": { "Name": "FeatureContext features", - "Description": "\tIn order to show how to use FeatureContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in FeatureContext", + "Description": "In order to show how to use FeatureContext \r\nAs a SpecFlow evangelist \r\nI want to write some simple scenarios with data in FeatureContext", "FeatureElements": [ { "Name": "Store and retrive Person Marcus from FeatureContext Current", @@ -1001,7 +1001,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\04Background\\BackgroundFeature.feature", "Feature": { "Name": "Show the use of background", - "Description": "\tIn order to show how to use the Background keyword of Gherkin\r\n\tAs a SpecFlow evanglist\r\n\tI want to show that background steps are called before any scenario step", + "Description": "In order to show how to use the Background keyword of Gherkin \r\nAs a SpecFlow evanglist \r\nI want to show that background steps are called before any scenario step", "FeatureElements": [ { "Name": "Add 1 to the sum", @@ -1096,7 +1096,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\05TablesAndAssist\\TableScenario.feature", "Feature": { "Name": "Showing table usage", - "Description": "\tIn order to show how to use tables\r\n\tAs a SpecFlow evanglist\r\n\tI want to write some simple scenarios that uses tables tables", + "Description": "In order to show how to use tables \r\nAs a SpecFlow evanglist \r\nI want to write some simple scenarios that uses tables tables", "FeatureElements": [ { "Name": "Using tables", @@ -1425,7 +1425,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\06CompareToAssist\\CompareTo.feature", "Feature": { "Name": "Show the compare to feature", - "Description": "\tIn order to show the compare to features of SpecFlow Assist\r\n\tAs a SpecFlow evanglist\r\n\tI want to show how the different versions of compareTo works", + "Description": "In order to show the compare to features of SpecFlow Assist \r\nAs a SpecFlow evanglist \r\nI want to show how the different versions of compareTo works", "FeatureElements": [ { "Name": "CompareToInstance", @@ -1663,10 +1663,10 @@ jsonPWrapper ({ } }, { - "RelativeFolder": "Features\\07Svenska\\Svenska.feature", + "RelativeFolder": "Features\\07Localization\\Svenska.feature", "Feature": { - "Name": "Summering", - "Description": "\tFör att slippa att göra dumma fel\r\n\tSom räknare\r\n\tVill jag kunna lägga summera", + "Name": "Svenska - Summering", + "Description": "För att slippa att göra dumma fel \r\nSom räknare \r\nVill jag kunna lägga summera", "FeatureElements": [ { "Name": "Summera 5 och 7 ska vara 12", @@ -1720,11 +1720,69 @@ jsonPWrapper ({ "WasSuccessful": false } }, + { + "RelativeFolder": "Features\\07Localization\\Vlaams.feature", + "Feature": { + "Name": "Test de Cultuur in het Vlaams", + "Description": "", + "FeatureElements": [ + { + "Name": "Het Scenario", + "Slug": "het-scenario", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Stel ", + "Name": "dat ik 50 ingeef", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "En ", + "Name": "dat ik 70 ingeef", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "Als ", + "Name": "ik plus druk", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Dan ", + "Name": "moet het resultaat 120 zijn", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, { "RelativeFolder": "Features\\08AttributeOverloading\\AttributeOverloading.feature", "Feature": { "Name": "Attribute overloading", - "Description": "\tIn order to show that steps can be used with multiple attributes\r\n\tAs a SpecFlow Evangelist\r\n\tI want to show that similar attributes can be applied to the same step definition", + "Description": "In order to show that steps can be used with multiple attributes \r\nAs a SpecFlow Evangelist \r\nI want to show that similar attributes can be applied to the same step definition", "FeatureElements": [ { "Name": "Checking number for evenness", @@ -1803,7 +1861,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\09CallingStepsFromSteps\\CallingStepsFromSteps.feature", "Feature": { "Name": "Calling Steps from StepDefinitions", - "Description": "\tIn order to create steps of a higher abstraction\r\n\tAs a SpecFlow evangelist\r\n\tI want reuse other steps in my step definitions", + "Description": "In order to create steps of a higher abstraction \r\nAs a SpecFlow evangelist \r\nI want reuse other steps in my step definitions", "FeatureElements": [ { "Name": "Log in", @@ -1894,7 +1952,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\10StepTransformation\\StepTransformation.feature", "Feature": { "Name": "Step Argument Transformations", - "Description": "\tIn order to reduce the amount of code and repetitive tasks in my steps\r\n\tAs a SpecFlow evanglist\r\n\tI want to define reusable transformations for my step arguments", + "Description": "In order to reduce the amount of code and repetitive tasks in my steps \r\nAs a SpecFlow evanglist \r\nI want to define reusable transformations for my step arguments", "FeatureElements": [ { "Name": "Steps with non-string arguments", @@ -1945,7 +2003,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\11ContextInjection\\ContextInjection.feature", "Feature": { "Name": "Injecting context into step specifications", - "Description": "\tIn order to don't have to rely on the global shared state\r\n\t\tand to be able to define the contexts required for each scenario.\r\n\tAs a SpecFlow Evanglist\r\n\tI would like to have the system automatically inject an instance of any class as \r\n\t\tdefined in the constructor of a step file", + "Description": "In order to don't have to rely on the global shared state\r\nand to be able to define the contexts required for each scenario. \r\nAs a SpecFlow Evanglist \r\nI would like to have the system automatically inject an instance of any class as\r\ndefined in the constructor of a step file", "FeatureElements": [ { "Name": "Feature with no context", @@ -2107,7 +2165,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", "Feature": { "Name": "Nested Folder Example", - "Description": "\tIn order to test nested folder output\r\n\tAs a silly contributer\r\n\tI want to create an example of something several folders deep", + "Description": "In order to test nested folder output \r\nAs a silly contributer \r\nI want to create an example of something several folders deep", "FeatureElements": [ { "Name": "Nested - Add two numbers", @@ -2167,7 +2225,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\13MultilineText\\MultilineFeatureExample.feature", "Feature": { "Name": "Multiline Feature Example", - "Description": "\tIn order capture this particular Gherkin feature\r\n\tAs a Pickles contributer\r\n\tI want to demonstrate an example of using multiline text in a Scenario", + "Description": "In order capture this particular Gherkin feature \r\nAs a Pickles contributer \r\nI want to demonstrate an example of using multiline text in a Scenario", "FeatureElements": [ { "Name": "Mutliline Output", @@ -2221,7 +2279,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\14MarkdownExample\\MarkdownExamples.feature", "Feature": { "Name": "Sample Markdown Feature", - "Description": "Header 1\r\n========\r\n\r\nHeader 2\r\n--------\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", + "Description": "# Header 1\r\n\r\n## Header 2\r\n\r\n### Header 3\r\n\r\n#### Header 4\r\n\r\n##### Header 5\r\n\r\n###### Header 6\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", "FeatureElements": [ { "Name": "Sample Markdown Scenario Example", @@ -2253,7 +2311,7 @@ jsonPWrapper ({ "Examples": [ { "Name": "", - "Description": "This __message__ is important too and is for an *Example* table.", + "Description": "\tThis __message__ is important too and is for an *Example* table.", "TableArgument": { "HeaderRow": [ "test", @@ -2336,7 +2394,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\15Pickles\\InteractiveDHTMLView.feature", "Feature": { "Name": "Interactive DHTML View", - "Description": "\tIn order to increase stakeholder engagement with pickled specs\r\n\tAs a SpecFlow evangelist \r\n\tI want to adjust the level of detail in the DHTML view to suit my audience\r\n\tSo that I do not overwhelm them.", + "Description": "In order to increase stakeholder engagement with pickled specs \r\nAs a SpecFlow evangelist \r\nI want to adjust the level of detail in the DHTML view to suite my audience \r\nSo that I do not overwhelm them.", "FeatureElements": [ { "Name": "Scenario with large data table", @@ -2483,7 +2541,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\Arithmetic.feature", "Feature": { "Name": "Arithmetic", - "Description": "In order to avoid silly mistakes\r\nAs a math idiot\r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", + "Description": "In order to avoid silly mistakes \r\nAs a math idiot \r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", "FeatureElements": [ { "Name": "Add two numbers", @@ -2677,7 +2735,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\Trigonometry.feature", "Feature": { "Name": "Trigonometry", - "Description": "\tIn order to avoid perform more advanced calculations\r\n\tAs a math idiot\r\n\tI want to be able to use trigonometric functions", + "Description": "In order to avoid perform more advanced calculations \r\nAs a math idiot \r\nI want to be able to use trigonometric functions", "FeatureElements": [ { "Name": "Sine", @@ -2803,7 +2861,7 @@ jsonPWrapper ({ "RelativeFolder": "Features\\Workflow\\ClearingScreen.feature", "Feature": { "Name": "Clearing Screen", - "Description": "\tIn order to restart a new set of calculations\r\n\tAs a math idiot\r\n\tI want to be able to clear the screen", + "Description": "In order to restart a new set of calculations \r\nAs a math idiot \r\nI want to be able to clear the screen", "FeatureElements": [ { "Name": "Clear the screen", @@ -2986,10 +3044,10 @@ jsonPWrapper ({ "Folders": [ { "Folder": "Features", - "Total": 53, + "Total": 54, "Passing": 0, "Failing": 0, - "Inconclusive": 53 + "Inconclusive": 54 } ], "NotTestedFolders": [ @@ -3002,21 +3060,21 @@ jsonPWrapper ({ } ], "Scenarios": { - "Total": 53, + "Total": 54, "Passing": 0, "Failing": 0, - "Inconclusive": 53 + "Inconclusive": 54 }, "Features": { - "Total": 22, + "Total": 23, "Passing": 0, "Failing": 0, - "Inconclusive": 22 + "Inconclusive": 23 } }, "Configuration": { "SutName": "Pickles", - "SutVersion": "2.9.0", - "GeneratedOn": "7 Oktober 2016 17:01:27" + "SutVersion": "2.10.0", + "GeneratedOn": "22 Oktober 2016 13:32:31" } }); \ No newline at end of file diff --git a/docs/Output/Excel/features.xlsx b/docs/Output/Excel/features.xlsx index 9df5e7bfd899a7efdfba80462452ef3854c1fa2c..a69b643b47b1485c300a44b6df9b981c8824b229 100644 GIT binary patch delta 27896 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 E00m!jXaE2J delta 27232 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 diff --git a/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html b/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html index 41c49c781..fba599cdc 100644 --- a/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html +++ b/docs/Output/Html/Features/00BasicGherkin/BasicGherkin.html @@ -132,11 +132,14 @@ @@ -251,9 +254,7 @@

Showing basic gherkin syntax

-

In order to see that gherkin is a very simple language -As a SpecFlow evangelist -I want to show that basic syntax

+

In order to see that gherkin is a very simple language
As a SpecFlow evangelist
I want to show that basic syntax

Test Image

@@ -304,9 +305,9 @@

Using And and But

diff --git a/docs/Output/Html/Features/00BasicGherkin/index.html b/docs/Output/Html/Features/00BasicGherkin/index.html index 95ff09bc3..8dcd2b013 100644 --- a/docs/Output/Html/Features/00BasicGherkin/index.html +++ b/docs/Output/Html/Features/00BasicGherkin/index.html @@ -132,11 +132,14 @@
  • @@ -255,8 +258,8 @@

    00 Basic Gherkin

    Showing basic gherkin syntax - - In order to see that gherkin is a very simple language -As a SpecFlow evangelist + In order to see that gherkin is a very simple language +As a SpecFlow evangelist I want to show that basic syntax ![Test Image](test.jpg) @@ -265,9 +268,9 @@

    00 Basic Gherkin

  • diff --git a/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html b/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html index cfcedfe44..87349a5ff 100644 --- a/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html +++ b/docs/Output/Html/Features/01TestRunner/TestRunnerIsNotImportant.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    The test runner is not (very) important

    -
    -            In order to show that the test runner is just for the autogenerated stuff in SpecFlow  
    -As a SpecFlow evanglist  
    -I want to be able to call my steps in the same manner inspite of the testrunner configured  
    -
    -          
    +

    In order to show that the test runner is just for the autogenerated stuff in SpecFlow
    As a SpecFlow evanglist
    I want to be able to call my steps in the same manner inspite of the testrunner configured

    • @@ -280,9 +278,9 @@

      A couple of simple steps

    diff --git a/docs/Output/Html/Features/01TestRunner/index.html b/docs/Output/Html/Features/01TestRunner/index.html index d28abf081..f7ec20626 100644 --- a/docs/Output/Html/Features/01TestRunner/index.html +++ b/docs/Output/Html/Features/01TestRunner/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    01 Test Runner

    The test runner is not (very) important - - In order to show that the test runner is just for the autogenerated stuff in SpecFlow - As a SpecFlow evanglist - I want to be able to call my steps in the same manner inspite of the testrunner configured + In order to show that the test runner is just for the autogenerated stuff in SpecFlow +As a SpecFlow evanglist +I want to be able to call my steps in the same manner inspite of the testrunner configured
    diff --git a/docs/Output/Html/Features/02TagsAndHooks/Hooks.html b/docs/Output/Html/Features/02TagsAndHooks/Hooks.html index b88968e32..7d931d139 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/Hooks.html +++ b/docs/Output/Html/Features/02TagsAndHooks/Hooks.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Addition

    -
    -            In order to explain the order in which hooks are run
    -As a SpecFlow evanglist
    -I wan to  be able to hook into pre and post conditions in SpecFlow
    -
    -          
    +

    In order to explain the order in which hooks are run
    As a SpecFlow evanglist
    I wan to be able to hook into pre and post conditions in SpecFlow

    • @@ -342,9 +340,9 @@

      Hooking into pre conditions for Steps in SpecFlow

    diff --git a/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html b/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html index 29d0c97a0..d60a305a7 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html +++ b/docs/Output/Html/Features/02TagsAndHooks/TagDemo.html @@ -132,11 +132,14 @@
  • @@ -252,12 +255,7 @@

    Tag demonstrator

    Tags: @allAboutTags, @important

    -
    -            In order to show the capabilities of tags in SpecFlow
    -As a SpecFlow evanglist
    -I want to write scenarios that has tags and show their usage in code
    -
    -          
    +

    In order to show the capabilities of tags in SpecFlow
    As a SpecFlow evanglist
    I want to write scenarios that has tags and show their usage in code

    • @@ -360,9 +358,9 @@

      A scenario with 2 tags

    diff --git a/docs/Output/Html/Features/02TagsAndHooks/index.html b/docs/Output/Html/Features/02TagsAndHooks/index.html index f5c4c79d1..ec58b5e9d 100644 --- a/docs/Output/Html/Features/02TagsAndHooks/index.html +++ b/docs/Output/Html/Features/02TagsAndHooks/index.html @@ -132,11 +132,14 @@
  • @@ -255,26 +258,26 @@

    02 Tags And Hooks

    Addition - - In order to explain the order in which hooks are run - As a SpecFlow evanglist - I wan to be able to hook into pre and post conditions in SpecFlow + In order to explain the order in which hooks are run +As a SpecFlow evanglist +I wan to be able to hook into pre and post conditions in SpecFlow
  • Tag demonstrator - - In order to show the capabilities of tags in SpecFlow - As a SpecFlow evanglist - I want to write scenarios that has tags and show their usage in code + In order to show the capabilities of tags in SpecFlow +As a SpecFlow evanglist +I want to write scenarios that has tags and show their usage in code
  • diff --git a/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html b/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html index 7300012ed..080f0f941 100644 --- a/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html +++ b/docs/Output/Html/Features/031ScenarioContext/ScenarioContext.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Scenario Context features

    -
    -            In order to show how to use ScenarioContext
    -As a SpecFlow evangelist
    -I want to write some simple scenarios with data in ScenarioContext
    -
    -          
    +

    In order to show how to use ScenarioContext
    As a SpecFlow evangelist
    I want to write some simple scenarios with data in ScenarioContext

    • @@ -346,9 +344,9 @@

      Pending step

    diff --git a/docs/Output/Html/Features/031ScenarioContext/index.html b/docs/Output/Html/Features/031ScenarioContext/index.html index d43a060be..d54caedb1 100644 --- a/docs/Output/Html/Features/031ScenarioContext/index.html +++ b/docs/Output/Html/Features/031ScenarioContext/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    031 Scenario Context

    Scenario Context features - - In order to show how to use ScenarioContext - As a SpecFlow evangelist - I want to write some simple scenarios with data in ScenarioContext + In order to show how to use ScenarioContext +As a SpecFlow evangelist +I want to write some simple scenarios with data in ScenarioContext
    diff --git a/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html b/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html index 512386cfa..02f8fbe60 100644 --- a/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html +++ b/docs/Output/Html/Features/032FeatureContext/FeatureContextFeatures.html @@ -132,11 +132,14 @@
  • @@ -252,12 +255,7 @@

    FeatureContext features

    Tags: @andThisToo, @showUpInScenarioInfo

    -
    -            In order to show how to use FeatureContext
    -As a SpecFlow evangelist
    -I want to write some simple scenarios with data in FeatureContext
    -
    -          
    +

    In order to show how to use FeatureContext
    As a SpecFlow evangelist
    I want to write some simple scenarios with data in FeatureContext

    • @@ -297,9 +295,9 @@

      Showing information of the feature

    diff --git a/docs/Output/Html/Features/032FeatureContext/index.html b/docs/Output/Html/Features/032FeatureContext/index.html index c917e704e..0a4839055 100644 --- a/docs/Output/Html/Features/032FeatureContext/index.html +++ b/docs/Output/Html/Features/032FeatureContext/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    032 Feature Context

    FeatureContext features - - In order to show how to use FeatureContext - As a SpecFlow evangelist - I want to write some simple scenarios with data in FeatureContext + In order to show how to use FeatureContext +As a SpecFlow evangelist +I want to write some simple scenarios with data in FeatureContext diff --git a/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html b/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html index 85f5c0306..4f1c3bb78 100644 --- a/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html +++ b/docs/Output/Html/Features/03ScenarioOutline/ScenarioOutline.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Scenario outline

    -
    -            In order to not have to type the same scenario over and over
    -As a SpecFlow evangelist
    -I want to show how to use ScenarioOutline
    -
    -          
    +

    In order to not have to type the same scenario over and over
    As a SpecFlow evangelist
    I want to show how to use ScenarioOutline

    • @@ -434,9 +432,9 @@

      Examples: more than 100

    diff --git a/docs/Output/Html/Features/03ScenarioOutline/index.html b/docs/Output/Html/Features/03ScenarioOutline/index.html index 7da0d62bf..af5ef1265 100644 --- a/docs/Output/Html/Features/03ScenarioOutline/index.html +++ b/docs/Output/Html/Features/03ScenarioOutline/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    03 Scenario Outline

    Scenario outline - - In order to not have to type the same scenario over and over - As a SpecFlow evangelist - I want to show how to use ScenarioOutline + In order to not have to type the same scenario over and over +As a SpecFlow evangelist +I want to show how to use ScenarioOutline diff --git a/docs/Output/Html/Features/04Background/BackgroundFeature.html b/docs/Output/Html/Features/04Background/BackgroundFeature.html index c758cd8f8..a03654703 100644 --- a/docs/Output/Html/Features/04Background/BackgroundFeature.html +++ b/docs/Output/Html/Features/04Background/BackgroundFeature.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Show the use of background

    -
    -            In order to show how to use the Background keyword of Gherkin
    -As a SpecFlow evanglist
    -I want to show that background steps are called before any scenario step
    -
    -          
    +

    In order to show how to use the Background keyword of Gherkin
    As a SpecFlow evanglist
    I want to show that background steps are called before any scenario step

    • @@ -307,9 +305,9 @@

      Add 2 to the sum

    diff --git a/docs/Output/Html/Features/04Background/index.html b/docs/Output/Html/Features/04Background/index.html index a576671b8..b5d585972 100644 --- a/docs/Output/Html/Features/04Background/index.html +++ b/docs/Output/Html/Features/04Background/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    04 Background

    Show the use of background - - In order to show how to use the Background keyword of Gherkin - As a SpecFlow evanglist - I want to show that background steps are called before any scenario step + In order to show how to use the Background keyword of Gherkin +As a SpecFlow evanglist +I want to show that background steps are called before any scenario step diff --git a/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html b/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html index 5f2fab4b7..d5966bdfe 100644 --- a/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html +++ b/docs/Output/Html/Features/05TablesAndAssist/TableScenario.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Showing table usage

    -
    -            In order to show how to use tables
    -As a SpecFlow evanglist
    -I want to write some simple scenarios that uses tables tables
    -
    -          
    +

    In order to show how to use tables
    As a SpecFlow evanglist
    I want to write some simple scenarios that uses tables tables

    • @@ -328,9 +326,9 @@

      Example of a wide table

    diff --git a/docs/Output/Html/Features/05TablesAndAssist/index.html b/docs/Output/Html/Features/05TablesAndAssist/index.html index 0019aa21a..99f5fb526 100644 --- a/docs/Output/Html/Features/05TablesAndAssist/index.html +++ b/docs/Output/Html/Features/05TablesAndAssist/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    05 Tables And Assist

    Showing table usage - - In order to show how to use tables - As a SpecFlow evanglist - I want to write some simple scenarios that uses tables tables + In order to show how to use tables +As a SpecFlow evanglist +I want to write some simple scenarios that uses tables tables diff --git a/docs/Output/Html/Features/06CompareToAssist/CompareTo.html b/docs/Output/Html/Features/06CompareToAssist/CompareTo.html index 799b269f5..bbac69a03 100644 --- a/docs/Output/Html/Features/06CompareToAssist/CompareTo.html +++ b/docs/Output/Html/Features/06CompareToAssist/CompareTo.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Show the compare to feature

    -
    -            In order to show the compare to features of SpecFlow Assist
    -As a SpecFlow evanglist
    -I want to show how the different versions of compareTo works
    -
    -          
    +

    In order to show the compare to features of SpecFlow Assist
    As a SpecFlow evanglist
    I want to show how the different versions of compareTo works

    • @@ -300,9 +298,9 @@

      CompareToSet

    diff --git a/docs/Output/Html/Features/06CompareToAssist/index.html b/docs/Output/Html/Features/06CompareToAssist/index.html index 896cdae36..887c707fe 100644 --- a/docs/Output/Html/Features/06CompareToAssist/index.html +++ b/docs/Output/Html/Features/06CompareToAssist/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    06 Compare To Assist

    Show the compare to feature - - In order to show the compare to features of SpecFlow Assist - As a SpecFlow evanglist - I want to show how the different versions of compareTo works + In order to show the compare to features of SpecFlow Assist +As a SpecFlow evanglist +I want to show how the different versions of compareTo works diff --git a/docs/Output/Html/Features/07Localization/Svenska.html b/docs/Output/Html/Features/07Localization/Svenska.html new file mode 100644 index 000000000..7fe320949 --- /dev/null +++ b/docs/Output/Html/Features/07Localization/Svenska.html @@ -0,0 +1,289 @@ + + + + + Svenska - Summering + + + + + + + + +
    +
    + +
    +

    Svenska - Summering

    +
    +

    För att slippa att göra dumma fel
    Som räknare
    Vill jag kunna lägga summera

    +
    +
      +
    • +
      +

      Summera 5 och 7 ska vara 12

      +
      +
      +
        +
      • + Givet att jag har knappat in 5
      • +
      • + Och att jag har knappat in 7
      • +
      • + När jag summerar
      • +
      • + SÃ¥ ska resultatet vara 12
      • +
      +
      + + + +
    • +
    +
    + +
    + + \ No newline at end of file diff --git a/docs/Output/Html/Features/07Localization/Vlaams.html b/docs/Output/Html/Features/07Localization/Vlaams.html new file mode 100644 index 000000000..fed84ad2a --- /dev/null +++ b/docs/Output/Html/Features/07Localization/Vlaams.html @@ -0,0 +1,286 @@ + + + + + Test de Cultuur in het Vlaams + + + + + + + + +
    +
    + +
    +

    Test de Cultuur in het Vlaams

    +
      +
    • +
      +

      Het Scenario

      +
      +
      +
        +
      • + Stel dat ik 50 ingeef
      • +
      • + En dat ik 70 ingeef
      • +
      • + Als ik plus druk
      • +
      • + Dan moet het resultaat 120 zijn
      • +
      +
      + + + +
    • +
    +
    + +
    + + \ No newline at end of file diff --git a/docs/Output/Html/Features/07Localization/index.html b/docs/Output/Html/Features/07Localization/index.html new file mode 100644 index 000000000..aa6520859 --- /dev/null +++ b/docs/Output/Html/Features/07Localization/index.html @@ -0,0 +1,282 @@ + + + + + 07 Localization + + + + + + + + +
    +
    + + + +
    + + \ No newline at end of file diff --git a/docs/Output/Html/Features/07Svenska/Svenska.html b/docs/Output/Html/Features/07Svenska/Svenska.html index f048cc883..568ba0dc7 100644 --- a/docs/Output/Html/Features/07Svenska/Svenska.html +++ b/docs/Output/Html/Features/07Svenska/Svenska.html @@ -251,12 +251,7 @@

    Summering

    -
    -            För att slippa att göra dumma fel
    -Som räknare
    -Vill jag kunna lägga summera
    -
    -          
    +

    För att slippa att göra dumma fel
    Som räknare
    Vill jag kunna lägga summera

    • @@ -283,7 +278,7 @@

      Summera 5 och 7 ska vara 12

    diff --git a/docs/Output/Html/Features/07Svenska/index.html b/docs/Output/Html/Features/07Svenska/index.html index 7baaa912e..07a2b8fe6 100644 --- a/docs/Output/Html/Features/07Svenska/index.html +++ b/docs/Output/Html/Features/07Svenska/index.html @@ -255,16 +255,16 @@

    07 Svenska

    Summering - - För att slippa att göra dumma fel - Som räknare - Vill jag kunna lägga summera + För att slippa att göra dumma fel +Som räknare +Vill jag kunna lägga summera
    diff --git a/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html b/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html index 1541db86f..3aad1a298 100644 --- a/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html +++ b/docs/Output/Html/Features/08AttributeOverloading/AttributeOverloading.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Attribute overloading

    -
    -            In order to show that steps can be used with multiple attributes
    -As a SpecFlow Evangelist
    -I want to show that similar attributes can be applied to the same step definition
    -
    -          
    +

    In order to show that steps can be used with multiple attributes
    As a SpecFlow Evangelist
    I want to show that similar attributes can be applied to the same step definition

    • @@ -288,9 +286,9 @@

      Checking number for evenness

    diff --git a/docs/Output/Html/Features/08AttributeOverloading/index.html b/docs/Output/Html/Features/08AttributeOverloading/index.html index d50827317..e57b43e62 100644 --- a/docs/Output/Html/Features/08AttributeOverloading/index.html +++ b/docs/Output/Html/Features/08AttributeOverloading/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    08 Attribute Overloading

    Attribute overloading - - In order to show that steps can be used with multiple attributes - As a SpecFlow Evangelist - I want to show that similar attributes can be applied to the same step definition + In order to show that steps can be used with multiple attributes +As a SpecFlow Evangelist +I want to show that similar attributes can be applied to the same step definition diff --git a/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html b/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html index 18e46bbbb..3a12162e1 100644 --- a/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html +++ b/docs/Output/Html/Features/09CallingStepsFromSteps/CallingStepsFromSteps.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Calling Steps from StepDefinitions

    -
    -            In order to create steps of a higher abstraction
    -As a SpecFlow evangelist
    -I want reuse other steps in my step definitions
    -
    -          
    +

    In order to create steps of a higher abstraction
    As a SpecFlow evangelist
    I want reuse other steps in my step definitions

    • @@ -300,9 +298,9 @@

      Do something meaningful

    diff --git a/docs/Output/Html/Features/09CallingStepsFromSteps/index.html b/docs/Output/Html/Features/09CallingStepsFromSteps/index.html index 8d7535e48..783fe80b7 100644 --- a/docs/Output/Html/Features/09CallingStepsFromSteps/index.html +++ b/docs/Output/Html/Features/09CallingStepsFromSteps/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    09 Calling Steps From Steps

    Calling Steps from StepDefinitions - - In order to create steps of a higher abstraction - As a SpecFlow evangelist - I want reuse other steps in my step definitions + In order to create steps of a higher abstraction +As a SpecFlow evangelist +I want reuse other steps in my step definitions diff --git a/docs/Output/Html/Features/10StepTransformation/StepTransformation.html b/docs/Output/Html/Features/10StepTransformation/StepTransformation.html index 2e4223091..bf7599059 100644 --- a/docs/Output/Html/Features/10StepTransformation/StepTransformation.html +++ b/docs/Output/Html/Features/10StepTransformation/StepTransformation.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Step Argument Transformations

    -
    -            In order to reduce the amount of code and repetitive tasks in my steps
    -As a SpecFlow evanglist
    -I want to define reusable transformations for my step arguments
    -
    -          
    +

    In order to reduce the amount of code and repetitive tasks in my steps
    As a SpecFlow evanglist
    I want to define reusable transformations for my step arguments

    • @@ -280,9 +278,9 @@

      Steps with non-string arguments

    diff --git a/docs/Output/Html/Features/10StepTransformation/index.html b/docs/Output/Html/Features/10StepTransformation/index.html index 532aabf61..99de376be 100644 --- a/docs/Output/Html/Features/10StepTransformation/index.html +++ b/docs/Output/Html/Features/10StepTransformation/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    10 Step Transformation

    Step Argument Transformations - - In order to reduce the amount of code and repetitive tasks in my steps - As a SpecFlow evanglist - I want to define reusable transformations for my step arguments + In order to reduce the amount of code and repetitive tasks in my steps +As a SpecFlow evanglist +I want to define reusable transformations for my step arguments diff --git a/docs/Output/Html/Features/11ContextInjection/ContextInjection.html b/docs/Output/Html/Features/11ContextInjection/ContextInjection.html index 0b90785b8..ba8d00fd3 100644 --- a/docs/Output/Html/Features/11ContextInjection/ContextInjection.html +++ b/docs/Output/Html/Features/11ContextInjection/ContextInjection.html @@ -132,11 +132,14 @@
  • @@ -251,14 +254,9 @@

    Injecting context into step specifications

    -
    -            In order to don't have to rely on the global shared state
    -    and to be able to define the contexts required for each scenario.
    -As a SpecFlow Evanglist
    -I would like to have the system automatically inject an instance of any class as 
    -    defined in the constructor of a step file
    -
    -          
    +

    In order to don't have to rely on the global shared state +and to be able to define the contexts required for each scenario.
    As a SpecFlow Evanglist
    I would like to have the system automatically inject an instance of any class as +defined in the constructor of a step file

    • @@ -348,9 +346,9 @@

      Feature with a dependent context

    diff --git a/docs/Output/Html/Features/11ContextInjection/index.html b/docs/Output/Html/Features/11ContextInjection/index.html index 12bb1713c..d37906ba5 100644 --- a/docs/Output/Html/Features/11ContextInjection/index.html +++ b/docs/Output/Html/Features/11ContextInjection/index.html @@ -132,11 +132,14 @@
  • @@ -255,19 +258,19 @@

    11 Context Injection

    Injecting context into step specifications - - In order to don't have to rely on the global shared state - and to be able to define the contexts required for each scenario. - As a SpecFlow Evanglist - I would like to have the system automatically inject an instance of any class as - defined in the constructor of a step file + In order to don't have to rely on the global shared state +and to be able to define the contexts required for each scenario. +As a SpecFlow Evanglist +I would like to have the system automatically inject an instance of any class as +defined in the constructor of a step file diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html index 8b8061cf2..77993f7fe 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/NestedFolderExample.html @@ -132,11 +132,14 @@
  • @@ -251,12 +254,7 @@

    Nested Folder Example

    -
    -            In order to test nested folder output
    -As a silly contributer
    -I want to create an example of something several folders deep
    -
    -          
    +

    In order to test nested folder output
    As a silly contributer
    I want to create an example of something several folders deep

    • @@ -283,9 +281,9 @@

      Nested - Add two numbers

    diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html index dfae5ad78..cf18472a6 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/ChildChildFolder/index.html @@ -132,11 +132,14 @@
  • @@ -255,17 +258,17 @@

    Child Child Folder

    Nested Folder Example - - In order to test nested folder output - As a silly contributer - I want to create an example of something several folders deep + In order to test nested folder output +As a silly contributer +I want to create an example of something several folders deep diff --git a/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html b/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html index cf923b2eb..c56acfc85 100644 --- a/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html +++ b/docs/Output/Html/Features/12NestedFolders/ChildFolder/index.html @@ -132,11 +132,14 @@
  • @@ -253,9 +256,9 @@

    Child Folder

      diff --git a/docs/Output/Html/Features/12NestedFolders/index.html b/docs/Output/Html/Features/12NestedFolders/index.html index 852f57ac3..0af03ec20 100644 --- a/docs/Output/Html/Features/12NestedFolders/index.html +++ b/docs/Output/Html/Features/12NestedFolders/index.html @@ -132,11 +132,14 @@
    • @@ -253,9 +256,9 @@

      12 Nested Folders

      diff --git a/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html b/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html index f2e1b281d..a3721e155 100644 --- a/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html +++ b/docs/Output/Html/Features/14MarkdownExample/MarkdownExamples.html @@ -132,11 +132,14 @@
    • @@ -253,6 +256,10 @@

      Sample Markdown Feature

      Header 1

      Header 2

      +

      Header 3

      +

      Header 4

      +
      Header 5
      +
      Header 6

      This is a significant word

      1. Ordered #1
      2. @@ -360,7 +367,10 @@

        Sample Markdown Scenario Outline Example

        Examples:

        -

        This message is important too and is for an Example table.

        +
        +                    This __message__ is important too and is for an *Example* table.
        +
        +                  
        @@ -386,9 +396,9 @@

        Examples:

        diff --git a/docs/Output/Html/Features/14MarkdownExample/index.html b/docs/Output/Html/Features/14MarkdownExample/index.html index ada000e88..8adfbc936 100644 --- a/docs/Output/Html/Features/14MarkdownExample/index.html +++ b/docs/Output/Html/Features/14MarkdownExample/index.html @@ -132,11 +132,14 @@
      3. @@ -255,11 +258,17 @@

        14 Markdown Example

        Sample Markdown Feature - - Header 1 -======== + # Header 1 + +## Header 2 + +### Header 3 + +#### Header 4 + +##### Header 5 -Header 2 --------- +###### Header 6 This is a *significant* word @@ -289,9 +298,9 @@

        14 Markdown Example

        diff --git a/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html b/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html index 32f7da9d5..161a44ecd 100644 --- a/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html +++ b/docs/Output/Html/Features/15Pickles/InteractiveDHTMLView.html @@ -132,11 +132,14 @@
      4. @@ -251,13 +254,7 @@

        Interactive DHTML View

        -
        -            In order to increase stakeholder engagement with pickled specs
        -As a SpecFlow evangelist  
        -I want to adjust the level of detail in the DHTML view to suit my audience
        -So that I do not overwhelm them.
        -
        -          
        +

        In order to increase stakeholder engagement with pickled specs
        As a SpecFlow evangelist
        I want to adjust the level of detail in the DHTML view to suite my audience
        So that I do not overwhelm them.

        • @@ -281,9 +278,9 @@

          Scenario with large data table

        diff --git a/docs/Output/Html/Features/15Pickles/index.html b/docs/Output/Html/Features/15Pickles/index.html index 488afbba1..7d0f24de5 100644 --- a/docs/Output/Html/Features/15Pickles/index.html +++ b/docs/Output/Html/Features/15Pickles/index.html @@ -132,11 +132,14 @@
      5. @@ -255,18 +258,18 @@

        15 Pickles

        Interactive DHTML View - - In order to increase stakeholder engagement with pickled specs - As a SpecFlow evangelist - I want to adjust the level of detail in the DHTML view to suit my audience - So that I do not overwhelm them. + In order to increase stakeholder engagement with pickled specs +As a SpecFlow evangelist +I want to adjust the level of detail in the DHTML view to suite my audience +So that I do not overwhelm them. diff --git a/docs/Output/Html/Features/Arithmetic.html b/docs/Output/Html/Features/Arithmetic.html index 15d45c73a..55c0ce928 100644 --- a/docs/Output/Html/Features/Arithmetic.html +++ b/docs/Output/Html/Features/Arithmetic.html @@ -132,11 +132,14 @@
      6. @@ -251,9 +254,7 @@

        Arithmetic

        -

        In order to avoid silly mistakes -As a math idiot -I want to be able to perform arithmetic on the calculator

        +

        In order to avoid silly mistakes
        As a math idiot
        I want to be able to perform arithmetic on the calculator

        When $a \ne 0$, there are two solutions to $(ax^2 + bx + c = 0)$ and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

        @@ -349,9 +350,9 @@

        Divide two numbers

        diff --git a/docs/Output/Html/Features/Trigonometry.html b/docs/Output/Html/Features/Trigonometry.html index a59463f7d..f33f5d197 100644 --- a/docs/Output/Html/Features/Trigonometry.html +++ b/docs/Output/Html/Features/Trigonometry.html @@ -132,11 +132,14 @@
      7. @@ -251,12 +254,7 @@

        Trigonometry

        -
        -            In order to avoid perform more advanced calculations
        -As a math idiot
        -I want to be able to use trigonometric functions
        -
        -          
        +

        In order to avoid perform more advanced calculations
        As a math idiot
        I want to be able to use trigonometric functions

        • @@ -319,9 +317,9 @@

          Tangent

        diff --git a/docs/Output/Html/Features/Workflow/ClearingScreen.html b/docs/Output/Html/Features/Workflow/ClearingScreen.html index 341acbaa8..11596ac8f 100644 --- a/docs/Output/Html/Features/Workflow/ClearingScreen.html +++ b/docs/Output/Html/Features/Workflow/ClearingScreen.html @@ -132,11 +132,14 @@
      8. @@ -251,12 +254,7 @@

        Clearing Screen

        -
        -            In order to restart a new set of calculations
        -As a math idiot
        -I want to be able to clear the screen
        -
        -          
        +

        In order to restart a new set of calculations
        As a math idiot
        I want to be able to clear the screen

        • @@ -283,9 +281,9 @@

          Clear the screen

        diff --git a/docs/Output/Html/Features/Workflow/index.html b/docs/Output/Html/Features/Workflow/index.html index 9d50f9251..9bcd772eb 100644 --- a/docs/Output/Html/Features/Workflow/index.html +++ b/docs/Output/Html/Features/Workflow/index.html @@ -132,11 +132,14 @@
      9. @@ -255,17 +258,17 @@

        Workflow

        Clearing Screen - - In order to restart a new set of calculations - As a math idiot - I want to be able to clear the screen + In order to restart a new set of calculations +As a math idiot +I want to be able to clear the screen diff --git a/docs/Output/Html/Features/index.html b/docs/Output/Html/Features/index.html index 16db61629..1512b540c 100644 --- a/docs/Output/Html/Features/index.html +++ b/docs/Output/Html/Features/index.html @@ -132,11 +132,14 @@
      10. @@ -255,8 +258,8 @@

        Features

        Arithmetic - - In order to avoid silly mistakes -As a math idiot + In order to avoid silly mistakes +As a math idiot I want to be able to perform arithmetic on the calculator When $a \ne 0$, there are two solutions to $\(ax^2 + bx + c = 0\)$ and they are @@ -267,17 +270,17 @@

        Features

        Trigonometry - - In order to avoid perform more advanced calculations - As a math idiot - I want to be able to use trigonometric functions + In order to avoid perform more advanced calculations +As a math idiot +I want to be able to use trigonometric functions diff --git a/docs/Output/Html/index.html b/docs/Output/Html/index.html index acf6f3b27..afe918179 100644 --- a/docs/Output/Html/index.html +++ b/docs/Output/Html/index.html @@ -132,11 +132,14 @@
      11. @@ -253,9 +256,9 @@

        Examples

          diff --git a/docs/Output/Html/pickles - Shortcut.lnk b/docs/Output/Html/pickles - Shortcut.lnk new file mode 100644 index 0000000000000000000000000000000000000000..a98152a3139622530d0ec5221df324d933cac49e GIT binary patch literal 1194 zcma)5ZAepL6h1SnSy9)I#3IuK#R%6N201YXyKQ%BIc7=VMV#BLHEnadTG$6t{U}lj zoc#$c#1Enx74-F^6#5Yn)!=}EwT)%g9&l53MX^MEsEE11$&3dJ3D@kP_qx(v#3&Qwq2elh!nfwy|v zVKnw_qMcT=tU3MMR8X<{XH5+Plx; z>|}ncoD97@>!CUa`sybS_?z((%$f<*0$Tv?0Ix*=%RwL&SOFaSa4L-lhR|sAQRWWF z@rRQ|e>mU@wluoil!&~T7OFGgC#$*v7r}Dl5Hmo$zDPg`hKhE1eQuMxMK564=^|8@Qxsi%Oy72L%&&YG{rr|+$F(LS;;kv
        • @@ -252,9 +255,9 @@

          In the Features-folders you'll find quite a large population of .feature files that you can use to test out pickles on.

          diff --git a/docs/Output/JSON/pickledFeatures.json b/docs/Output/JSON/pickledFeatures.json index fa2b616db..427ddb7db 100644 --- a/docs/Output/JSON/pickledFeatures.json +++ b/docs/Output/JSON/pickledFeatures.json @@ -4,7 +4,7 @@ "RelativeFolder": "Features\\00BasicGherkin\\BasicGherkin.feature", "Feature": { "Name": "Showing basic gherkin syntax", - "Description": "In order to see that gherkin is a very simple language\r\nAs a SpecFlow evangelist\r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", + "Description": "In order to see that gherkin is a very simple language \r\nAs a SpecFlow evangelist \r\nI want to show that basic syntax\r\n\r\n![Test Image](test.jpg)", "FeatureElements": [ { "Name": "Simple GWT", @@ -109,7 +109,7 @@ "RelativeFolder": "Features\\01TestRunner\\TestRunnerIsNotImportant.feature", "Feature": { "Name": "The test runner is not (very) important", - "Description": "\tIn order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\n\tAs a SpecFlow evanglist \r\n\tI want to be able to call my steps in the same manner inspite of the testrunner configured ", + "Description": "In order to show that the test runner is just for the autogenerated stuff in SpecFlow \r\nAs a SpecFlow evanglist \r\nI want to be able to call my steps in the same manner inspite of the testrunner configured", "FeatureElements": [ { "Name": "A couple of simple steps", @@ -160,7 +160,7 @@ "RelativeFolder": "Features\\02TagsAndHooks\\Hooks.feature", "Feature": { "Name": "Addition", - "Description": "\tIn order to explain the order in which hooks are run\r\n\tAs a SpecFlow evanglist\r\n\tI wan to be able to hook into pre and post conditions in SpecFlow", + "Description": "In order to explain the order in which hooks are run \r\nAs a SpecFlow evanglist \r\nI wan to be able to hook into pre and post conditions in SpecFlow", "FeatureElements": [ { "Name": "Hooking into pre conditions for Test Runs in SpecFlow", @@ -308,7 +308,7 @@ "RelativeFolder": "Features\\02TagsAndHooks\\TagDemo.feature", "Feature": { "Name": "Tag demonstrator", - "Description": "\tIn order to show the capabilities of tags in SpecFlow\r\n\tAs a SpecFlow evanglist\r\n\tI want to write scenarios that has tags and show their usage in code", + "Description": "In order to show the capabilities of tags in SpecFlow \r\nAs a SpecFlow evanglist \r\nI want to write scenarios that has tags and show their usage in code", "FeatureElements": [ { "Name": "Ignored scenario", @@ -512,7 +512,7 @@ "RelativeFolder": "Features\\03ScenarioOutline\\ScenarioOutline.feature", "Feature": { "Name": "Scenario outline", - "Description": "\tIn order to not have to type the same scenario over and over\r\n\tAs a SpecFlow evangelist\r\n\tI want to show how to use ScenarioOutline", + "Description": "In order to not have to type the same scenario over and over \r\nAs a SpecFlow evangelist \r\nI want to show how to use ScenarioOutline", "FeatureElements": [ { "Examples": [ @@ -716,7 +716,7 @@ "RelativeFolder": "Features\\031ScenarioContext\\ScenarioContext.feature", "Feature": { "Name": "Scenario Context features", - "Description": "\tIn order to show how to use ScenarioContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in ScenarioContext", + "Description": "In order to show how to use ScenarioContext \r\nAs a SpecFlow evangelist \r\nI want to write some simple scenarios with data in ScenarioContext", "FeatureElements": [ { "Name": "Store and retrive Person Marcus from ScenarioContext", @@ -900,7 +900,7 @@ "RelativeFolder": "Features\\032FeatureContext\\FeatureContextFeatures.feature", "Feature": { "Name": "FeatureContext features", - "Description": "\tIn order to show how to use FeatureContext\r\n\tAs a SpecFlow evangelist\r\n\tI want to write some simple scenarios with data in FeatureContext", + "Description": "In order to show how to use FeatureContext \r\nAs a SpecFlow evangelist \r\nI want to write some simple scenarios with data in FeatureContext", "FeatureElements": [ { "Name": "Store and retrive Person Marcus from FeatureContext Current", @@ -1001,7 +1001,7 @@ "RelativeFolder": "Features\\04Background\\BackgroundFeature.feature", "Feature": { "Name": "Show the use of background", - "Description": "\tIn order to show how to use the Background keyword of Gherkin\r\n\tAs a SpecFlow evanglist\r\n\tI want to show that background steps are called before any scenario step", + "Description": "In order to show how to use the Background keyword of Gherkin \r\nAs a SpecFlow evanglist \r\nI want to show that background steps are called before any scenario step", "FeatureElements": [ { "Name": "Add 1 to the sum", @@ -1096,7 +1096,7 @@ "RelativeFolder": "Features\\05TablesAndAssist\\TableScenario.feature", "Feature": { "Name": "Showing table usage", - "Description": "\tIn order to show how to use tables\r\n\tAs a SpecFlow evanglist\r\n\tI want to write some simple scenarios that uses tables tables", + "Description": "In order to show how to use tables \r\nAs a SpecFlow evanglist \r\nI want to write some simple scenarios that uses tables tables", "FeatureElements": [ { "Name": "Using tables", @@ -1425,7 +1425,7 @@ "RelativeFolder": "Features\\06CompareToAssist\\CompareTo.feature", "Feature": { "Name": "Show the compare to feature", - "Description": "\tIn order to show the compare to features of SpecFlow Assist\r\n\tAs a SpecFlow evanglist\r\n\tI want to show how the different versions of compareTo works", + "Description": "In order to show the compare to features of SpecFlow Assist \r\nAs a SpecFlow evanglist \r\nI want to show how the different versions of compareTo works", "FeatureElements": [ { "Name": "CompareToInstance", @@ -1663,10 +1663,10 @@ } }, { - "RelativeFolder": "Features\\07Svenska\\Svenska.feature", + "RelativeFolder": "Features\\07Localization\\Svenska.feature", "Feature": { - "Name": "Summering", - "Description": "\tFör att slippa att göra dumma fel\r\n\tSom räknare\r\n\tVill jag kunna lägga summera", + "Name": "Svenska - Summering", + "Description": "För att slippa att göra dumma fel \r\nSom räknare \r\nVill jag kunna lägga summera", "FeatureElements": [ { "Name": "Summera 5 och 7 ska vara 12", @@ -1720,11 +1720,69 @@ "WasSuccessful": false } }, + { + "RelativeFolder": "Features\\07Localization\\Vlaams.feature", + "Feature": { + "Name": "Test de Cultuur in het Vlaams", + "Description": "", + "FeatureElements": [ + { + "Name": "Het Scenario", + "Slug": "het-scenario", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Stel ", + "Name": "dat ik 50 ingeef", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "And", + "NativeKeyword": "En ", + "Name": "dat ik 70 ingeef", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "When", + "NativeKeyword": "Als ", + "Name": "ik plus druk", + "StepComments": [], + "AfterLastStepComments": [] + }, + { + "Keyword": "Then", + "NativeKeyword": "Dan ", + "Name": "moet het resultaat 120 zijn", + "StepComments": [], + "AfterLastStepComments": [] + } + ], + "Tags": [], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, + "Tags": [] + }, + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + }, { "RelativeFolder": "Features\\08AttributeOverloading\\AttributeOverloading.feature", "Feature": { "Name": "Attribute overloading", - "Description": "\tIn order to show that steps can be used with multiple attributes\r\n\tAs a SpecFlow Evangelist\r\n\tI want to show that similar attributes can be applied to the same step definition", + "Description": "In order to show that steps can be used with multiple attributes \r\nAs a SpecFlow Evangelist \r\nI want to show that similar attributes can be applied to the same step definition", "FeatureElements": [ { "Name": "Checking number for evenness", @@ -1803,7 +1861,7 @@ "RelativeFolder": "Features\\09CallingStepsFromSteps\\CallingStepsFromSteps.feature", "Feature": { "Name": "Calling Steps from StepDefinitions", - "Description": "\tIn order to create steps of a higher abstraction\r\n\tAs a SpecFlow evangelist\r\n\tI want reuse other steps in my step definitions", + "Description": "In order to create steps of a higher abstraction \r\nAs a SpecFlow evangelist \r\nI want reuse other steps in my step definitions", "FeatureElements": [ { "Name": "Log in", @@ -1894,7 +1952,7 @@ "RelativeFolder": "Features\\10StepTransformation\\StepTransformation.feature", "Feature": { "Name": "Step Argument Transformations", - "Description": "\tIn order to reduce the amount of code and repetitive tasks in my steps\r\n\tAs a SpecFlow evanglist\r\n\tI want to define reusable transformations for my step arguments", + "Description": "In order to reduce the amount of code and repetitive tasks in my steps \r\nAs a SpecFlow evanglist \r\nI want to define reusable transformations for my step arguments", "FeatureElements": [ { "Name": "Steps with non-string arguments", @@ -1945,7 +2003,7 @@ "RelativeFolder": "Features\\11ContextInjection\\ContextInjection.feature", "Feature": { "Name": "Injecting context into step specifications", - "Description": "\tIn order to don't have to rely on the global shared state\r\n\t\tand to be able to define the contexts required for each scenario.\r\n\tAs a SpecFlow Evanglist\r\n\tI would like to have the system automatically inject an instance of any class as \r\n\t\tdefined in the constructor of a step file", + "Description": "In order to don't have to rely on the global shared state\r\nand to be able to define the contexts required for each scenario. \r\nAs a SpecFlow Evanglist \r\nI would like to have the system automatically inject an instance of any class as\r\ndefined in the constructor of a step file", "FeatureElements": [ { "Name": "Feature with no context", @@ -2107,7 +2165,7 @@ "RelativeFolder": "Features\\12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", "Feature": { "Name": "Nested Folder Example", - "Description": "\tIn order to test nested folder output\r\n\tAs a silly contributer\r\n\tI want to create an example of something several folders deep", + "Description": "In order to test nested folder output \r\nAs a silly contributer \r\nI want to create an example of something several folders deep", "FeatureElements": [ { "Name": "Nested - Add two numbers", @@ -2167,7 +2225,7 @@ "RelativeFolder": "Features\\13MultilineText\\MultilineFeatureExample.feature", "Feature": { "Name": "Multiline Feature Example", - "Description": "\tIn order capture this particular Gherkin feature\r\n\tAs a Pickles contributer\r\n\tI want to demonstrate an example of using multiline text in a Scenario", + "Description": "In order capture this particular Gherkin feature \r\nAs a Pickles contributer \r\nI want to demonstrate an example of using multiline text in a Scenario", "FeatureElements": [ { "Name": "Mutliline Output", @@ -2221,7 +2279,7 @@ "RelativeFolder": "Features\\14MarkdownExample\\MarkdownExamples.feature", "Feature": { "Name": "Sample Markdown Feature", - "Description": "Header 1\r\n========\r\n\r\nHeader 2\r\n--------\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", + "Description": "# Header 1\r\n\r\n## Header 2\r\n\r\n### Header 3\r\n\r\n#### Header 4\r\n\r\n##### Header 5\r\n\r\n###### Header 6\r\n\r\nThis is a *significant* word\r\n\r\n1. Ordered #1\r\n2. Ordered #2\r\n3. Ordered #3\r\n\r\n- Unordered #1\r\n- Unordered #2\r\n- Unordered #3\r\n\r\nHorizontal Rule:\r\n- - -\r\n\r\nTable example:\r\n\r\n| First Header | Second Header |\r\n| ------------- | ------------- |\r\n| Content Cell | Content Cell |\r\n| Content Cell | Content Cell |\r\n\r\n- - -\r\n\r\nIncluding a picture: ![](./image.png)", "FeatureElements": [ { "Name": "Sample Markdown Scenario Example", @@ -2253,7 +2311,7 @@ "Examples": [ { "Name": "", - "Description": "This __message__ is important too and is for an *Example* table.", + "Description": "\tThis __message__ is important too and is for an *Example* table.", "TableArgument": { "HeaderRow": [ "test", @@ -2336,7 +2394,7 @@ "RelativeFolder": "Features\\15Pickles\\InteractiveDHTMLView.feature", "Feature": { "Name": "Interactive DHTML View", - "Description": "\tIn order to increase stakeholder engagement with pickled specs\r\n\tAs a SpecFlow evangelist \r\n\tI want to adjust the level of detail in the DHTML view to suit my audience\r\n\tSo that I do not overwhelm them.", + "Description": "In order to increase stakeholder engagement with pickled specs \r\nAs a SpecFlow evangelist \r\nI want to adjust the level of detail in the DHTML view to suite my audience \r\nSo that I do not overwhelm them.", "FeatureElements": [ { "Name": "Scenario with large data table", @@ -2483,7 +2541,7 @@ "RelativeFolder": "Features\\Arithmetic.feature", "Feature": { "Name": "Arithmetic", - "Description": "In order to avoid silly mistakes\r\nAs a math idiot\r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", + "Description": "In order to avoid silly mistakes \r\nAs a math idiot \r\nI want to be able to perform arithmetic on the calculator\r\n\r\nWhen $a \\ne 0$, there are two solutions to $\\(ax^2 + bx + c = 0\\)$ and they are\r\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$", "FeatureElements": [ { "Name": "Add two numbers", @@ -2677,7 +2735,7 @@ "RelativeFolder": "Features\\Trigonometry.feature", "Feature": { "Name": "Trigonometry", - "Description": "\tIn order to avoid perform more advanced calculations\r\n\tAs a math idiot\r\n\tI want to be able to use trigonometric functions", + "Description": "In order to avoid perform more advanced calculations \r\nAs a math idiot \r\nI want to be able to use trigonometric functions", "FeatureElements": [ { "Name": "Sine", @@ -2803,7 +2861,7 @@ "RelativeFolder": "Features\\Workflow\\ClearingScreen.feature", "Feature": { "Name": "Clearing Screen", - "Description": "\tIn order to restart a new set of calculations\r\n\tAs a math idiot\r\n\tI want to be able to clear the screen", + "Description": "In order to restart a new set of calculations \r\nAs a math idiot \r\nI want to be able to clear the screen", "FeatureElements": [ { "Name": "Clear the screen", @@ -2986,10 +3044,10 @@ "Folders": [ { "Folder": "Features", - "Total": 53, + "Total": 54, "Passing": 0, "Failing": 0, - "Inconclusive": 53 + "Inconclusive": 54 } ], "NotTestedFolders": [ @@ -3002,21 +3060,21 @@ } ], "Scenarios": { - "Total": 53, + "Total": 54, "Passing": 0, "Failing": 0, - "Inconclusive": 53 + "Inconclusive": 54 }, "Features": { - "Total": 22, + "Total": 23, "Passing": 0, "Failing": 0, - "Inconclusive": 22 + "Inconclusive": 23 } }, "Configuration": { "SutName": "Pickles", - "SutVersion": "2.9.0", - "GeneratedOn": "7 Oktober 2016 17:01:29" + "SutVersion": "2.10.0", + "GeneratedOn": "22 Oktober 2016 13:32:37" } } \ No newline at end of file diff --git a/docs/Output/Word/Pickles.docx b/docs/Output/Word/Pickles.docx index 7c070ccb0683b8050a74e115a17d48f472181748..56fd61db3232f642a7e54bac87b0ea293abfad16 100644 GIT binary patch delta 8127 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 delta 7992 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 diff --git a/docs/Output/Word/features.docx b/docs/Output/Word/features.docx index 5872ef901d0e5b4bfff84bbe3b49fae7075e1c19..84fef13852c2056c6db958773aee32071045b408 100644 GIT binary patch delta 7759 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 RV(1YN9}gXZ824YR{{tTxnBf2b delta 7697 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 z-}ip|1iDownload

        - If you prefer to download the .zip files, you can so from the Github release page. + If you prefer to download the .zip files, you can so from the Github release page.

        9UVca{#E&(677V%@~vUpn!3 zw!SiSZ@Kd}|8i0Lw6&A2Z<+efJGEp^Ld?8Bp`R4qt~hg%dATUN$iqhs;U|B5IO@5f z`^mesomVgFd3rjrEtG$1F!SH`xtfgq_I@83Q9|FdE!u~{XL68%Mg48BBL)I(@v2Yi zsv}A!ZhCu9WN+*j&ZJqlHdq?Y-1csBRE5U=r!f#UqWPluW?gQy!vB}uw|}5tl05+=1#`)k?KAi*ThT? z7qm=|Fy65x@A%p>o~N5bgw}toxAWvHId-Fgee&6kxzl9UY&YebbmrRDCrS6jSaUwk zRayFUtr(m8afuc#(}>5?FaJ1Q{=c*}VY9=o{c;yGw?6rr*B#BehQIcDmeDKS5I!C8 zd+oQ2xYivpxp@H?!dly=e7Ib^(#1G4tmo(7|Kaa7D$e^#2gdVr?v*%pVxk@Q=CDZH zXC|I`{N|ZEm!A&R%(|xaM@&*QU1GcX9xcHj>t#h%`MO*SRP_2j&N9-Au;EZ{Sh&JN zf1_ghNqw)1P5qZtxb7<)2xOaF5p%dgd_GDTZ+>K021(e_#y0T6XYzbwLvU)pY;1*8 z%!rvdf<>cDq?s>kGEDxcDXksg&B&z7058Kl6`nS={Q;I}6B!v8gn%>xbWh%Aq9_k4 zv?kS@xYP@jSOLU>2n9ga<;nj{6u@f0`3q=9CNl#AKZ=^wlWk4qz^;O%j}%iAu&ZX9 RN;6)Wyxmld&D$8H0RZg=MYjL| diff --git a/docs/Output/Word/features.docx b/docs/Output/Word/features.docx index 84fef13852c2056c6db958773aee32071045b408..619de4badc68601c3cd533c050e4cc09f65daedf 100644 GIT binary patch delta 930 zcmcbXeLb5uz?+#xgn@y9gW+jj>qg$Uk{m$V)8)_QLz|hTEExq%Of4+a%u`Lxk`fb5 zl2a@vdrQkP1C?yfk-o$ORx99BZ#vmc!>#_H-(dqDwg=%WiA1kY?-889x`}d!pwq`e{Z(3(qdvH;}hK4GW z(98K;+rIvC+xRqT-y*R;77t&g6&$QsTF$z9uY8_mc|z2J7>`+Cl2=iWyZ=|nW&ouDsKZ@A4Wpv4U1IDDVP97D8Qyvj&*IO(<)z!2-@3y|8t}}Io zPLSa;4da=w-ppDvYk^XA*R62%B_{sLp~pJ?3e~g=uli;t|FO)BpF6?hnU$wvYs_>Z z;U8)r7ti1Og9Rm4Hb2tb$^;JcSvszaAjafJx>vyhyY!kFIYAK?zIipD?_@Uvi+XQh zEC{r%PpZ6cqqQR7%97a}+eGIau;APHYWlIsE%SO=-5+sT_&a!LBqg7o_j7-}%{*Wf zJboFfeTnnKrCD>91v+&a+zGq1=gF3%RpsvfM>n3&Vi5}JJ#RJfGTX(}!Z(%5CZ8vk z9%@O*bu{L2ujn*w_I_PosrU7hpE#uV@KzYy?75M7@?cf;V}+ABvEF*m zasv;D-S-TNx|fw$P}1YLBB0rH-^6qJCV%6jILx@0{C+JsH_SWk{k9#U2Yy{BU#qtG zp3~C+V=1ssceH)fvtvY!hpUEVkl^<-wt;7p$&-u? z!EtiT*b0#!I82p~=cK>@ delta 929 zcmcbfeJz_ez?+#xgn@y9gMlL_Y$NYmNe&?Gndv^+ax;^ZC8L0)rHQG9ajLmdl4*)b zs%6q-Z)rJZppwlw(wBI^YD>3@rA&6yaI5$BJ8U4p_F%QkJ>lmMZ}4T^;?=nkHZ{Wf zaiP$}BY|(2Y^AyTj)-z>amwTlYQ3^F{n&oH-Z%Z*zaM?IHM==oCN}wZ(~(3MrZ)#) zEnCmE>FYDMNmq+D9t-=KdFbld2Td=%-g5<2+usR#wcwcF&I^1u{AH7m`~7@r5mplL zVTslf&w7zUt8>OD3ez^+0KXvVkUj?Xi9 zGM0~2_u;rEW^%ZoWqO41jxBk|*Ou`--5esc{$stJCtu028x8D}&vwk6CbMR{Dc__s z*S0=Mx+lh(^Kq`q(x+?1*xZjxv~Zb5JeGd>$LaF_rL75@9d_-PyO_E4$=AH@Xx26S zwb!$ZUg?JL>4@KJzg@(&?ug0F3kMiCYHgeH;d1dx7vs#Zo}YjJhridTIPWVR7|+kS zSK`=-iFVwZ!y;{;nRw>$n`iD^emYb$>zdXdF-g&MiS6opv;>2!mlajz>vAnn(d+v- z%SbQ6hC{hw;R+A^jf&|f^}Q-K^PcyLv)7MOFz_h5T6;iZCn3{k^`%R@8PfT8Is>Wt- I49t=Y0FShaI{*Lx diff --git a/docs/index.html b/docs/index.html index 8dcee7098..789c1d216 100644 --- a/docs/index.html +++ b/docs/index.html @@ -159,7 +159,7 @@

        Download

        - If you prefer to download the .zip files, you can so from the Github release page. + If you prefer to download the .zip files, you can so from the Github release page.