diff --git a/GitHubIssueFormsParser/.editorconfig b/GitHubIssueFormsParser/.editorconfig index 3449d9d..9f301dc 100644 --- a/GitHubIssueFormsParser/.editorconfig +++ b/GitHubIssueFormsParser/.editorconfig @@ -89,6 +89,8 @@ dotnet_analyzer_diagnostic.severity = warning dotnet_diagnostic.CA1014.severity = none # CA1014: Mark assemblies with CLSCompliantAttribute dotnet_diagnostic.CA1030.severity = silent # CA1030: Use events where appropriate dotnet_diagnostic.CA1032.severity = none # CA1032: Implement standard exception constructors +dotnet_diagnostic.CA1054.severity = none # CA1054: URI parameters should not be strings +dotnet_diagnostic.CA1056.severity = none # CA1056: URI properties should not be strings # Globalization rules https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/globalization-warnings dotnet_diagnostic.CA1303.severity = none # CA1303: Do not pass literals as localized parameters dotnet_diagnostic.CA1308.severity = none # CA1308: Normalize strings to uppercase @@ -115,7 +117,7 @@ dotnet_diagnostic.IDE0010.severity = silent # Add missing cases to switch st dotnet_style_prefer_conditional_expression_over_assignment = true:silent dotnet_diagnostic.IDE0045.severity = suggestion # Use conditional expression for assignment (IDE0045) dotnet_style_prefer_conditional_expression_over_return = true:silent -dotnet_diagnostic.IDE0046.severity = none # Use conditional expression for return (IDE0046) +dotnet_diagnostic.IDE0046.severity = none # Use conditional expression for return (IDE0046) # Undocumented dotnet_style_operator_placement_when_wrapping = beginning_of_line @@ -387,6 +389,14 @@ dotnet_naming_rule.parameters_rule.severity = warning # Third party analyzers ########################################## +########################################## +# Rules for Meziantou.Analyzer +# See https://github.com/meziantou/Meziantou.Analyzer/tree/main/docs +########################################## +[*.cs] +dotnet_diagnostic.MA0004.severity = none # MA0004 Use Task.ConfigureAwait(false) +dotnet_diagnostic.MA0048.severity = none # MA0048 File name must match type name + ########################################## # Rules for Microsoft.VisualStudio.Threading.Analyzers # See https://github.com/microsoft/vs-threading/blob/main/doc/analyzers/index.md @@ -461,7 +471,7 @@ dotnet_diagnostic.RCS0034.severity = suggestion # RCS0034: Add newline befo dotnet_diagnostic.RCS0039.severity = suggestion # RCS0039: Remove newline before base list dotnet_diagnostic.RCS0041.severity = suggestion # RCS0041: Remove newline between 'if' keyword and 'else' keyword dotnet_diagnostic.RCS0042.severity = suggestion # RCS0042: Remove newlines from accessor list of auto-property -dotnet_diagnostic.RCS0043.severity = none # RCS0043: Remove newlines from accessor with single-line expression +dotnet_diagnostic.RCS0043.severity = none # RCS0043: Format accessor's braces on a single line when expression is on single line dotnet_diagnostic.RCS0050.severity = suggestion # RCS0050: Add empty line before top declaration dotnet_diagnostic.RCS0051.severity = suggestion # RCS0051: Add newline between closing brace and 'while' keyword (or vice versa) dotnet_diagnostic.RCS0054.severity = suggestion # RCS0054: Fix formatting of a call chain @@ -516,7 +526,8 @@ dotnet_diagnostic.SA1204.severity = none # SA1204: Static members should dotnet_diagnostic.SA1214.severity = none # SA1214: Readonly fields should appear before non-readonly fields # Naming Rules (SA1300-) dotnet_diagnostic.SA1309.severity = none # SA1309: Field should not begin with an underscore -dotnet_diagnostic.SA1313.severity = none # SA1313: Parameter '_' should begin with lower-case letter. Covered by IDE1006 and this one triggers false warnings when using discard symbol. +dotnet_diagnostic.SA1312.severity = none # SA1309: The name of a variable in C# does not begin with a lower-case letter. Covered by IDE1006 and this one triggers false warnings when using discard symbol for variables. +dotnet_diagnostic.SA1313.severity = none # SA1313: Parameter '_' should begin with lower-case letter. Covered by IDE1006 and this one triggers false warnings when using discard symbol for parameters. # Maintainability Rules (SA1400-) dotnet_diagnostic.SA1402.severity = none # SA1402: File may only contain a single type # Layout Rules (SA1500-) @@ -595,6 +606,15 @@ dotnet_diagnostic.SA1651.severity = suggestion # SA1651: Do not use placeho ########################################## [tests/**/*.cs] +########################################## +# Rules for Meziantou.Analyzer +# See https://github.com/meziantou/Meziantou.Analyzer/tree/main/docs +########################################## +[*.cs] +dotnet_diagnostic.MA0051.severity = none # MA0051 Method is too long +dotnet_diagnostic.MA0076.severity = none # MA0076 Do not use implicit culture-sensitive ToString in interpolated strings +dotnet_diagnostic.MA0101.severity = none # MA0101 String contains an implicit end of line character + ########################################## # Rules for Microsoft.VisualStudio.Threading.Analyzers # See https://github.com/microsoft/vs-threading/blob/main/doc/analyzers/index.md diff --git a/GitHubIssueFormsParser/Directory.Build.props b/GitHubIssueFormsParser/Directory.Build.props index 7752c75..4e751be 100644 --- a/GitHubIssueFormsParser/Directory.Build.props +++ b/GitHubIssueFormsParser/Directory.Build.props @@ -41,6 +41,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/ArgumentValidations/Argument.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/ArgumentValidations/Argument.cs index 2a50c78..e0868c9 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/ArgumentValidations/Argument.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/ArgumentValidations/Argument.cs @@ -12,7 +12,7 @@ internal static string NotNullOrWhiteSpace([NotNull] this string? value, [Caller { var message = $"{name} cannot be null or whitespace."; return string.IsNullOrWhiteSpace(value) - ? throw new ArgumentException(message) + ? throw new ArgumentException(message, name) : value; } } diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormBody.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormBody.cs similarity index 93% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormBody.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormBody.cs index bfae382..3c886a6 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormBody.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormBody.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody; +namespace GitHubIssuesParserCli.IssueFormBodies; internal sealed class IssueFormBody { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormBodyText.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormBodyText.cs similarity index 88% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormBodyText.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormBodyText.cs index 0745ab3..fd5a265 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormBodyText.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormBodyText.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody; +namespace GitHubIssuesParserCli.IssueFormBodies; internal sealed class IssueFormBodyText { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckBoxesText.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckBoxesText.cs similarity index 94% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckBoxesText.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckBoxesText.cs index 4ffd4b6..45d93f6 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckBoxesText.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckBoxesText.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Checkboxes; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Checkboxes; internal sealed class IssueFormCheckBoxesText { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckboxOption.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckboxOption.cs similarity index 78% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckboxOption.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckboxOption.cs index a971cec..37158dd 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckboxOption.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckboxOption.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Checkboxes; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Checkboxes; internal sealed class IssueFormCheckboxOption { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckboxesItem.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckboxesItem.cs similarity index 90% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckboxesItem.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckboxesItem.cs index b7e991f..e337432 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Checkboxes/IssueFormCheckboxesItem.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Checkboxes/IssueFormCheckboxesItem.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Checkboxes; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Checkboxes; internal sealed class IssueFormCheckboxesItem : IssueFormItem { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/CreateIssueFormItemException.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/CreateIssueFormItemException.cs similarity index 87% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/CreateIssueFormItemException.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/CreateIssueFormItemException.cs index 0daed02..25c3e4f 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/CreateIssueFormItemException.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/CreateIssueFormItemException.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; public sealed class CreateIssueFormItemException : Exception { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItem.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItem.cs similarity index 83% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItem.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItem.cs index b24dd31..6dcdee6 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItem.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItem.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; internal abstract class IssueFormItem { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemFactory.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemFactory.cs similarity index 94% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemFactory.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemFactory.cs index 66633ac..886a8ea 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemFactory.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemFactory.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; internal static class IssueFormItemFactory { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemTypes.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemTypes.cs similarity index 50% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemTypes.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemTypes.cs index 8b17451..5491527 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemTypes.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemTypes.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; internal enum IssueFormItemTypes { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemsExtensions.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemsExtensions.cs similarity index 75% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemsExtensions.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemsExtensions.cs index 6fabbf6..0b30d04 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/IssueFormItemsExtensions.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/IssueFormItemsExtensions.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; internal static class IssueFormItemsExtensions { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/NewLines.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/NewLines.cs similarity index 79% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/NewLines.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/NewLines.cs index d63e246..7e39b60 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/NewLines.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/NewLines.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; internal static class NewLines { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Text/IssueFormText.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Text/IssueFormText.cs similarity index 88% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Text/IssueFormText.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Text/IssueFormText.cs index e60d0c2..e8d9e47 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Text/IssueFormText.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Text/IssueFormText.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Text; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Text; internal sealed class IssueFormText { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Text/IssueFormTextItem.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Text/IssueFormTextItem.cs similarity index 83% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Text/IssueFormTextItem.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Text/IssueFormTextItem.cs index ae2b310..f423356 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/Text/IssueFormTextItem.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/Text/IssueFormTextItem.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Text; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Text; internal sealed class IssueFormTextItem : IssueFormItem { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/TrimExtensions.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/TrimExtensions.cs similarity index 78% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/TrimExtensions.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/TrimExtensions.cs index 8d4443a..eeda25b 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/IssueFormItems/TrimExtensions.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/IssueFormItems/TrimExtensions.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.IssueFormItems; +namespace GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; internal static class TrimExtensions { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/JsonSerialization/IssueFormBodyJsonConverter.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/JsonSerialization/IssueFormBodyJsonConverter.cs similarity index 89% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/JsonSerialization/IssueFormBodyJsonConverter.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/JsonSerialization/IssueFormBodyJsonConverter.cs index ea42387..a3fa897 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/JsonSerialization/IssueFormBodyJsonConverter.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/JsonSerialization/IssueFormBodyJsonConverter.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.JsonSerialization; +namespace GitHubIssuesParserCli.IssueFormBodies.JsonSerialization; internal sealed class IssueFormBodyJsonConverter : JsonConverter { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/Parsing/IssueFormBodyParser.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/Parsing/IssueFormBodyParser.cs similarity index 98% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/Parsing/IssueFormBodyParser.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/Parsing/IssueFormBodyParser.cs index 2ef7adf..39a2028 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/Parsing/IssueFormBodyParser.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/Parsing/IssueFormBodyParser.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.Parsing; +namespace GitHubIssuesParserCli.IssueFormBodies.Parsing; internal static class IssueFormBodyParser { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/Parsing/IssueFormBodyParserException.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/Parsing/IssueFormBodyParserException.cs similarity index 95% rename from GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/Parsing/IssueFormBodyParserException.cs rename to GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/Parsing/IssueFormBodyParserException.cs index f3ca3b6..fabf44d 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBody/Parsing/IssueFormBodyParserException.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/IssueFormBodies/Parsing/IssueFormBodyParserException.cs @@ -1,4 +1,4 @@ -namespace GitHubIssuesParserCli.IssueFormBody.Parsing; +namespace GitHubIssuesParserCli.IssueFormBodies.Parsing; public sealed class IssueFormBodyParserException : Exception { diff --git a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/Usings.cs b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/Usings.cs index 4f8d4e6..9886fdd 100644 --- a/GitHubIssueFormsParser/src/GitHubIssuesParserCli/Usings.cs +++ b/GitHubIssueFormsParser/src/GitHubIssuesParserCli/Usings.cs @@ -8,12 +8,12 @@ global using CliFx.Extensibility; global using CliFx.Infrastructure; global using GitHubIssuesParserCli.ArgumentValidations; -global using GitHubIssuesParserCli.IssueFormBody; -global using GitHubIssuesParserCli.IssueFormBody.IssueFormItems; -global using GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Checkboxes; -global using GitHubIssuesParserCli.IssueFormBody.IssueFormItems.Text; -global using GitHubIssuesParserCli.IssueFormBody.JsonSerialization; -global using GitHubIssuesParserCli.IssueFormBody.Parsing; +global using GitHubIssuesParserCli.IssueFormBodies; +global using GitHubIssuesParserCli.IssueFormBodies.IssueFormItems; +global using GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Checkboxes; +global using GitHubIssuesParserCli.IssueFormBodies.IssueFormItems.Text; +global using GitHubIssuesParserCli.IssueFormBodies.JsonSerialization; +global using GitHubIssuesParserCli.IssueFormBodies.Parsing; global using GitHubIssuesParserCli.IssueFormTemplates; global using GitHubIssuesParserCli.IssueFormTemplates.Parsing; global using SlugGenerator; diff --git a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Auxiliary/LineEndings.cs b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Auxiliary/LineEndings.cs index 1c005e1..37b5fce 100644 --- a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Auxiliary/LineEndings.cs +++ b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Auxiliary/LineEndings.cs @@ -21,7 +21,8 @@ public static string NormalizeLineEndings(this string original) // new lines with Windows line endings return original.Replace(LF, Environment.NewLine, StringComparison.Ordinal); } - else if (Environment.OSVersion.Platform == PlatformID.Unix && original.Contains(CR + LF, StringComparison.Ordinal)) + + if (Environment.OSVersion.Platform == PlatformID.Unix && original.Contains(CR + LF, StringComparison.Ordinal)) { // if it's a Linux OS and contains Windows line endings then replace // new lines with Linux line endings diff --git a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandTests.cs b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandTests.cs index 5d310dd..8235b12 100644 --- a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandTests.cs +++ b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandTests.cs @@ -13,9 +13,10 @@ public class ParseIssueFormCommandTests public async Task ParseIssueFormCommandTest1() { using var console = new FakeInMemoryConsole(); + var issueFormBody = await File.ReadAllTextAsync("./TestFiles/IssueBody.md"); var command = new ParseIssueFormCommand { - IssueFormBody = File.ReadAllText("./TestFiles/IssueBody.md").NormalizeLineEndings(), + IssueFormBody = issueFormBody.NormalizeLineEndings(), TemplateFilepath = "./TestFiles/Template.yml", }; await command.ExecuteAsync(console); @@ -30,13 +31,13 @@ public async Task ParseIssueFormCommandTest1() issueFormJson.CustomReleaseNotes.ShouldBe($"## Custom release notes{Environment.NewLine}{Environment.NewLine}Test 123{Environment.NewLine}\"line with double quotes\"{Environment.NewLine}{Environment.NewLine}Another line:{Environment.NewLine}- point 1{Environment.NewLine}- point 2{Environment.NewLine}- point 3"); issueFormJson.OperatingSystems.ShouldNotBeNull(); issueFormJson.OperatingSystems.MacOS.ShouldNotBeNull(); - issueFormJson.OperatingSystems.MacOS.ShouldBe(true); + issueFormJson.OperatingSystems.MacOS.ShouldBe(expected: true); issueFormJson.OperatingSystems.Windows.ShouldNotBeNull(); - issueFormJson.OperatingSystems.Windows.ShouldBe(true); + issueFormJson.OperatingSystems.Windows.ShouldBe(expected: true); issueFormJson.OperatingSystems.Linux.ShouldNotBeNull(); - issueFormJson.OperatingSystems.Linux.ShouldBe(false); + issueFormJson.OperatingSystems.Linux.ShouldBe(expected: false); issueFormJson.OperatingSystems.Unknown.ShouldNotBeNull(); - issueFormJson.OperatingSystems.Unknown.ShouldBe(false); + issueFormJson.OperatingSystems.Unknown.ShouldBe(expected: false); } /// @@ -67,13 +68,13 @@ public async Task ParseIssueFormCommandTest2(string newLine) issueFormJson.CustomReleaseNotes.ShouldBe($"## Custom release notes {newLine}{newLine}Test 123{newLine}{newLine}Another line:{newLine}- point 1{newLine}- point 2{newLine}- point 3"); issueFormJson.OperatingSystems.ShouldNotBeNull(); issueFormJson.OperatingSystems.MacOS.ShouldNotBeNull(); - issueFormJson.OperatingSystems.MacOS.ShouldBe(true); + issueFormJson.OperatingSystems.MacOS.ShouldBe(expected: true); issueFormJson.OperatingSystems.Windows.ShouldNotBeNull(); - issueFormJson.OperatingSystems.Windows.ShouldBe(true); + issueFormJson.OperatingSystems.Windows.ShouldBe(expected: true); issueFormJson.OperatingSystems.Linux.ShouldNotBeNull(); - issueFormJson.OperatingSystems.Linux.ShouldBe(false); + issueFormJson.OperatingSystems.Linux.ShouldBe(expected: false); issueFormJson.OperatingSystems.Unknown.ShouldNotBeNull(); - issueFormJson.OperatingSystems.Unknown.ShouldBe(false); + issueFormJson.OperatingSystems.Unknown.ShouldBe(expected: false); } /// @@ -89,9 +90,10 @@ public async Task ParseIssueFormCommandTest2(string newLine) public async Task ParseIssueFormCommandTest3() { using var console = new FakeInMemoryConsole(); + var issueFormBody = await File.ReadAllTextAsync("./TestFiles/IssueBody2.md"); var command = new ParseIssueFormCommand { - IssueFormBody = File.ReadAllText("./TestFiles/IssueBody2.md").NormalizeLineEndings(), + IssueFormBody = issueFormBody.NormalizeLineEndings(), TemplateFilepath = "./TestFiles/Template2.yml", }; await command.ExecuteAsync(console); diff --git a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandValidationTests.cs b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandValidationTests.cs index 31087d0..205c5e0 100644 --- a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandValidationTests.cs +++ b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliCommands/ParseIssueFormCommandValidationTests.cs @@ -1,3 +1,5 @@ +using GitHubIssuesParserCli.IssueFormBodies.Parsing; + namespace GitHubIssuesParserCli.Tests.CliCommands; /// @@ -26,12 +28,12 @@ public async Task ValidateIssueFormBodyOption(string issueFormBody) var exception = await Should.ThrowAsync(() => command.ExecuteAsync(console).AsTask()); const string expectedErrorMessage = @"An error occurred trying to execute the command to parse a GitHub issue form. Error: -- IssueFormBody cannot be null or whitespace."; +- IssueFormBody cannot be null or whitespace. (Parameter 'IssueFormBody')"; exception.Message.ShouldBe(expectedErrorMessage); exception.InnerException.ShouldNotBeNull(); exception.InnerException.ShouldBeAssignableTo(); - exception.InnerException.Message.ShouldBe("IssueFormBody cannot be null or whitespace."); + exception.InnerException.Message.ShouldBe("IssueFormBody cannot be null or whitespace. (Parameter 'IssueFormBody')"); } /// @@ -52,11 +54,11 @@ public async Task ValidateTemplateFilepathOption(string templateFilepath) var exception = await Should.ThrowAsync(() => command.ExecuteAsync(console).AsTask()); const string expectedErrorMessage = @"An error occurred trying to execute the command to parse a GitHub issue form. Error: -- TemplateFilepath cannot be null or whitespace."; +- TemplateFilepath cannot be null or whitespace. (Parameter 'TemplateFilepath')"; exception.Message.ShouldBe(expectedErrorMessage); exception.InnerException.ShouldNotBeNull(); exception.InnerException.ShouldBeAssignableTo(); - exception.InnerException.Message.ShouldBe("TemplateFilepath cannot be null or whitespace."); + exception.InnerException.Message.ShouldBe("TemplateFilepath cannot be null or whitespace. (Parameter 'TemplateFilepath')"); } /// @@ -138,9 +140,10 @@ public async Task InvalidIssueFormBody() public async Task InvalidIssueFormBody2() { using var console = new FakeInMemoryConsole(); + var issueFormBody = await File.ReadAllTextAsync("./TestFiles/IssueBodyWithOutOfOrderH3Headers.md"); var command = new ParseIssueFormCommand { - IssueFormBody = File.ReadAllText("./TestFiles/IssueBodyWithOutOfOrderH3Headers.md").NormalizeLineEndings(), + IssueFormBody = issueFormBody.NormalizeLineEndings(), TemplateFilepath = "./TestFiles/Template.yml", }; var exception = await Should.ThrowAsync(() => command.ExecuteAsync(console).AsTask()); @@ -161,9 +164,10 @@ public async Task InvalidIssueFormBody2() public async Task InvalidIssueFormBody3() { using var console = new FakeInMemoryConsole(); + var issueFormBody = await File.ReadAllTextAsync("./TestFiles/IssueBodyWithMangledCheckbox.md"); var command = new ParseIssueFormCommand { - IssueFormBody = File.ReadAllText("./TestFiles/IssueBodyWithMangledCheckbox.md").NormalizeLineEndings(), + IssueFormBody = issueFormBody.NormalizeLineEndings(), TemplateFilepath = "./TestFiles/Template.yml", }; var exception = await Should.ThrowAsync(() => command.ExecuteAsync(console).AsTask()); diff --git a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliIntegration/CliIntegrationTests.cs b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliIntegration/CliIntegrationTests.cs index 1d758de..69786c7 100644 --- a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliIntegration/CliIntegrationTests.cs +++ b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/CliIntegration/CliIntegrationTests.cs @@ -73,7 +73,7 @@ public async Task IssueBodyOptionValidation(string issueBody) await app.RunAsync(args); var error = console.ReadErrorString(); - var expectedError = File.ReadAllText("./TestFiles/CliErrorIssueBodyValidation.txt"); + var expectedError = await File.ReadAllTextAsync("./TestFiles/CliErrorIssueBodyValidation.txt"); error.ShouldBeWithNormalizedNewlines(expectedError); } @@ -93,7 +93,7 @@ public async Task TemplateFilepathOptionValidation(string templateFilepath) var args = new[] { "parse-issue-form", "--issue-body", "some body", "--template-filepath", templateFilepath }; await app.RunAsync(args); var error = console.ReadErrorString(); - var expectedError = File.ReadAllText("./TestFiles/CliErrorTemplateFilepathValidation.txt"); + var expectedError = await File.ReadAllTextAsync("./TestFiles/CliErrorTemplateFilepathValidation.txt"); error.ShouldBeWithNormalizedNewlines(expectedError); } @@ -111,7 +111,7 @@ public async Task TemplateFilepathOptionValidation2() var args = new[] { "parse-issue-form", "--issue-body", "some body", "--template-filepath", "non-existent-file.txt" }; await app.RunAsync(args); var error = console.ReadErrorString(); - var expectedError = File.ReadAllText("./TestFiles/CliErrorTemplateFilepathValidation2.txt"); + var expectedError = await File.ReadAllTextAsync("./TestFiles/CliErrorTemplateFilepathValidation2.txt"); error.ShouldBeWithNormalizedNewlines(expectedError); } @@ -127,9 +127,8 @@ public async Task ExpectedUsage(string issueFormOptionName, string templateFilep var app = new IssuesParserCli(); app.CliApplicationBuilder.UseConsole(console); - var issueFormBody = File - .ReadAllText("./TestFiles/IssueBody.md") - .NormalizeLineEndings(); + var issueFormBody = await File.ReadAllTextAsync("./TestFiles/IssueBody.md"); + issueFormBody = issueFormBody.NormalizeLineEndings(); const string templateFilepath = "./TestFiles/Template.yml"; var args = new[] { "parse-issue-form", issueFormOptionName, issueFormBody, templateFilepathOptionName, templateFilepath }; await app.RunAsync(args); diff --git a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Usings.cs b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Usings.cs index 057311c..7c55555 100644 --- a/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Usings.cs +++ b/GitHubIssueFormsParser/tests/GitHubIssuesParserCli.Tests/Usings.cs @@ -4,7 +4,6 @@ global using CliFx.Extensibility; global using CliFx.Infrastructure; global using GitHubIssuesParserCli.CliCommands; -global using GitHubIssuesParserCli.IssueFormBody.Parsing; global using GitHubIssuesParserCli.IssueFormTemplates.Parsing; global using GitHubIssuesParserCli.Tests.Auxiliary; global using Shouldly;