From dc3fd486ccb93d0ab69fa6e79ae130d64264c6c6 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Tue, 16 Jun 2020 16:38:32 +0200 Subject: [PATCH 1/3] (GH-5) included the cake-contrib-icon in package --- Changelog.md | 2 ++ src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj | 10 +++++++++- src/Cake.AsciiDoctorJ/icon.png | Bin 0 -> 15580 bytes 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/Cake.AsciiDoctorJ/icon.png diff --git a/Changelog.md b/Changelog.md index f016c64f..8545589c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed +- (GH-5) included the cake-contrib-icon in package + ## [1.0.2] - 2019-09-02 ### Changed diff --git a/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj b/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj index 7744d884..c26d0e13 100644 --- a/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj +++ b/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj @@ -17,12 +17,13 @@ Nils Andresen Copyright © $(FullYear) — Nils Andresen makes [asciidoctorj](https://github.com/asciidoctor/asciidoctorj) available as a tool in [cake](https://cakebuild.net/) - https://cdn.jsdelivr.net/gh/cake-contrib/graphics/png/cake-contrib-medium.png + MIT https://cake-contrib.github.io/Cake.AsciiDoctorJ cake;addin;asciidoctorj https://github.com/cake-contrib/Cake.AsciiDoctorJ.git https://github.com/cake-contrib/Cake.AsciiDoctorJ/releases/tag/$(Version) + icon.png @@ -32,4 +33,11 @@ all + + + + True + + + \ No newline at end of file diff --git a/src/Cake.AsciiDoctorJ/icon.png b/src/Cake.AsciiDoctorJ/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9881edc4e937ff34999ecf375c550249d82acc32 GIT binary patch literal 15580 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 literal 0 HcmV?d00001 From 655bab6617394f64f62a41a1ab54d1bca0acc623 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Tue, 16 Jun 2020 16:46:26 +0200 Subject: [PATCH 2/3] (GH-6) update cake.recipe to 1.1.1 --- Changelog.md | 1 + recipe.cake | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 8545589c..65742a0d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed +- (GH-6) update cake.recipe to 1.1.1 - (GH-5) included the cake-contrib-icon in package diff --git a/recipe.cake b/recipe.cake index 38a18460..17cef211 100644 --- a/recipe.cake +++ b/recipe.cake @@ -1,4 +1,4 @@ -#load nuget:?package=Cake.Recipe&version=1.0.0 +#load nuget:?package=Cake.Recipe&version=1.1.1 Environment.SetVariableNames(); From 17ead295785a1ac2cf1cd5594a25eed0537235f1 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Fri, 7 Aug 2020 23:59:17 +0200 Subject: [PATCH 3/3] Feature/code quality (#8) * (GH-6) bump cake.recipe to 1.1.2 * (GH-7) removed the old Changelog.md, as with cake.recipe the changelog is part of the github releases. * (GH-7) added tests and general code-quality --- .editorconfig | 11 +- .github/workflows/publishDocs.yml | 25 ++ .gitignore | 3 + Changelog.md | 37 --- recipe.cake | 2 +- src/.editorconfig | 236 +++++++++++++++ .../AsciiDoctorJAliasesFixture.cs | 41 --- .../AsciiDoctorJAliasesTests.cs | 68 +++-- .../AsciiDoctorJRunnerFixture.cs | 18 -- .../AsciiDoctorJRunnerTests.cs | 70 ++++- .../Cake.AsciiDoctorJ.Tests.csproj | 19 +- .../Fixtures/AsciiDoctorJAliasesFixture.cs | 50 ++++ .../Fixtures/AsciiDoctorJRunnerFixture.cs | 33 +++ ...iDoctorJRunnerSettingsExtensionsFixture.cs | 18 ++ .../SettingsExtensionsTests.cs | 271 ++++++++++++++---- src/Cake.AsciiDoctorJ.Tests/SettingsTests.cs | 125 ++++---- src/Cake.AsciiDoctorJ.ruleset | 24 ++ src/Cake.AsciiDoctorJ.sln | 24 +- src/Cake.AsciiDoctorJ.sln.DotSettings | 3 + src/Cake.AsciiDoctorJ.sln.vsspell | 33 +++ src/Cake.AsciiDoctorJ/AsciiDoctorJAliases.cs | 13 +- src/Cake.AsciiDoctorJ/AsciiDoctorJRunner.cs | 31 +- .../AsciiDoctorJRunnerSettings.cs | 37 ++- .../AsciiDoctorJRunnerSettingsExtensions.cs | 15 +- .../Cake.AsciiDoctorJ.csproj | 25 +- src/Cake.AsciiDoctorJ/GlobalSuppressions.cs | 2 - src/Directory.Build.props | 6 + src/vsspell.ignoredWords.txt | 10 + 28 files changed, 932 insertions(+), 318 deletions(-) create mode 100644 .github/workflows/publishDocs.yml delete mode 100644 Changelog.md create mode 100644 src/.editorconfig delete mode 100644 src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesFixture.cs delete mode 100644 src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerFixture.cs create mode 100644 src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJAliasesFixture.cs create mode 100644 src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerFixture.cs create mode 100644 src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerSettingsExtensionsFixture.cs create mode 100644 src/Cake.AsciiDoctorJ.ruleset create mode 100644 src/Cake.AsciiDoctorJ.sln.DotSettings create mode 100644 src/Cake.AsciiDoctorJ.sln.vsspell delete mode 100644 src/Cake.AsciiDoctorJ/GlobalSuppressions.cs create mode 100644 src/Directory.Build.props create mode 100644 src/vsspell.ignoredWords.txt diff --git a/.editorconfig b/.editorconfig index dea2e7c8..35791e9f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,6 +7,9 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true +[.cs] + + # This may not be needed, but kept for compatibility with VS [*.{sln,csproj}] end_of_line = crlf @@ -29,15 +32,7 @@ end_of_line = crlf [*.sh] end_of_line = lf -[*.{yml,yaml}] -indent_size = 2 - # The visual studio code file # requires the use of crlf line endings [tasks.json] end_of_line = crlf - -# default for ide0065 contradicts sa1200 -# see https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-language-conventions?view=vs-2019 -# and https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1200.md -csharp_using_directive_placement = outside_namespace \ No newline at end of file diff --git a/.github/workflows/publishDocs.yml b/.github/workflows/publishDocs.yml new file mode 100644 index 00000000..b3e2d4c6 --- /dev/null +++ b/.github/workflows/publishDocs.yml @@ -0,0 +1,25 @@ +name: Publish Documentation + +on: + workflow_dispatch + +env: + WYAM_ACCESS_TOKEN: ${{ secrets.API_TOKEN }} + # secrets.GITHUB_TOKEN has no permissions to push, sadly. + WYAM_DEPLOY_BRANCH: 'gh-pages' + #WYAM_DEPLOY_REMOTE: does not exist in any context, will be dynamically set - see below + +jobs: + cake: + runs-on: windows-latest + + steps: + - name: checkout + uses: actions/checkout@v2 #https://github.com/actions/checkout + with: + fetch-depth: 0 # GitVersion is somewhat irritated when fetch-depth is "1".... + + - name: call cake + run: | + $env:WYAM_DEPLOY_REMOTE = $( git remote get-url --push origin ) + .\build.ps1 -Target PublishDocs -Verbosity Diagnostic diff --git a/.gitignore b/.gitignore index 83d6d57c..8fe89cfe 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ docs/input/tasks/* # Wyam related config.wyam.* + +#Testresults +[Tt]est[Rr]esults diff --git a/Changelog.md b/Changelog.md deleted file mode 100644 index 65742a0d..00000000 --- a/Changelog.md +++ /dev/null @@ -1,37 +0,0 @@ -# Changelog -Changelog for Cake.AsciiDoctorJ - -_The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)._ - -## [Unreleased] -### Changed -- (GH-6) update cake.recipe to 1.1.1 -- (GH-5) included the cake-contrib-icon in package - - -## [1.0.2] - 2019-09-02 -### Changed -- (GH-3) removed code warnings -- (GH-4) added some wyam documentation - -## [1.0.1] - 2019-09-01 -### Changed -- moved project into cake-contrib -- created a changelog -- (GH-2) many changes to internal project-structure - -## [1.0.0] - 2019-08-13 -### Added -- inline documentation - -## [0.0.1] - 2019-08-12 -### Added -- Initial idea - working version mostly without documentation - - -[Unreleased]: https://github.com/cake-contrib/cake.asciidoctorj/compare/1.0.2...HEAD -[1.0.2]: https://github.com/cake-contrib/cake.asciidoctorj/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/cake-contrib/cake.asciidoctorj/compare/v1.0.0...1.0.1 -[1.0.0]: https://github.com/cake-contrib/cake.asciidoctorj/compare/v0.0.1...v1.0.0 -[0.0.1]: https://github.com/cake-contrib/cake.asciidoctorj/tree/v0.0.1 \ No newline at end of file diff --git a/recipe.cake b/recipe.cake index 17cef211..e795259d 100644 --- a/recipe.cake +++ b/recipe.cake @@ -1,4 +1,4 @@ -#load nuget:?package=Cake.Recipe&version=1.1.1 +#load nuget:?package=Cake.Recipe&version=1.1.2 Environment.SetVariableNames(); diff --git a/src/.editorconfig b/src/.editorconfig new file mode 100644 index 00000000..061b57d6 --- /dev/null +++ b/src/.editorconfig @@ -0,0 +1,236 @@ +# C# files +[*.cs] + +#### Core EditorConfig Options #### + +# Indentation and spacing +indent_size = 4 +indent_style = space +tab_width = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = true + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = true +dotnet_sort_system_directives_first = true +file_header_template = unset + +# this. and Me. preferences +dotnet_style_qualification_for_event = false:warning +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_property = false:warning + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:warning +dotnet_style_predefined_type_for_member_access = true:warning + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning + +# Expression-level preferences +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = true:suggestion +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# Field preferences +dotnet_style_readonly_field = true:suggestion + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = false:silent +csharp_style_var_for_built_in_types = false:silent +csharp_style_var_when_type_is_apparent = false:silent + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_switch_expression = true:suggestion + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Modifier preferences +csharp_prefer_static_local_function = true:suggestion +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# Code-block preferences +csharp_prefer_braces = true:silent +csharp_prefer_simple_using_statement = true:suggestion + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# 'using' directive preferences +csharp_using_directive_placement = outside_namespace:warning + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = false +csharp_indent_labels = flush_left +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = warning +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.method_should_be_pascal_case.severity = warning +dotnet_naming_rule.method_should_be_pascal_case.symbols = method +dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.severity = warning +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.symbols = public_or_protected_field +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.severity = warning +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.symbols = private_or_internal_static_field +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_camelcase.severity = warning +dotnet_naming_rule.private_or_internal_field_should_be_camelcase.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_camelcase.style = camelcase + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.method.applicable_kinds = method +dotnet_naming_symbols.method.applicable_accessibilities = public +dotnet_naming_symbols.method.required_modifiers = + +dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field +dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected +dotnet_naming_symbols.public_or_protected_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.camelcase.required_prefix = +dotnet_naming_style.camelcase.required_suffix = +dotnet_naming_style.camelcase.word_separator = +dotnet_naming_style.camelcase.capitalization = camel_case + diff --git a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesFixture.cs b/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesFixture.cs deleted file mode 100644 index 7724e634..00000000 --- a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesFixture.cs +++ /dev/null @@ -1,41 +0,0 @@ -namespace Cake.AsciiDoctorJ.Tests -{ - using Cake.Core; - using Cake.Core.IO; - using Cake.Testing; - using Moq; - - public class AsciiDoctorJAliasesFixture : AsciiDoctorJRunnerFixture - { - internal ICakeContext _context; - - public AsciiDoctorJAliasesFixture() - { - var argumentsMoq = new Mock(); - var registryMoq = new Mock(); - var dataService = new Mock(); - _context = new CakeContext( - FileSystem, - Environment, - Globber, - new FakeLog(), - argumentsMoq.Object, - ProcessRunner, - registryMoq.Object, - Tools, dataService.Object, - Configuration); - } - - protected override void RunTool() - { - if (Settings == null) - { - AsciiDoctorJAliases.AsciiDoctorJ(_context); - } - else - { - AsciiDoctorJAliases.AsciiDoctorJ(_context, Settings); - } - } - } -} diff --git a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesTests.cs b/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesTests.cs index 55ae6b9e..040a5871 100644 --- a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesTests.cs +++ b/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJAliasesTests.cs @@ -1,28 +1,64 @@ +using System; + +using Cake.AsciiDoctorJ.Tests.Fixtures; + +using FluentAssertions; + +using Xunit; + namespace Cake.AsciiDoctorJ.Tests { - using System; - using Cake.Core; - using FluentAssertions; - using Moq; - using NUnit.Framework; - - [TestFixture] - [TestOf(typeof(AsciiDoctorJAliases))] public class AsciiDoctorJAliasesTests { - private ICakeContext context; + [Fact] + public void Should_throw_if_settings_are_null() + { + var fixture = new AsciiDoctorJAliasesFixture(); + fixture.GivenSettingsIsNull(); - [SetUp] - public void Setup() + Action action = () => fixture.Run(); + action.Should().Throw().WithMessage("*settings"); + } + + [Fact] + public void Should_not_throw_if_settings_are_set() { - context = new Mock().Object; // TODO: Is there nothin in Cake.Testing?! + var fixture = new AsciiDoctorJAliasesFixture(); + + var actual = fixture.Run(); + + actual.Args.Should().Be(""); } - [Test] - public void Should_Throw_If_Settings_Are_Null() + [Fact] + public void Should_not_throw_if_settings_are_null_but_called_fluently() { - Action action = () => AsciiDoctorJAliases.AsciiDoctorJ(context, (AsciiDoctorJRunnerSettings)null); - action.Should().Throw().WithMessage("*settings"); + var fixture = new AsciiDoctorJAliasesFixture(); + fixture.GivenSettingsIsNull(); + + var actual = fixture.RunFluent(x => { }); + + actual.Args.Should().Be(""); + } + + [Fact] + public void Should_throw_if_context_is_null() + { + var fixture = new AsciiDoctorJAliasesFixture(); + fixture.GivenContextIsNull(); + + Action action = () => fixture.Run(); + action.Should().Throw().WithMessage("*context"); + } + + [Fact] + public void Should_throw_if_context_is_null_called_fluently() + { + var fixture = new AsciiDoctorJAliasesFixture(); + fixture.GivenContextIsNull(); + + Action action = () => fixture.RunFluent(x => { }); + action.Should().Throw().WithMessage("*context"); } } } diff --git a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerFixture.cs b/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerFixture.cs deleted file mode 100644 index 5eb9c156..00000000 --- a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerFixture.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Cake.AsciiDoctorJ.Tests -{ - using Cake.Testing.Fixtures; - - public class AsciiDoctorJRunnerFixture : ToolFixture - { - public AsciiDoctorJRunnerFixture() - : base("AsciiDoctorJ.exe") - { - } - - protected override void RunTool() - { - var tool = new AsciiDoctorJRunner(FileSystem, Environment, ProcessRunner, Tools); - tool.Run(Settings); - } - } -} diff --git a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerTests.cs b/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerTests.cs index c68d9c49..385a7d34 100644 --- a/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerTests.cs +++ b/src/Cake.AsciiDoctorJ.Tests/AsciiDoctorJRunnerTests.cs @@ -1,17 +1,33 @@ +using System; + +using Cake.AsciiDoctorJ.Tests.Fixtures; +using Cake.Core; +using Cake.Testing; + +using FluentAssertions; + +using Xunit; + namespace Cake.AsciiDoctorJ.Tests { - using System; - using Cake.Core; - using Cake.Testing; - using FluentAssertions; - using NUnit.Framework; - - [TestFixture] - [TestOf(typeof(AsciiDoctorJRunner))] public class AsciiDoctorJRunnerTests { - [Test] - public void Should_Throw_If_AsciiDoctorJ_Executable_Was_Not_Found() + [Fact] + public void Should_Throw_If_Settings_Are_Null() + { + var fixture = new AsciiDoctorJRunnerFixture(); + fixture.GivenSettingsIsNull(); + + Action result = () => + { + fixture.Run(); + }; + + result.Should().Throw(); + } + + [Fact] + public void Should_throw_if_asciidoctorj_executable_was_not_found() { var fixture = new AsciiDoctorJRunnerFixture(); fixture.GivenDefaultToolDoNotExist(); @@ -20,5 +36,39 @@ public void Should_Throw_If_AsciiDoctorJ_Executable_Was_Not_Found() Action result = () => fixture.Run(); result.Should().Throw().Where(ex => ex.Message.Contains(expectedMessage)); } + + [Fact] + public void Should_not_throw_if_asciidoctorj_executable_was_found() + { + var fixture = new AsciiDoctorJRunnerFixture(); + + var actual = fixture.RunFluent(x => { }); + + actual.Args.Should().Be(""); + } + + [Fact] + public void Should_not_throw_if_settings_are_null_on_fluent_invocation() + { + var fixture = new AsciiDoctorJRunnerFixture(); + fixture.GivenSettingsIsNull(); + + var actual = fixture.RunFluent(x => { }); + + actual.Args.Should().Be(""); + } + + [Fact] + public void Should_not_throw_if_settings_and_action_are_null_on_fluent_invocation() + { + var fixture = new AsciiDoctorJRunnerFixture + { + Settings = null + }; + + var actual = fixture.RunFluent(null); + + actual.Args.Should().Be(""); + } } } diff --git a/src/Cake.AsciiDoctorJ.Tests/Cake.AsciiDoctorJ.Tests.csproj b/src/Cake.AsciiDoctorJ.Tests/Cake.AsciiDoctorJ.Tests.csproj index a06581ca..b344e85c 100644 --- a/src/Cake.AsciiDoctorJ.Tests/Cake.AsciiDoctorJ.Tests.csproj +++ b/src/Cake.AsciiDoctorJ.Tests/Cake.AsciiDoctorJ.Tests.csproj @@ -1,11 +1,13 @@ - netcoreapp2.0 + netcoreapp2.1 $(TargetFrameworks);net461 + ..\Cake.AsciiDoctorJ.ruleset false - + + Cake.AsciiDoctorJ.Tests @@ -19,10 +21,19 @@ + - - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + runtime; build; native; contentfiles; analyzers + all + diff --git a/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJAliasesFixture.cs b/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJAliasesFixture.cs new file mode 100644 index 00000000..b76cf296 --- /dev/null +++ b/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJAliasesFixture.cs @@ -0,0 +1,50 @@ +using System; +using System.Linq; + +using Cake.Core; +using Cake.Core.IO; +using Cake.Testing; +using Cake.Testing.Fixtures; + +using Moq; + +namespace Cake.AsciiDoctorJ.Tests.Fixtures +{ + internal class AsciiDoctorJAliasesFixture : AsciiDoctorJRunnerFixture + { + private ICakeContext context; + + public AsciiDoctorJAliasesFixture() + { + var argumentsMoq = new Mock(); + var registryMoq = new Mock(); + var dataService = new Mock(); + context = new CakeContext( + FileSystem, + Environment, + Globber, + new FakeLog(), + argumentsMoq.Object, + ProcessRunner, + registryMoq.Object, + Tools, dataService.Object, + Configuration); + } + + internal void GivenContextIsNull() + { + context = null; + } + + internal new ToolFixtureResult RunFluent(Action configure) + { + context.AsciiDoctorJ(configure); + return ProcessRunner.Results.LastOrDefault(); + } + + protected override void RunTool() + { + context.AsciiDoctorJ(Settings); + } + } +} diff --git a/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerFixture.cs b/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerFixture.cs new file mode 100644 index 00000000..4d8ebb4a --- /dev/null +++ b/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerFixture.cs @@ -0,0 +1,33 @@ +using System; +using System.Linq; + +using Cake.Testing.Fixtures; + +namespace Cake.AsciiDoctorJ.Tests.Fixtures +{ + public class AsciiDoctorJRunnerFixture : ToolFixture + { + public AsciiDoctorJRunnerFixture() + : base("asciidoctorj.exe") + { + } + + public void GivenSettingsIsNull() + { + Settings = null; + } + + public ToolFixtureResult RunFluent(Action configure) + { + var tool = new AsciiDoctorJRunner(FileSystem, Environment, ProcessRunner, Tools); + tool.Run(configure, Settings); + return ProcessRunner.Results.LastOrDefault(); + } + + protected override void RunTool() + { + var tool = new AsciiDoctorJRunner(FileSystem, Environment, ProcessRunner, Tools); + tool.Run(Settings); + } + } +} diff --git a/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerSettingsExtensionsFixture.cs b/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerSettingsExtensionsFixture.cs new file mode 100644 index 00000000..c6c13f19 --- /dev/null +++ b/src/Cake.AsciiDoctorJ.Tests/Fixtures/AsciiDoctorJRunnerSettingsExtensionsFixture.cs @@ -0,0 +1,18 @@ +using Cake.Core.IO; +using Cake.Testing; + +namespace Cake.AsciiDoctorJ.Tests.Fixtures +{ + public class AsciiDoctorJRunnerSettingsExtensionsFixture + { + public string EvaluateArgs(AsciiDoctorJRunnerSettings settings) + { + var args = new ProcessArgumentBuilder(); + var environment = FakeEnvironment.CreateWindowsEnvironment(); + + settings.Evaluate(args, environment); + + return args.Render(); + } + } +} diff --git a/src/Cake.AsciiDoctorJ.Tests/SettingsExtensionsTests.cs b/src/Cake.AsciiDoctorJ.Tests/SettingsExtensionsTests.cs index a980144b..a82fb5e0 100644 --- a/src/Cake.AsciiDoctorJ.Tests/SettingsExtensionsTests.cs +++ b/src/Cake.AsciiDoctorJ.Tests/SettingsExtensionsTests.cs @@ -1,88 +1,233 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +using Cake.AsciiDoctorJ.Tests.Fixtures; +using Cake.Core.IO; + +using FluentAssertions; + +using Xunit; + namespace Cake.AsciiDoctorJ.Tests { - using Cake.Core; - using Cake.Core.IO; - using NUnit.Framework; - using FluentAssertions; - using Cake.Testing; - - [TestFixture] - [TestOf(typeof(AsciiDoctorJRunnerSettingsExtensions))] public class SettingsExtensionsTests { - // TODO: It would be better (i.e. more isolated) to test whether the extensions use the settings "correctly"... - - private ICakeEnvironment environment; - - [SetUp] - public void Setup() - { - environment = FakeEnvironment.CreateWindowsEnvironment(); - } - - [TestCase("WithVersion", "--version")] - [TestCase("WithVerbose", "--verbose")] - [TestCase("WithTimingsMode", "--timings")] - [TestCase("WithSectionNumbers", "--section-numbers")] - [TestCase("WithRequire", "--require")] - [TestCase("WithQuiet", "--quiet")] - [TestCase("WithSuppressHeaderAndFooter", "--no-header-footer")] - [TestCase("WithCompact", "--compact")] - public void Should_Convert_All_Flags_To_Arguments(string extensionName, string expectedParam) + [Theory] + [ClassData(typeof(TestData))] + public void Should_convert_all_extensions_to_arguments(Action setFlag, string expectedParam) { - var args = new ProcessArgumentBuilder(); + var fixture = new AsciiDoctorJRunnerSettingsExtensionsFixture(); var sut = new AsciiDoctorJRunnerSettings(); - var ext = typeof(AsciiDoctorJRunnerSettingsExtensions).GetMethod(extensionName, - System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public); - ext.Invoke(null, new object[] { sut }); + setFlag(sut); - sut.Evaluate(args, environment); - - var actual = args.Render(); + var actual = fixture.EvaluateArgs(sut); actual.Should().Contain(expectedParam); } - [TestCase(SafeMode.Safe, "--safe-mode safe")] - [TestCase(SafeMode.Unsafe, "--safe-mode unsafe")] - [TestCase(SafeMode.Secure, "--safe-mode secure")] - [TestCase(SafeMode.Server, "--safe-mode server")] - public void Should_Convert_SafeMode_Settings_To_Arguments(SafeMode mode, string expected) + [Theory] + [ClassData(typeof(ArgSetterTestData))] + public void Should_convert_all_extensions_to_setArgs( + Action setFlag, + Func getFlag, + object expected) { - var args = new ProcessArgumentBuilder(); - var sut = new AsciiDoctorJRunnerSettings().WithSafeMode(mode); - - sut.Evaluate(args, environment); - - var actual = args.Render(); - actual.Should().Contain(expected); + var sut = new AsciiDoctorJRunnerSettings(); + setFlag(sut); + + var actual = getFlag(sut); + + if (!(actual is string) && actual is IEnumerable enumerable) + { + enumerable.Should().BeEquivalentTo((IEnumerable)expected); + } + else + { + actual.Should().Be(expected); + } } - [TestCase(ERuby.Erb, "--eruby erb")] - [TestCase(ERuby.Erubis, "--eruby erubis")] - public void Should_Convert_Eruby_Settings_To_Arguments(ERuby eruby, string expected) + [Theory] + [ClassData(typeof(RetValTestData))] + public void Should_return_the_settings_for_fluent_re_use(Func fluentMethod) { - var args = new ProcessArgumentBuilder(); - var sut = new AsciiDoctorJRunnerSettings().WithERuby(eruby); + var sut = new AsciiDoctorJRunnerSettings(); - sut.Evaluate(args, environment); + var actual = fluentMethod(sut); - var actual = args.Render(); - actual.Should().Contain(expected); + actual.Should().Be(sut); } - [TestCase(DocType.Article, "--doctype article")] - [TestCase(DocType.Book, "--doctype book")] - [TestCase(DocType.Inline, "--doctype inline")] - public void Should_Convert_DocType_Settings_To_Arguments(DocType type, string expected) + private class TestData : IEnumerable { - var args = new ProcessArgumentBuilder(); - var sut = new AsciiDoctorJRunnerSettings().WithDocType(type); + private IEnumerable<(Action, string)> GetTestData() + { + // flags + yield return (s => s.WithVersion(), "--version"); + yield return (s => s.WithVerbose(), "--verbose"); + yield return (s => s.WithTimingsMode(), "--timings"); + yield return (s => s.WithSectionNumbers(), "--section-numbers"); + yield return (s => s.WithRequire(), "--require"); + yield return (s => s.WithQuiet(), "--quiet"); + yield return (s => s.WithSuppressHeaderAndFooter(), "--no-header-footer"); + yield return (s => s.WithCompact(), "--compact"); + + // safemode-arg + yield return (s => s.WithSafeMode(SafeMode.Safe), "--safe-mode safe"); + yield return (s => s.WithSafeMode(SafeMode.Unsafe), "--safe-mode unsafe"); + yield return (s => s.WithSafeMode(SafeMode.Secure), "--safe-mode secure"); + yield return (s => s.WithSafeMode(SafeMode.Server), "--safe-mode server"); + + // eruby-arg + yield return (s => s.WithERuby(ERuby.Erb), "--eruby erb"); + yield return (s => s.WithERuby(ERuby.Erubis), "--eruby erubis"); + + // doctype-arg + yield return (s => s.WithDocType(DocType.Article), "--doctype article"); + yield return (s => s.WithDocType(DocType.Book), "--doctype book"); + yield return (s => s.WithDocType(DocType.Inline), "--doctype inline"); + + // builtin backend - arg + yield return (s => s.WithBuiltinBackend(BuiltinBackend.DocBook), "--backend docbook"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.DocBook5), "--backend docbook5"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.Html), "--backend html"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.Html5), "--backend html5"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.Manpage), "--backend manpage"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.Xhtml), "--backend xhtml"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.Xhtml5), "--backend xhtml5"); + + // misc args + yield return (s => s.WithTemplateEngine("some-engine"), "--template-engine some-engine"); + yield return (s => s.WithTemplateDir(new DirectoryPath("/foo")), "--template-dir \"/foo\""); + yield return (s => s.WithOutputFile(new FilePath("/foo.pdf")), "--out-file \"/foo.pdf\""); + yield return (s => s.WithLoadPath(new DirectoryPath("/foo")), "--load-path \"/foo\""); + yield return (s => s.WithLoadPaths(new[] { new DirectoryPath("/foo"), new DirectoryPath("/bar") }), "--load-path \"/foo\" --load-path \"/bar\""); + yield return (s => s.WithDestinationDir(new DirectoryPath("/foo")), "--destination-dir \"/foo\""); + yield return (s => s.WithClassPath(new DirectoryPath("/foo")), "--classpath \"/foo\""); + yield return (s => s.WithClassPaths(new[] { new DirectoryPath("/foo"), new DirectoryPath("/bar") }), "--classpath \"/foo\" --classpath \"/bar\""); + yield return (s => s.WithBaseDir(new DirectoryPath("/foo")), "--base-dir \"/foo\""); + yield return (s => s.WithBackend("pdf"), "--backend pdf"); + yield return (s => s.WithAttribute("foo", "bar"), "--attribute foo=bar"); + yield return (s => s.WithAttributes(new Dictionary { { "foo", "bar" }, { "bim", "bam" } }), "--attribute foo=bar --attribute bim=bam"); + yield return (s => s.WithInputFile(new FilePath("/foo.adoc")), "/foo.adoc"); + yield return (s => s.WithInputFiles(new[] { new FilePath("/foo.adoc"), new FilePath("/bar.adoc") }), "\"/foo.adoc\" \"/bar.adoc\""); + } + + public IEnumerator GetEnumerator() + { + return GetTestData().Select(x => new[] { (object)x.Item1, x.Item2 }).GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } - sut.Evaluate(args, environment); + private class ArgSetterTestData : IEnumerable + { + private IEnumerable<(Action, + Func, + object)> GetTestData() + { + // flags + yield return (s => s.WithVersion(), s => s.Version, true); + yield return (s => s.WithVerbose(), s => s.Verbose, true); + yield return (s => s.WithTimingsMode(), s => s.TimingsMode, true); + yield return (s => s.WithSectionNumbers(), s => s.SectionNumbers, true); + yield return (s => s.WithRequire(), s => s.Require, true); + yield return (s => s.WithQuiet(), s => s.Quiet, true); + yield return (s => s.WithSuppressHeaderAndFooter(), s => s.SuppressHeaderAndFooter, true); + yield return (s => s.WithCompact(), s => s.Compact, true); + + // safemode-arg + yield return (s => s.WithSafeMode(SafeMode.Safe), s => s.SafeMode, SafeMode.Safe); + yield return (s => s.WithSafeMode(SafeMode.Unsafe), s => s.SafeMode, SafeMode.Unsafe); + yield return (s => s.WithSafeMode(SafeMode.Secure), s => s.SafeMode, SafeMode.Secure); + yield return (s => s.WithSafeMode(SafeMode.Server), s => s.SafeMode, SafeMode.Server); + + // eruby-arg + yield return (s => s.WithERuby(ERuby.Erb), s => s.ERuby, ERuby.Erb); + yield return (s => s.WithERuby(ERuby.Erubis), s => s.ERuby, ERuby.Erubis); + + // doctype-arg + yield return (s => s.WithDocType(DocType.Article), s => s.DocType, DocType.Article); + yield return (s => s.WithDocType(DocType.Book), s => s.DocType, DocType.Book); + yield return (s => s.WithDocType(DocType.Inline), s => s.DocType, DocType.Inline); + + // misc args + var fooDir = new DirectoryPath("/foo"); + var barDir = new DirectoryPath("/bar"); + var fooPdf = new FilePath("foo.pdf"); + var fooAdoc = new FilePath("foo.adoc"); + var barAdoc = new FilePath("bar.adoc"); + var fooBar = new KeyValuePair("foo", "bar"); + var bimBam = new KeyValuePair("bim", "bam"); + yield return (s => s.WithTemplateEngine("some-engine"), s => s.TemplateEngine, "some-engine"); + yield return (s => s.WithTemplateDir(fooDir), s => s.TemplateDir, fooDir); + yield return (s => s.WithOutputFile(fooPdf), s => s.Output, fooPdf); + yield return (s => s.WithLoadPath(fooDir), s => s.LoadPath, new[] { fooDir }); + yield return (s => s.WithLoadPaths(new[] { fooDir, barDir }), s => s.LoadPath, new[] { fooDir, barDir }); + yield return (s => s.WithDestinationDir(fooDir), s => s.DestinationDir, fooDir); + yield return (s => s.WithClassPath(fooDir), s => s.ClassPath, new[] { fooDir }); + yield return (s => s.WithClassPaths(new[] { fooDir, barDir }), s => s.ClassPath, new[] { fooDir, barDir }); + yield return (s => s.WithBaseDir(fooDir), s => s.BaseDir, fooDir); + yield return (s => s.WithBackend("pdf"), s => s.Backend, "pdf"); + yield return (s => s.WithBuiltinBackend(BuiltinBackend.Html), s => s.Backend, "html"); + yield return (s => s.WithAttribute(fooBar.Key, fooBar.Value), s => s.Attributes, new[] { fooBar }); + yield return (s => s.WithAttributes(new[] { fooBar, bimBam }), s => s.Attributes, new[] { fooBar, bimBam }); + yield return (s => s.WithInputFile(fooAdoc), s => s.InputFiles, new[] { fooAdoc }); + yield return (s => s.WithInputFiles(new[] { fooAdoc, barAdoc }), s => s.InputFiles, new[] { fooAdoc, barAdoc }); + } + + public IEnumerator GetEnumerator() + { + return GetTestData().Select(x => new[] { (object)x.Item1, x.Item2, x.Item3 }).GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } - var actual = args.Render(); - actual.Should().Contain(expected); + private class RetValTestData : IEnumerable + { + private IEnumerable> GetTestData() + { + // flags + yield return s => s.WithVersion(); + yield return s => s.WithVerbose(); + yield return s => s.WithTimingsMode(); + yield return s => s.WithSectionNumbers(); + yield return s => s.WithRequire(); + yield return s => s.WithQuiet(); + yield return s => s.WithSuppressHeaderAndFooter(); + yield return s => s.WithCompact(); + + // args + yield return s => s.WithSafeMode(SafeMode.Safe); + yield return s => s.WithERuby(ERuby.Erubis); + yield return s => s.WithDocType(DocType.Inline); + yield return s => s.WithTemplateEngine("some-engine"); + yield return s => s.WithTemplateDir(new DirectoryPath("/foo")); + yield return s => s.WithOutputFile(new FilePath("/foo.pdf")); + yield return s => s.WithLoadPath(new DirectoryPath("/foo")); + yield return s => s.WithLoadPaths(new[] { new DirectoryPath("/foo"), new DirectoryPath("/bar") }); + yield return s => s.WithDestinationDir(new DirectoryPath("/foo")); + yield return s => s.WithClassPath(new DirectoryPath("/foo")); + yield return s => s.WithClassPaths(new[] { new DirectoryPath("/foo"), new DirectoryPath("/bar") }); + yield return s => s.WithBaseDir(new DirectoryPath("/foo")); + yield return s => s.WithBuiltinBackend(BuiltinBackend.Html); + yield return s => s.WithBackend("pdf"); + yield return s => s.WithAttribute("foo", "bar"); + yield return s => s.WithAttributes(new Dictionary { { "foo", "bar" }, { "bim", "bam" } }); + yield return s => s.WithInputFile(new FilePath("/foo.adoc")); + yield return s => s.WithInputFiles(new[] { new FilePath("/foo.adoc"), new FilePath("/bar.adoc") }); + } + + public IEnumerator GetEnumerator() + { + return GetTestData().Select(x => new[] { (object)x }).GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } } } diff --git a/src/Cake.AsciiDoctorJ.Tests/SettingsTests.cs b/src/Cake.AsciiDoctorJ.Tests/SettingsTests.cs index 50afb9ad..93bbf212 100644 --- a/src/Cake.AsciiDoctorJ.Tests/SettingsTests.cs +++ b/src/Cake.AsciiDoctorJ.Tests/SettingsTests.cs @@ -1,94 +1,77 @@ +using FluentAssertions; +using Xunit; +using System.Collections; +using System.Collections.Generic; +using System; +using Cake.AsciiDoctorJ.Tests.Fixtures; +using System.Linq; +using Cake.Core.IO; + namespace Cake.AsciiDoctorJ.Tests { - using Cake.Core; - using Cake.Core.IO; - using NUnit.Framework; - using FluentAssertions; - using Cake.Testing; - - [TestFixture] - [TestOf(typeof(AsciiDoctorJRunnerSettings))] public class SettingsTests { - private ICakeEnvironment environment; - - [SetUp] - public void Setup() + [Theory] + [ClassData(typeof(TestData))] + public void Should_convert_all_setters_to_arguments(Action setFlag, string expectedParam) { - environment = FakeEnvironment.CreateWindowsEnvironment(); - } - - [TestCase("Version", "--version")] - [TestCase("Verbose", "--verbose")] - [TestCase("TimingsMode", "--timings")] - [TestCase("SectionNumbers", "--section-numbers")] - [TestCase("Require", "--require")] - [TestCase("Quiet", "--quiet")] - [TestCase("SuppressHeaderAndFooter", "--no-header-footer")] - [TestCase("Compact", "--compact")] - public void Should_Convert_All_Flags_To_Arguments(string propertyName, string expectedParam) - { - var args = new ProcessArgumentBuilder(); + var fixture = new AsciiDoctorJRunnerSettingsExtensionsFixture(); var sut = new AsciiDoctorJRunnerSettings(); - var prop = typeof(AsciiDoctorJRunnerSettings).GetProperty(propertyName); - prop.SetValue(sut, true); - - sut.Evaluate(args, environment); + setFlag(sut); - var actual = args.Render(); + var actual = fixture.EvaluateArgs(sut); actual.Should().Contain(expectedParam); } - [TestCase(SafeMode.Safe, "--safe-mode safe")] - [TestCase(SafeMode.Unsafe, "--safe-mode unsafe")] - [TestCase(SafeMode.Secure, "--safe-mode secure")] - [TestCase(SafeMode.Server, "--safe-mode server")] - public void Should_Convert_SafeMode_Settings_To_Arguments(SafeMode mode, string expected) + private class TestData : IEnumerable { - var args = new ProcessArgumentBuilder(); - var sut = new AsciiDoctorJRunnerSettings + private IEnumerable<(Action, string)> GetTestData() { - SafeMode = mode - }; + // flags + yield return (s => s.Version = true, "--version"); + yield return (s => s.Verbose = true, "--verbose"); + yield return (s => s.TimingsMode = true, "--timings"); + yield return (s => s.SectionNumbers = true, "--section-numbers"); + yield return (s => s.Require = true, "--require"); + yield return (s => s.Quiet = true, "--quiet"); + yield return (s => s.SuppressHeaderAndFooter = true, "--no-header-footer"); + yield return (s => s.Compact = true, "--compact"); - sut.Evaluate(args, environment); + // safemode-arg + yield return (s => s.SafeMode = SafeMode.Safe, "--safe-mode safe"); + yield return (s => s.SafeMode = SafeMode.Unsafe, "--safe-mode unsafe"); + yield return (s => s.SafeMode = SafeMode.Secure, "--safe-mode secure"); + yield return (s => s.SafeMode = SafeMode.Server, "--safe-mode server"); - var actual = args.Render(); - actual.Should().Contain(expected); - } + // eruby-arg + yield return (s => s.ERuby = ERuby.Erb, "--eruby erb"); + yield return (s => s.ERuby = ERuby.Erubis, "--eruby erubis"); - [TestCase(ERuby.Erb, "--eruby erb")] - [TestCase(ERuby.Erubis, "--eruby erubis")] - public void Should_Convert_Eruby_Settings_To_Arguments(ERuby eruby, string expected) - { - var args = new ProcessArgumentBuilder(); - var sut = new AsciiDoctorJRunnerSettings - { - ERuby = eruby - }; + // doctype-arg + yield return (s => s.DocType = DocType.Article, "--doctype article"); + yield return (s => s.DocType = DocType.Book, "--doctype book"); + yield return (s => s.DocType = DocType.Inline, "--doctype inline"); - sut.Evaluate(args, environment); + // misc args + yield return (s => s.TemplateEngine = "some-engine", "--template-engine some-engine"); + yield return (s => s.TemplateDir = new DirectoryPath("/foo"), "--template-dir \"/foo\""); + yield return (s => s.Output = new FilePath("/foo.pdf"), "--out-file \"/foo.pdf\""); + yield return (s => s.LoadPath.Add(new DirectoryPath("/foo")), "--load-path \"/foo\""); + yield return (s => s.DestinationDir = new DirectoryPath("/foo"), "--destination-dir \"/foo\""); + yield return (s => s.ClassPath.Add(new DirectoryPath("/foo")), "--classpath \"/foo\""); + yield return (s => s.BaseDir = new DirectoryPath("/foo"), "--base-dir \"/foo\""); + yield return (s => s.Backend = "pdf", "--backend pdf"); + yield return (s => s.Attributes.Add("foo", "bar"), "--attribute foo=bar"); + yield return (s => s.InputFiles.Add(new FilePath("/foo.adoc")), "\"/foo.adoc\""); + } - var actual = args.Render(); - actual.Should().Contain(expected); - } - - [TestCase(DocType.Article, "--doctype article")] - [TestCase(DocType.Book, "--doctype book")] - [TestCase(DocType.Inline, "--doctype inline")] - public void Should_Convert_DocType_Settings_To_Arguments(DocType type, string expected) - { - var args = new ProcessArgumentBuilder(); - var sut = new AsciiDoctorJRunnerSettings + public IEnumerator GetEnumerator() { - DocType = type - }; - - sut.Evaluate(args, environment); + return GetTestData().Select(x => new[] { (object)x.Item1, x.Item2 }).GetEnumerator(); + } - var actual = args.Render(); - actual.Should().Contain(expected); + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } } } diff --git a/src/Cake.AsciiDoctorJ.ruleset b/src/Cake.AsciiDoctorJ.ruleset new file mode 100644 index 00000000..48e4826c --- /dev/null +++ b/src/Cake.AsciiDoctorJ.ruleset @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Cake.AsciiDoctorJ.sln b/src/Cake.AsciiDoctorJ.sln index 1391ee91..0b619f70 100644 --- a/src/Cake.AsciiDoctorJ.sln +++ b/src/Cake.AsciiDoctorJ.sln @@ -1,15 +1,19 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30204.135 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.AsciiDoctorJ", "Cake.AsciiDoctorJ\Cake.AsciiDoctorJ.csproj", "{9C63DC31-720C-4593-A5B7-142B117A88A0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cake.AsciiDoctorJ", "Cake.AsciiDoctorJ\Cake.AsciiDoctorJ.csproj", "{9C63DC31-720C-4593-A5B7-142B117A88A0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.AsciiDoctorJ.Tests", "Cake.AsciiDoctorJ.Tests\Cake.AsciiDoctorJ.Tests.csproj", "{21300EC0-81FE-4956-A067-5A085F1535B1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cake.AsciiDoctorJ.Tests", "Cake.AsciiDoctorJ.Tests\Cake.AsciiDoctorJ.Tests.csproj", "{21300EC0-81FE-4956-A067-5A085F1535B1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{923BD407-CE67-4226-8AE7-8A4910190545}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + Cake.AsciiDoctorJ.ruleset = Cake.AsciiDoctorJ.ruleset + Cake.AsciiDoctorJ.sln.vsspell = Cake.AsciiDoctorJ.sln.vsspell + EndProjectSection EndProject Global - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU @@ -24,4 +28,10 @@ Global {21300EC0-81FE-4956-A067-5A085F1535B1}.Release|Any CPU.ActiveCfg = Release|Any CPU {21300EC0-81FE-4956-A067-5A085F1535B1}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F178A886-E28A-400D-9A63-011B6C9CE2A8} + EndGlobalSection EndGlobal diff --git a/src/Cake.AsciiDoctorJ.sln.DotSettings b/src/Cake.AsciiDoctorJ.sln.DotSettings new file mode 100644 index 00000000..ed3964a6 --- /dev/null +++ b/src/Cake.AsciiDoctorJ.sln.DotSettings @@ -0,0 +1,3 @@ + + DO_NOT_SHOW + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> \ No newline at end of file diff --git a/src/Cake.AsciiDoctorJ.sln.vsspell b/src/Cake.AsciiDoctorJ.sln.vsspell new file mode 100644 index 00000000..158b2c3f --- /dev/null +++ b/src/Cake.AsciiDoctorJ.sln.vsspell @@ -0,0 +1,33 @@ + + + + True + True + + en-US + + + False + False + False + False + False + False + False + + True + + False + + vsspell.ignoredWords.txt + True + False + + *Tests.cs + Outputs.cs + + False + + + \ No newline at end of file diff --git a/src/Cake.AsciiDoctorJ/AsciiDoctorJAliases.cs b/src/Cake.AsciiDoctorJ/AsciiDoctorJAliases.cs index e98e686e..2531e011 100644 --- a/src/Cake.AsciiDoctorJ/AsciiDoctorJAliases.cs +++ b/src/Cake.AsciiDoctorJ/AsciiDoctorJAliases.cs @@ -1,13 +1,14 @@ +using System; + +using Cake.Core; +using Cake.Core.Annotations; + namespace Cake.AsciiDoctorJ { - using System; - using Cake.Core; - using Cake.Core.Annotations; - /// /// Functions to call AsciiDoctorJ. /// - /// In order to use this addin add the following to your build.cake. + /// In order to use this add-in, add the following to your build.cake. /// @@ -16,7 +17,7 @@ namespace Cake.AsciiDoctorJ public static class AsciiDoctorJAliases { /// - /// Runs the tool using an action to configure seetings. + /// Runs the tool using an action to configure settings. /// /// The . /// An action to configure the . diff --git a/src/Cake.AsciiDoctorJ/AsciiDoctorJRunner.cs b/src/Cake.AsciiDoctorJ/AsciiDoctorJRunner.cs index 9738c4c0..267ee115 100644 --- a/src/Cake.AsciiDoctorJ/AsciiDoctorJRunner.cs +++ b/src/Cake.AsciiDoctorJ/AsciiDoctorJRunner.cs @@ -1,13 +1,14 @@ +using System; +using System.Collections.Generic; + +using Cake.Core; +using Cake.Core.IO; +using Cake.Core.Tooling; + [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Cake.AsciiDoctorJ.Tests")] namespace Cake.AsciiDoctorJ { - using System; - using System.Collections.Generic; - using Cake.Core; - using Cake.Core.IO; - using Cake.Core.Tooling; - /// /// This is the runner. . /// @@ -30,12 +31,17 @@ internal AsciiDoctorJRunner(IFileSystem fileSystem, ICakeEnvironment environment } /// - /// Runs the tool using an action to configure seetings. + /// Runs the tool using an action to configure settings. /// /// The configuration action. - internal void Run(Action configure = null) + /// The settings. + internal void Run(Action configure = null, AsciiDoctorJRunnerSettings settings = null) { - var settings = new AsciiDoctorJRunnerSettings(); + if (settings == null) + { + settings = new AsciiDoctorJRunnerSettings(); + } + configure?.Invoke(settings); Run(settings); } @@ -46,8 +52,13 @@ internal void Run(Action configure = null) /// The settings. internal void Run(AsciiDoctorJRunnerSettings settings) { + if (settings == null) + { + throw new ArgumentNullException(nameof(settings)); + } + var args = new ProcessArgumentBuilder(); - settings?.Evaluate(args, environment); + settings.Evaluate(args, environment); Run(settings, args); } diff --git a/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettings.cs b/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettings.cs index a3dc468d..2c7ccbba 100644 --- a/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettings.cs +++ b/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettings.cs @@ -1,12 +1,12 @@ +using System; +using System.Collections.Generic; + +using Cake.Core; +using Cake.Core.IO; +using Cake.Core.Tooling; + namespace Cake.AsciiDoctorJ { - using System; - using System.Collections.Generic; - using System.Globalization; - using Cake.Core; - using Cake.Core.IO; - using Cake.Core.Tooling; - /// /// The settings to configure the run of AsciiDoctorJ. /// @@ -110,13 +110,13 @@ public AsciiDoctorJRunnerSettings() /// /// Gets the list of input files to be processed. /// - public IList InputFiles { get; private set; } + public IList InputFiles { get; } /// /// Gets the list of directories to add to the $LOAD_PATH. /// corresponds to: -I, --load-path. /// - public IList LoadPath { get; private set; } + public IList LoadPath { get; } /// /// Gets or sets a value to @@ -154,7 +154,7 @@ public AsciiDoctorJRunnerSettings() /// Gets the list of directories to add to the classpath. /// corresponds to: -cp, -classpath, --classpath. /// - public IList ClassPath { get; private set; } + public IList ClassPath { get; } /// /// Gets or sets a value indicating the @@ -177,7 +177,7 @@ public AsciiDoctorJRunnerSettings() /// Default: []. /// corresponds to: -a, --attribute. /// - public IDictionary Attributes { get; private set; } + public IDictionary Attributes { get; } /// /// Processes the given settings and modifies the . @@ -218,7 +218,10 @@ internal void Evaluate(ProcessArgumentBuilder args, ICakeEnvironment environment if (SafeMode.HasValue) { - args.Append("--safe-mode " + Enum.GetName(typeof(SafeMode), SafeMode.Value).ToLower(CultureInfo.InvariantCulture)); + // ReSharper disable PossibleNullReferenceException + args.Append("--safe-mode " + Enum.GetName(typeof(SafeMode), SafeMode.Value).ToLowerInvariant()); + + // ReSharper enable PossibleNullReferenceException } if (Require) @@ -248,17 +251,23 @@ internal void Evaluate(ProcessArgumentBuilder args, ICakeEnvironment environment if (ERuby.HasValue) { - args.Append("--eruby " + Enum.GetName(typeof(ERuby), ERuby.Value).ToLower(CultureInfo.InvariantCulture)); + // ReSharper disable PossibleNullReferenceException + args.Append("--eruby " + Enum.GetName(typeof(ERuby), ERuby.Value).ToLowerInvariant()); + + // ReSharper enable PossibleNullReferenceException } if (DocType.HasValue) { - args.Append("--doctype " + Enum.GetName(typeof(DocType), DocType.Value).ToLower(CultureInfo.InvariantCulture)); + args.Append("--doctype " + Enum.GetName(typeof(DocType), DocType.Value).ToLowerInvariant()); } if (DestinationDir != null) { + // ReSharper disable PossibleNullReferenceException args.Append("--destination-dir " + DestinationDir.MakeAbsolute(environment).FullPath.Quote()); + + // ReSharper enable PossibleNullReferenceException } if (Compact) diff --git a/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettingsExtensions.cs b/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettingsExtensions.cs index 2b464a40..3e46623d 100644 --- a/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettingsExtensions.cs +++ b/src/Cake.AsciiDoctorJ/AsciiDoctorJRunnerSettingsExtensions.cs @@ -1,10 +1,10 @@ +using System; +using System.Collections.Generic; + +using Cake.Core.IO; + namespace Cake.AsciiDoctorJ { - using System; - using System.Collections.Generic; - using System.Globalization; - using Cake.Core.IO; - /// /// Extensions for fluent writing of . /// @@ -305,7 +305,10 @@ public static AsciiDoctorJRunnerSettings WithBackend(this AsciiDoctorJRunnerSett /// The reference to the . public static AsciiDoctorJRunnerSettings WithBuiltinBackend(this AsciiDoctorJRunnerSettings @this, BuiltinBackend backend) { - @this.Backend = Enum.GetName(typeof(BuiltinBackend), backend).ToLower(CultureInfo.InvariantCulture); + // ReSharper disable PossibleNullReferenceException + @this.Backend = Enum.GetName(typeof(BuiltinBackend), backend).ToLowerInvariant(); + + // ReSharper enable PossibleNullReferenceException return @this; } diff --git a/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj b/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj index c26d0e13..7d9b16cf 100644 --- a/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj +++ b/src/Cake.AsciiDoctorJ/Cake.AsciiDoctorJ.csproj @@ -2,9 +2,10 @@ netstandard2.0;net461 true - true - snupkg - + true + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + true + ..\Cake.AsciiDoctorJ.ruleset @@ -17,7 +18,6 @@ Nils Andresen Copyright © $(FullYear) — Nils Andresen makes [asciidoctorj](https://github.com/asciidoctor/asciidoctorj) available as a tool in [cake](https://cakebuild.net/) - MIT https://cake-contrib.github.io/Cake.AsciiDoctorJ cake;addin;asciidoctorj @@ -28,10 +28,27 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + runtime; build; native; contentfiles; analyzers all + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/Cake.AsciiDoctorJ/GlobalSuppressions.cs b/src/Cake.AsciiDoctorJ/GlobalSuppressions.cs deleted file mode 100644 index cdce3b1b..00000000 --- a/src/Cake.AsciiDoctorJ/GlobalSuppressions.cs +++ /dev/null @@ -1,2 +0,0 @@ -[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1633:File should have header", Justification = "Not needed here.")] -[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:Prefix local calls with this", Justification = "I don't like that...")] diff --git a/src/Directory.Build.props b/src/Directory.Build.props new file mode 100644 index 00000000..96fe0f51 --- /dev/null +++ b/src/Directory.Build.props @@ -0,0 +1,6 @@ + + + + 7.3 + + \ No newline at end of file diff --git a/src/vsspell.ignoredWords.txt b/src/vsspell.ignoredWords.txt new file mode 100644 index 00000000..c189f794 --- /dev/null +++ b/src/vsspell.ignoredWords.txt @@ -0,0 +1,10 @@ +backend +dir +classpath +doctype +inline +eruby +pdf +builtin +backends +asciidoctorj