From 53180abdd00daabf49fb4e575b18259e053e1b7c Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 25 Jul 2021 12:24:05 -0700 Subject: [PATCH 1/4] Remove spurious blank lines from rule output The `github.com/olekukonko/tablewriter` package used for formatting of the rule output does not correctly handle text with explicit (as opposed by ones added during auto-wrapping) line breaks. With reflow enabled, these explicit line breaks are removed and the line wrapped solely based on the column width, just as it would be without the explicit line breaks. For example, given this rule message: ``` .exe file(s) found. Presence of these files blocks addition to the Library Manager index: deleteme-testdata\bar.exe deleteme-testdata\examples\baz.exe deleteme-testdata\examples\qux\asdf.exe (Rule LS007) ``` The output is: ``` ERROR: .exe file(s) found. Presence of these files blocks addition to the Library Manager index: deleteme-testdata/bar.exe deleteme-testdata/examples/baz.exe deleteme-testdata/examples/qux/asdf.exe (Rule LS007) ``` With reflow disabled, each explicit line break becomes a blank line: ``` ERROR: .exe file(s) found. Presence of these files blocks addition to the Library Manager index: deleteme-testdata/bar.exe deleteme-testdata/examples/baz.exe deleteme-testdata/examples/qux/asdf.exe (Rule LS007) ``` I could not find any way to coerce the package to produce the desired output: ``` ERROR: .exe file(s) found. Presence of these files blocks addition to the Library Manager index: deleteme-testdata/bar.exe deleteme-testdata/examples/baz.exe deleteme-testdata/examples/qux/asdf.exe (Rule LS007) ``` so I had to resort to post-processing of the non-reflowed output to remove the spurious blank lines. --- internal/result/result.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/result/result.go b/internal/result/result.go index 65f9c3ab..b3a31bb8 100644 --- a/internal/result/result.go +++ b/internal/result/result.go @@ -21,6 +21,7 @@ import ( "encoding/json" "fmt" "io" + "regexp" "strings" "text/template" @@ -96,6 +97,8 @@ func (results *Type) Initialize() { } } +var blankLineRegexp = regexp.MustCompile("\n[[:space:]]*\n") + // Record records the result of a rule and returns a text summary for it. func (results *Type) Record(lintedProject project.Type, ruleConfiguration ruleconfiguration.Type, ruleResult ruleresult.Type, ruleOutput string) string { ruleLevel, err := rulelevel.RuleLevel(ruleConfiguration, ruleResult, lintedProject) @@ -124,10 +127,13 @@ func (results *Type) Record(lintedProject project.Type, ruleConfiguration ruleco table.SetColumnSeparator("") table.SetNoWhiteSpace(true) table.SetColWidth(width - len(prefix)) + table.SetReflowDuringAutoWrap(false) // Reflow removes explicit line breaks. table.Append([]string{prefix, message}) table.Render() + // Remove blank lines on explicit line breaks caused by tablewriter bug. + cleanedOutput := blankLineRegexp.ReplaceAllLiteralString(formattedOutput.String(), "\n") - return formattedOutput.String() + return cleanedOutput } if configuration.Verbose() { From 8bd17a5e45623c7d463b5ecd2b75ba5428f9f017 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 25 Jul 2021 16:05:11 -0700 Subject: [PATCH 2/4] Put rule ID suffix on new line when rule message is multi-line Readability of rule message output may be improved by inserting strategic line breaks. In this case, the current behavior of appending the rule ID suffix to the non-verbose rule violation output on the same line will not always be appropriate. So when the rule message contains explicit line breaks, the rule ID should be appended on a new line, with the previous behavior preserved in the case of single line rule messages (which will be wrapped according to the column size). --- internal/result/result.go | 6 +++++- internal/result/result_test.go | 12 +++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/internal/result/result.go b/internal/result/result.go index b3a31bb8..8f9f13b0 100644 --- a/internal/result/result.go +++ b/internal/result/result.go @@ -144,7 +144,11 @@ func (results *Type) Record(lintedProject project.Type, ruleConfiguration ruleco } } else { if ruleResult == ruleresult.Fail { - summaryText = formatRuleText(ruleLevel, fmt.Sprintf("%s (Rule %s)", ruleMessage, ruleConfiguration.ID)) + if strings.Contains(ruleMessage, "\n") { + summaryText = formatRuleText(ruleLevel, fmt.Sprintf("%s\n(Rule %s)", ruleMessage, ruleConfiguration.ID)) + } else { + summaryText = formatRuleText(ruleLevel, fmt.Sprintf("%s (Rule %s)", ruleMessage, ruleConfiguration.ID)) + } } } diff --git a/internal/result/result_test.go b/internal/result/result_test.go index 22604a85..aa1f1166 100644 --- a/internal/result/result_test.go +++ b/internal/result/result_test.go @@ -85,9 +85,15 @@ func TestRecord(t *testing.T) { assert.Equal(t, fmt.Sprintf("Rule %s result: %s\n", ruleConfiguration.ID, ruleresult.Pass), summaryText, "Non-failure result with no rule function output should only use preface") flags.Set("verbose", "false") require.Nil(t, configuration.Initialize(flags, projectPaths)) - summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.Fail, ruleOutput) - outputAssertion = "ERROR: Path does not contain a valid Arduino library. See: \n https://arduino.github.io/arduino-cli/latest/library-specification (Rule LS001) \n" - assert.Equal(t, outputAssertion, summaryText) + ruleConfigurationCopy := ruleConfiguration + ruleConfigurationCopy.MessageTemplate = "bar" + summaryText = results.Record(lintedProject, ruleConfigurationCopy, ruleresult.Fail, ruleOutput) + outputAssertion = "ERROR: bar (Rule LS001)\n" + assert.Equal(t, outputAssertion, summaryText, "Rule ID is appended to non-verbose fail message on same line when rule message is single line") + ruleConfigurationCopy.MessageTemplate = "bar\nbaz" + summaryText = results.Record(lintedProject, ruleConfigurationCopy, ruleresult.Fail, ruleOutput) + outputAssertion = "ERROR: bar \n baz \n (Rule LS001)\n" + assert.Equal(t, outputAssertion, summaryText, "Rule ID is appended to non-verbose fail message on same line when rule message is multiple lines") summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.NotRun, ruleOutput) assert.Equal(t, "", summaryText, "Non-fail result should not result in output in non-verbose mode") summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.Pass, "") From 60da69fea4ca951836479e1cea4dae52be21733f Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 25 Jul 2021 17:17:14 -0700 Subject: [PATCH 3/4] Remove superfluous package ID from rule IA007 This rule is for packages[].name value of "arduino". Since the identifier for packages is the name value and the name is already stated in the rule message, identifying the package in violation of the rule by its ID is senseless. --- internal/rule/ruleconfiguration/ruleconfiguration.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rule/ruleconfiguration/ruleconfiguration.go b/internal/rule/ruleconfiguration/ruleconfiguration.go index a512990f..a4ce782e 100644 --- a/internal/rule/ruleconfiguration/ruleconfiguration.go +++ b/internal/rule/ruleconfiguration/ruleconfiguration.go @@ -3041,7 +3041,7 @@ var configurations = []Type{ ID: "IA007", Brief: "packages[].name is arduino", Description: "Case insensitive.", - MessageTemplate: "packages[].name value is \"arduino\" in package {{.}}. This name is reserved for official packages.", + MessageTemplate: "Use of packages[].name value \"arduino\" found. This name is reserved for official packages.", DisableModes: []rulemode.Type{rulemode.Official}, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, From c3064398d389b7703c50a9804b56deed565ea305 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 25 Jul 2021 17:22:25 -0700 Subject: [PATCH 4/4] Use strategic newlines to improve rule output readability In the cases where a project may violate a rule multiple times, the rule message contains a list of identifiers for the violations. Previously, this always took the form of a comma-separated list. These identifiers can sometimes be quite long. When automatic line wrapping occurred in the middle of an identifier, it could make the message difficult to interpret, especially now that Arduino Lint wraps its own output in a tabular form. The solution is to insert line breaks into the rule message where appropriate. This is done for all violation identifier lists that are likely to have long identifiers, as well as additional locations as needed. The rule ID is appended to the rule message and there are also situations where the rule message structure will contain other text after the violation identifier list. For this reason, the list is indented to visually differentiate it from the non-list message text that follows the list. --- .../ruleconfiguration/ruleconfiguration.go | 192 +++++++++--------- internal/rule/rulefunction/library.go | 6 +- internal/rule/rulefunction/packageindex.go | 186 ++++++++--------- .../rule/rulefunction/packageindex_test.go | 186 ++++++++--------- internal/rule/rulefunction/rulefunction.go | 7 + 5 files changed, 292 insertions(+), 285 deletions(-) diff --git a/internal/rule/ruleconfiguration/ruleconfiguration.go b/internal/rule/ruleconfiguration/ruleconfiguration.go index a4ce782e..f0f67f4b 100644 --- a/internal/rule/ruleconfiguration/ruleconfiguration.go +++ b/internal/rule/ruleconfiguration/ruleconfiguration.go @@ -129,7 +129,7 @@ var configurations = []Type{ ID: "LS005", Brief: "symlink", Description: "", - MessageTemplate: "Symlink(s) found at {{.}}. Symlinks cause difficulties for Windows users. These block addition to the Arduino Library Manager index.", + MessageTemplate: "Symlink(s) found. Symlinks cause difficulties for Windows users. These block addition to the Arduino Library Manager index:\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -161,7 +161,7 @@ var configurations = []Type{ ID: "LS007", Brief: ".exe file", Description: "", - MessageTemplate: ".exe file(s) found: {{.}}. Presence of these files blocks addition to the Library Manager index.", + MessageTemplate: ".exe file(s) found. Presence of these files blocks addition to the Library Manager index:\n{{.}}", DisableModes: []rulemode.Type{rulemode.Default}, EnableModes: []rulemode.Type{rulemode.LibraryManagerSubmission, rulemode.LibraryManagerIndexed, rulemode.LibraryManagerIndexing}, InfoModes: nil, @@ -1217,7 +1217,7 @@ var configurations = []Type{ ID: "LD003", Brief: "stray sketch", Description: "", - MessageTemplate: "Sketch(es) found outside examples and extras folders: {{.}}. See: https://arduino.github.io/arduino-cli/latest/library-specification/#library-examples", + MessageTemplate: "Sketch(es) found outside examples and extras folders:\n{{.}}\nSee: https://arduino.github.io/arduino-cli/latest/library-specification/#library-examples", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3345,7 +3345,7 @@ var configurations = []Type{ ID: "IL003", Brief: "additional properties in packages[].platforms[]", Description: "", - MessageTemplate: "Unknown properties under packages[].platforms[] found in platform(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].platforms[] found in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3361,7 +3361,7 @@ var configurations = []Type{ ID: "IL004", Brief: "packages[].platforms[].name missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].name property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].name property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3377,7 +3377,7 @@ var configurations = []Type{ ID: "IL005", Brief: "incorrect packages[].platforms[].name type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].name property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].name property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3393,7 +3393,7 @@ var configurations = []Type{ ID: "IL006", Brief: "packages[].platforms[].name < min length", Description: "", - MessageTemplate: "packages[].platforms[].name value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].name value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3409,7 +3409,7 @@ var configurations = []Type{ ID: "IL007", Brief: "packages[].platforms[].architecture missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].architecture property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].architecture property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3425,7 +3425,7 @@ var configurations = []Type{ ID: "IL008", Brief: "incorrect packages[].platforms[].architecture type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].architecture property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].architecture property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3441,7 +3441,7 @@ var configurations = []Type{ ID: "IL009", Brief: "packages[].platforms[].architecture < min length", Description: "", - MessageTemplate: "packages[].platforms[].architecture value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].architecture value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3457,7 +3457,7 @@ var configurations = []Type{ ID: "IL010", Brief: "packages[].platforms[].version missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].version property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].version property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3473,7 +3473,7 @@ var configurations = []Type{ ID: "IL011", Brief: "incorrect packages[].platforms[].version type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].version property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].version property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3489,7 +3489,7 @@ var configurations = []Type{ ID: "IL012", Brief: "invalid packages[].platforms[].version", Description: "Must be compliant with \"relaxed semver\".", - MessageTemplate: "Invalid packages[].platforms[].version property in platform(s): {{.}}", + MessageTemplate: "Invalid packages[].platforms[].version property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3505,7 +3505,7 @@ var configurations = []Type{ ID: "IL013", Brief: "non-semver packages[].platforms[].version", Description: "", - MessageTemplate: "packages[].platforms[].version property in platform(s): {{.}} is not compliant with the semver specification. See: https://semver.org/", + MessageTemplate: "packages[].platforms[].version property in violation of semver specification found in platform(s):\n{{.}}\nSee: https://semver.org/", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3521,7 +3521,7 @@ var configurations = []Type{ ID: "IL058", Brief: "incorrect packages[].platforms[].deprecated type", Description: "Must be a boolean.", - MessageTemplate: "packages[].platforms[].deprecated property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].deprecated property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3537,7 +3537,7 @@ var configurations = []Type{ ID: "IL014", Brief: "packages[].platforms[].category missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].category property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].category property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3553,7 +3553,7 @@ var configurations = []Type{ ID: "IL015", Brief: "incorrect packages[].platforms[].category type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].category property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].category property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3569,7 +3569,7 @@ var configurations = []Type{ ID: "IL016", Brief: "invalid packages[].platforms[].category", Description: "", - MessageTemplate: "packages[].platforms[].category property invalid in platform(s): {{.}}. See: https://arduino.github.io/arduino-cli/latest/package_index_json-specification/#platforms-definitions", + MessageTemplate: "packages[].platforms[].category property invalid in platform(s):\n{{.}}\nSee: https://arduino.github.io/arduino-cli/latest/package_index_json-specification/#platforms-definitions", DisableModes: []rulemode.Type{rulemode.Official}, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3585,7 +3585,7 @@ var configurations = []Type{ ID: "IL017", Brief: "packages[].platforms[].help missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].help property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].help property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3601,7 +3601,7 @@ var configurations = []Type{ ID: "IL018", Brief: "incorrect packages[].platforms[].help type", Description: "Must be an object.", - MessageTemplate: "packages[].platforms[].help property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].help property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3617,7 +3617,7 @@ var configurations = []Type{ ID: "IL019", Brief: "additional properties in packages[].platforms[].help", Description: "", - MessageTemplate: "Unknown properties under packages[].platforms[].help found in platform(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].platforms[].help found in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3633,7 +3633,7 @@ var configurations = []Type{ ID: "IL020", Brief: "packages[].platforms[].help.online missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].help.online property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].help.online property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3649,7 +3649,7 @@ var configurations = []Type{ ID: "IL021", Brief: "incorrect packages[].platforms[].help.online type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].help.online property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].help.online property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3665,7 +3665,7 @@ var configurations = []Type{ ID: "IL022", Brief: "invalid packages[].platforms[].help.online format", Description: "", - MessageTemplate: "packages[].platforms[].help.online property does not have a valid URL format in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].help.online property does not have a valid URL format in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3681,7 +3681,7 @@ var configurations = []Type{ ID: "IL023", Brief: "dead packages[].platforms[].help.online", Description: "", - MessageTemplate: "Unable to load the packages[].platforms[].help.online URL for platforms(s): {{.}}", + MessageTemplate: "Unable to load the packages[].platforms[].help.online URL for platforms(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3697,7 +3697,7 @@ var configurations = []Type{ ID: "IL024", Brief: "packages[].platforms[].url missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].url property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].url property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3713,7 +3713,7 @@ var configurations = []Type{ ID: "IL025", Brief: "incorrect packages[].platforms[].url type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].url property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].url property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3729,7 +3729,7 @@ var configurations = []Type{ ID: "IL026", Brief: "invalid packages[].platforms[].url format", Description: "", - MessageTemplate: "packages[].platforms[].url property does not have a valid URL format in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].url property does not have a valid URL format in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3745,7 +3745,7 @@ var configurations = []Type{ ID: "IL027", Brief: "dead packages[].platforms[].url", Description: "", - MessageTemplate: "Unable to load the packages[].platforms[].url URL for platforms(s): {{.}}", + MessageTemplate: "Unable to load the packages[].platforms[].url URL for platforms(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3761,7 +3761,7 @@ var configurations = []Type{ ID: "IL028", Brief: "packages[].platforms[].archiveFileName missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].archiveFileName property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].archiveFileName property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3777,7 +3777,7 @@ var configurations = []Type{ ID: "IL029", Brief: "incorrect packages[].platforms[].archiveFileName type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].archiveFileName property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].archiveFileName property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3793,7 +3793,7 @@ var configurations = []Type{ ID: "IL030", Brief: "packages[].platforms[].archiveFileName < min length", Description: "", - MessageTemplate: "packages[].platforms[].archiveFileName value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].archiveFileName value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3809,7 +3809,7 @@ var configurations = []Type{ ID: "IL031", Brief: "invalid packages[].platforms[].archiveFileName", Description: "", - MessageTemplate: "packages[].platforms[].archiveFileName filename uses unsupported file extension in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].archiveFileName filename uses unsupported file extension in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3825,7 +3825,7 @@ var configurations = []Type{ ID: "IL032", Brief: "packages[].platforms[].checksum missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].checksum property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].checksum property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3841,7 +3841,7 @@ var configurations = []Type{ ID: "IL033", Brief: "incorrect packages[].platforms[].checksum type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].checksum property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].checksum property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3857,7 +3857,7 @@ var configurations = []Type{ ID: "IL034", Brief: "invalid packages[].platforms[].checksum", Description: "", - MessageTemplate: "packages[].platforms[].checksum has an invalid format in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].checksum has an invalid format in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3873,7 +3873,7 @@ var configurations = []Type{ ID: "IL035", Brief: "discouraged packages[].platforms[].checksum algorithm", Description: "", - MessageTemplate: "packages[].platforms[].checksum uses a discouraged hash algorithm in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].checksum uses a discouraged hash algorithm in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3889,7 +3889,7 @@ var configurations = []Type{ ID: "IL036", Brief: "packages[].platforms[].size missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].size property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].size property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3905,7 +3905,7 @@ var configurations = []Type{ ID: "IL037", Brief: "incorrect packages[].platforms[].size type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].size property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].size property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3921,7 +3921,7 @@ var configurations = []Type{ ID: "IL038", Brief: "invalid packages[].platforms[].size", Description: "", - MessageTemplate: "packages[].platforms[].size has an invalid format in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].size has an invalid format in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3937,7 +3937,7 @@ var configurations = []Type{ ID: "IL039", Brief: "packages[].platforms[].boards[] missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].boards[] property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].boards[] property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3953,7 +3953,7 @@ var configurations = []Type{ ID: "IL040", Brief: "incorrect packages[].platforms[].boards type", Description: "Must be an array.", - MessageTemplate: "packages[].platforms[].boards property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].boards property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3969,7 +3969,7 @@ var configurations = []Type{ ID: "IL041", Brief: "additional properties in packages[].platforms[].boards[]", Description: "", - MessageTemplate: "Unknown properties under packages[].platforms[].boards[] found in platform(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].platforms[].boards[] found in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -3985,7 +3985,7 @@ var configurations = []Type{ ID: "IL042", Brief: "packages[].platforms[].boards[].name missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].boards[].name property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].boards[].name property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4001,7 +4001,7 @@ var configurations = []Type{ ID: "IL043", Brief: "incorrect packages[].platforms[].boards[].name type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].boards[].name property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].boards[].name property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4017,7 +4017,7 @@ var configurations = []Type{ ID: "IL044", Brief: "packages[].platforms[].boards[].name < min length", Description: "", - MessageTemplate: "packages[].platforms[].boards[].name value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].boards[].name value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4033,7 +4033,7 @@ var configurations = []Type{ ID: "IL045", Brief: "packages[].platforms[].toolsDependencies[] missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].toolsDependencies[] property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].toolsDependencies[] property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4049,7 +4049,7 @@ var configurations = []Type{ ID: "IL046", Brief: "incorrect packages[].platforms[].toolsDependencies type", Description: "Must be an array.", - MessageTemplate: "packages[].platforms[].toolsDependencies property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].toolsDependencies property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4065,7 +4065,7 @@ var configurations = []Type{ ID: "IL047", Brief: "additional properties in packages[].platforms[].toolsDependencies[]", Description: "", - MessageTemplate: "Unknown properties under packages[].platforms[].toolsDependencies[] found in platform(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].platforms[].toolsDependencies[] found in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4081,7 +4081,7 @@ var configurations = []Type{ ID: "IL048", Brief: "packages[].platforms[].toolsDependencies[].packager missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].toolsDependencies[].packager property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].toolsDependencies[].packager property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4097,7 +4097,7 @@ var configurations = []Type{ ID: "IL049", Brief: "incorrect packages[].platforms[].toolsDependencies[].packager type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].toolsDependencies[].packager property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].toolsDependencies[].packager property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4113,7 +4113,7 @@ var configurations = []Type{ ID: "IL050", Brief: "packages[].platforms[].toolsDependencies[].packager < min length", Description: "", - MessageTemplate: "packages[].platforms[].toolsDependencies[].packager value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].toolsDependencies[].packager value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4129,7 +4129,7 @@ var configurations = []Type{ ID: "IL051", Brief: "packages[].platforms[].toolsDependencies[].name missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].toolsDependencies[].name property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].toolsDependencies[].name property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4145,7 +4145,7 @@ var configurations = []Type{ ID: "IL052", Brief: "incorrect packages[].platforms[].toolsDependencies[].name type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].toolsDependencies[].name property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].toolsDependencies[].name property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4161,7 +4161,7 @@ var configurations = []Type{ ID: "IL053", Brief: "packages[].platforms[].toolsDependencies[].name < min length", Description: "", - MessageTemplate: "packages[].platforms[].toolsDependencies[].name value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].toolsDependencies[].name value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4177,7 +4177,7 @@ var configurations = []Type{ ID: "IL054", Brief: "packages[].platforms[].toolsDependencies[].version missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].toolsDependencies[].version property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].toolsDependencies[].version property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4193,7 +4193,7 @@ var configurations = []Type{ ID: "IL055", Brief: "incorrect packages[].platforms[].toolsDependencies[].version type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].toolsDependencies[].version property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].toolsDependencies[].version property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4209,7 +4209,7 @@ var configurations = []Type{ ID: "IL056", Brief: "invalid packages[].platforms[].toolsDependencies[].version", Description: "Must be compliant with \"relaxed semver\".", - MessageTemplate: "Invalid packages[].platforms[].toolsDependencies[].version property in platform(s): {{.}}", + MessageTemplate: "Invalid packages[].platforms[].toolsDependencies[].version property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4225,7 +4225,7 @@ var configurations = []Type{ ID: "IL057", Brief: "non-semver packages[].platforms[].toolsDependencies[].version", Description: "", - MessageTemplate: "packages[].platforms[].toolsDependencies[].version property in platform(s): {{.}} is not compliant with the semver specification. See: https://semver.org/", + MessageTemplate: "packages[].platforms[].toolsDependencies[].version property in violation of semver specification found in platform(s):\n{{.}}\nSee: https://semver.org/", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4241,7 +4241,7 @@ var configurations = []Type{ ID: "IL059", Brief: "incorrect packages[].platforms[].discoveryDependencies type", Description: "Must be an array.", - MessageTemplate: "packages[].platforms[].discoveryDependencies property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].discoveryDependencies property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4257,7 +4257,7 @@ var configurations = []Type{ ID: "IL060", Brief: "additional properties in packages[].platforms[].discoveryDependencies[]", Description: "", - MessageTemplate: "Unknown properties under packages[].platforms[].discoveryDependencies[] found in platform(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].platforms[].discoveryDependencies[] found in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4273,7 +4273,7 @@ var configurations = []Type{ ID: "IL061", Brief: "packages[].platforms[].discoveryDependencies[].packager missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].discoveryDependencies[].packager property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].discoveryDependencies[].packager property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4289,7 +4289,7 @@ var configurations = []Type{ ID: "IL062", Brief: "incorrect packages[].platforms[].discoveryDependencies[].packager type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].discoveryDependencies[].packager property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].discoveryDependencies[].packager property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4305,7 +4305,7 @@ var configurations = []Type{ ID: "IL063", Brief: "packages[].platforms[].discoveryDependencies[].packager < min length", Description: "", - MessageTemplate: "packages[].platforms[].discoveryDependencies[].packager value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].discoveryDependencies[].packager value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4321,7 +4321,7 @@ var configurations = []Type{ ID: "IL064", Brief: "packages[].platforms[].discoveryDependencies[].name missing", Description: "", - MessageTemplate: "Missing packages[].platforms[].discoveryDependencies[].name property in platform(s): {{.}}", + MessageTemplate: "Missing packages[].platforms[].discoveryDependencies[].name property in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4337,7 +4337,7 @@ var configurations = []Type{ ID: "IL065", Brief: "incorrect packages[].platforms[].discoveryDependencies[].name type", Description: "Must be a string.", - MessageTemplate: "packages[].platforms[].discoveryDependencies[].name property has incorrect type in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].discoveryDependencies[].name property has incorrect type in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4353,7 +4353,7 @@ var configurations = []Type{ ID: "IL066", Brief: "packages[].platforms[].discoveryDependencies[].name < min length", Description: "", - MessageTemplate: "packages[].platforms[].discoveryDependencies[].name value less than the minimum length in platform(s): {{.}}", + MessageTemplate: "packages[].platforms[].discoveryDependencies[].name value less than the minimum length in platform(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4401,7 +4401,7 @@ var configurations = []Type{ ID: "IT003", Brief: "additional properties in packages[].tools[]", Description: "", - MessageTemplate: "Unknown properties under packages[].tools[] found in tool(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].tools[] found in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4417,7 +4417,7 @@ var configurations = []Type{ ID: "IT004", Brief: "packages[].tools[].name missing", Description: "", - MessageTemplate: "Missing packages[].tools[].name property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].name property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4433,7 +4433,7 @@ var configurations = []Type{ ID: "IT005", Brief: "incorrect packages[].tools[].name type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].name property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].name property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4449,7 +4449,7 @@ var configurations = []Type{ ID: "IT006", Brief: "packages[].tools[].name < min length", Description: "", - MessageTemplate: "packages[].tools[].name value less than the minimum length in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].name value less than the minimum length in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4465,7 +4465,7 @@ var configurations = []Type{ ID: "IT007", Brief: "packages[].tools[].version missing", Description: "", - MessageTemplate: "Missing packages[].tools[].version property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].version property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4481,7 +4481,7 @@ var configurations = []Type{ ID: "IT008", Brief: "incorrect packages[].tools[].version type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].version property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].version property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4497,7 +4497,7 @@ var configurations = []Type{ ID: "IT009", Brief: "invalid packages[].tools[].version", Description: "Must be compliant with \"relaxed semver\".", - MessageTemplate: "Invalid packages[].tools[].version property in tool(s): {{.}}", + MessageTemplate: "Invalid packages[].tools[].version property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4513,7 +4513,7 @@ var configurations = []Type{ ID: "IT010", Brief: "non-semver packages[].tools[].version", Description: "", - MessageTemplate: "packages[].tools[].version property in tool(s): {{.}} is not compliant with the semver specification. See: https://semver.org/", + MessageTemplate: "packages[].tools[].version property in violation of semver specification found in tool(s):\n{{.}}\nSee: https://semver.org/", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4529,7 +4529,7 @@ var configurations = []Type{ ID: "IT011", Brief: "packages[].tools[].systems[] missing", Description: "", - MessageTemplate: "Missing packages[].tools[].systems[] property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].systems[] property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4545,7 +4545,7 @@ var configurations = []Type{ ID: "IT012", Brief: "incorrect packages[].tools[].systems type", Description: "Must be an array.", - MessageTemplate: "packages[].tools[].systems property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4561,7 +4561,7 @@ var configurations = []Type{ ID: "IT013", Brief: "additional properties in packages[].tools[].systems[]", Description: "", - MessageTemplate: "Unknown properties under packages[].tools[].systems[] found in tool(s): {{.}}", + MessageTemplate: "Unknown properties under packages[].tools[].systems[] found in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4577,7 +4577,7 @@ var configurations = []Type{ ID: "IT014", Brief: "packages[].tools[].systems[].host missing", Description: "", - MessageTemplate: "Missing packages[].tools[].systems[].host property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].systems[].host property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4593,7 +4593,7 @@ var configurations = []Type{ ID: "IT015", Brief: "incorrect packages[].tools[].systems[].host type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].systems[].host property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].host property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4609,7 +4609,7 @@ var configurations = []Type{ ID: "IT0016", Brief: "invalid packages[].tools[].systems[].host", Description: "", - MessageTemplate: "packages[].tools[].systems[].host has an invalid format in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].host has an invalid format in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4625,7 +4625,7 @@ var configurations = []Type{ ID: "IT017", Brief: "packages[].tools[].systems[].url missing", Description: "", - MessageTemplate: "Missing packages[].tools[].systems[].url property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].systems[].url property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4641,7 +4641,7 @@ var configurations = []Type{ ID: "IT018", Brief: "incorrect packages[].tools[].systems[].url type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].systems[].url property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].url property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4657,7 +4657,7 @@ var configurations = []Type{ ID: "IT019", Brief: "invalid packages[].tools[].systems[].url format", Description: "", - MessageTemplate: "packages[].tools[].systems[].url property does not have a valid URL format in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].url property does not have a valid URL format in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4673,7 +4673,7 @@ var configurations = []Type{ ID: "IT020", Brief: "dead packages[].tools[].systems[].url", Description: "", - MessageTemplate: "Unable to load the packages[].tools[].systems[].url URL for tools(s): {{.}}", + MessageTemplate: "Unable to load the packages[].tools[].systems[].url URL for tools(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4689,7 +4689,7 @@ var configurations = []Type{ ID: "IT021", Brief: "packages[].tools[].systems[].archiveFileName missing", Description: "", - MessageTemplate: "Missing packages[].tools[].systems[].archiveFileName property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].systems[].archiveFileName property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4705,7 +4705,7 @@ var configurations = []Type{ ID: "IT022", Brief: "incorrect packages[].tools[].systems[].archiveFileName type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].systems[].archiveFileName property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].archiveFileName property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4721,7 +4721,7 @@ var configurations = []Type{ ID: "IT023", Brief: "packages[].tools[].systems[].archiveFileName < min length", Description: "", - MessageTemplate: "packages[].tools[].systems[].archiveFileName value less than the minimum length in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].archiveFileName value less than the minimum length in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4737,7 +4737,7 @@ var configurations = []Type{ ID: "IT0024", Brief: "invalid packages[].tools[].systems[].archiveFileName", Description: "", - MessageTemplate: "packages[].tools[].systems[].archiveFileName has an invalid format in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].archiveFileName has an invalid format in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4753,7 +4753,7 @@ var configurations = []Type{ ID: "IT025 ", Brief: "packages[].tools[].systems[].checksum missing", Description: "", - MessageTemplate: "Missing packages[].tools[].systems[].checksum property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].systems[].checksum property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4769,7 +4769,7 @@ var configurations = []Type{ ID: "IT026", Brief: "incorrect packages[].tools[].systems[].checksum type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].systems[].checksum property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].checksum property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4785,7 +4785,7 @@ var configurations = []Type{ ID: "IT027", Brief: "invalid packages[].tools[].systems[].checksum", Description: "", - MessageTemplate: "packages[].tools[].systems[].checksum has an invalid format in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].checksum has an invalid format in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4801,7 +4801,7 @@ var configurations = []Type{ ID: "IT028", Brief: "discouraged packages[].tools[].systems[].checksum algorithm", Description: "", - MessageTemplate: "packages[].tools[].systems[].checksum uses a discouraged hash algorithm in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].checksum uses a discouraged hash algorithm in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4817,7 +4817,7 @@ var configurations = []Type{ ID: "IT029", Brief: "packages[].tools[].systems[].size missing", Description: "", - MessageTemplate: "Missing packages[].tools[].systems[].size property in tool(s): {{.}}", + MessageTemplate: "Missing packages[].tools[].systems[].size property in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4833,7 +4833,7 @@ var configurations = []Type{ ID: "IT030", Brief: "incorrect packages[].tools[].systems[].size type", Description: "Must be a string.", - MessageTemplate: "packages[].tools[].systems[].size property has incorrect type in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].size property has incorrect type in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, @@ -4849,7 +4849,7 @@ var configurations = []Type{ ID: "IT031", Brief: "invalid packages[].tools[].systems[].size", Description: "", - MessageTemplate: "packages[].tools[].systems[].size has an invalid format in tool(s): {{.}}", + MessageTemplate: "packages[].tools[].systems[].size has an invalid format in tool(s):\n{{.}}", DisableModes: nil, EnableModes: []rulemode.Type{rulemode.Default}, InfoModes: nil, diff --git a/internal/rule/rulefunction/library.go b/internal/rule/rulefunction/library.go index f9ae4f27..e441ebf1 100644 --- a/internal/rule/rulefunction/library.go +++ b/internal/rule/rulefunction/library.go @@ -102,7 +102,7 @@ func LibraryContainsSymlinks() (result ruleresult.Type, output string) { } if len(symlinkPaths) > 0 { - return ruleresult.Fail, strings.Join(symlinkPaths, ", ") + return ruleresult.Fail, brokenOutputList(symlinkPaths) } return ruleresult.Pass, "" @@ -139,7 +139,7 @@ func LibraryHasExe() (result ruleresult.Type, output string) { } if len(exePaths) > 0 { - return ruleresult.Fail, strings.Join(exePaths, ", ") + return ruleresult.Fail, brokenOutputList(exePaths) } return ruleresult.Pass, "" @@ -1446,7 +1446,7 @@ func LibraryHasStraySketches() (result ruleresult.Type, output string) { } if len(straySketchPaths) > 0 { - return ruleresult.Fail, strings.Join(straySketchPaths, ", ") + return ruleresult.Fail, brokenOutputList(straySketchPaths) } return ruleresult.Pass, "" diff --git a/internal/rule/rulefunction/packageindex.go b/internal/rule/rulefunction/packageindex.go index b455ecde..ebe272a6 100644 --- a/internal/rule/rulefunction/packageindex.go +++ b/internal/rule/rulefunction/packageindex.go @@ -642,7 +642,7 @@ func PackageIndexPackagesPlatformsAdditionalProperties() (result ruleresult.Type } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -662,7 +662,7 @@ func PackageIndexPackagesPlatformsNameMissing() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -682,7 +682,7 @@ func PackageIndexPackagesPlatformsNameIncorrectType() (result ruleresult.Type, o } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -702,7 +702,7 @@ func PackageIndexPackagesPlatformsNameLTMinLength() (result ruleresult.Type, out } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -722,7 +722,7 @@ func PackageIndexPackagesPlatformsArchitectureMissing() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -742,7 +742,7 @@ func PackageIndexPackagesPlatformsArchitectureIncorrectType() (result ruleresult } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -762,7 +762,7 @@ func PackageIndexPackagesPlatformsArchitectureLTMinLength() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -782,7 +782,7 @@ func PackageIndexPackagesPlatformsVersionMissing() (result ruleresult.Type, outp } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -802,7 +802,7 @@ func PackageIndexPackagesPlatformsVersionIncorrectType() (result ruleresult.Type } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -822,7 +822,7 @@ func PackageIndexPackagesPlatformsVersionNonRelaxedSemver() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -842,7 +842,7 @@ func PackageIndexPackagesPlatformsVersionNonSemver() (result ruleresult.Type, ou } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -862,7 +862,7 @@ func PackageIndexPackagesPlatformsDeprecatedIncorrectType() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -882,7 +882,7 @@ func PackageIndexPackagesPlatformsCategoryMissing() (result ruleresult.Type, out } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -902,7 +902,7 @@ func PackageIndexPackagesPlatformsCategoryIncorrectType() (result ruleresult.Typ } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -922,7 +922,7 @@ func PackageIndexPackagesPlatformsCategoryThirdPartyInvalid() (result ruleresult } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -942,7 +942,7 @@ func PackageIndexPackagesPlatformsHelpMissing() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -962,7 +962,7 @@ func PackageIndexPackagesPlatformsHelpIncorrectType() (result ruleresult.Type, o } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -982,7 +982,7 @@ func PackageIndexPackagesPlatformsHelpAdditionalProperties() (result ruleresult. } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1002,7 +1002,7 @@ func PackageIndexPackagesPlatformsHelpOnlineMissing() (result ruleresult.Type, o } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1022,7 +1022,7 @@ func PackageIndexPackagesPlatformsHelpOnlineIncorrectType() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1042,7 +1042,7 @@ func PackageIndexPackagesPlatformsHelpOnlineInvalidFormat() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1078,7 +1078,7 @@ func PackageIndexPackagesPlatformsHelpOnlineDeadLink() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1098,7 +1098,7 @@ func PackageIndexPackagesPlatformsUrlMissing() (result ruleresult.Type, output s } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1118,7 +1118,7 @@ func PackageIndexPackagesPlatformsUrlIncorrectType() (result ruleresult.Type, ou } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1138,7 +1138,7 @@ func PackageIndexPackagesPlatformsUrlInvalidFormat() (result ruleresult.Type, ou } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1169,7 +1169,7 @@ func PackageIndexPackagesPlatformsURLDeadLink() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1189,7 +1189,7 @@ func PackageIndexPackagesPlatformsArchiveFileNameMissing() (result ruleresult.Ty } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1209,7 +1209,7 @@ func PackageIndexPackagesPlatformsArchiveFileNameIncorrectType() (result ruleres } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1229,7 +1229,7 @@ func PackageIndexPackagesPlatformsArchiveFileNameLTMinLength() (result ruleresul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1249,7 +1249,7 @@ func PackageIndexPackagesPlatformsArchiveFileNameInvalid() (result ruleresult.Ty } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1269,7 +1269,7 @@ func PackageIndexPackagesPlatformsChecksumMissing() (result ruleresult.Type, out } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1289,7 +1289,7 @@ func PackageIndexPackagesPlatformsChecksumIncorrectType() (result ruleresult.Typ } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1309,7 +1309,7 @@ func PackageIndexPackagesPlatformsChecksumInvalid() (result ruleresult.Type, out } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1329,7 +1329,7 @@ func PackageIndexPackagesPlatformsChecksumDiscouragedAlgorithm() (result ruleres } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1349,7 +1349,7 @@ func PackageIndexPackagesPlatformsSizeMissing() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1369,7 +1369,7 @@ func PackageIndexPackagesPlatformsSizeIncorrectType() (result ruleresult.Type, o } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1389,7 +1389,7 @@ func PackageIndexPackagesPlatformsSizeInvalid() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1409,7 +1409,7 @@ func PackageIndexPackagesPlatformsBoardsMissing() (result ruleresult.Type, outpu } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1429,7 +1429,7 @@ func PackageIndexPackagesPlatformsBoardsIncorrectType() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1449,7 +1449,7 @@ func PackageIndexPackagesPlatformsBoardsAdditionalProperties() (result ruleresul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1469,7 +1469,7 @@ func PackageIndexPackagesPlatformsBoardsNameMissing() (result ruleresult.Type, o } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1489,7 +1489,7 @@ func PackageIndexPackagesPlatformsBoardsNameIncorrectType() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1509,7 +1509,7 @@ func PackageIndexPackagesPlatformsBoardsNameLTMinLength() (result ruleresult.Typ } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1529,7 +1529,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesMissing() (result ruleresult. } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1549,7 +1549,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesIncorrectType() (result ruler } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1569,7 +1569,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesAdditionalProperties() (resul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1589,7 +1589,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesPackagerMissing() (result rul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1609,7 +1609,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesPackagerIncorrectType() (resu } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1629,7 +1629,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesPackagerLTMinLength() (result } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1649,7 +1649,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesNameMissing() (result ruleres } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1669,7 +1669,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesNameIncorrectType() (result r } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1689,7 +1689,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesNameLTMinLength() (result rul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1709,7 +1709,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesVersionMissing() (result rule } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1729,7 +1729,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesVersionIncorrectType() (resul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1749,7 +1749,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesVersionNonRelaxedSemver() (re } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1769,7 +1769,7 @@ func PackageIndexPackagesPlatformsToolsDependenciesVersionNonSemver() (result ru } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1789,7 +1789,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesIncorrectType() (result r } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1809,7 +1809,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesAdditionalProperties() (r } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1829,7 +1829,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesPackagerMissing() (result } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1849,7 +1849,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesPackagerIncorrectType() ( } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1869,7 +1869,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesPackagerLTMinLength() (re } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1889,7 +1889,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesNameMissing() (result rul } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1909,7 +1909,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesNameIncorrectType() (resu } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1929,7 +1929,7 @@ func PackageIndexPackagesPlatformsDiscoveryDependenciesNameLTMinLength() (result } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -1989,7 +1989,7 @@ func PackageIndexPackagesToolsAdditionalProperties() (result ruleresult.Type, ou } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2009,7 +2009,7 @@ func PackageIndexPackagesToolsNameMissing() (result ruleresult.Type, output stri } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2029,7 +2029,7 @@ func PackageIndexPackagesToolsNameIncorrectType() (result ruleresult.Type, outpu } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2049,7 +2049,7 @@ func PackageIndexPackagesToolsNameLTMinLength() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2069,7 +2069,7 @@ func PackageIndexPackagesToolsVersionMissing() (result ruleresult.Type, output s } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2089,7 +2089,7 @@ func PackageIndexPackagesToolsVersionIncorrectType() (result ruleresult.Type, ou } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2109,7 +2109,7 @@ func PackageIndexPackagesToolsVersionNonRelaxedSemver() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2129,7 +2129,7 @@ func PackageIndexPackagesToolsVersionNonSemver() (result ruleresult.Type, output } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2149,7 +2149,7 @@ func PackageIndexPackagesToolsSystemsMissing() (result ruleresult.Type, output s } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2169,7 +2169,7 @@ func PackageIndexPackagesToolsSystemsIncorrectType() (result ruleresult.Type, ou } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2189,7 +2189,7 @@ func PackageIndexPackagesToolsSystemsAdditionalProperties() (result ruleresult.T } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2209,7 +2209,7 @@ func PackageIndexPackagesToolsSystemsHostMissing() (result ruleresult.Type, outp } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2229,7 +2229,7 @@ func PackageIndexPackagesToolsSystemsHostIncorrectType() (result ruleresult.Type } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2249,7 +2249,7 @@ func PackageIndexPackagesToolsSystemsHostInvalid() (result ruleresult.Type, outp } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2269,7 +2269,7 @@ func PackageIndexPackagesToolsSystemsUrlMissing() (result ruleresult.Type, outpu } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2289,7 +2289,7 @@ func PackageIndexPackagesToolsSystemsUrlIncorrectType() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2309,7 +2309,7 @@ func PackageIndexPackagesToolsSystemsUrlInvalidFormat() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2340,7 +2340,7 @@ func PackageIndexPackagesToolsSystemsURLDeadLink() (result ruleresult.Type, outp } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2360,7 +2360,7 @@ func PackageIndexPackagesToolsSystemsArchiveFileNameMissing() (result ruleresult } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2380,7 +2380,7 @@ func PackageIndexPackagesToolsSystemsArchiveFileNameIncorrectType() (result rule } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2400,7 +2400,7 @@ func PackageIndexPackagesToolsSystemsArchiveFileNameLTMinLength() (result rulere } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2420,7 +2420,7 @@ func PackageIndexPackagesToolsSystemsArchiveFileNameInvalid() (result ruleresult } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2440,7 +2440,7 @@ func PackageIndexPackagesToolsSystemsChecksumMissing() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2460,7 +2460,7 @@ func PackageIndexPackagesToolsSystemsChecksumIncorrectType() (result ruleresult. } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2480,7 +2480,7 @@ func PackageIndexPackagesToolsSystemsChecksumInvalid() (result ruleresult.Type, } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2500,7 +2500,7 @@ func PackageIndexPackagesToolsSystemsChecksumDiscouragedAlgorithm() (result rule } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2520,7 +2520,7 @@ func PackageIndexPackagesToolsSystemsSizeMissing() (result ruleresult.Type, outp } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2540,7 +2540,7 @@ func PackageIndexPackagesToolsSystemsSizeIncorrectType() (result ruleresult.Type } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" @@ -2560,7 +2560,7 @@ func PackageIndexPackagesToolsSystemsSizeInvalid() (result ruleresult.Type, outp } if len(nonCompliantIDs) > 0 { - return ruleresult.Fail, strings.Join(nonCompliantIDs, ", ") + return ruleresult.Fail, brokenOutputList(nonCompliantIDs) } return ruleresult.Pass, "" diff --git a/internal/rule/rulefunction/packageindex_test.go b/internal/rule/rulefunction/packageindex_test.go index d5e55544..8e56c238 100644 --- a/internal/rule/rulefunction/packageindex_test.go +++ b/internal/rule/rulefunction/packageindex_test.go @@ -375,7 +375,7 @@ func TestPackageIndexPackagesPlatformsIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].platforms[] properties", "packages-platforms-additional-properties", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Additional packages[].platforms[] properties", "packages-platforms-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -385,7 +385,7 @@ func TestPackageIndexPackagesPlatformsAdditionalProperties(t *testing.T) { func TestPackageIndexPackagesPlatformsNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].name missing", "packages-platforms-name-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].name missing", "packages-platforms-name-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -395,7 +395,7 @@ func TestPackageIndexPackagesPlatformsNameMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].name type", "packages-platforms-name-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].name type", "packages-platforms-name-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -405,7 +405,7 @@ func TestPackageIndexPackagesPlatformsNameIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].name < min length", "packages-platforms-name-length-lt", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].name < min length", "packages-platforms-name-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -415,7 +415,7 @@ func TestPackageIndexPackagesPlatformsNameLTMinLength(t *testing.T) { func TestPackageIndexPackagesPlatformsArchitectureMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].architecture missing", "packages-platforms-architecture-missing", ruleresult.Fail, "^/packages/0/platforms/0$"}, + {"packages[].platforms[].architecture missing", "packages-platforms-architecture-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -425,7 +425,7 @@ func TestPackageIndexPackagesPlatformsArchitectureMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsArchitectureIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].architecture type", "packages-platforms-architecture-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0$"}, + {"Incorrect packages[].platforms[].architecture type", "packages-platforms-architecture-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -435,7 +435,7 @@ func TestPackageIndexPackagesPlatformsArchitectureIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsArchitectureLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].architecture < min length", "packages-platforms-architecture-length-lt", ruleresult.Fail, "^/packages/0/platforms/0$"}, + {"packages[].platforms[].architecture < min length", "packages-platforms-architecture-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -445,7 +445,7 @@ func TestPackageIndexPackagesPlatformsArchitectureLTMinLength(t *testing.T) { func TestPackageIndexPackagesPlatformsVersionMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].architecture missing", "packages-platforms-version-missing", ruleresult.Fail, "^/packages/0/platforms/0$"}, + {"packages[].platforms[].architecture missing", "packages-platforms-version-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -455,7 +455,7 @@ func TestPackageIndexPackagesPlatformsVersionMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsVersionIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].version type", "packages-platforms-version-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0$"}, + {"Incorrect packages[].platforms[].version type", "packages-platforms-version-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -465,7 +465,7 @@ func TestPackageIndexPackagesPlatformsVersionIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsVersionNonRelaxedSemver(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].version not relaxed semver", "packages-platforms-version-non-relaxed-semver", ruleresult.Fail, "^foopackager:avr@foo$"}, + {"packages[].platforms[].version not relaxed semver", "packages-platforms-version-non-relaxed-semver", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@foo$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -475,7 +475,7 @@ func TestPackageIndexPackagesPlatformsVersionNonRelaxedSemver(t *testing.T) { func TestPackageIndexPackagesPlatformsVersionNonSemver(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].version not semver", "packages-platforms-version-not-semver", ruleresult.Fail, "^foopackager:avr@1.0$"}, + {"packages[].platforms[].version not semver", "packages-platforms-version-not-semver", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -485,7 +485,7 @@ func TestPackageIndexPackagesPlatformsVersionNonSemver(t *testing.T) { func TestPackageIndexPackagesPlatformsDeprecatedIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].deprecated type", "packages-platforms-deprecated-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].deprecated type", "packages-platforms-deprecated-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -495,7 +495,7 @@ func TestPackageIndexPackagesPlatformsDeprecatedIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsCategoryMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].category missing", "packages-platforms-category-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].category missing", "packages-platforms-category-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -505,7 +505,7 @@ func TestPackageIndexPackagesPlatformsCategoryMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsCategoryIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].category type", "packages-platforms-category-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].category type", "packages-platforms-category-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -515,7 +515,7 @@ func TestPackageIndexPackagesPlatformsCategoryIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsCategoryThirdPartyInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].category not valid for 3rd party", "packages-platforms-category-non-third-party", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].category not valid for 3rd party", "packages-platforms-category-non-third-party", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -525,7 +525,7 @@ func TestPackageIndexPackagesPlatformsCategoryThirdPartyInvalid(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].help missing", "packages-platforms-help-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].help missing", "packages-platforms-help-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -535,7 +535,7 @@ func TestPackageIndexPackagesPlatformsHelpMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].help type", "packages-platforms-help-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].help type", "packages-platforms-help-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -545,7 +545,7 @@ func TestPackageIndexPackagesPlatformsHelpIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].platforms[].help properties", "packages-platforms-help-additional-properties", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Additional packages[].platforms[].help properties", "packages-platforms-help-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -555,7 +555,7 @@ func TestPackageIndexPackagesPlatformsHelpAdditionalProperties(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpOnlineMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].help.online missing", "packages-platforms-help-online-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].help.online missing", "packages-platforms-help-online-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -565,7 +565,7 @@ func TestPackageIndexPackagesPlatformsHelpOnlineMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpOnlineIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].help.online type", "packages-platforms-help-online-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].help.online type", "packages-platforms-help-online-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -575,7 +575,7 @@ func TestPackageIndexPackagesPlatformsHelpOnlineIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpOnlineInvalidFormat(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].help.online format", "packages-platforms-help-online-invalid-format", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].help.online format", "packages-platforms-help-online-invalid-format", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -585,7 +585,7 @@ func TestPackageIndexPackagesPlatformsHelpOnlineInvalidFormat(t *testing.T) { func TestPackageIndexPackagesPlatformsHelpOnlineDeadLink(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Dead URLs", "packages-platforms-help-online-dead", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0, foopackager:samd@1\\.0\\.0$"}, + {"Dead URLs", "packages-platforms-help-online-dead", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0\n" + brokenOutputListIndent + "foopackager:samd@1\\.0\\.0$"}, {"Valid URL", "valid-package-index", ruleresult.Pass, ""}, } @@ -595,7 +595,7 @@ func TestPackageIndexPackagesPlatformsHelpOnlineDeadLink(t *testing.T) { func TestPackageIndexPackagesPlatformsUrlMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].url missing", "packages-platforms-url-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].url missing", "packages-platforms-url-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -605,7 +605,7 @@ func TestPackageIndexPackagesPlatformsUrlMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsUrlIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].url type", "packages-platforms-url-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].url type", "packages-platforms-url-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -615,7 +615,7 @@ func TestPackageIndexPackagesPlatformsUrlIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsUrlInvalidFormat(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].url format", "packages-platforms-url-invalid-format", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].url format", "packages-platforms-url-invalid-format", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -625,7 +625,7 @@ func TestPackageIndexPackagesPlatformsUrlInvalidFormat(t *testing.T) { func TestPackageIndexPackagesPlatformsURLDeadLink(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Dead URLs", "packages-platforms-url-dead", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0, foopackager:samd@1\\.0\\.0$"}, + {"Dead URLs", "packages-platforms-url-dead", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0\n" + brokenOutputListIndent + "foopackager:samd@1\\.0\\.0$"}, {"Valid URL", "valid-package-index", ruleresult.Pass, ""}, } @@ -635,7 +635,7 @@ func TestPackageIndexPackagesPlatformsURLDeadLink(t *testing.T) { func TestPackageIndexPackagesPlatformsArchiveFileNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].archiveFileName missing", "packages-platforms-archivefilename-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].archiveFileName missing", "packages-platforms-archivefilename-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -645,7 +645,7 @@ func TestPackageIndexPackagesPlatformsArchiveFileNameMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsArchiveFileNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].archiveFileName type", "packages-platforms-archivefilename-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].archiveFileName type", "packages-platforms-archivefilename-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -655,7 +655,7 @@ func TestPackageIndexPackagesPlatformsArchiveFileNameIncorrectType(t *testing.T) func TestPackageIndexPackagesPlatformsArchiveFileNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].archiveFileName < min length", "packages-platforms-archivefilename-length-lt", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].archiveFileName < min length", "packages-platforms-archivefilename-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -665,7 +665,7 @@ func TestPackageIndexPackagesPlatformsArchiveFileNameLTMinLength(t *testing.T) { func TestPackageIndexPackagesPlatformsArchiveFileNameInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid filename", "packages-platforms-archivefilename-invalid", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Invalid filename", "packages-platforms-archivefilename-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -675,7 +675,7 @@ func TestPackageIndexPackagesPlatformsArchiveFileNameInvalid(t *testing.T) { func TestPackageIndexPackagesPlatformsChecksumMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].checksum missing", "packages-platforms-checksum-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].checksum missing", "packages-platforms-checksum-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -685,7 +685,7 @@ func TestPackageIndexPackagesPlatformsChecksumMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsChecksumIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].checksum type", "packages-platforms-checksum-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].checksum type", "packages-platforms-checksum-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -695,7 +695,7 @@ func TestPackageIndexPackagesPlatformsChecksumIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsChecksumInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid packages[].platforms[].checksum format", "packages-platforms-checksum-invalid", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Invalid packages[].platforms[].checksum format", "packages-platforms-checksum-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -705,7 +705,7 @@ func TestPackageIndexPackagesPlatformsChecksumInvalid(t *testing.T) { func TestPackageIndexPackagesPlatformsChecksumDiscouragedAlgorithm(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].checksum uses discouraged algorithm", "packages-platforms-checksum-discouraged", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].checksum uses discouraged algorithm", "packages-platforms-checksum-discouraged", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -715,7 +715,7 @@ func TestPackageIndexPackagesPlatformsChecksumDiscouragedAlgorithm(t *testing.T) func TestPackageIndexPackagesPlatformsSizeMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].size missing", "packages-platforms-size-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].size missing", "packages-platforms-size-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -725,7 +725,7 @@ func TestPackageIndexPackagesPlatformsSizeMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsSizeIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].size type", "packages-platforms-size-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].size type", "packages-platforms-size-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -735,7 +735,7 @@ func TestPackageIndexPackagesPlatformsSizeIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsSizeInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid packages[].platforms[].size format", "packages-platforms-size-invalid", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Invalid packages[].platforms[].size format", "packages-platforms-size-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -745,7 +745,7 @@ func TestPackageIndexPackagesPlatformsSizeInvalid(t *testing.T) { func TestPackageIndexPackagesPlatformsBoardsMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].boards[] missing", "packages-platforms-boards-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].boards[] missing", "packages-platforms-boards-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -755,7 +755,7 @@ func TestPackageIndexPackagesPlatformsBoardsMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsBoardsIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].boards type", "packages-platforms-boards-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].boards type", "packages-platforms-boards-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -765,7 +765,7 @@ func TestPackageIndexPackagesPlatformsBoardsIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsBoardsAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].platforms[].boards[] properties", "packages-platforms-boards-additional-properties", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0 >> My Board$"}, + {"Additional packages[].platforms[].boards[] properties", "packages-platforms-boards-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0 >> My Board$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -775,7 +775,7 @@ func TestPackageIndexPackagesPlatformsBoardsAdditionalProperties(t *testing.T) { func TestPackageIndexPackagesPlatformsBoardsNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].boards[].name missing", "packages-platforms-boards-name-missing", ruleresult.Fail, "^/packages/0/platforms/0/boards/0$"}, + {"packages[].platforms[].boards[].name missing", "packages-platforms-boards-name-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/boards/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -785,7 +785,7 @@ func TestPackageIndexPackagesPlatformsBoardsNameMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsBoardsNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].boards[].name type", "packages-platforms-boards-name-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0/boards/0$"}, + {"Incorrect packages[].platforms[].boards[].name type", "packages-platforms-boards-name-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/boards/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -795,7 +795,7 @@ func TestPackageIndexPackagesPlatformsBoardsNameIncorrectType(t *testing.T) { func TestPackageIndexPackagesPlatformsBoardsNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].boards[].name < min length", "packages-platforms-boards-name-length-lt", ruleresult.Fail, "^/packages/0/platforms/0/boards/0$"}, + {"packages[].platforms[].boards[].name < min length", "packages-platforms-boards-name-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/boards/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -805,7 +805,7 @@ func TestPackageIndexPackagesPlatformsBoardsNameLTMinLength(t *testing.T) { func TestPackageIndexPackagesPlatformsToolsDependenciesMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies missing", "packages-platforms-toolsdependencies-missing", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"packages[].platforms[].toolsDependencies missing", "packages-platforms-toolsdependencies-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -815,7 +815,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesMissing(t *testing.T) { func TestPackageIndexPackagesPlatformsToolsDependenciesIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].toolsDependencies type", "packages-platforms-toolsdependencies-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].toolsDependencies type", "packages-platforms-toolsdependencies-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -825,7 +825,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesIncorrectType(t *testing. func TestPackageIndexPackagesPlatformsToolsDependenciesAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].platforms[].toolsDependencies[] properties", "packages-platforms-toolsdependencies-additional-properties", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0 >> arduino:avr-gcc@7\\.3\\.0-atmel3\\.6\\.1-arduino7$"}, + {"Additional packages[].platforms[].toolsDependencies[] properties", "packages-platforms-toolsdependencies-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0 >> arduino:avr-gcc@7\\.3\\.0-atmel3\\.6\\.1-arduino7$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -835,7 +835,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesAdditionalProperties(t *t func TestPackageIndexPackagesPlatformsToolsDependenciesPackagerMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].packager missing", "packages-platforms-toolsdependencies-packager-missing", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"packages[].platforms[].toolsDependencies[].packager missing", "packages-platforms-toolsdependencies-packager-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -845,7 +845,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesPackagerMissing(t *testin func TestPackageIndexPackagesPlatformsToolsDependenciesPackagerIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].toolsDependencies[].packager type", "packages-platforms-toolsdependencies-packager-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"Incorrect packages[].platforms[].toolsDependencies[].packager type", "packages-platforms-toolsdependencies-packager-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -855,7 +855,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesPackagerIncorrectType(t * func TestPackageIndexPackagesPlatformsToolsDependenciesPackagerLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].packager < min length", "packages-platforms-toolsdependencies-packager-length-lt", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"packages[].platforms[].toolsDependencies[].packager < min length", "packages-platforms-toolsdependencies-packager-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -865,7 +865,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesPackagerLTMinLength(t *te func TestPackageIndexPackagesPlatformsToolsDependenciesNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].name missing", "packages-platforms-toolsdependencies-name-missing", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"packages[].platforms[].toolsDependencies[].name missing", "packages-platforms-toolsdependencies-name-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -875,7 +875,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesNameMissing(t *testing.T) func TestPackageIndexPackagesPlatformsToolsDependenciesNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].toolsDependencies[].name type", "packages-platforms-toolsdependencies-name-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"Incorrect packages[].platforms[].toolsDependencies[].name type", "packages-platforms-toolsdependencies-name-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -885,7 +885,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesNameIncorrectType(t *test func TestPackageIndexPackagesPlatformsToolsDependenciesNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].name < min length", "packages-platforms-toolsdependencies-name-length-lt", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"packages[].platforms[].toolsDependencies[].name < min length", "packages-platforms-toolsdependencies-name-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -895,7 +895,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesNameLTMinLength(t *testin func TestPackageIndexPackagesPlatformsToolsDependenciesVersionMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].version missing", "packages-platforms-toolsdependencies-version-missing", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"packages[].platforms[].toolsDependencies[].version missing", "packages-platforms-toolsdependencies-version-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -905,7 +905,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesVersionMissing(t *testing func TestPackageIndexPackagesPlatformsToolsDependenciesVersionIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].toolsDependencies[].version type", "packages-platforms-toolsdependencies-version-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0/toolsDependencies/0$"}, + {"Incorrect packages[].platforms[].toolsDependencies[].version type", "packages-platforms-toolsdependencies-version-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/toolsDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -915,7 +915,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesVersionIncorrectType(t *t func TestPackageIndexPackagesPlatformsToolsDependenciesVersionNonRelaxedSemver(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].version not relaxed semver", "packages-platforms-toolsdependencies-version-non-relaxed-semver", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0 >> arduino:avr-gcc@foo$"}, + {"packages[].platforms[].toolsDependencies[].version not relaxed semver", "packages-platforms-toolsdependencies-version-non-relaxed-semver", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0 >> arduino:avr-gcc@foo$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -925,7 +925,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesVersionNonRelaxedSemver(t func TestPackageIndexPackagesPlatformsToolsDependenciesVersionNonSemver(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].toolsDependencies[].version not semver", "packages-platforms-toolsdependencies-version-not-semver", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0 >> arduino:avr-gcc@7\\.3$"}, + {"packages[].platforms[].toolsDependencies[].version not semver", "packages-platforms-toolsdependencies-version-not-semver", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0 >> arduino:avr-gcc@7\\.3$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -935,7 +935,7 @@ func TestPackageIndexPackagesPlatformsToolsDependenciesVersionNonSemver(t *testi func TestPackageIndexPackagesPlatformsDiscoveryDependenciesIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].discoveryDependencies type", "packages-platforms-discoverydependencies-incorrect-type", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0$"}, + {"Incorrect packages[].platforms[].discoveryDependencies type", "packages-platforms-discoverydependencies-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -945,7 +945,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesIncorrectType(t *test func TestPackageIndexPackagesPlatformsDiscoveryDependenciesAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].platforms[].discoveryDependencies[] properties", "packages-platforms-discoverydependencies-additional-properties", ruleresult.Fail, "^foopackager:avr@1\\.0\\.0 >> arduino:ble-discovery$"}, + {"Additional packages[].platforms[].discoveryDependencies[] properties", "packages-platforms-discoverydependencies-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:avr@1\\.0\\.0 >> arduino:ble-discovery$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -955,7 +955,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesAdditionalProperties( func TestPackageIndexPackagesPlatformsDiscoveryDependenciesPackagerMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].discoveryDependencies[].packager missing", "packages-platforms-discoverydependencies-packager-missing", ruleresult.Fail, "^/packages/0/platforms/0/discoveryDependencies/0$"}, + {"packages[].platforms[].discoveryDependencies[].packager missing", "packages-platforms-discoverydependencies-packager-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/discoveryDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -965,7 +965,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesPackagerMissing(t *te func TestPackageIndexPackagesPlatformsDiscoveryDependenciesPackagerIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].discoveryDependencies[].packager type", "packages-platforms-discoverydependencies-packager-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0/discoveryDependencies/0$"}, + {"Incorrect packages[].platforms[].discoveryDependencies[].packager type", "packages-platforms-discoverydependencies-packager-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/discoveryDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -975,7 +975,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesPackagerIncorrectType func TestPackageIndexPackagesPlatformsDiscoveryDependenciesPackagerLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].discoveryDependencies[].packager < min length", "packages-platforms-discoverydependencies-packager-length-lt", ruleresult.Fail, "^/packages/0/platforms/0/discoveryDependencies/0$"}, + {"packages[].platforms[].discoveryDependencies[].packager < min length", "packages-platforms-discoverydependencies-packager-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/discoveryDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -985,7 +985,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesPackagerLTMinLength(t func TestPackageIndexPackagesPlatformsDiscoveryDependenciesNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].discoveryDependencies[].name missing", "packages-platforms-discoverydependencies-name-missing", ruleresult.Fail, "^/packages/0/platforms/0/discoveryDependencies/0$"}, + {"packages[].platforms[].discoveryDependencies[].name missing", "packages-platforms-discoverydependencies-name-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/discoveryDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -995,7 +995,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesNameMissing(t *testin func TestPackageIndexPackagesPlatformsDiscoveryDependenciesNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].platforms[].discoveryDependencies[].name type", "packages-platforms-discoverydependencies-name-incorrect-type", ruleresult.Fail, "^/packages/0/platforms/0/discoveryDependencies/0$"}, + {"Incorrect packages[].platforms[].discoveryDependencies[].name type", "packages-platforms-discoverydependencies-name-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/discoveryDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1005,7 +1005,7 @@ func TestPackageIndexPackagesPlatformsDiscoveryDependenciesNameIncorrectType(t * func TestPackageIndexPackagesPlatformsDiscoveryDependenciesNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].platforms[].discoveryDependencies[].name < min length", "packages-platforms-discoverydependencies-name-length-lt", ruleresult.Fail, "^/packages/0/platforms/0/discoveryDependencies/0$"}, + {"packages[].platforms[].discoveryDependencies[].name < min length", "packages-platforms-discoverydependencies-name-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/platforms/0/discoveryDependencies/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1035,7 +1035,7 @@ func TestPackageIndexPackagesToolsIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].tools[] properties", "packages-tools-additional-properties", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2$"}, + {"Additional packages[].tools[] properties", "packages-tools-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1045,7 +1045,7 @@ func TestPackageIndexPackagesToolsAdditionalProperties(t *testing.T) { func TestPackageIndexPackagesToolsNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].name missing", "packages-tools-name-missing", ruleresult.Fail, "^/packages/0/tools/0$"}, + {"packages[].tools[].name missing", "packages-tools-name-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1055,7 +1055,7 @@ func TestPackageIndexPackagesToolsNameMissing(t *testing.T) { func TestPackageIndexPackagesToolsNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools.name type", "packages-tools-name-incorrect-type", ruleresult.Fail, "^/packages/0/tools/0$"}, + {"Incorrect packages[].tools.name type", "packages-tools-name-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1065,7 +1065,7 @@ func TestPackageIndexPackagesToolsNameIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].name < min length", "packages-tools-name-length-lt", ruleresult.Fail, "^/packages/0/tools/0$"}, + {"packages[].tools[].name < min length", "packages-tools-name-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1075,7 +1075,7 @@ func TestPackageIndexPackagesToolsNameLTMinLength(t *testing.T) { func TestPackageIndexPackagesToolsVersionMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].version missing", "packages-tools-version-missing", ruleresult.Fail, "^/packages/0/tools/0$"}, + {"packages[].tools[].version missing", "packages-tools-version-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1085,7 +1085,7 @@ func TestPackageIndexPackagesToolsVersionMissing(t *testing.T) { func TestPackageIndexPackagesToolsVersionIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].version type", "packages-tools-version-incorrect-type", ruleresult.Fail, "^/packages/0/tools/0$"}, + {"Incorrect packages[].tools[].version type", "packages-tools-version-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1095,7 +1095,7 @@ func TestPackageIndexPackagesToolsVersionIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsVersionNonRelaxedSemver(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].version not relaxed semver", "packages-tools-version-non-relaxed-semver", ruleresult.Fail, "^foopackager:openocd@foo$"}, + {"packages[].tools[].version not relaxed semver", "packages-tools-version-non-relaxed-semver", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@foo$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1105,7 +1105,7 @@ func TestPackageIndexPackagesToolsVersionNonRelaxedSemver(t *testing.T) { func TestPackageIndexPackagesToolsVersionNonSemver(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].version not semver", "packages-tools-version-not-semver", ruleresult.Fail, "^foopackager:openocd@1.0$"}, + {"packages[].tools[].version not semver", "packages-tools-version-not-semver", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@1.0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1115,7 +1115,7 @@ func TestPackageIndexPackagesToolsVersionNonSemver(t *testing.T) { func TestPackageIndexPackagesToolsSystemsMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[] missing", "packages-tools-systems-missing", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2$"}, + {"packages[].tools[].systems[] missing", "packages-tools-systems-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1125,7 +1125,7 @@ func TestPackageIndexPackagesToolsSystemsMissing(t *testing.T) { func TestPackageIndexPackagesToolsSystemsIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems type", "packages-tools-systems-incorrect-type", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2$"}, + {"Incorrect packages[].tools[].systems type", "packages-tools-systems-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1135,7 +1135,7 @@ func TestPackageIndexPackagesToolsSystemsIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsSystemsAdditionalProperties(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Additional packages[].tools[].systems[] properties", "packages-tools-systems-additional-properties", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Additional packages[].tools[].systems[] properties", "packages-tools-systems-additional-properties", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1145,7 +1145,7 @@ func TestPackageIndexPackagesToolsSystemsAdditionalProperties(t *testing.T) { func TestPackageIndexPackagesToolsSystemsHostMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].host missing", "packages-tools-systems-host-missing", ruleresult.Fail, "^/packages/0/tools/0/systems/0$"}, + {"packages[].tools[].systems[].host missing", "packages-tools-systems-host-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0/systems/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1155,7 +1155,7 @@ func TestPackageIndexPackagesToolsSystemsHostMissing(t *testing.T) { func TestPackageIndexPackagesToolsSystemsHostIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems[].host type", "packages-tools-systems-host-incorrect-type", ruleresult.Fail, "^/packages/0/tools/0/systems/0$"}, + {"Incorrect packages[].tools[].systems[].host type", "packages-tools-systems-host-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "/packages/0/tools/0/systems/0$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1165,7 +1165,7 @@ func TestPackageIndexPackagesToolsSystemsHostIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsSystemsHostInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid packages[].tools[].systems[].host format", "packages-tools-systems-host-invalid", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> foo$"}, + {"Invalid packages[].tools[].systems[].host format", "packages-tools-systems-host-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> foo$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1175,7 +1175,7 @@ func TestPackageIndexPackagesToolsSystemsHostInvalid(t *testing.T) { func TestPackageIndexPackagesToolsSystemsUrlMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].url missing", "packages-tools-systems-url-missing", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"packages[].tools[].systems[].url missing", "packages-tools-systems-url-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1185,7 +1185,7 @@ func TestPackageIndexPackagesToolsSystemsUrlMissing(t *testing.T) { func TestPackageIndexPackagesToolsSystemsUrlIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems[].url type", "packages-tools-systems-url-incorrect-type", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Incorrect packages[].tools[].systems[].url type", "packages-tools-systems-url-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1195,7 +1195,7 @@ func TestPackageIndexPackagesToolsSystemsUrlIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsSystemsUrlInvalidFormat(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems[].url format", "packages-tools-systems-url-invalid-format", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Incorrect packages[].tools[].systems[].url format", "packages-tools-systems-url-invalid-format", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1205,7 +1205,7 @@ func TestPackageIndexPackagesToolsSystemsUrlInvalidFormat(t *testing.T) { func TestPackageIndexPackagesToolsSystemsURLDeadLink(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Dead URLs", "packages-tools-systems-url-dead", ruleresult.Fail, "^foopackager:CMSIS@4\\.0\\.0-atmel >> arm-linux-gnueabihf, foopackager:CMSIS@4\\.0\\.0-atmel >> i686-mingw32$"}, + {"Dead URLs", "packages-tools-systems-url-dead", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:CMSIS@4\\.0\\.0-atmel >> arm-linux-gnueabihf\n" + brokenOutputListIndent + "foopackager:CMSIS@4\\.0\\.0-atmel >> i686-mingw32$"}, {"Valid URL", "valid-package-index", ruleresult.Pass, ""}, } @@ -1215,7 +1215,7 @@ func TestPackageIndexPackagesToolsSystemsURLDeadLink(t *testing.T) { func TestPackageIndexPackagesToolsSystemsArchiveFileNameMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].archiveFileName missing", "packages-tools-systems-archivefilename-missing", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"packages[].tools[].systems[].archiveFileName missing", "packages-tools-systems-archivefilename-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1225,7 +1225,7 @@ func TestPackageIndexPackagesToolsSystemsArchiveFileNameMissing(t *testing.T) { func TestPackageIndexPackagesToolsSystemsArchiveFileNameIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems[].archiveFileName type", "packages-tools-systems-archivefilename-incorrect-type", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Incorrect packages[].tools[].systems[].archiveFileName type", "packages-tools-systems-archivefilename-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1235,7 +1235,7 @@ func TestPackageIndexPackagesToolsSystemsArchiveFileNameIncorrectType(t *testing func TestPackageIndexPackagesToolsSystemsArchiveFileNameLTMinLength(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].archiveFileName < min length", "packages-tools-systems-archivefilename-length-lt", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"packages[].tools[].systems[].archiveFileName < min length", "packages-tools-systems-archivefilename-length-lt", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1245,7 +1245,7 @@ func TestPackageIndexPackagesToolsSystemsArchiveFileNameLTMinLength(t *testing.T func TestPackageIndexPackagesToolsSystemsArchiveFileNameInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid packages[].tools[].systems[].archiveFileName format", "packages-tools-systems-archivefilename-invalid", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Invalid packages[].tools[].systems[].archiveFileName format", "packages-tools-systems-archivefilename-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1255,7 +1255,7 @@ func TestPackageIndexPackagesToolsSystemsArchiveFileNameInvalid(t *testing.T) { func TestPackageIndexPackagesToolsSystemsChecksumMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].checksum missing", "packages-tools-systems-checksum-missing", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"packages[].tools[].systems[].checksum missing", "packages-tools-systems-checksum-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1265,7 +1265,7 @@ func TestPackageIndexPackagesToolsSystemsChecksumMissing(t *testing.T) { func TestPackageIndexPackagesToolsSystemsChecksumIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems[].checksum type", "packages-tools-systems-checksum-incorrect-type", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Incorrect packages[].tools[].systems[].checksum type", "packages-tools-systems-checksum-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1275,7 +1275,7 @@ func TestPackageIndexPackagesToolsSystemsChecksumIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsSystemsChecksumInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid packages[].tools[].systems[].checksum format", "packages-tools-systems-checksum-invalid", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Invalid packages[].tools[].systems[].checksum format", "packages-tools-systems-checksum-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1285,7 +1285,7 @@ func TestPackageIndexPackagesToolsSystemsChecksumInvalid(t *testing.T) { func TestPackageIndexPackagesToolsSystemsChecksumDiscouragedAlgorithm(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].checksum uses discouraged algorithm", "packages-tools-systems-checksum-discouraged", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"packages[].tools[].systems[].checksum uses discouraged algorithm", "packages-tools-systems-checksum-discouraged", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1295,7 +1295,7 @@ func TestPackageIndexPackagesToolsSystemsChecksumDiscouragedAlgorithm(t *testing func TestPackageIndexPackagesToolsSystemsSizeMissing(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"packages[].tools[].systems[].size missing", "packages-tools-systems-size-missing", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"packages[].tools[].systems[].size missing", "packages-tools-systems-size-missing", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1305,7 +1305,7 @@ func TestPackageIndexPackagesToolsSystemsSizeMissing(t *testing.T) { func TestPackageIndexPackagesToolsSystemsSizeIncorrectType(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Incorrect packages[].tools[].systems[].size type", "packages-tools-systems-size-incorrect-type", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Incorrect packages[].tools[].systems[].size type", "packages-tools-systems-size-incorrect-type", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } @@ -1315,7 +1315,7 @@ func TestPackageIndexPackagesToolsSystemsSizeIncorrectType(t *testing.T) { func TestPackageIndexPackagesToolsSystemsSizeInvalid(t *testing.T) { testTables := []packageIndexRuleFunctionTestTable{ {"Invalid JSON", "invalid-JSON", ruleresult.NotRun, ""}, - {"Invalid packages[].tools[].systems[].size format", "packages-tools-systems-size-invalid", ruleresult.Fail, "^foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, + {"Invalid packages[].tools[].systems[].size format", "packages-tools-systems-size-invalid", ruleresult.Fail, "^" + brokenOutputListIndent + "foopackager:openocd@0\\.11\\.0-arduino2 >> aarch64-linux-gnu$"}, {"Valid", "valid-package-index", ruleresult.Pass, ""}, } diff --git a/internal/rule/rulefunction/rulefunction.go b/internal/rule/rulefunction/rulefunction.go index 24edc32a..9e3c0c4b 100644 --- a/internal/rule/rulefunction/rulefunction.go +++ b/internal/rule/rulefunction/rulefunction.go @@ -95,6 +95,13 @@ func IncorrectArduinoDotHFileNameCase() (result ruleresult.Type, output string) return ruleresult.Pass, "" } +const brokenOutputListIndent = " " // Use this as indent for rule output that takes the form of newline-separated list. + +// brokenOutputList formats the rule output as a newline-separated list. +func brokenOutputList(list []string) string { + return brokenOutputListIndent + strings.Join(list, "\n"+brokenOutputListIndent) +} + // validProjectPathBaseName checks whether the provided library folder or sketch filename contains prohibited characters. func validProjectPathBaseName(name string) bool { baseNameRegexp := regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9_.-]*$")