diff --git a/.automation/test/ansible/ghe-initialize/templates/ghe-config-apply.sh b/.automation/test/ansible/ghe-initialize/templates/ghe-config-apply.sh
old mode 100644
new mode 100755
diff --git a/.automation/test/arm/reports/expected-ARM.tap b/.automation/test/arm/reports/expected-ARM.tap
new file mode 100644
index 00000000..08be3a94
--- /dev/null
+++ b/.automation/test/arm/reports/expected-ARM.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - arm_bad_1.json
+ ---
+ message: \nValidating arm\arm_bad_1.json\n deploymentTemplate\n [+] adminUsername Should Not Be A Literal\n [+] apiVersions Should Be Recent\n [+] artifacts parameter\n [+] DependsOn Best Practices\n [+] Deployment Resources Must Not Be Debug\n [+] DeploymentTemplate Must Not Contain Hardcoded Uri\n [+] DeploymentTemplate Schema Is Correct\n [+] Dynamic Variable References Should Not Use Concat\n [+] IDs Should Be Derived From ResourceIDs\n [+] Location Should Not Be Hardcoded\n [+] ManagedIdentityExtension must not be used\n [+] Min And Max Value Are Numbers\n [+] Outputs Must Not Contain Secrets\n [+] Parameters Must Be Referenced\n [+] Parameters Property Must Exist\n [+] providers apiVersions Is Not Permitted\n [+] ResourceIds should not contain\n [+] Resources Should Have Location\n [+] Secure String Parameters Cannot Have Default\n [-] Template Should Not Contain Blanks\n Empty property [] found on line 28 Index 1331\n Empty property "" found on line 3 Index 121\n\n [-] Variables Must Be Referenced\n Unreferenced variable Network.Location\n Unreferenced variable Test.Blank.Variable\n\n [+] Virtual Machines Should Not Be Preview\n [+] VM Images Should Use Latest Version\n [+] VM Size Should Be A Parameter\n \n
+ ...
+ok 2 - arm_good_1.json
diff --git a/.automation/test/arm/reports/expected-ARM.tap.ignored b/.automation/test/arm/reports/expected-ARM.tap.ignored
deleted file mode 100644
index 1866f179..00000000
--- a/.automation/test/arm/reports/expected-ARM.tap.ignored
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - arm_bad_1.json
- ---
- message: \nValidating arm\arm_bad_1.json\n deploymentTemplate\n [+] adminUsername Should Not Be A Literal (109 ms)\n [+] apiVersions Should Be Recent (121 ms)\n [+] artifacts parameter (13 ms)\n [+] DependsOn Best Practices (7 ms)\n [+] Deployment Resources Must Not Be Debug (6 ms)\n [+] DeploymentTemplate Schema Is Correct (4 ms)\n [+] Dynamic Variable References Should Not Use Concat (8 ms)\n [+] IDs Should Be Derived From ResourceIDs (40 ms)\n [?] Location Should Not Be Hardcoded (5 ms)\n Skipped because IsMainTemplate was missing\n\n [+] ManagedIdentityExtension must not be used (54 ms)\n [+] Min And Max Value Are Numbers (6 ms)\n [+] Outputs Must Not Contain Secrets (15 ms)\n [+] Parameters Must Be Referenced (9 ms)\n [+] Parameters Property Must Exist (2 ms)\n [+] providers apiVersions Is Not Permitted (2 ms)\n [+] ResourceIds should not contain (14 ms)\n [+] Resources Should Have Location (3 ms)\n [+] Secure String Parameters Cannot Have Default (4 ms)\n [-] Template Should Not Contain Blanks (33 ms)\n Empty property [] found on line 28 Index 1331\n Empty property "" found on line 3 Index 121\n\n [-] Variables Must Be Referenced (35 ms)\n Unreferenced variable Network.Location\n Unreferenced variable Test.Blank.Variable\n\n [+] Virtual Machines Should Not Be Preview (17 ms)\n [+] VM Images Should Use Latest Version (1 ms)\n [+] VM Size Should Be A Parameter (15 ms)\n \n
- ...
-ok 2 - arm_good_1.json
diff --git a/.automation/test/bash/reports/expected-BASH.tap b/.automation/test/bash/reports/expected-BASH.tap
index d03b24f2..122d811a 100644
--- a/.automation/test/bash/reports/expected-BASH.tap
+++ b/.automation/test/bash/reports/expected-BASH.tap
@@ -4,4 +4,4 @@ not ok 1 - shell_bad_1.sh
---
message: \nIn /tmp/lint/.automation/test/bash/shell_bad_1.sh line 10 \nif [ $ERROR_CODE -ne 0]; then\n^-- SC1009 The mentioned syntax error was in this if expression.\n ^-- SC1073 Couldn't parse this test expression. Fix to allow more checks.\n ^-- SC1020 You need a space before the ].\n ^-- SC1072 Missing space before ]. Fix any mentioned problems and try again.\n\nFor more information \n https //www.shellcheck.net/wiki/SC1020 -- You need a space before the ].\n https //www.shellcheck.net/wiki/SC1072 -- Missing space before ]. Fix any m...\n https //www.shellcheck.net/wiki/SC1073 -- Couldn't parse this test expressi...\n
...
-ok 2 - /tmp/lint/.automation/test/bash/shell_good_1.sh
+ok 2 - shell_good_1.sh
diff --git a/.automation/test/bash_exec/reports/expected-BASH_EXEC.tap b/.automation/test/bash_exec/reports/expected-BASH_EXEC.tap
new file mode 100644
index 00000000..b2dbbe43
--- /dev/null
+++ b/.automation/test/bash_exec/reports/expected-BASH_EXEC.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - shell_bad_1.sh
+ ---
+ message: Error File [/tmp/lint/.automation/test/bash_exec/shell_bad_1.sh] is not executable\n
+ ...
+ok 2 - shell_good_1.sh
diff --git a/.automation/test/clojure/reports/expected-CLOJURE.tap.ignored b/.automation/test/clojure/reports/expected-CLOJURE.tap
similarity index 96%
rename from .automation/test/clojure/reports/expected-CLOJURE.tap.ignored
rename to .automation/test/clojure/reports/expected-CLOJURE.tap
index 63784819..7d07e8d2 100644
--- a/.automation/test/clojure/reports/expected-CLOJURE.tap.ignored
+++ b/.automation/test/clojure/reports/expected-CLOJURE.tap
@@ -2,6 +2,6 @@ TAP version 13
1..2
not ok 1 - clojure_bad_1.clj
---
- message: /tmp/lint/.automation/test/clojure/clojure_bad_1.clj 5 5 warning namespace clojure.set is required but never used\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 8 2 error unresolved symbol but-last\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 12 1 error clojure.string/join is called with 0 args but expects 1 or 2\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 15 17 warning unused binding y\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 17 3 warning redundant do\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 19 5 warning inline def\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 22 7 warning Redundant let expression.\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 22 13 warning unused binding z\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 24 9 error y is called with 1 arg but expects 0\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 26 9 error recur argument count mismatch (expected 2, got 0)\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 29 9 error h is called with 1 arg but expects 0\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 30 9 error f is called with 1 arg but expects 0\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 34 1 warning redefined var #'foo/private-fn\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 34 8 warning Unused private var foo/private-fn\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 38 6 error Expected number, received keyword.\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 42 1 error java.lang.Thread/sleep is called with 3 args but expects 1 or 2\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 48 1 error foo/foo-fn is called with 0 args but expects 2\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 51 1 error #'foo/private-fn is private\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 54 7 error duplicate key a\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 56 5 error duplicate set element 1\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 58 7 error missing value for key b\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 64 3 warning missing test assertion\nlinting took 18ms, errors 13, warnings 9\n
+ message: /tmp/lint/.automation/test/clojure/clojure_bad_1.clj 5 5 warning namespace clojure.set is required but never used\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 8 2 error unresolved symbol but-last\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 12 1 error clojure.string/join is called with 0 args but expects 1 or 2\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 15 17 warning unused binding y\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 17 3 warning redundant do\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 19 5 warning inline def\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 22 7 warning Redundant let expression.\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 22 13 warning unused binding z\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 24 9 error y is called with 1 arg but expects 0\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 26 9 error recur argument count mismatch (expected 2, got 0)\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 29 9 error h is called with 1 arg but expects 0\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 30 9 error f is called with 1 arg but expects 0\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 34 1 warning redefined var #'foo/private-fn\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 34 8 warning Unused private var foo/private-fn\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 38 6 error Expected number, received keyword.\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 42 1 error java.lang.Thread/sleep is called with 3 args but expects 1 or 2\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 48 1 error foo/foo-fn is called with 0 args but expects 2\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 51 1 error #'foo/private-fn is private\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 54 7 error duplicate key a\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 56 5 error duplicate set element 1\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 58 7 error missing value for key b\n/tmp/lint/.automation/test/clojure/clojure_bad_1.clj 64 3 warning missing test assertion\nlinting took, errors 13, warnings 9\n
...
ok 2 - clojure_good_1.clj
diff --git a/.automation/test/cloudformation/reports/expected-CLOUDFORMATION.tap b/.automation/test/cloudformation/reports/expected-CLOUDFORMATION.tap
index 882d64eb..a92e9775 100644
--- a/.automation/test/cloudformation/reports/expected-CLOUDFORMATION.tap
+++ b/.automation/test/cloudformation/reports/expected-CLOUDFORMATION.tap
@@ -16,7 +16,7 @@ not ok 4 - cloudformation_bad_4.yaml
---
message: E3002 Invalid Property Resources/myDNSRecord/Properties/Ttl\n/tmp/lint/.automation/test/cloudformation/cloudformation_bad_4.yaml 9 7\n
...
-ok 5 - /tmp/lint/.automation/test/cloudformation/cloudformation_good_1.json
-ok 6 - /tmp/lint/.automation/test/cloudformation/cloudformation_good_2.yaml
-ok 7 - /tmp/lint/.automation/test/cloudformation/cloudformation_good_3.json
-ok 8 - /tmp/lint/.automation/test/cloudformation/cloudformation_good_4.yaml
+ok 5 - cloudformation_good_1.json
+ok 6 - cloudformation_good_2.yaml
+ok 7 - cloudformation_good_3.json
+ok 8 - cloudformation_good_4.yaml
diff --git a/.automation/test/coffeescript/reports/expected-COFFEESCRIPT.tap b/.automation/test/coffeescript/reports/expected-COFFEESCRIPT.tap
index e8efb636..4ce33752 100644
--- a/.automation/test/coffeescript/reports/expected-COFFEESCRIPT.tap
+++ b/.automation/test/coffeescript/reports/expected-COFFEESCRIPT.tap
@@ -4,4 +4,4 @@ not ok 1 - coffeescript_bad_1.coffee
---
message: ✗ /tmp/lint/.automation/test/coffeescript/coffeescript_bad_1.coffee\n ✗ #39 [stdin] 39 29 error unmatched )\nmodule.exports = (robot) -> )\n ^. (coffeescript_error)\n\n✗ Lint! » 1 error and 0 warnings in 1 file\n
...
-ok 2 - /tmp/lint/.automation/test/coffeescript/coffeescript_good_1.coffee
+ok 2 - coffeescript_good_1.coffee
diff --git a/.automation/test/csharp/reports/expected-CSHARP.tap b/.automation/test/csharp/reports/expected-CSHARP.tap
new file mode 100644
index 00000000..9f19222f
--- /dev/null
+++ b/.automation/test/csharp/reports/expected-CSHARP.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - csharp_bad_01.cs
+ ---
+ message: Formatting code files in workspace '/tmp/lint/.automation/test/csharp'.\n csharp/csharp_bad_01.cs(3,21) Fix whitespace formatting.\n csharp/csharp_bad_01.cs(4,16) Fix whitespace formatting.\n csharp/csharp_bad_01.cs(5,36) Fix whitespace formatting.\n Formatted code file '/tmp/lint/.automation/test/csharp/csharp_bad_01.cs'.\n Format complete in.\n
+ ...
+ok 2 - csharp_good_01.cs
diff --git a/.automation/test/csharp/reports/expected-CSHARP.tap.ignored b/.automation/test/csharp/reports/expected-CSHARP.tap.ignored
deleted file mode 100644
index 98d94702..00000000
--- a/.automation/test/csharp/reports/expected-CSHARP.tap.ignored
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - css_bad_01.css
- ---
- message: \ncss/css_bad_01.css\n 2 1 ✖ Expected empty line before comment comment-empty-line-before\n 3 1 ✖ Expected empty line before comment comment-empty-line-before\n 5 5 ✖ Expected indentation of 2 spaces indentation \n 5 33 ✖ Expected "#FFFFFF" to be "#ffffff" color-hex-case \n 5 33 ✖ Expected "#FFFFFF" to be "#FFF" color-hex-length \n 6 5 ✖ Expected indentation of 2 spaces indentation \n 7 5 ✖ Expected indentation of 2 spaces indentation \n 8 5 ✖ Expected indentation of 2 spaces indentation \n 8 12 ✖ Expected "#AAAAAA" to be "#aaaaaa" color-hex-case \n 8 12 ✖ Expected "#AAAAAA" to be "#AAA" color-hex-length\n
- ...
-ok 2 - css_good_01.css
diff --git a/.automation/test/css/reports/expected-CSS.tap b/.automation/test/css/reports/expected-CSS.tap
index 787146ac..98d94702 100644
--- a/.automation/test/css/reports/expected-CSS.tap
+++ b/.automation/test/css/reports/expected-CSS.tap
@@ -4,4 +4,4 @@ not ok 1 - css_bad_01.css
---
message: \ncss/css_bad_01.css\n 2 1 ✖ Expected empty line before comment comment-empty-line-before\n 3 1 ✖ Expected empty line before comment comment-empty-line-before\n 5 5 ✖ Expected indentation of 2 spaces indentation \n 5 33 ✖ Expected "#FFFFFF" to be "#ffffff" color-hex-case \n 5 33 ✖ Expected "#FFFFFF" to be "#FFF" color-hex-length \n 6 5 ✖ Expected indentation of 2 spaces indentation \n 7 5 ✖ Expected indentation of 2 spaces indentation \n 8 5 ✖ Expected indentation of 2 spaces indentation \n 8 12 ✖ Expected "#AAAAAA" to be "#aaaaaa" color-hex-case \n 8 12 ✖ Expected "#AAAAAA" to be "#AAA" color-hex-length\n
...
-ok 2 - /tmp/lint/.automation/test/css/css_good_01.css
+ok 2 - css_good_01.css
diff --git a/.automation/test/dart/reports/expected-DART.tap b/.automation/test/dart/reports/expected-DART.tap
index 1d1deaa2..6ca0aa21 100644
--- a/.automation/test/dart/reports/expected-DART.tap
+++ b/.automation/test/dart/reports/expected-DART.tap
@@ -4,4 +4,4 @@ not ok 1 - dart_bad_1.dart
---
message: Analyzing /tmp/lint/.automation/test/dart/dart_bad_1.dart...\n lint • Use `;` instead of `{}` for empty constructor bodies. • dart/dart_bad_1.dart 4 25 • empty_constructor_bodies\n1 lint found.\n
...
-ok 2 - /tmp/lint/.automation/test/dart/dart_good_1.dart
+ok 2 - dart_good_1.dart
diff --git a/.automation/test/dockerfile/reports/expected-DOCKER.tap b/.automation/test/dockerfile/reports/expected-DOCKER.tap
deleted file mode 100644
index 6aafb4c6..00000000
--- a/.automation/test/dockerfile/reports/expected-DOCKER.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - Dockerfile
- ---
- message: \nFile /tmp/lint/.automation/test/docker/bad/Dockerfile\nIssues 6\n\nLine 1 from node latest\nIssue Category Title Description\n 1 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n 2 Clarity Base Image Latest Base images should not use the latest tag.\n Tag\n\nLine 4 run mkdir -p /usr/src/app\nIssue Category Title Description\n 3 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n\nLine 8 copy package.json /usr/src/app/ /here/there\nIssue Category Title Description\n 4 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n\nLine 9 RUN sudo npm install\nIssue Category Title Description\n 5 Possible Bug Use Of sudo Is Not Use of `sudo` is not allowed in a Dockerfile. From the official\n Allowed document [Best practices for writing\n Dockerfiles](https //docs.docker.com/engine/userguide/eng-image/doc\n kerfile_best-practices/) \n > You should avoid installing or using `sudo` since it has\n unpredictable TTY and signal-forwarding behavior that can cause\n more problems than it solves.\n > If you absolutely need functionality similar to `sudo` (e.g.,\n initializing the daemon as root but running it as non-root), you\n may be able to use `gosu`.\n\nLine 14 ENtrypoint /tmp/here.sh\nIssue Category Title Description\n 6 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n
- ...
-ok 2 - Dockerfile
diff --git a/.automation/test/dockerfile/reports/expected-DOCKERFILE.tap b/.automation/test/dockerfile/reports/expected-DOCKERFILE.tap
new file mode 100644
index 00000000..45c81652
--- /dev/null
+++ b/.automation/test/dockerfile/reports/expected-DOCKERFILE.tap
@@ -0,0 +1,8 @@
+TAP version 13
+1..3
+not ok 1 - Dockerfile
+ ---
+ message: \nFile /tmp/lint/.automation/test/dockerfile/bad/Dockerfile\nIssues 6\n\nLine 1 from node latest\nIssue Category Title Description\n 1 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n 2 Clarity Base Image Latest Base images should not use the latest tag.\n Tag\n\nLine 4 run mkdir -p /usr/src/app\nIssue Category Title Description\n 3 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n\nLine 8 copy package.json /usr/src/app/ /here/there\nIssue Category Title Description\n 4 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n\nLine 9 RUN sudo npm install\nIssue Category Title Description\n 5 Possible Bug Use Of sudo Is Not Use of `sudo` is not allowed in a Dockerfile. From the official\n Allowed document [Best practices for writing\n Dockerfiles](https //docs.docker.com/engine/userguide/eng-image/doc\n kerfile_best-practices/) \n > You should avoid installing or using `sudo` since it has\n unpredictable TTY and signal-forwarding behavior that can cause\n more problems than it solves.\n > If you absolutely need functionality similar to `sudo` (e.g.,\n initializing the daemon as root but running it as non-root), you\n may be able to use `gosu`.\n\nLine 14 ENtrypoint /tmp/here.sh\nIssue Category Title Description\n 6 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n
+ ...
+ok 2 - Dockerfile
+ok 3 - Dockerfile.dev
diff --git a/.automation/test/dockerfile_hadolint/reports/expected-DOCKER.tap b/.automation/test/dockerfile_hadolint/reports/expected-DOCKER.tap
deleted file mode 100644
index 6aafb4c6..00000000
--- a/.automation/test/dockerfile_hadolint/reports/expected-DOCKER.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - Dockerfile
- ---
- message: \nFile /tmp/lint/.automation/test/docker/bad/Dockerfile\nIssues 6\n\nLine 1 from node latest\nIssue Category Title Description\n 1 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n 2 Clarity Base Image Latest Base images should not use the latest tag.\n Tag\n\nLine 4 run mkdir -p /usr/src/app\nIssue Category Title Description\n 3 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n\nLine 8 copy package.json /usr/src/app/ /here/there\nIssue Category Title Description\n 4 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n\nLine 9 RUN sudo npm install\nIssue Category Title Description\n 5 Possible Bug Use Of sudo Is Not Use of `sudo` is not allowed in a Dockerfile. From the official\n Allowed document [Best practices for writing\n Dockerfiles](https //docs.docker.com/engine/userguide/eng-image/doc\n kerfile_best-practices/) \n > You should avoid installing or using `sudo` since it has\n unpredictable TTY and signal-forwarding behavior that can cause\n more problems than it solves.\n > If you absolutely need functionality similar to `sudo` (e.g.,\n initializing the daemon as root but running it as non-root), you\n may be able to use `gosu`.\n\nLine 14 ENtrypoint /tmp/here.sh\nIssue Category Title Description\n 6 Clarity Capitalize For clarity and readability, all instructions in a Dockerfile\n Dockerfile should be uppercase.\n Instructions This is a convention adopted by most of the official images and\n greatly improves readability in long Dockerfiles. For an example\n of\n why this makes a difference, check out the current [redis\n Dockerfile](https //github.com/docker-library/redis/blob/b375650fb6\n 9b7db819e90c0033433c705b28656e/3.0/Dockerfile)\n and you should be able to easily see the instructions used.\n
- ...
-ok 2 - Dockerfile
diff --git a/.automation/test/dockerfile_hadolint/reports/expected-DOCKERFILE_HADOLINT.tap b/.automation/test/dockerfile_hadolint/reports/expected-DOCKERFILE_HADOLINT.tap
new file mode 100644
index 00000000..3608af9f
--- /dev/null
+++ b/.automation/test/dockerfile_hadolint/reports/expected-DOCKERFILE_HADOLINT.tap
@@ -0,0 +1,8 @@
+TAP version 13
+1..3
+not ok 1 - Dockerfile
+ ---
+ message: /tmp/lint/.automation/test/dockerfile_hadolint/bad/Dockerfile 1 DL3007 Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag\n/tmp/lint/.automation/test/dockerfile_hadolint/bad/Dockerfile 8 DL3021 COPY with more than 2 arguments requires the last argument to end with /\n/tmp/lint/.automation/test/dockerfile_hadolint/bad/Dockerfile 9 DL3004 Do not use sudo as it leads to unpredictable behavior. Use a tool like gosu to enforce root\n/tmp/lint/.automation/test/dockerfile_hadolint/bad/Dockerfile 11 DL3020 Use COPY instead of ADD for files and folders\n/tmp/lint/.automation/test/dockerfile_hadolint/bad/Dockerfile 14 DL3025 Use arguments JSON notation for CMD and ENTRYPOINT arguments\n
+ ...
+ok 2 - Dockerfile
+ok 3 - Dockerfile.dev
diff --git a/.automation/test/editorconfig/reports/expected-EDITORCONFIG.tap b/.automation/test/editorconfig/reports/expected-EDITORCONFIG.tap
new file mode 100644
index 00000000..6916a7bc
--- /dev/null
+++ b/.automation/test/editorconfig/reports/expected-EDITORCONFIG.tap
@@ -0,0 +1,10 @@
+TAP version 13
+1..5
+ok 1 - .editorconfig
+ok 2 - README.md
+not ok 3 - editorconfig-checker_bad_1.ext
+ ---
+ message: editorconfig/editorconfig-checker_bad_1.ext \n 1 Wrong amount of left-padding spaces(want multiple of 4)\n 2 Wrong amount of left-padding spaces(want multiple of 4)\n 3 Wrong amount of left-padding spaces(want multiple of 4)\n\n3 errors found\n
+ ...
+ok 4 - editorconfig-checker_good_1.ext
+ok 5 - expected-EDITORCONFIG.tap
diff --git a/.automation/test/env/reports/expected-ENV.tap b/.automation/test/env/reports/expected-ENV.tap
index 45b585bd..11c263a8 100644
--- a/.automation/test/env/reports/expected-ENV.tap
+++ b/.automation/test/env/reports/expected-ENV.tap
@@ -4,4 +4,4 @@ not ok 1 - env_bad_1.env
---
message: env/env_bad_1.env 1 LeadingCharacter Invalid leading character detected\nenv/env_bad_1.env 2 KeyWithoutValue The MY_ENV key should be with a value or have an equal sign\nenv/env_bad_1.env 3 IncorrectDelimiter The DB-NAME key has incorrect delimiter\nenv/env_bad_1.env 3 UnorderedKey The DB-NAME key should go before the LOGGER_LEVEL key\nenv/env_bad_1.env 4 LowercaseKey The DEbUG_hTTP key should be in uppercase\nenv/env_bad_1.env 4 UnorderedKey The DEbUG_hTTP key should go before the LOGGER_LEVEL key\nenv/env_bad_1.env 5 UnorderedKey The DB_NAME key should go before the DEbUG_hTTP key\n\nFound 7 problems\n
...
-ok 2 - /tmp/lint/.automation/test/env/env_good_1.env
+ok 2 - env_good_1.env
diff --git a/.automation/test/gherkin/reports/expected-GHERKIN.tap b/.automation/test/gherkin/reports/expected-GHERKIN.tap
new file mode 100644
index 00000000..076b76f6
--- /dev/null
+++ b/.automation/test/gherkin/reports/expected-GHERKIN.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - gherkin_bad_01.feature
+ ---
+ message: /tmp/lint/.automation/test/gherkin/gherkin_bad_01.feature\n 8 Scenario name is already used in /tmp/lint/.automation/test/gherkin/gherkin_bad_01.feature 4 no-dupe-scenario-names\n 11 Trailing spaces are not allowed no-trailing-spaces\n 12 Multiple empty lines are not allowed no-multiple-empty-lines\n
+ ...
+ok 2 - gherkin_good_01.feature
diff --git a/.automation/test/gherkin/reports/expected-GHERKIN.tap.ignored b/.automation/test/gherkin/reports/expected-GHERKIN.tap.ignored
deleted file mode 100644
index ac8af562..00000000
--- a/.automation/test/gherkin/reports/expected-GHERKIN.tap.ignored
+++ /dev/null
@@ -1 +0,0 @@
-TAP version 13
diff --git a/.automation/test/go/reports/expected-GO.tap b/.automation/test/go/reports/expected-GO.tap
new file mode 100644
index 00000000..ca209916
--- /dev/null
+++ b/.automation/test/go/reports/expected-GO.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - golang_bad_01.go
+ ---
+ message: level=errorg="[linters context] typechecking error go/golang_bad_01.go 1 1 expected 'package', found 'if'"\nlevel=warningg="[runner] Can't run linter goanalysis_metalinter failed prerequisites [(inspect@command-line-arguments, isgenerated@command-line-arguments) analysis skipped errors in package [- go/golang_bad_01.go 1 1 expected 'package', found 'if']]"\nlevel=warningg="[runner] Can't run linter unused buildir analysis skipped errors in package [- go/golang_bad_01.go 1 1 expected 'package', found 'if']"\nlevel=errorg="Running error buildir analysis skipped errors in package [- go/golang_bad_01.go 1 1 expected 'package', found 'if']"\n
+ ...
+ok 2 - golang_good_01.go
diff --git a/.automation/test/go/reports/expected-GO.tap.ignored b/.automation/test/go/reports/expected-GO.tap.ignored
deleted file mode 100644
index 13d6c1a7..00000000
--- a/.automation/test/go/reports/expected-GO.tap.ignored
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - golang_bad_01.go
- ---
- message: level=error msg="[linters context] typechecking error golang/golang_bad_01.go 1 1 expected 'package', found 'if'"\nlevel=warning msg="[runner] Can't run linter goanalysis_metalinter S1005 failed prerequisites [(inspect@command-line-arguments, isgenerated@command-line-arguments) analysis skipped errors in package [- golang/golang_bad_01.go 1 1 expected 'package', found 'if']]"\nlevel=warning msg="[runner] Can't run linter unused buildir analysis skipped errors in package [- golang/golang_bad_01.go 1 1 expected 'package', found 'if']"\nlevel=error msg="Running error buildir analysis skipped errors in package [- golang/golang_bad_01.go 1 1 expected 'package', found 'if']"\n
- ...
-ok 2 - golang_good_01.go
diff --git a/.automation/test/groovy/reports/expected-GROOVY.tap b/.automation/test/groovy/reports/expected-GROOVY.tap
new file mode 100644
index 00000000..243839cc
--- /dev/null
+++ b/.automation/test/groovy/reports/expected-GROOVY.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - groovy_bad_01.groovy
+ ---
+ message: GroovyLint Started CodeNarc Server\n/tmp/lint/.automation/test/groovy/groovy_bad_01.groovy\n 4 error Unexpected input '$' @ line 4, column 16. NglParseError \n\n\nnpm-groovy-lint results in 0 linted files \n┌─────────┬───────────┬─────────────┐\n│ (index) │ Severity │ Total found │\n├─────────┼───────────┼─────────────┤\n│ 0 │ 'Error' │ 1 │\n│ 1 │ 'Warning' │ 0 │\n│ 2 │ 'Info' │ 0 │\n└─────────┴───────────┴─────────────┘\nFailure 1 error(s) have been found \n 0 warning(s) have been found\n
+ ...
+ok 2 - groovy_good_01.groovy
diff --git a/.automation/test/html/reports/expected-HTML.tap.ignored b/.automation/test/html/reports/expected-HTML.tap
similarity index 99%
rename from .automation/test/html/reports/expected-HTML.tap.ignored
rename to .automation/test/html/reports/expected-HTML.tap
index 68a1d69f..c3d85af3 100644
--- a/.automation/test/html/reports/expected-HTML.tap.ignored
+++ b/.automation/test/html/reports/expected-HTML.tap
@@ -2,6 +2,6 @@ TAP version 13
1..2
not ok 1 - html_bad_01.html
---
- message: \n Config loaded /tmp/lint/.github/linters/.htmlhintrc\n\n /tmp/lint/.automation/test/html/html_bad_01.html\n L8 |
\n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L8 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L8 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L9 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L9 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L9 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L10 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L10 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L10 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L11 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L11 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L11 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L12 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L12 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L12 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L13 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L13 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L13 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L14 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L14 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L14 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L15 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L15 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L15 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L16 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L16 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L16 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L17 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L17 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L17 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L18 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L18 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L18 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L19 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L19 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L19 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L20 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L20 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L20 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L21 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L21 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L21 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L22 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L22 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L22 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L23 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L23 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L23 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L24 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L24 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L24 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L25 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L26 |
\n ^ Special characters must be escaped [ < ]. (spec-char-escape)\n L26 |
\n ^ Special characters must be escaped [ > ]. (spec-char-escape)\n L28 |
\n ^ Tag must be paired, no start tag [
] (tag-pair)\n L29 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L30 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L31 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L32 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L38 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L38 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L38 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L44 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L50 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L50 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L50 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L56 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L62 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L62 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L62 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L68 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L74 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L74 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L74 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L80 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L81 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L82 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L83 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L84 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L85 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L86 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L87 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L88 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L89 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L90 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L91 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L92 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L93 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L94 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L95 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L96 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L97 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n\nScanned 1 files, found 92 errors in 1 files (27 ms)\n
+ message: \n Config loaded /tmp/lint/.github/linters/.htmlhintrc\n\n /tmp/lint/.automation/test/html/html_bad_01.html\n L8 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L8 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L8 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L9 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L9 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L9 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L10 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L10 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L10 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L11 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L11 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L11 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L12 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L12 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L12 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L13 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L13 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L13 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L14 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L14 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L14 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L15 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L15 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L15 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L16 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L16 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L16 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L17 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L17 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L17 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L18 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L18 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L18 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L19 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L19 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L19 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L20 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L20 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L20 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L21 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L21 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L21 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L22 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L22 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L22 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L23 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L23 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L23 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L24 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L24 | \n ^ The value of attribute [ bad ] must be in double quotes. (attr-value-double-quotes)\n L24 | \n ^ Duplicate of attribute name [ bad ] was found. (attr-no-duplication)\n L25 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L26 |
\n ^ Special characters must be escaped [ < ]. (spec-char-escape)\n L26 |
\n ^ Special characters must be escaped [ > ]. (spec-char-escape)\n L28 |
\n ^ Tag must be paired, no start tag [
] (tag-pair)\n L29 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L30 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L31 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L32 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L38 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L38 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L38 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L44 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L50 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L50 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L50 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L56 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L62 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L62 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L62 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L68 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L74 | \n ^ The value of attribute [ class ] must be in double quotes. (attr-value-double-quotes)\n L74 | \n ^ The value of attribute [ what ] must be in double quotes. (attr-value-double-quotes)\n L74 | \n ^ The value of attribute [ something ] must be in double quotes. (attr-value-double-quotes)\n L80 | \n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L81 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L82 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L83 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L84 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L85 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L86 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L87 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L88 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L89 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L90 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L91 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L92 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L93 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L94 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L95 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L96 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n L97 |\n ^ Tag must be paired, no start tag [ ] (tag-pair)\n\nScanned 1 files, found 92 errors in 1 files\n
...
ok 2 - html_good_01.html
diff --git a/.automation/test/java/reports/expected-JAVA.tap b/.automation/test/java/reports/expected-JAVA.tap
new file mode 100644
index 00000000..a6356aaf
--- /dev/null
+++ b/.automation/test/java/reports/expected-JAVA.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - java_bad_1.java
+ ---
+ message: Starting audit...\n[ERROR] /tmp/lint/.automation/test/java/java_bad_1.java 1 1 Utility classes should not have a public or default constructor. [HideUtilityClassConstructor]\n[ERROR] /tmp/lint/.automation/test/java/java_bad_1.java 1 7 Name 'java_bad_1' must match pattern '^[A-Z][a-zA-Z0-9]*$'. [TypeName]\n[ERROR] /tmp/lint/.automation/test/java/java_bad_1.java 2 1 '{' at column 1 should be on the previous line. [LeftCurly]\n[ERROR] /tmp/lint/.automation/test/java/java_bad_1.java 4 29 Parameter args should be final. [FinalParameters]\n[ERROR] /tmp/lint/.automation/test/java/java_bad_1.java 4 40 Array brackets at illegal position. [ArrayTypeStyle]\n[ERROR] /tmp/lint/.automation/test/java/java_bad_1.java 5 5 '{' at column 5 should be on the previous line. [LeftCurly]\nAudit done.\nCheckstyle ends with 6 errors.\n
+ ...
+ok 2 - java_good_1.java
diff --git a/.automation/test/javascript_es/reports/expected-JAVASCRIPT_ES.tap b/.automation/test/javascript_es/reports/expected-JAVASCRIPT_ES.tap
index 35018c48..868075f6 100644
--- a/.automation/test/javascript_es/reports/expected-JAVASCRIPT_ES.tap
+++ b/.automation/test/javascript_es/reports/expected-JAVASCRIPT_ES.tap
@@ -4,4 +4,4 @@ not ok 1 - javascript_bad_1.js
---
message: \n/tmp/lint/.automation/test/javascript_es/javascript_bad_1.js\n 4 39 error Parsing error Unterminated regular expression literal\n\n✖ 1 problem (1 error, 0 warnings)\n
...
-ok 2 - /tmp/lint/.automation/test/javascript_es/javascript_good_1.js
+ok 2 - javascript_good_1.js
diff --git a/.automation/test/javascript_es/reports/expected-JAVASCRIPT_STANDARD.tap b/.automation/test/javascript_es/reports/expected-JAVASCRIPT_STANDARD.tap
deleted file mode 100644
index 42d92b34..00000000
--- a/.automation/test/javascript_es/reports/expected-JAVASCRIPT_STANDARD.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - javascript_bad_1.js
- ---
- message: standard Use JavaScript Standard Style (https //standardjs.com)\n /tmp/lint/.automation/test/javascript/javascript_bad_1.js 4 40 Parsing error Unterminated regular expression\n
- ...
-ok 2 - javascript_good_1.js
diff --git a/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_ES.tap b/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_ES.tap
deleted file mode 100644
index 7f79715b..00000000
--- a/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_ES.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - javascript_bad_1.js
- ---
- message: \n/tmp/lint/.automation/test/javascript_es/javascript_bad_1.js\n 4 39 error Parsing error Unterminated regular expression literal\n\n✖ 1 problem (1 error, 0 warnings)\n
- ...
-ok 2 - /tmp/lint/.automation/test/javascript_es/javascript_good_1.js
diff --git a/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_STANDARD.tap b/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_STANDARD.tap
index bee3139e..a521a0fa 100644
--- a/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_STANDARD.tap
+++ b/.automation/test/javascript_standard/reports/expected-JAVASCRIPT_STANDARD.tap
@@ -2,6 +2,6 @@ TAP version 13
1..2
not ok 1 - javascript_bad_1.js
---
- message: standard Use JavaScript Standard Style (https //standardjs.com)\n /tmp/lint/.automation/test/javascript_standard/javascript_bad_1.js 4 40 Parsing error Unterminated regular expression\n
+ message: standard Use JavaScript Standard Style (https //standardjs.com)\n /tmp/lint/.automation/test/javascript_standard/javascript_bad_1.js Parsing error Unterminated regular expression\n
...
-ok 2 - /tmp/lint/.automation/test/javascript_standard/javascript_good_1.js
+ok 2 - javascript_good_1.js
diff --git a/.automation/test/json/reports/expected-JSON.tap b/.automation/test/json/reports/expected-JSON.tap
new file mode 100644
index 00000000..53609bf9
--- /dev/null
+++ b/.automation/test/json/reports/expected-JSON.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - json_bad_1.json
+ ---
+ message: Error Parse error on line 6 \n...ng" { "level" 'ignore', "space\n----------------------^\nExpecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'\n at Object.parseError (/node_modules/jsonlint/lib/jsonlint.js)\n at Object.parse (/node_modules/jsonlint/lib/jsonlint.js)\n at parse (/node_modules/jsonlint/lib/cli.js)\n at main (/node_modules/jsonlint/lib/cli.js)\n at Object. (/node_modules/jsonlint/lib/cli.js)\n at Module._compile (internal/modules/cjs/loader.js)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js)\n at Module.load (internal/modules/cjs/loader.js)\n at Function.Module._load (internal/modules/cjs/loader.js)\n at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js)\n
+ ...
+ok 2 - json_good_1.json
diff --git a/.automation/test/json/reports/expected-JSON.tap.ignored b/.automation/test/json/reports/expected-JSON.tap.ignored
deleted file mode 100644
index e9be32b5..00000000
--- a/.automation/test/json/reports/expected-JSON.tap.ignored
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - json_bad_1.json
- ---
- message: Error Parse error on line 6 \n...ng" { "level" 'ignore', "space\n----------------------^\nExpecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'\n at Object.parseError (/node_modules/jsonlint/lib/jsonlint.js 55 11)\n at Object.parse (/node_modules/jsonlint/lib/jsonlint.js 132 22)\n at parse (/node_modules/jsonlint/lib/cli.js 82 14)\n at main (/node_modules/jsonlint/lib/cli.js 135 14)\n at Object. (/node_modules/jsonlint/lib/cli.js 179 1)\n at Module._compile (internal/modules/cjs/loader.js 1138 30)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js 1158 10)\n at Module.load (internal/modules/cjs/loader.js 986 32)\n at Function.Module._load (internal/modules/cjs/loader.js 879 14)\n at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js 71 12)\n
- ...
-ok 2 - json_good_1.json
diff --git a/.automation/test/kotlin/reports/expected-KOTLIN.tap b/.automation/test/kotlin/reports/expected-KOTLIN.tap
index 908308a6..a39864e4 100644
--- a/.automation/test/kotlin/reports/expected-KOTLIN.tap
+++ b/.automation/test/kotlin/reports/expected-KOTLIN.tap
@@ -4,4 +4,4 @@ not ok 1 - kotlin_bad_1.kt
---
message: /tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 1 1 File must end with a newline (\n)\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 2 1 Unexpected indentation (4) (should be 2)\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 2 20 Unnecessary semicolon\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 3 1 Unexpected indentation (4) (should be 2)\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 3 16 Redundant curly braces\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 3 27 Unnecessary semicolon\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 5 1 Unexpected indentation (4) (should be 2)\n/tmp/lint/.automation/test/kotlin/kotlin_bad_1.kt 5 15 Unnecessary semicolon\n
...
-ok 2 - /tmp/lint/.automation/test/kotlin/kotlint_good_1.kt
+ok 2 - kotlint_good_1.kt
diff --git a/.automation/test/kubernetes_kubeval/reports/expected-KUBERNETES_KUBEVAL.tap b/.automation/test/kubernetes_kubeval/reports/expected-KUBERNETES_KUBEVAL.tap
new file mode 100644
index 00000000..f54ec3f9
--- /dev/null
+++ b/.automation/test/kubernetes_kubeval/reports/expected-KUBERNETES_KUBEVAL.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - kubeval_bad_1.yaml
+ ---
+ message: WARN - /tmp/lint/.automation/test/kubernetes_kubeval/kubeval_bad_1.yaml contains an invalid Deployment (nginx-deployment) - image2 Additional property image2 is not allowed\n
+ ...
+ok 2 - kubeval_good_1.yaml
diff --git a/.automation/test/latex/reports/expected-LATEX.tap b/.automation/test/latex/reports/expected-LATEX.tap
new file mode 100644
index 00000000..28243b22
--- /dev/null
+++ b/.automation/test/latex/reports/expected-LATEX.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - latex_bad_1.tex
+ ---
+ message: Warning 1 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 12 Command terminated with space.\n\foo This is an error. \n\nWarning 1 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 13 Command terminated with space.\nSo is this \foo \n\nWarning 47 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 18 `section' expected, found `text' (ConTeXt).\n\stoptext \n\nWarning 2 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 22 Non-breaking space (`~') should have been used.\nThis is a faulty reference to \ref{foo} \n\nWarning 3 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 27 You should enclose the previous parenthesis with `{}'.\n$[(ab)^{-1}]^{-2}$ is not beautiful \n\nWarning 3 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 27 You should enclose the previous parenthesis with `{}'.\n$[(ab)^{-1}]^{-2}$ is not beautiful \n\nWarning 6 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 32 No italic correction (`\/') found.\nTesting {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. \n\nWarning 42 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 32 You should remove spaces in front of `\/'\nTesting {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. \n\nWarning 4 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 32 Italic correction (`\/') found in non-italic buffer.\nTesting {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. \n\nWarning 28 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 32 Don't use \/ in front of small punctuation.\nTesting {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. \n\nWarning 42 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 32 You should remove spaces in front of `\/'\nTesting {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. \n\nWarning 5 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 32 Italic correction (`\/') found more than once.\nTesting {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. \n\nWarning 42 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 37 You should remove spaces in front of `\/'\nTesting \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. \n\nWarning 4 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 37 Italic correction (`\/') found in non-italic buffer.\nTesting \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. \n\nWarning 4 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 37 Italic correction (`\/') found in non-italic buffer.\nTesting \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. \n\nWarning 42 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 37 You should remove spaces in front of `\/'\nTesting \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. \n\nWarning 4 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 37 Italic correction (`\/') found in non-italic buffer.\nTesting \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. \n\nWarning 4 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 37 Italic correction (`\/') found in non-italic buffer.\nTesting \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. \n\nWarning 4 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 38 Italic correction (`\/') found in non-italic buffer.\nTesting \textem{italic\/} in this \textit{sentence}, as \textem{you see}. \n\nWarning 7 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 42 Accent command `\'' needs use of `\i'.\nThis \'is a test of $\hat{j}$ accents. \n\nWarning 7 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 42 Accent command `\hat' needs use of `\jmath'.\nThis \'is a test of $\hat{j}$ accents. \n\nWarning 8 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 47 Wrong length of dash may have been used.\nIt wasn't anything - just a 2---3 star--shots. \n\nWarning 8 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 47 Wrong length of dash may have been used.\nIt wasn't anything - just a 2---3 star--shots. \n\nWarning 8 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 47 Wrong length of dash may have been used.\nIt wasn't anything - just a 2---3 star--shots. \n\nWarning 8 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 57 Wrong length of dash may have been used.\nThe Birch--Swinnerton--Dyer conjecture is not correct. \n\nWarning 8 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 57 Wrong length of dash may have been used.\nThe Birch--Swinnerton--Dyer conjecture is not correct. \n\nWarning 37 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 You should avoid spaces in front of parenthesis.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `)' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `}' found.\n)}{[])} }}}]]]))) \n\nWarning 9 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 `}' expected, found `)'.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `}' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `}' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `}' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `}' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `]' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `]' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `]' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `)' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `)' found.\n)}{[])} }}}]]]))) \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 64 Solo `)' found.\n)}{[])} }}}]]]))) \n\nWarning 9 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 69 `baz' expected, found `quux'.\n\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo} \n\nWarning 9 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 69 `quux' expected, found `baz'.\n\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo} \n\nWarning 10 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 69 Solo `asoi' found.\n\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo} \n\nWarning 11 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 75 You should use \ldots to achieve an ellipsis.\nFoo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$. \n\nWarning 11 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 75 You should use \ldots to achieve an ellipsis.\nFoo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$. \n\nWarning 11 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 75 You should use \cdots to achieve an ellipsis.\nFoo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$. \n\nWarning 11 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 75 You should use \ldots to achieve an ellipsis.\nFoo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$. \n\nWarning 11 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 75 You should use \cdots to achieve an ellipsis.\nFoo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$. \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 12 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 80 Interword spacing (`\ ') should perhaps be used.\n1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob. joe.! frank.? james.. george \n\nWarning 13 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 85 Intersentence spacing (`\@') should perhaps be used.\nLook at THIS! It's an error. \n\nWarning 1 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 90 Command terminated with space.\n\hat \n\nError 14 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 90 Could not find argument for command.\n\hat \n\nWarning 18 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 95 Use either `` or '' as an alternative to `"'.\nIs this an "example", or is it an �example�. \n\nWarning 18 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 95 Use either `` or '' as an alternative to `"'.\nIs this an "example", or is it an �example�. \n\nWarning 20 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 100 User-specified pattern found \unknown.\nThat bug is \unknown\ to me. \n\nWarning 23 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 110 Either `\,`` or ``\,` will look better.\n```Hello', I heard him said'', she remembered. \n\nWarning 24 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 115 Delete this space to maintain correct pagereferences.\nIndexing text \index{text} is fun! \n\nWarning 24 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 120 Delete this space to maintain correct pagereferences.\n \index{text} is fun! \n\nWarning 25 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 124 You might wish to put this between a pair of `{}'\n$5\cdot10^10$ \n\nWarning 26 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 129 You ought to remove spaces in front of punctuation.\nDo you understand ? \n\nWarning 29 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 133 $\times$ may look prettier here.\nThe program opens a screen sized 640x200 pixels \n\nWarning 31 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 144 This text may be ignored.\n\end{verbatim} foo bar \n\nWarning 32 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 148 Use ` to begin quotation, not '.\nThis is either an 'example`, an ''example`` or an `"`example'`'. \n\nWarning 33 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 148 Use ' to end quotation, not `.\nThis is either an 'example`, an ''example`` or an `"`example'`'. \n\nWarning 32 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 148 Use ` to begin quotation, not '.\nThis is either an 'example`, an ''example`` or an `"`example'`'. \n\nWarning 33 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 148 Use ' to end quotation, not `.\nThis is either an 'example`, an ''example`` or an `"`example'`'. \n\nWarning 34 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 148 Don't mix quotes.\nThis is either an 'example`, an ''example`` or an `"`example'`'. \n\nWarning 34 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 148 Don't mix quotes.\nThis is either an 'example`, an ''example`` or an `"`example'`'. \n\nWarning 35 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 153 You should perhaps use `\sin' instead.\n$sin^2 + cos^2 = 1$ \n\nWarning 35 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 153 You should perhaps use `\cos' instead.\n$sin^2 + cos^2 = 1$ \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should put a space in front of parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 37 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should avoid spaces after parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should put a space in front of parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 37 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should avoid spaces after parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 37 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should avoid spaces in front of parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should put a space in front of parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 37 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should avoid spaces after parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 37 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should avoid spaces in front of parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 158 You should put a space after parenthesis.\nThis( an example( Nuff said )), illustrates( ``my'' )point. \n\nWarning 38 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 162 You should not use punctuation in front of quotes.\n``An example,'' he said, ``would be great.'' \n\nWarning 38 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 162 You should not use punctuation in front of quotes.\n``An example,'' he said, ``would be great.'' \n\nWarning 39 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 167 Double space found.\nFor output codes, see table ~\ref{tab fmtout}. \n\nWarning 40 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 171 You should put punctuation outside inner math mode.\n$\this,$ and $$this$$. \n\nWarning 45 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 171 Use \[ ... \] instead of $$ ... $$.\n$\this,$ and $$this$$. \n\nWarning 40 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 171 You should put punctuation inside display math mode.\n$\this,$ and $$this$$. \n\nWarning 45 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 172 Use \[ ... \] instead of $$ ... $$.\n$\this$, and $$this.$$ \n\nWarning 1 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 175 Command terminated with space.\nfoo \above qux \n\nWarning 42 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 179 You should remove spaces in front of `\footnote'\nThis is a footnote \footnote{foo}. \n\nWarning 43 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 183 `\left' is normally not followed by `{'.\nHere is a mistake $\left{x\right}$. \n\nWarning 43 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 183 `\right' is normally not followed by `}'.\nHere is a mistake $\left{x\right}$. \n\nWarning 44 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 192 User Regex Always use \nmid.\nFor every $p\not|n$ you have an ugly prime which doesn't divide $n$. \n\nWarning 35 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 196 You should perhaps use `\sin' instead.\n\ensuremath{sin x\text{is not the same as sin x, but is the same as $sin x$}} \n\nWarning 35 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 196 You should perhaps use `\sin' instead.\n\ensuremath{sin x\text{is not the same as sin x, but is the same as $sin x$}} \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 197 You should put a space in front of parenthesis.\nAlso, $x(3)\text{ is not x(3) but it is $x(3)$}$ \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 201 You should put a space in front of parenthesis.\nBut this is not a \% comment, so we should find this error(right)? \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 204 You should put a space in front of parenthesis.\nHere(on this line only)is a warning $sin(x)$ suppressed. % CHKTEX 35 36 \n\nWarning 36 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 204 You should put a space after parenthesis.\nHere(on this line only)is a warning $sin(x)$ suppressed. % CHKTEX 35 36 \n\nWarning 44 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 206 User Regex 1 Capitalize before references.\nIn section~\ref{sec 3} we have a warning. \n\nWarning 44 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 210 User Regex -2 Vertical rules in tables are ugly.\n\begin{tabular*}{1.0\linewidth}[h]{|c|cc|} \n\nWarning 44 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 212 User Regex -2 Use \toprule, midrule, or \bottomrule from booktabs.\n \hline \n\nError 14 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 219 Could not find argument for command.\n\verb# \n\nWarning 31 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 223 This text may be ignored.\n\end{verbatim} FOO \n\nWarning 45 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 227 Use \[ ... \] instead of $$ ... $$.\n$$( \n\nWarning 16 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 232 Mathmode still on at end of LaTeX file.\n\n\nWarning 17 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 232 Number of `(' doesn't match the number of `)'!\n\n\nWarning 17 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 232 Number of `[' doesn't match the number of `]'!\n\n\nWarning 17 in /tmp/lint/.automation/test/latex/latex_bad_1.tex line 232 Number of `{' doesn't match the number of `}'!\n\n
+ ...
+ok 2 - latex_good_1.tex
diff --git a/.automation/test/lua/reports/expected-LUA.tap b/.automation/test/lua/reports/expected-LUA.tap
new file mode 100644
index 00000000..0de5620e
--- /dev/null
+++ b/.automation/test/lua/reports/expected-LUA.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - lua_bad_1.lua
+ ---
+ message: Checking /tmp/lint/.automation/test/lua/lua_bad_1.lua 1 error\n\n /tmp/lint/.automation/test/lua/lua_bad_1.lua 10 1 expected 'end' (to close 'function' on line 7) near \n\nTotal 0 warnings / 1 error in 1 file\n
+ ...
+ok 2 - lua_good_1.lua
diff --git a/.automation/test/markdown/reports/expected-MARKDOWN.tap b/.automation/test/markdown/reports/expected-MARKDOWN.tap
index da47ab78..c83f9a4f 100644
--- a/.automation/test/markdown/reports/expected-MARKDOWN.tap
+++ b/.automation/test/markdown/reports/expected-MARKDOWN.tap
@@ -1,8 +1,8 @@
TAP version 13
1..3
-ok 1 - /tmp/lint/.automation/test/markdown/README.md
+ok 1 - README.md
not ok 2 - markdown_bad_1.md
---
message: /tmp/lint/.automation/test/markdown/markdown_bad_1.md 1 MD041/first-line-heading/first-line-h1 First line in file should be a top level heading [Context "## Bad Markdown"]\n/tmp/lint/.automation/test/markdown/markdown_bad_1.md 5 MD001/heading-increment/header-increment Heading levels should only increment by one level at a time [Expected h3; Actual h6]\n/tmp/lint/.automation/test/markdown/markdown_bad_1.md 11 1 MD007/ul-indent Unordered list indentation [Expected 4; Actual 6]\n/tmp/lint/.automation/test/markdown/markdown_bad_1.md 13 MD040/fenced-code-language Fenced code blocks should have a language specified [Context "```"]\n/tmp/lint/.automation/test/markdown/markdown_bad_1.md 20 16 MD034/no-bare-urls Bare URL used [Context "https //github.com"]\n
...
-ok 3 - /tmp/lint/.automation/test/markdown/markdown_good_1.md
+ok 3 - markdown_good_1.md
diff --git a/.automation/test/perl/reports/expected-PERL.tap b/.automation/test/perl/reports/expected-PERL.tap
index a2e85136..e90e961d 100644
--- a/.automation/test/perl/reports/expected-PERL.tap
+++ b/.automation/test/perl/reports/expected-PERL.tap
@@ -4,4 +4,4 @@ not ok 1 - perl_bad_1.pl
---
message: Code before strictures are enabled at line 14, column 1. See page 429 of PBP. (Severity 5)\n
...
-ok 2 - /tmp/lint/.automation/test/perl/perl_good_1.pl
+ok 2 - perl_good_1.pl
diff --git a/.automation/test/php_builtin/reports/expected-PHP_BUILTIN.tap b/.automation/test/php_builtin/reports/expected-PHP_BUILTIN.tap
index 88cf2228..13e336ef 100644
--- a/.automation/test/php_builtin/reports/expected-PHP_BUILTIN.tap
+++ b/.automation/test/php_builtin/reports/expected-PHP_BUILTIN.tap
@@ -8,5 +8,5 @@ not ok 2 - php_bad_2.php
---
message: PHP Parse error syntax error, unexpected '}' in /tmp/lint/.automation/test/php_builtin/php_bad_2.php on line 15\nErrors parsing /tmp/lint/.automation/test/php_builtin/php_bad_2.php\n
...
-ok 3 - /tmp/lint/.automation/test/php_builtin/php_good_1.php
-ok 4 - /tmp/lint/.automation/test/php_builtin/php_good_2.php
+ok 3 - php_good_1.php
+ok 4 - php_good_2.php
diff --git a/.automation/test/php_builtin/reports/expected-PHP_PHPCS.tap.ignored b/.automation/test/php_builtin/reports/expected-PHP_PHPCS.tap.ignored
deleted file mode 100644
index bf7e541d..00000000
--- a/.automation/test/php_builtin/reports/expected-PHP_PHPCS.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_1.php\n----------------------------------------------------------------------\nFOUND 7 ERRORS AFFECTING 1 LINE\n----------------------------------------------------------------------\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 7 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_2.php\n----------------------------------------------------------------------\nFOUND 4 ERRORS AND 1 WARNING AFFECTING 4 LINES\n----------------------------------------------------------------------\n 1 | WARNING | [ ] A file should declare new symbols (classes,\n | | functions, constants, etc.) and cause no other\n | | side effects, or it should execute logic with\n | | side effects, but should not do both. The first\n | | symbol is defined on line 6 and the first side\n | | effect is on line 10.\n 6 | ERROR | [x] Opening brace should be on a new line\n 14 | ERROR | [x] Space before opening parenthesis of function call\n | | prohibited\n 15 | ERROR | [x] Newline required after opening brace\n 15 | ERROR | [x] Closing brace must be on a line by itself\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_builtin/reports/expected-PHP_PHPSTAN.tap b/.automation/test/php_builtin/reports/expected-PHP_PHPSTAN.tap
deleted file mode 100644
index 03f22dd1..00000000
--- a/.automation/test/php_builtin/reports/expected-PHP_PHPSTAN.tap
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: ------ ---------------------------------------------- \n Line php_bad_1.php \n ------ ---------------------------------------------- \n 3 Invalid numeric literal on line 3 \n 3 Invalid numeric literal on line 3 \n 3 Syntax error, unexpected '=' on line 3 \n 3 Syntax error, unexpected T_LNUMBER on line 3 \n 3 Syntax error, unexpected T_STRING on line 3 \n 3 Syntax error, unexpected T_STRING on line 3 \n ------ ---------------------------------------------- \n\n [ERROR] Found 6 errors \n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: ------ ----------------------------------------- \n Line php_bad_2.php \n ------ ----------------------------------------- \n 15 Syntax error, unexpected '}' on line 15 \n ------ ----------------------------------------- \n\n [ERROR] Found 1 error \n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_builtin/reports/expected-PHP_PSALM.tap.ignored b/.automation/test/php_builtin/reports/expected-PHP_PSALM.tap.ignored
deleted file mode 100644
index 57baa89a..00000000
--- a/.automation/test/php_builtin/reports/expected-PHP_PSALM.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR ParseError - php/php_bad_1.php 3 2 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 2 - Const pe98y is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 8 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 10 - Const n0u823n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 17 - Syntax error, unexpected '=' on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 18 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 21 - Invalid numeric literal on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 24 - Const u3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 28 - Const r08u2q098ry is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 40 - Syntax error, unexpected T_LNUMBER on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 42 - Const nq2yr09n2yr9 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 55 - Const y2n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 61 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 61 - Const yr is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 68 - Const yr3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\n------------------------------\n15 errors found\n------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR InvalidReturnType - php/php_bad_2.php 4 12 - The declared return type 'array' for takesAnInt is incorrect, got 'array{int, string(hello)}' (see https //psalm.dev/011)\n * @return array\n\n\nERROR InvalidReturnStatement - php/php_bad_2.php 7 12 - The inferred type 'array{int, string(hello)}' does not match the declared return type 'array' for takesAnInt (see https //psalm.dev/128)\n return [$i, "hello"];\n\n\nERROR InvalidScalarArgument - php/php_bad_2.php 11 12 - Argument 1 of takesAnInt expects int, string(some text) provided (see https //psalm.dev/012)\ntakesAnInt($data[0]);\n\n\nERROR ParseError - php/php_bad_2.php 15 1 - Syntax error, unexpected '}' on line 15 (see https //psalm.dev/173)\n} elseif ($condition) {}\n\n\n------------------------------\n4 errors found\n------------------------------\nPsalm can automatically fix 1 of these issues.\nRun Psalm again with \n[30;48;5;195m--alter --issues=InvalidReturnType --dry-run\nto see what it can fix.\n------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpcs/reports/expected-PHP_BUILTIN.tap b/.automation/test/php_phpcs/reports/expected-PHP_BUILTIN.tap
deleted file mode 100644
index beb3656e..00000000
--- a/.automation/test/php_phpcs/reports/expected-PHP_BUILTIN.tap
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: PHP Parse error syntax error, unexpected 'pe98y' (T_STRING) in /tmp/lint/.automation/test/php/php_bad_1.php on line 3\nErrors parsing /tmp/lint/.automation/test/php/php_bad_1.php\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: PHP Parse error syntax error, unexpected '}' in /tmp/lint/.automation/test/php/php_bad_2.php on line 15\nErrors parsing /tmp/lint/.automation/test/php/php_bad_2.php\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpcs/reports/expected-PHP_PHPCS.tap b/.automation/test/php_phpcs/reports/expected-PHP_PHPCS.tap
new file mode 100644
index 00000000..5084f32e
--- /dev/null
+++ b/.automation/test/php_phpcs/reports/expected-PHP_PHPCS.tap
@@ -0,0 +1,12 @@
+TAP version 13
+1..4
+not ok 1 - php_bad_1.php
+ ---
+ message: \nFILE /tmp/lint/.automation/test/php_phpcs/php_bad_1.php\n----------------------------------------------------------------------\nFOUND 7 ERRORS AFFECTING 1 LINE\n----------------------------------------------------------------------\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 7 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\nTime ; Memory 6MB\n
+ ...
+not ok 2 - php_bad_2.php
+ ---
+ message: \nFILE /tmp/lint/.automation/test/php_phpcs/php_bad_2.php\n----------------------------------------------------------------------\nFOUND 4 ERRORS AND 1 WARNING AFFECTING 4 LINES\n----------------------------------------------------------------------\n 1 | WARNING | [ ] A file should declare new symbols (classes,\n | | functions, constants, etc.) and cause no other\n | | side effects, or it should execute logic with\n | | side effects, but should not do both. The first\n | | symbol is defined on line 6 and the first side\n | | effect is on line 10.\n 6 | ERROR | [x] Opening brace should be on a new line\n 14 | ERROR | [x] Space before opening parenthesis of function call\n | | prohibited\n 15 | ERROR | [x] Newline required after opening brace\n 15 | ERROR | [x] Closing brace must be on a line by itself\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\nTime ; Memory 6MB\n
+ ...
+ok 3 - php_good_1.php
+ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpcs/reports/expected-PHP_PHPCS.tap.ignored b/.automation/test/php_phpcs/reports/expected-PHP_PHPCS.tap.ignored
deleted file mode 100644
index bf7e541d..00000000
--- a/.automation/test/php_phpcs/reports/expected-PHP_PHPCS.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_1.php\n----------------------------------------------------------------------\nFOUND 7 ERRORS AFFECTING 1 LINE\n----------------------------------------------------------------------\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 7 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_2.php\n----------------------------------------------------------------------\nFOUND 4 ERRORS AND 1 WARNING AFFECTING 4 LINES\n----------------------------------------------------------------------\n 1 | WARNING | [ ] A file should declare new symbols (classes,\n | | functions, constants, etc.) and cause no other\n | | side effects, or it should execute logic with\n | | side effects, but should not do both. The first\n | | symbol is defined on line 6 and the first side\n | | effect is on line 10.\n 6 | ERROR | [x] Opening brace should be on a new line\n 14 | ERROR | [x] Space before opening parenthesis of function call\n | | prohibited\n 15 | ERROR | [x] Newline required after opening brace\n 15 | ERROR | [x] Closing brace must be on a line by itself\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpcs/reports/expected-PHP_PHPSTAN.tap b/.automation/test/php_phpcs/reports/expected-PHP_PHPSTAN.tap
deleted file mode 100644
index 03f22dd1..00000000
--- a/.automation/test/php_phpcs/reports/expected-PHP_PHPSTAN.tap
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: ------ ---------------------------------------------- \n Line php_bad_1.php \n ------ ---------------------------------------------- \n 3 Invalid numeric literal on line 3 \n 3 Invalid numeric literal on line 3 \n 3 Syntax error, unexpected '=' on line 3 \n 3 Syntax error, unexpected T_LNUMBER on line 3 \n 3 Syntax error, unexpected T_STRING on line 3 \n 3 Syntax error, unexpected T_STRING on line 3 \n ------ ---------------------------------------------- \n\n [ERROR] Found 6 errors \n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: ------ ----------------------------------------- \n Line php_bad_2.php \n ------ ----------------------------------------- \n 15 Syntax error, unexpected '}' on line 15 \n ------ ----------------------------------------- \n\n [ERROR] Found 1 error \n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpcs/reports/expected-PHP_PSALM.tap.ignored b/.automation/test/php_phpcs/reports/expected-PHP_PSALM.tap.ignored
deleted file mode 100644
index 57baa89a..00000000
--- a/.automation/test/php_phpcs/reports/expected-PHP_PSALM.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR ParseError - php/php_bad_1.php 3 2 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 2 - Const pe98y is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 8 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 10 - Const n0u823n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 17 - Syntax error, unexpected '=' on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 18 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 21 - Invalid numeric literal on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 24 - Const u3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 28 - Const r08u2q098ry is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 40 - Syntax error, unexpected T_LNUMBER on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 42 - Const nq2yr09n2yr9 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 55 - Const y2n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 61 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 61 - Const yr is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 68 - Const yr3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\n------------------------------\n15 errors found\n------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR InvalidReturnType - php/php_bad_2.php 4 12 - The declared return type 'array' for takesAnInt is incorrect, got 'array{int, string(hello)}' (see https //psalm.dev/011)\n * @return array\n\n\nERROR InvalidReturnStatement - php/php_bad_2.php 7 12 - The inferred type 'array{int, string(hello)}' does not match the declared return type 'array' for takesAnInt (see https //psalm.dev/128)\n return [$i, "hello"];\n\n\nERROR InvalidScalarArgument - php/php_bad_2.php 11 12 - Argument 1 of takesAnInt expects int, string(some text) provided (see https //psalm.dev/012)\ntakesAnInt($data[0]);\n\n\nERROR ParseError - php/php_bad_2.php 15 1 - Syntax error, unexpected '}' on line 15 (see https //psalm.dev/173)\n} elseif ($condition) {}\n\n\n------------------------------\n4 errors found\n------------------------------\nPsalm can automatically fix 1 of these issues.\nRun Psalm again with \n[30;48;5;195m--alter --issues=InvalidReturnType --dry-run\nto see what it can fix.\n------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpstan/reports/expected-PHP_BUILTIN.tap b/.automation/test/php_phpstan/reports/expected-PHP_BUILTIN.tap
deleted file mode 100644
index beb3656e..00000000
--- a/.automation/test/php_phpstan/reports/expected-PHP_BUILTIN.tap
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: PHP Parse error syntax error, unexpected 'pe98y' (T_STRING) in /tmp/lint/.automation/test/php/php_bad_1.php on line 3\nErrors parsing /tmp/lint/.automation/test/php/php_bad_1.php\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: PHP Parse error syntax error, unexpected '}' in /tmp/lint/.automation/test/php/php_bad_2.php on line 15\nErrors parsing /tmp/lint/.automation/test/php/php_bad_2.php\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpstan/reports/expected-PHP_PHPCS.tap.ignored b/.automation/test/php_phpstan/reports/expected-PHP_PHPCS.tap.ignored
deleted file mode 100644
index bf7e541d..00000000
--- a/.automation/test/php_phpstan/reports/expected-PHP_PHPCS.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_1.php\n----------------------------------------------------------------------\nFOUND 7 ERRORS AFFECTING 1 LINE\n----------------------------------------------------------------------\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 7 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_2.php\n----------------------------------------------------------------------\nFOUND 4 ERRORS AND 1 WARNING AFFECTING 4 LINES\n----------------------------------------------------------------------\n 1 | WARNING | [ ] A file should declare new symbols (classes,\n | | functions, constants, etc.) and cause no other\n | | side effects, or it should execute logic with\n | | side effects, but should not do both. The first\n | | symbol is defined on line 6 and the first side\n | | effect is on line 10.\n 6 | ERROR | [x] Opening brace should be on a new line\n 14 | ERROR | [x] Space before opening parenthesis of function call\n | | prohibited\n 15 | ERROR | [x] Newline required after opening brace\n 15 | ERROR | [x] Closing brace must be on a line by itself\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpstan/reports/expected-PHP_PHPSTAN.tap b/.automation/test/php_phpstan/reports/expected-PHP_PHPSTAN.tap
index 255013f0..03f22dd1 100644
--- a/.automation/test/php_phpstan/reports/expected-PHP_PHPSTAN.tap
+++ b/.automation/test/php_phpstan/reports/expected-PHP_PHPSTAN.tap
@@ -8,5 +8,5 @@ not ok 2 - php_bad_2.php
---
message: ------ ----------------------------------------- \n Line php_bad_2.php \n ------ ----------------------------------------- \n 15 Syntax error, unexpected '}' on line 15 \n ------ ----------------------------------------- \n\n [ERROR] Found 1 error \n
...
-ok 3 - /tmp/lint/.automation/test/php_phpstan/php_good_1.php
-ok 4 - /tmp/lint/.automation/test/php_phpstan/php_good_2.php
+ok 3 - php_good_1.php
+ok 4 - php_good_2.php
diff --git a/.automation/test/php_phpstan/reports/expected-PHP_PSALM.tap.ignored b/.automation/test/php_phpstan/reports/expected-PHP_PSALM.tap.ignored
deleted file mode 100644
index 57baa89a..00000000
--- a/.automation/test/php_phpstan/reports/expected-PHP_PSALM.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR ParseError - php/php_bad_1.php 3 2 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 2 - Const pe98y is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 8 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 10 - Const n0u823n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 17 - Syntax error, unexpected '=' on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 18 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 21 - Invalid numeric literal on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 24 - Const u3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 28 - Const r08u2q098ry is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 40 - Syntax error, unexpected T_LNUMBER on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 42 - Const nq2yr09n2yr9 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 55 - Const y2n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 61 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 61 - Const yr is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 68 - Const yr3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\n------------------------------\n15 errors found\n------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR InvalidReturnType - php/php_bad_2.php 4 12 - The declared return type 'array' for takesAnInt is incorrect, got 'array{int, string(hello)}' (see https //psalm.dev/011)\n * @return array\n\n\nERROR InvalidReturnStatement - php/php_bad_2.php 7 12 - The inferred type 'array{int, string(hello)}' does not match the declared return type 'array' for takesAnInt (see https //psalm.dev/128)\n return [$i, "hello"];\n\n\nERROR InvalidScalarArgument - php/php_bad_2.php 11 12 - Argument 1 of takesAnInt expects int, string(some text) provided (see https //psalm.dev/012)\ntakesAnInt($data[0]);\n\n\nERROR ParseError - php/php_bad_2.php 15 1 - Syntax error, unexpected '}' on line 15 (see https //psalm.dev/173)\n} elseif ($condition) {}\n\n\n------------------------------\n4 errors found\n------------------------------\nPsalm can automatically fix 1 of these issues.\nRun Psalm again with \n[30;48;5;195m--alter --issues=InvalidReturnType --dry-run\nto see what it can fix.\n------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_psalm/reports/expected-PHP_BUILTIN.tap b/.automation/test/php_psalm/reports/expected-PHP_BUILTIN.tap
deleted file mode 100644
index beb3656e..00000000
--- a/.automation/test/php_psalm/reports/expected-PHP_BUILTIN.tap
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: PHP Parse error syntax error, unexpected 'pe98y' (T_STRING) in /tmp/lint/.automation/test/php/php_bad_1.php on line 3\nErrors parsing /tmp/lint/.automation/test/php/php_bad_1.php\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: PHP Parse error syntax error, unexpected '}' in /tmp/lint/.automation/test/php/php_bad_2.php on line 15\nErrors parsing /tmp/lint/.automation/test/php/php_bad_2.php\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_psalm/reports/expected-PHP_PHPCS.tap.ignored b/.automation/test/php_psalm/reports/expected-PHP_PHPCS.tap.ignored
deleted file mode 100644
index bf7e541d..00000000
--- a/.automation/test/php_psalm/reports/expected-PHP_PHPCS.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_1.php\n----------------------------------------------------------------------\nFOUND 7 ERRORS AFFECTING 1 LINE\n----------------------------------------------------------------------\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "="; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space before "-"; 0 found\n 3 | ERROR | [x] Expected at least 1 space after "-"; 0 found\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 7 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: \nFILE /tmp/lint/.automation/test/php/php_bad_2.php\n----------------------------------------------------------------------\nFOUND 4 ERRORS AND 1 WARNING AFFECTING 4 LINES\n----------------------------------------------------------------------\n 1 | WARNING | [ ] A file should declare new symbols (classes,\n | | functions, constants, etc.) and cause no other\n | | side effects, or it should execute logic with\n | | side effects, but should not do both. The first\n | | symbol is defined on line 6 and the first side\n | | effect is on line 10.\n 6 | ERROR | [x] Opening brace should be on a new line\n 14 | ERROR | [x] Space before opening parenthesis of function call\n | | prohibited\n 15 | ERROR | [x] Newline required after opening brace\n 15 | ERROR | [x] Closing brace must be on a line by itself\n----------------------------------------------------------------------\nPHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY\n----------------------------------------------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_psalm/reports/expected-PHP_PHPSTAN.tap b/.automation/test/php_psalm/reports/expected-PHP_PHPSTAN.tap
deleted file mode 100644
index 03f22dd1..00000000
--- a/.automation/test/php_psalm/reports/expected-PHP_PHPSTAN.tap
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: ------ ---------------------------------------------- \n Line php_bad_1.php \n ------ ---------------------------------------------- \n 3 Invalid numeric literal on line 3 \n 3 Invalid numeric literal on line 3 \n 3 Syntax error, unexpected '=' on line 3 \n 3 Syntax error, unexpected T_LNUMBER on line 3 \n 3 Syntax error, unexpected T_STRING on line 3 \n 3 Syntax error, unexpected T_STRING on line 3 \n ------ ---------------------------------------------- \n\n [ERROR] Found 6 errors \n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: ------ ----------------------------------------- \n Line php_bad_2.php \n ------ ----------------------------------------- \n 15 Syntax error, unexpected '}' on line 15 \n ------ ----------------------------------------- \n\n [ERROR] Found 1 error \n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/php_psalm/reports/expected-PHP_PSALM.tap b/.automation/test/php_psalm/reports/expected-PHP_PSALM.tap
new file mode 100644
index 00000000..e1454817
--- /dev/null
+++ b/.automation/test/php_psalm/reports/expected-PHP_PSALM.tap
@@ -0,0 +1,12 @@
+TAP version 13
+1..4
+not ok 1 - php_bad_1.php
+ ---
+ message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR ParseError - php_psalm/php_bad_1.php 3 2 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 2 - Const pe98y is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 8 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 10 - Const n0u823n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php_psalm/php_bad_1.php 3 17 - Syntax error, unexpected '=' on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 18 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php_psalm/php_bad_1.php 3 21 - Invalid numeric literal on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 24 - Const u3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 28 - Const r08u2q098ry is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php_psalm/php_bad_1.php 3 40 - Syntax error, unexpected T_LNUMBER on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 42 - Const nq2yr09n2yr9 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 55 - Const y2n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php_psalm/php_bad_1.php 3 61 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 61 - Const yr is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php_psalm/php_bad_1.php 3 68 - Const yr3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\n------------------------------\n15 errors found\n------------------------------\n\nChecks took seconds and used\nPsalm was unable to infer types in the codebase\n
+ ...
+not ok 2 - php_bad_2.php
+ ---
+ message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR InvalidReturnType - php_psalm/php_bad_2.php 4 12 - The declared return type 'array' for takesAnInt is incorrect, got 'array{int, string(hello)}' (see https //psalm.dev/011)\n * @return array\n\n\nERROR InvalidReturnStatement - php_psalm/php_bad_2.php 7 12 - The inferred type 'array{int, string(hello)}' does not match the declared return type 'array' for takesAnInt (see https //psalm.dev/128)\n return [$i, "hello"];\n\n\nERROR InvalidScalarArgument - php_psalm/php_bad_2.php 11 12 - Argument 1 of takesAnInt expects int, string(some text) provided (see https //psalm.dev/012)\ntakesAnInt($data[0]);\n\n\nERROR ParseError - php_psalm/php_bad_2.php 15 1 - Syntax error, unexpected '}' on line 15 (see https //psalm.dev/173)\n} elseif ($condition) {}\n\n\n------------------------------\n4 errors found\n------------------------------\nPsalm can automatically fix 1 of these issues.\nRun Psalm again with \n--alter --issues=InvalidReturnType --dry-run\nto see what it can fix.\n------------------------------\n\nChecks took seconds and used\nPsalm was unable to infer types in the codebase\n
+ ...
+ok 3 - php_good_1.php
+ok 4 - php_good_2.php
diff --git a/.automation/test/php_psalm/reports/expected-PHP_PSALM.tap.ignored b/.automation/test/php_psalm/reports/expected-PHP_PSALM.tap.ignored
deleted file mode 100644
index 57baa89a..00000000
--- a/.automation/test/php_psalm/reports/expected-PHP_PSALM.tap.ignored
+++ /dev/null
@@ -1,12 +0,0 @@
-TAP version 13
-1..4
-not ok 1 - php_bad_1.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR ParseError - php/php_bad_1.php 3 2 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 2 - Const pe98y is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 8 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 10 - Const n0u823n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 17 - Syntax error, unexpected '=' on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 18 - Const r is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 21 - Invalid numeric literal on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 24 - Const u3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 28 - Const r08u2q098ry is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 40 - Syntax error, unexpected T_LNUMBER on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 42 - Const nq2yr09n2yr9 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 55 - Const y2n is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR ParseError - php/php_bad_1.php 3 61 - Syntax error, unexpected T_STRING on line 3 (see https //psalm.dev/173)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 61 - Const yr is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\nERROR UndefinedConstant - php/php_bad_1.php 3 68 - Const yr3 is not defined (see https //psalm.dev/020)\n2pe98y r-n0u823n=r 092u3- r08u2q098ry 09nq2yr09n2yr9 y2n-93yr 298yr3 29\n\n\n------------------------------\n15 errors found\n------------------------------\n\n
- ...
-not ok 2 - php_bad_2.php
- ---
- message: Scanning files...\nAnalyzing files...\n\nE\n\nERROR InvalidReturnType - php/php_bad_2.php 4 12 - The declared return type 'array' for takesAnInt is incorrect, got 'array{int, string(hello)}' (see https //psalm.dev/011)\n * @return array\n\n\nERROR InvalidReturnStatement - php/php_bad_2.php 7 12 - The inferred type 'array{int, string(hello)}' does not match the declared return type 'array' for takesAnInt (see https //psalm.dev/128)\n return [$i, "hello"];\n\n\nERROR InvalidScalarArgument - php/php_bad_2.php 11 12 - Argument 1 of takesAnInt expects int, string(some text) provided (see https //psalm.dev/012)\ntakesAnInt($data[0]);\n\n\nERROR ParseError - php/php_bad_2.php 15 1 - Syntax error, unexpected '}' on line 15 (see https //psalm.dev/173)\n} elseif ($condition) {}\n\n\n------------------------------\n4 errors found\n------------------------------\nPsalm can automatically fix 1 of these issues.\nRun Psalm again with \n[30;48;5;195m--alter --issues=InvalidReturnType --dry-run\nto see what it can fix.\n------------------------------\n\n
- ...
-ok 3 - php_good_1.php
-ok 4 - php_good_2.php
diff --git a/.automation/test/powershell/powershell_bad_1.ps1 b/.automation/test/powershell/powershell_bad_1.ps1
index 12a9f272..757811b2 100644
--- a/.automation/test/powershell/powershell_bad_1.ps1
+++ b/.automation/test/powershell/powershell_bad_1.ps1
@@ -6,8 +6,4 @@ function BadFunction {
)
$Username
$Password
- $VariableThatIsNotUsedLater = '5'
- try {
- 'Empty Catch Block'
- } catch {}
}
diff --git a/.automation/test/powershell/reports/expected-POWERSHELL.tap b/.automation/test/powershell/reports/expected-POWERSHELL.tap
new file mode 100644
index 00000000..b228d39d
--- /dev/null
+++ b/.automation/test/powershell/reports/expected-POWERSHELL.tap
@@ -0,0 +1,17 @@
+TAP version 13
+1..6
+not ok 1 - powershell_bad_1.ps1
+ ---
+ message: \nRuleName Severity ScriptName Line Message\n-------- -------- ---------- ---- -------\nPSAvoidUsingUsernameAndPasswordPara Error powershell 4 Function 'Bad\nms _bad_1.ps1 Function' has\n both Usernam\n e and Passwor\n d parameters.\n Either set t\n he type of th\n e Password pa\n rameter to Se\n cureString or\n replace the\n Username and\n Password para\n meters with a\n Credential p\n arameter of t\n ype PSCredent\n ial. If using\n a Credential\n parameter in\n PowerShell 4\n .0 or earlier\n , please defi\n ne a credenti\n al transforma\n tion attribut\n e after the P\n SCredential t\n ype attribute\n .\nPSAvoidUsingPlainTextForPassword Warning powershell 5 Parameter '$P\n _bad_1.ps1 assword' shou\n ld use Secure\n String, other\n wise this wil\n l expose sens\n itive informa\n tion. See Con\n vertTo-Secure\n String for mo\n re informatio\n n.\n
+ ...
+not ok 2 - powershell_bad_1.psd1
+ ---
+ message: \nRuleName Severity ScriptName Line Message\n-------- -------- ---------- ---- -------\nTerminatorExpectedAtEndOfString ParseError powershell 2 The string is\n _bad_1.psd missing the\n 1 terminator '\n .\nMissingEndCurlyBrace ParseError powershell 1 Missing closi\n _bad_1.psd ng '}' in sta\n 1 tement block\n or type defin\n ition.\n
+ ...
+not ok 3 - powershell_bad_1.psm1
+ ---
+ message: \nRuleName Severity ScriptName Line Message\n-------- -------- ---------- ---- -------\nTerminatorExpectedAtEndOfString ParseError powershell 1 The string is\n _bad_1.psm missing the\n 1 terminator "\n .\n
+ ...
+ok 4 - powershell_good_1.ps1
+ok 5 - powershell_good_1.psd1
+ok 6 - powershell_good_1.psm1
diff --git a/.automation/test/powershell/reports/expected-POWERSHELL.tap.ignored b/.automation/test/powershell/reports/expected-POWERSHELL.tap.ignored
deleted file mode 100644
index c1ba772d..00000000
--- a/.automation/test/powershell/reports/expected-POWERSHELL.tap.ignored
+++ /dev/null
@@ -1,17 +0,0 @@
-TAP version 13
-1..6
-not ok 1 - powershell_bad_1.ps1
- ---
- message: \nRuleName Severity ScriptName Line Message\n-------- -------- ---------- ---- -------\nPSAvoidUsingEmptyCatchBlock Warning powershell 12 Empty catch b\n _bad_1.ps1 lock is used.\n Please use W\n rite-Error or\n throw statem\n ents in catch\n blocks.\nPSAvoidUsingUsernameAndPasswordPara Error powershell 4 Function 'Bad\nms _bad_1.ps1 Function' has\n both Usernam\n e and Passwor\n d parameters.\n Either set t\n he type of th\n e Password pa\n rameter to Se\n cureString or\n replace the\n Username and\n Password para\n meters with a\n Credential p\n arameter of t\n ype PSCredent\n ial. If using\n a Credential\n parameter in\n PowerShell 4\n .0 or earlier\n , please defi\n ne a credenti\n al transforma\n tion attribut\n e after the P\n SCredential t\n ype attribute\n .\nPSAvoidTrailingWhitespace Information powershell 11 Line has trai\n _bad_1.ps1 ling whitespa\n ce\nPSAvoidUsingPlainTextForPassword Warning powershell 5 Parameter '$P\n _bad_1.ps1 assword' shou\n ld use Secure\n String, other\n wise this wil\n l expose sens\n itive informa\n tion. See Con\n vertTo-Secure\n String for mo\n re informatio\n n.\nPSUseDeclaredVarsMoreThanAssignment Warning powershell 9 The variable\ns _bad_1.ps1 'VariableThat\n IsNotUsedLate\n r' is assigne\n d but never u\n sed.\n
- ...
-not ok 2 - powershell_bad_1.psd1
- ---
- message: \nRuleName Severity ScriptName Line Message\n-------- -------- ---------- ---- -------\nTerminatorExpectedAtEndOfString ParseError powershell 2 The string is\n _bad_1.psd missing the\n 1 terminator '\n .\nMissingEndCurlyBrace ParseError powershell 1 Missing closi\n _bad_1.psd ng '}' in sta\n 1 tement block\n or type defin\n ition.\n
- ...
-not ok 3 - powershell_bad_1.psm1
- ---
- message: \nRuleName Severity ScriptName Line Message\n-------- -------- ---------- ---- -------\nTerminatorExpectedAtEndOfString ParseError powershell 1 The string is\n _bad_1.psm missing the\n 1 terminator "\n .\n
- ...
-ok 4 - powershell_good_1.ps1
-ok 5 - powershell_good_1.psd1
-ok 6 - powershell_good_1.psm1
diff --git a/.automation/test/protobuf/reports/expected-PROTOBUF.tap b/.automation/test/protobuf/reports/expected-PROTOBUF.tap
index 918a206e..14453e36 100644
--- a/.automation/test/protobuf/reports/expected-PROTOBUF.tap
+++ b/.automation/test/protobuf/reports/expected-PROTOBUF.tap
@@ -4,4 +4,4 @@ not ok 1 - protobuf_bad_1.proto
---
message: [protobuf/protobuf_bad_1.proto 8 1] The order of Import is invalid. Check if the file is ordered in the correct manner.\n[protobuf/protobuf_bad_1.proto 18 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 19 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 20 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 21 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 24 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 26 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 28 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 25 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 27 7] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 29 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 30 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 31 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 34 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 47 5] Found an incorrect indentation style " ". " " is correct.\n[protobuf/protobuf_bad_1.proto 3 1] The line length is 91, but it must be shorter than 80\n[protobuf/protobuf_bad_1.proto 4 1] Package name "examplePb" must only contains lowercase letters, digits and/or periods.\n[protobuf/protobuf_bad_1.proto 8 1] Imports are not sorted.\n[protobuf/protobuf_bad_1.proto 9 1] Imports are not sorted.\n[protobuf/protobuf_bad_1.proto 14 1] Imports are not sorted.\n[protobuf/protobuf_bad_1.proto 15 1] Imports are not sorted.\n[protobuf/protobuf_bad_1.proto 19 5] EnumField name "UNKNOWN" with zero value should have the suffix "UNSPECIFIED"\n[protobuf/protobuf_bad_1.proto 17 1] Enum name "enumAllowingAlias" must be UpperCamelCase\n[protobuf/protobuf_bad_1.proto 36 3] Field "inner_message" should avoid required for proto3\n[protobuf/protobuf_bad_1.proto 37 3] Group "Result" should be avoided for proto3\n[protobuf/protobuf_bad_1.proto 40 3] Group "Result" should be avoided for proto3\n[protobuf/protobuf_bad_1.proto 43 3] Group "Regular" should be avoided for proto3\n[protobuf/protobuf_bad_1.proto 29 5] Repeated field name "inner_message" must be pluralized name "inner_messages"\n[protobuf/protobuf_bad_1.proto 40 3] Repeated group name "Result" must be pluralized name "Results"\n[protobuf/protobuf_bad_1.proto 42 3] Repeated field name "paper" must be pluralized name "papers"\n[protobuf/protobuf_bad_1.proto 43 3] Repeated group name "Regular" must be pluralized name "Regulars"\n[protobuf/protobuf_bad_1.proto 23 1] Message name "outer" must be UpperCamelCase\n[protobuf/protobuf_bad_1.proto 26 5] Message name "inner" must be UpperCamelCase\n[protobuf/protobuf_bad_1.proto 47 5] RPC name "search" must be UpperCamelCase\n
...
-ok 2 - /tmp/lint/.automation/test/protobuf/protobuf_good_1.proto
+ok 2 - protobuf_good_1.proto
diff --git a/.automation/test/python_black/reports/expected-PYTHON.tap b/.automation/test/python_black/reports/expected-PYTHON.tap
deleted file mode 100644
index 1751d70f..00000000
--- a/.automation/test/python_black/reports/expected-PYTHON.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - python_bad_1.py
- ---
- message: ************* Module python_bad_1\npython/python_bad_1.py 15 24 E0001 invalid syntax (, line 15) (syntax-error)\n
- ...
-ok 2 - python_good_1.py
diff --git a/.automation/test/python_black/reports/expected-PYTHON_BLACK.tap b/.automation/test/python_black/reports/expected-PYTHON_BLACK.tap
new file mode 100644
index 00000000..2b8f0e2d
--- /dev/null
+++ b/.automation/test/python_black/reports/expected-PYTHON_BLACK.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - python_bad_1.py
+ ---
+ message: error cannot format /tmp/lint/.automation/test/python_black/python_bad_1.py Cannot parse 15 23 if github_token is None\nOh no! 💥 💔 💥\n1 file would fail to reformat.\n
+ ...
+ok 2 - python_good_1.py
diff --git a/.automation/test/python_flake8/reports/expected-PYTHON.tap b/.automation/test/python_flake8/reports/expected-PYTHON.tap
deleted file mode 100644
index 1751d70f..00000000
--- a/.automation/test/python_flake8/reports/expected-PYTHON.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - python_bad_1.py
- ---
- message: ************* Module python_bad_1\npython/python_bad_1.py 15 24 E0001 invalid syntax (, line 15) (syntax-error)\n
- ...
-ok 2 - python_good_1.py
diff --git a/.automation/test/python_flake8/reports/expected-PYTHON_FLAKE8.tap b/.automation/test/python_flake8/reports/expected-PYTHON_FLAKE8.tap
new file mode 100644
index 00000000..0bcc75d9
--- /dev/null
+++ b/.automation/test/python_flake8/reports/expected-PYTHON_FLAKE8.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - python_bad_1.py
+ ---
+ message: /tmp/lint/.automation/test/python_flake8/python_bad_1.py 6 13 E261 at least two spaces before inline comment\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 7 31 E261 at least two spaces before inline comment\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 8 16 E261 at least two spaces before inline comment\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 11 67 E202 whitespace before ')'\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 13 1 E128 continuation line under-indented for visual indent\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 15 23 E999 SyntaxError invalid syntax\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 16 5 E113 unexpected indentation\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 17 9 E128 continuation line under-indented for visual indent\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 18 9 E128 continuation line under-indented for visual indent\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 27 1 E302 expected 2 blank lines, found 1\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 56 1 E302 expected 2 blank lines, found 1\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 66 24 E201 whitespace after '{'\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 87 1 E302 expected 2 blank lines, found 1\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 110 1 E302 expected 2 blank lines, found 1\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 153 1 E305 expected 2 blank lines after class or function definition, found 1\n/tmp/lint/.automation/test/python_flake8/python_bad_1.py 156 18 E261 at least two spaces before inline comment\n
+ ...
+ok 2 - python_good_1.py
diff --git a/.automation/test/python_isort/reports/expected-PYTHON.tap.ignored b/.automation/test/python_isort/reports/expected-PYTHON.tap.ignored
deleted file mode 100644
index 1751d70f..00000000
--- a/.automation/test/python_isort/reports/expected-PYTHON.tap.ignored
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - python_bad_1.py
- ---
- message: ************* Module python_bad_1\npython/python_bad_1.py 15 24 E0001 invalid syntax (, line 15) (syntax-error)\n
- ...
-ok 2 - python_good_1.py
diff --git a/.automation/test/python_isort/reports/expected-PYTHON_ISORT.tap b/.automation/test/python_isort/reports/expected-PYTHON_ISORT.tap
new file mode 100644
index 00000000..4681ce9c
--- /dev/null
+++ b/.automation/test/python_isort/reports/expected-PYTHON_ISORT.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - python_bad_1.py
+ ---
+ message: ERROR /tmp/lint/.automation/test/python_isort/python_bad_1.py Imports are incorrectly sorted and/or formatted.\n--- /tmp/lint/.automation/test/python_isort/python_bad_1.py before\n+++ /tmp/lint/.automation/test/python_isort/python_bad_1.py before\n@@ -1,11 +1,11 @@\n import json\n+import sys\n from os import getenv, path\n from pprint import pprint\n-import sys\n \n import click # pylint disable=import-error\n+import requests # pylint disable=import-error\n from dotenv import load_dotenv # pylint disable=import-error\n-import requests # pylint disable=import-error\n \n env = load_dotenv()\n api_url = getenv("API_URL", default="https //api.github.com/graphql")\n
+ ...
+ok 2 - python_good_1.py
diff --git a/.automation/test/python_pylint/reports/expected-PYTHON.tap b/.automation/test/python_pylint/reports/expected-PYTHON.tap
deleted file mode 100644
index 1751d70f..00000000
--- a/.automation/test/python_pylint/reports/expected-PYTHON.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - python_bad_1.py
- ---
- message: ************* Module python_bad_1\npython/python_bad_1.py 15 24 E0001 invalid syntax (, line 15) (syntax-error)\n
- ...
-ok 2 - python_good_1.py
diff --git a/.automation/test/python_pylint/reports/expected-PYTHON_PYLINT.tap b/.automation/test/python_pylint/reports/expected-PYTHON_PYLINT.tap
new file mode 100644
index 00000000..a69fe4cc
--- /dev/null
+++ b/.automation/test/python_pylint/reports/expected-PYTHON_PYLINT.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - python_bad_1.py
+ ---
+ message: ************* Module python_bad_1\npython_pylint/python_bad_1.py 15 24 E0001 invalid syntax (, line 15) (syntax-error)\n
+ ...
+ok 2 - python_good_1.py
diff --git a/.automation/test/r/reports/expected-R.tap b/.automation/test/r/reports/expected-R.tap
new file mode 100644
index 00000000..8f821f9b
--- /dev/null
+++ b/.automation/test/r/reports/expected-R.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - r_bad_1.r
+ ---
+ message: /tmp/lint/.automation/test/r/r_bad_1.r 8 3 style Use <-, not =, for assignment.\nf = function (x,y = 1){}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 8 14 style Remove spaces before the left parenthesis in a function call.\nf = function (x,y = 1){}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 8 17 style Commas should always have a space after.\nf = function (x,y = 1){}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 8 22 style There should be a space between right parenthesis and an opening curly brace.\nf = function (x,y = 1){}\n ^~\n/tmp/lint/.automation/test/r/r_bad_1.r 8 23 style Opening curly braces should never go on their own line and should always be followed by a new line.\nf = function (x,y = 1){}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 8 24 style Closing curly-braces should always be on their own line, unless it's followed by an else.\nf = function (x,y = 1){}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 11 3 style Commented code should be removed.\n# some <- commented("out code")\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/tmp/lint/.automation/test/r/r_bad_1.r 21 1 style functions should have cyclomatic complexity of less than 15, this has 22.\nsomeComplicatedFunctionWithALongCameCaseName <- function(x)\n^\n/tmp/lint/.automation/test/r/r_bad_1.r 21 1 style Variable and function names should not be longer than 30 characters.\nsomeComplicatedFunctionWithALongCameCaseName <- function(x)\n^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/tmp/lint/.automation/test/r/r_bad_1.r 21 1 style Variable and function name style should be snake_case.\nsomeComplicatedFunctionWithALongCameCaseName <- function(x)\n^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/tmp/lint/.automation/test/r/r_bad_1.r 22 1 style Opening curly braces should never go on their own line and should always be followed by a new line.\n{\n^\n/tmp/lint/.automation/test/r/r_bad_1.r 24 1 style Lines should not be more than 80 characters.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/tmp/lint/.automation/test/r/r_bad_1.r 24 44 style Put spaces around all infix operators.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n ~^~\n/tmp/lint/.automation/test/r/r_bad_1.r 24 57 warning Use is.na rather than == NA.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n ^~~~~\n/tmp/lint/.automation/test/r/r_bad_1.r 24 64 style Opening curly braces should never go on their own line and should always be followed by a new line.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 24 69 style Closing curly-braces should always be on their own line, unless it's followed by an else.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 24 76 style Opening curly braces should never go on their own line and should always be followed by a new line.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 24 82 style Closing curly-braces should always be on their own line, unless it's followed by an else.\n if (1 > 2 && 2 > 3 && 3 > 4 && 4 > 5 && 5*10 > 6 && x == NA) {TRUE} else {FALSE}\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 31 3 style Do not place spaces around code in parentheses or square brackets.\nx[ 2]\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 32 1 warning Avoid 1 length(...) expressions, use seq_len.\n1 length(x) %>% lapply(function(x) x*2) %>%\n^\n/tmp/lint/.automation/test/r/r_bad_1.r 32 37 style Put spaces around all infix operators.\n1 length(x) %>% lapply(function(x) x*2) %>%\n ~^~\n/tmp/lint/.automation/test/r/r_bad_1.r 32 43 style `%>%` should always have a space before it and a new line after it, unless the full pipeline fits on one line.\n1 length(x) %>% lapply(function(x) x*2) %>%\n ~~^\n/tmp/lint/.automation/test/r/r_bad_1.r 36 9 style Only use double-quotes.\nmessage('single_quotes')\n ^~~~~~~~~~~~~~~\n/tmp/lint/.automation/test/r/r_bad_1.r 40 8 style Put spaces around all infix operators.\ny <- 2 +(1 10)\n ^~\n/tmp/lint/.automation/test/r/r_bad_1.r 40 9 style Place a space before left parenthesis, except in a function call.\ny <- 2 +(1 10)\n ^\n/tmp/lint/.automation/test/r/r_bad_1.r 43 1 style Trailing blank lines are superfluous.\n\n^\n
+ ...
+ok 2 - r_good_1.r
diff --git a/.automation/test/raku/reports/expected-RAKU.tap b/.automation/test/raku/reports/expected-RAKU.tap
index e692a0c5..13ce7ff5 100644
--- a/.automation/test/raku/reports/expected-RAKU.tap
+++ b/.automation/test/raku/reports/expected-RAKU.tap
@@ -4,4 +4,4 @@ not ok 1 - raku_bad_1.raku
---
message: ===SORRY!=== Error while compiling /tmp/lint/.automation/test/raku/raku_bad_1.raku\nVariable '$foo' is not declared. Did you mean '@foo'?\nat /tmp/lint/.automation/test/raku/raku_bad_1.raku 4\n------> ⏏$foo[1] = 42\n
...
-ok 2 - /tmp/lint/.automation/test/raku/raku_good_1.raku
+ok 2 - raku_good_1.raku
diff --git a/.automation/test/ruby/reports/expected-RUBY.tap b/.automation/test/ruby/reports/expected-RUBY.tap
index ecb66373..df404771 100644
--- a/.automation/test/ruby/reports/expected-RUBY.tap
+++ b/.automation/test/ruby/reports/expected-RUBY.tap
@@ -4,4 +4,4 @@ not ok 1 - ruby_bad_1.rb
---
message: Inspecting 1 file\nC\n\nOffenses \n\nruby/ruby_bad_1.rb 1 1 C Style/FrozenStringLiteralComment Missing frozen string literal comment.\nruby/ruby_bad_1.rb 11 11 C Style/StringLiterals Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.\nFile.open('/tmp/urls.txt', " w" ) do | file|\n ^^^^^^^^^^^^^^^\nruby/ruby_bad_1.rb 11 32 C Layout/SpaceInsideParens Space inside parentheses detected.\nFile.open('/tmp/urls.txt', " w" ) do | file|\n ^\nruby/ruby_bad_1.rb 11 39 C Layout/SpaceAroundBlockParameters Space before first block parameter detected.\nFile.open('/tmp/urls.txt', " w" ) do | file|\n ^\nruby/ruby_bad_1.rb 12 24 C Layout/SpaceAroundBlockParameters Space after last block parameter detected.\n Hook.active.map do |h |\n ^\nruby/ruby_bad_1.rb 13 13 C Layout/SpaceInsideArrayLiteralBrackets Do not use space inside array brackets.\n urls = [ ARRAY_OF_URLS_CALLING_INSTANCE]\n ^\n\n1 file inspected, 6 offenses detected\n
...
-ok 2 - /tmp/lint/.automation/test/ruby/ruby_good_1.rb
+ok 2 - ruby_good_1.rb
diff --git a/.automation/test/shell_shfmt/reports/expected-SHELL_SHFMT.tap b/.automation/test/shell_shfmt/reports/expected-SHELL_SHFMT.tap
new file mode 100644
index 00000000..7a713bb7
--- /dev/null
+++ b/.automation/test/shell_shfmt/reports/expected-SHELL_SHFMT.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - shell-shfmt_bad_1.sh
+ ---
+ message: --- /tmp/lint/.automation/test/shell_shfmt/shell-shfmt_bad_1.sh.orig\n+++ /tmp/lint/.automation/test/shell_shfmt/shell-shfmt_bad_1.sh\n@@ -8,10 +8,10 @@\n \n # Check the shell\n if [ ${ERROR_CODE} -ne 0 ]; then\n- echo "We did it!"\n- exit 0\n+ echo "We did it!"\n+ exit 0\n else\n- echo "We done goofed it..."\n- echo "${HELLO_WORLD}"\n- exit 1\n+ echo "We done goofed it..."\n+ echo "${HELLO_WORLD}"\n+ exit 1\n fi\n
+ ...
+ok 2 - shell-shfmt_good_1.sh
diff --git a/.automation/test/shell_shfmt/shell-shfmt_bad_1.sh b/.automation/test/shell_shfmt/shell-shfmt_bad_1.sh
old mode 100644
new mode 100755
diff --git a/.automation/test/shell_shfmt/shell-shfmt_good_1.sh b/.automation/test/shell_shfmt/shell-shfmt_good_1.sh
old mode 100644
new mode 100755
diff --git a/.automation/test/snakemake_lint/reports/expected-SNAKEMAKE_LINT.tap b/.automation/test/snakemake_lint/reports/expected-SNAKEMAKE_LINT.tap
new file mode 100644
index 00000000..fd2cdacc
--- /dev/null
+++ b/.automation/test/snakemake_lint/reports/expected-SNAKEMAKE_LINT.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - snakemake_bad_1.smk
+ ---
+ message: Lints for rule simulation (line 11, /tmp/lint/.automation/test/snakemake_lint/snakemake_bad_1.smk) \n * No log directive defined \n Without a log directive, all output will be printed to the terminal. In\n distributed environments, this means that errors are harder to discover.\n In local environments, output of concurrent jobs will be mixed and become\n unreadable.\n Also see \n https //snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files\n * Specify a conda environment or container for each rule. \n This way, the used software for each specific step is documented, and the\n workflow can be executed on any machine without prerequisites.\n Also see \n https //snakemake.readthedocs.io/en/latest/snakefiles/deployment.html#integrated-package-management\n https //snakemake.readthedocs.io/en/latest/snakefiles/deployment.html#running-jobs-in-containers\n
+ ...
+ok 2 - snakemake_good_1.smk
diff --git a/.automation/test/snakemake_snakefmt/reports/expected-SNAKEMAKE_SNAKEFMT.tap b/.automation/test/snakemake_snakefmt/reports/expected-SNAKEMAKE_SNAKEFMT.tap
new file mode 100644
index 00000000..dd12cb76
--- /dev/null
+++ b/.automation/test/snakemake_snakefmt/reports/expected-SNAKEMAKE_SNAKEFMT.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - snakemake_bad_1.smk
+ ---
+ message: =====> Diff for /tmp/lint/.automation/test/snakemake_snakefmt/snakemake_bad_1.smk <=====\n\n--- original\n+++ new\n@@ -1,10 +1,11 @@\n rule all \n input \n- file1='result.txt',\n+ file1="result.txt",\n+\n \n rule simulation \n output \n- file1="result.txt"\n+ file1="result.txt",\n shell \n """\n touch {output}\n\n[INFO] 1 file(s) would be changed 😬\n
+ ...
+ok 2 - snakemake_good_1.smk
diff --git a/.automation/test/sql/reports/expected-SQL.tap b/.automation/test/sql/reports/expected-SQL.tap
new file mode 100644
index 00000000..b925ffe2
--- /dev/null
+++ b/.automation/test/sql/reports/expected-SQL.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - sql_bad_1.sql
+ ---
+ message: /tmp/lint/.automation/test/sql/sql_bad_1.sql 1 [sql-lint missing-where] DELETE statement missing WHERE clause.\n
+ ...
+ok 2 - sql_good_1.sql
diff --git a/.automation/test/states/reports/expected-STATES.tap b/.automation/test/states/reports/expected-STATES.tap
new file mode 100644
index 00000000..320390e2
--- /dev/null
+++ b/.automation/test/states/reports/expected-STATES.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - states_bad_1.json
+ ---
+ message: ✕ State machine definition is invalid \n \ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should have required property 'Type'\ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should NOT have additional properties\ndata.States['Hello World'] should match exactly one schema in oneOf\n
+ ...
+ok 2 - states_good_1.json
diff --git a/.automation/test/states/reports/expected-STATES.tap.ignored b/.automation/test/states/reports/expected-STATES.tap.ignored
deleted file mode 100644
index e9be32b5..00000000
--- a/.automation/test/states/reports/expected-STATES.tap.ignored
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - json_bad_1.json
- ---
- message: Error Parse error on line 6 \n...ng" { "level" 'ignore', "space\n----------------------^\nExpecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'\n at Object.parseError (/node_modules/jsonlint/lib/jsonlint.js 55 11)\n at Object.parse (/node_modules/jsonlint/lib/jsonlint.js 132 22)\n at parse (/node_modules/jsonlint/lib/cli.js 82 14)\n at main (/node_modules/jsonlint/lib/cli.js 135 14)\n at Object. (/node_modules/jsonlint/lib/cli.js 179 1)\n at Module._compile (internal/modules/cjs/loader.js 1138 30)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js 1158 10)\n at Module.load (internal/modules/cjs/loader.js 986 32)\n at Function.Module._load (internal/modules/cjs/loader.js 879 14)\n at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js 71 12)\n
- ...
-ok 2 - json_good_1.json
diff --git a/.automation/test/tekton/reports/expected-TEKTON.tap b/.automation/test/tekton/reports/expected-TEKTON.tap
new file mode 100644
index 00000000..3e770d0e
--- /dev/null
+++ b/.automation/test/tekton/reports/expected-TEKTON.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - tekton_bad_1.yml
+ ---
+ message: /tmp/lint/.automation/test/tekton/bad/tekton_bad_1.yml \nwarning (20,14,20,20) Invalid image 'ubuntu'. Specify the image tag instead of using ' latest'\nwarning (22,14,22,51) Invalid image 'gcr.io/example-builders/build-example'. Specify the image tag instead of using ' latest'\nwarning (26,14,26,50) Invalid image 'gcr.io/example-builders/push-example'. Specify the image tag instead of using ' latest'\nerror (29,17,29,31) Task 'example-task-name' wants to mount volume 'example-volume' in step 'dockerfile-pushexample', but this volume is not defined.\n
+ ...
+ok 2 - tekton_good_1.yml
diff --git a/.automation/test/terraform/reports/expected-TERRAFORM.tap b/.automation/test/terraform/reports/expected-TERRAFORM.tap
index 4e389655..3434675d 100644
--- a/.automation/test/terraform/reports/expected-TERRAFORM.tap
+++ b/.automation/test/terraform/reports/expected-TERRAFORM.tap
@@ -4,4 +4,4 @@ not ok 1 - terraform_bad_1.tf
---
message: Failed to load configurations. 1 error(s) occurred \n\nError Invalid expression\n\n on /tmp/lint/.automation/test/terraform/bad/terraform_bad_1.tf line 3, in resource "aws_instance" "bad" \n 3 instance_type = # invalid type!\n 4 }\n\nExpected the start of an expression, but found an invalid expression token.\n
...
-ok 2 - /tmp/lint/.automation/test/terraform/good/terraform_good_1.tf
+ok 2 - terraform_good_1.tf
diff --git a/.automation/test/terraform_terrascan/reports/expected-TERRAFORM.tap b/.automation/test/terraform_terrascan/reports/expected-TERRAFORM.tap
deleted file mode 100644
index 6fcc7cb9..00000000
--- a/.automation/test/terraform_terrascan/reports/expected-TERRAFORM.tap
+++ /dev/null
@@ -1,22 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - terraform_bad_1.tf
- terrascan version 0.2.3
- Logging level set to error.
- ........................................................................
- ----------------------------------------------------------------------
- Ran 72 tests in 0.008s
-
- OK
-
- Processed 1 files in /tmp/lint/.terrascan
-
-
- Processed on 07/24/2020 at 03:22
- Results (took 0.42 seconds):
-
- Failures: (1)
- [high] [aws_instance.bad.associate_public_ip_address] should not be 'True'. Is: 'True' in module .terrascan, file /tmp/lint/.terrascan/terraform_bad_1.tf
-
- Errors: (0)
-ok 2 - terraform_good_1.tf
diff --git a/.automation/test/terraform_terrascan/reports/expected-TERRAFORM_TERRASCAN.tap b/.automation/test/terraform_terrascan/reports/expected-TERRAFORM_TERRASCAN.tap
new file mode 100644
index 00000000..3e0c1bd6
--- /dev/null
+++ b/.automation/test/terraform_terrascan/reports/expected-TERRAFORM_TERRASCAN.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - terraform_bad_1.tf
+ ---
+ message: results \n violations \n - rule_name instanceWithNoVpc\n description Instance should be configured in vpc. AWS VPCs provides the controls to facilitate a formal process for approving and testing all network connections and changes to the firewall and router configurations.\n rule_id AWS.Instance.NetworkSecurity.Medium.0506\n severity MEDIUM\n category Network Security\n resource_name instanceWithNoVpc\n resource_type aws_instance\n file terraform_bad_1.tf\n line 1\n count \n low 0\n medium 1\n high 0\n total 1\n
+ ...
+ok 2 - terraform_good_1.tf
diff --git a/.automation/test/terragrunt/reports/expected-TERRAGRUNT.tap b/.automation/test/terragrunt/reports/expected-TERRAGRUNT.tap
new file mode 100644
index 00000000..58a94447
--- /dev/null
+++ b/.automation/test/terragrunt/reports/expected-TERRAGRUNT.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - terragrunt_bad_1.hcl
+ ---
+ message: [terragrunt] Formatting terragrunt.hcl file at /tmp/lint/.automation/test/terragrunt/terragrunt_bad_1.hcl.\n[terragrunt] Formatting /tmp/lint/.automation/test/terragrunt/terragrunt_bad_1.hcl\n[terragrunt] Invalid file format /tmp/lint/.automation/test/terragrunt/terragrunt_bad_1.hcl\n[terragrunt] Unable to determine underlying exit code, so Terragrunt will exit with error code 1\n
+ ...
+ok 2 - terragrunt_good_1.hcl
diff --git a/.automation/test/typescript_es/reports/expected-TYPESCRIPT_ES.tap b/.automation/test/typescript_es/reports/expected-TYPESCRIPT_ES.tap
index 9c9b5829..12592d38 100644
--- a/.automation/test/typescript_es/reports/expected-TYPESCRIPT_ES.tap
+++ b/.automation/test/typescript_es/reports/expected-TYPESCRIPT_ES.tap
@@ -4,4 +4,4 @@ not ok 1 - typescript_bad_1.ts
---
message: \n/tmp/lint/.automation/test/typescript_es/typescript_bad_1.ts\n 5 39 error Parsing error Unterminated regular expression literal\n\n✖ 1 problem (1 error, 0 warnings)\n
...
-ok 2 - /tmp/lint/.automation/test/typescript_es/typescript_good_1.ts
+ok 2 - typescript_good_1.ts
diff --git a/.automation/test/typescript_es/reports/expected-TYPESCRIPT_STANDARD.tap b/.automation/test/typescript_es/reports/expected-TYPESCRIPT_STANDARD.tap
deleted file mode 100644
index 1271fc8f..00000000
--- a/.automation/test/typescript_es/reports/expected-TYPESCRIPT_STANDARD.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - typescript_bad_1.ts
- ---
- message: standard Use JavaScript Standard Style (https //standardjs.com)\n /tmp/lint/.automation/test/typescript/typescript_bad_1.ts 5 39 Parsing error Unterminated regular expression literal.\n
- ...
-ok 2 - typescript_good_1.ts
diff --git a/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_ES.tap b/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_ES.tap
deleted file mode 100644
index c08faa21..00000000
--- a/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_ES.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - typescript_bad_1.ts
- ---
- message: \n/tmp/lint/.automation/test/typescript/typescript_bad_1.ts\n 5 39 error Parsing error Unterminated regular expression literal\n\n✖ 1 problem (1 error, 0 warnings)\n
- ...
-ok 2 - typescript_good_1.ts
diff --git a/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_STANDARD.tap b/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_STANDARD.tap
index f6a3ef63..956b7f33 100644
--- a/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_STANDARD.tap
+++ b/.automation/test/typescript_standard/reports/expected-TYPESCRIPT_STANDARD.tap
@@ -4,4 +4,4 @@ not ok 1 - typescript_bad_1.ts
---
message: standard Use JavaScript Standard Style (https //standardjs.com)\n /tmp/lint/.automation/test/typescript_standard/typescript_bad_1.ts 5 39 Parsing error Unterminated regular expression literal.\n
...
-ok 2 - /tmp/lint/.automation/test/typescript_standard/typescript_good_1.ts
+ok 2 - typescript_good_1.ts
diff --git a/.automation/test/xml/reports/expected-XML.tap b/.automation/test/xml/reports/expected-XML.tap
index 8a029736..4a3081b9 100644
--- a/.automation/test/xml/reports/expected-XML.tap
+++ b/.automation/test/xml/reports/expected-XML.tap
@@ -4,4 +4,4 @@ not ok 1 - xml_bad_1.xml
---
message: /tmp/lint/.automation/test/xml/xml_bad_1.xml 7 parser error EndTag '' not found\n\n^\n
...
-ok 2 - /tmp/lint/.automation/test/xml/xml_good_1.xml
+ok 2 - xml_good_1.xml
diff --git a/.automation/test/yaml/reports/expected-YAML.tap b/.automation/test/yaml/reports/expected-YAML.tap
new file mode 100644
index 00000000..d19a7c76
--- /dev/null
+++ b/.automation/test/yaml/reports/expected-YAML.tap
@@ -0,0 +1,7 @@
+TAP version 13
+1..2
+not ok 1 - yml_bad_1.yml
+ ---
+ message: /tmp/lint/.automation/test/yaml/yml_bad_1.yml\n 10 1 warning missing document start "---" (document-start)\n 11 16 error syntax error mapping values are not allowed here (syntax)\n
+ ...
+ok 2 - yml_good_1.yml
diff --git a/.automation/test/yaml/reports/expected-YML.tap b/.automation/test/yaml/reports/expected-YML.tap
deleted file mode 100644
index 172d9ced..00000000
--- a/.automation/test/yaml/reports/expected-YML.tap
+++ /dev/null
@@ -1,7 +0,0 @@
-TAP version 13
-1..2
-not ok 1 - yml_bad_1.yml
- ---
- message: /tmp/lint/.automation/test/yml/yml_bad_1.yml\n 10 1 warning missing document start "---" (document-start)\n 11 16 error syntax error mapping values are not allowed here (syntax)\n
- ...
-ok 2 - /tmp/lint/.automation/test/yaml/yml_good_1.yml
diff --git a/.github/workflows/deploy-DEV.yml b/.github/workflows/deploy-DEV.yml
index c5c9278a..8f7a9cfd 100644
--- a/.github/workflows/deploy-DEV.yml
+++ b/.github/workflows/deploy-DEV.yml
@@ -68,7 +68,7 @@ jobs:
#####################################
- name: Run Test Cases
shell: bash
- run: docker run -e RUN_LOCAL=true -e TEST_CASE_RUN=true -e OUTPUT_FORMAT=tap -e OUTPUT_FOLDER=${GITHUB_SHA} -e OUTPUT_DETAILS=detailed -e ACTIONS_RUNNER_DEBUG=true -v ${GITHUB_WORKSPACE}:/tmp/lint github/super-linter:${GITHUB_SHA}
+ run: docker run -e RUN_LOCAL=true -e TEST_CASE_RUN=true -e OUTPUT_FORMAT=tap -e OUTPUT_FOLDER=${GITHUB_SHA} -e OUTPUT_DETAILS=detailed -e ACTIONS_RUNNER_DEBUG=true -e ERROR_ON_MISSING_EXEC_BIT=true -v ${GITHUB_WORKSPACE}:/tmp/lint github/super-linter:${GITHUB_SHA}
#########################################
# Clean code base to run against it all #
@@ -82,4 +82,4 @@ jobs:
############################################
- name: Run against all code base
shell: bash
- run: docker run -e RUN_LOCAL=true -e OUTPUT_DETAILS=detailed -e ACTIONS_RUNNER_DEBUG=true -v ${GITHUB_WORKSPACE}:/tmp/lint github/super-linter:${GITHUB_SHA}
+ run: docker run -e RUN_LOCAL=true -e OUTPUT_DETAILS=detailed -e ACTIONS_RUNNER_DEBUG=true -e ERROR_ON_MISSING_EXEC_BIT=true -v ${GITHUB_WORKSPACE}:/tmp/lint github/super-linter:${GITHUB_SHA}
diff --git a/.github/workflows/stack-linter.yml b/.github/workflows/stack-linter.yml
index e749b69d..7ce958e9 100644
--- a/.github/workflows/stack-linter.yml
+++ b/.github/workflows/stack-linter.yml
@@ -48,5 +48,6 @@ jobs:
uses: docker://ghcr.io/github/super-linter:latest
env:
ACTIONS_RUNNER_DEBUG: true
+ ERROR_ON_MISSING_EXEC_BIT: true
VALIDATE_ALL_CODEBASE: false
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.vscode/testlinter.sh b/.vscode/testlinter.sh
old mode 100644
new mode 100755
diff --git a/lib/functions/buildFileList.sh b/lib/functions/buildFileList.sh
index 7c97a07b..1d364bd4 100755
--- a/lib/functions/buildFileList.sh
+++ b/lib/functions/buildFileList.sh
@@ -244,7 +244,7 @@ function BuildFileList() {
# Get the DOCKER files #
########################
# Use BASE_FILE here because FILE_TYPE is not reliable when there is no file extension
- elif [[ "${FILE_TYPE}" != "dockerfilelintrc" ]] && [[ "${BASE_FILE}" == *"dockerfile"* ]]; then
+ elif [[ "${FILE_TYPE}" != "dockerfilelintrc" ]] && [[ "${FILE_TYPE}" != "tap" ]] && [[ "${BASE_FILE}" == *"dockerfile"* ]]; then
################################
# Append the file to the array #
################################
diff --git a/lib/functions/tapLibrary.sh b/lib/functions/tapLibrary.sh
index a04b6836..0e669638 100755
--- a/lib/functions/tapLibrary.sh
+++ b/lib/functions/tapLibrary.sh
@@ -21,10 +21,24 @@ function IsTAP() {
function TransformTAPDetails() {
DATA=${1}
if [ -n "${DATA}" ] && [ "${OUTPUT_DETAILS}" == "detailed" ]; then
- #########################################################
- # Transform new lines to \\n, remove colours and colons #
- #########################################################
- echo "${DATA}" | awk 'BEGIN{RS="\n";ORS="\\n"}1' | sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" | tr ':' ' '
+ ############################################################
+ # Transform new lines to \\n, remove colours and colons. #
+ # Additionally, remove some dynamic parts from generated #
+ # reports. #
+ ############################################################
+ echo "${DATA}" |
+ awk 'BEGIN{RS="\n";ORS="\\n"}1' |
+ sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" |
+ sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' |
+ sed -r "s/\s\([0-9]*\sms\)//g" |
+ sed -r "s/\s[0-9]*ms//g" |
+ sed -r "s/S[0-9]{4}//g" |
+ sed -r "s/js:[0-9]*:[0-9]*/js/g" |
+ sed -r "s/[.0-9]*\sseconds/seconds/g" |
+ sed -r "s/\[terragrunt\]\s[0-9]{4}\/[0-9]{2}\/[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}/[terragrunt]/g" |
+ sed -r "s/(after|before)\s[0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{1,6}/before/g" |
+ sed -r "s/used\s[0-9]{1,}\.*[0-9]{0,}MB\sof\smemory/used/g" |
+ tr ':' ' '
fi
}
################################################################################
@@ -113,11 +127,5 @@ Reports() {
warn "Report output folder (${REPORT_OUTPUT_FOLDER}) does NOT exist."
fi
fi
-
- ################################
- # Prints for warnings if found #
- ################################
- for TEST in "${WARNING_ARRAY_TEST[@]}"; do
- warn "Expected file to compare with was not found for ${TEST}"
- done
}
+################################################################################
diff --git a/lib/functions/worker.sh b/lib/functions/worker.sh
index 03e22930..e3b0e708 100755
--- a/lib/functions/worker.sh
+++ b/lib/functions/worker.sh
@@ -292,7 +292,7 @@ function LintCodebase() {
# Store the linting as a temporary file in TAP format #
#######################################################
if IsTAP; then
- NotOkTap "${INDEX}" "${FILE}" "${TMPFILE}"
+ NotOkTap "${INDEX}" "${FILE_NAME}" "${TMPFILE}"
AddDetailedMessageIfEnabled "${LINT_CMD}" "${TMPFILE}"
fi
else
@@ -305,7 +305,7 @@ function LintCodebase() {
# Store the linting as a temporary file in TAP format #
#######################################################
if IsTAP; then
- OkTap "${INDEX}" "${FILE}" "${TMPFILE}"
+ OkTap "${INDEX}" "${FILE_NAME}" "${TMPFILE}"
fi
fi
else
@@ -361,21 +361,13 @@ function LintCodebase() {
#############################################
# We failed to compare the reporting output #
#############################################
- error "Failed to assert TAP output:[${LINTER_NAME}]"!
- info "Please validate the asserts!"
cat "${TMPFILE}"
- exit 1
+ fatal "Failed to assert TAP output for ${LINTER_NAME} linter"
else
- # Success
- info "Successfully validation in the expected TAP format for ${F[W]}[${LINTER_NAME}]"
+ info "TAP output validated successfully for ${LINTER_NAME}"
fi
else
- warn "No TAP expected file found at:[${EXPECTED_FILE}]"
- info "skipping report assertions"
- #####################################
- # Append the file type to the array #
- #####################################
- WARNING_ARRAY_TEST+=("${FILE_TYPE}")
+ fatal "No TAP expected file found at:[${EXPECTED_FILE}]"
fi
fi
fi
@@ -512,7 +504,7 @@ function LintAnsibleFiles() {
# Store the linting as a temporary file in TAP format #
#######################################################
if IsTAP; then
- NotOkTap "${INDEX}" "${FILE}" "${TMPFILE}"
+ NotOkTap "${INDEX}" "${FILE_NAME}" "${TMPFILE}"
AddDetailedMessageIfEnabled "${LINT_CMD}" "${TMPFILE}"
fi
@@ -526,7 +518,7 @@ function LintAnsibleFiles() {
# Store the linting as a temporary file in TAP format #
#######################################################
if IsTAP; then
- OkTap "${INDEX}" "${FILE}" "${TMPFILE}"
+ OkTap "${INDEX}" "${FILE_NAME}" "${TMPFILE}"
fi
fi
done
diff --git a/lib/linter.sh b/lib/linter.sh
index 99f2bb08..dacd5343 100755
--- a/lib/linter.sh
+++ b/lib/linter.sh
@@ -265,8 +265,6 @@ RAW_FILE_ARRAY=() # Array of all files that were changed
export RAW_FILE_ARRAY # Workaround SC2034
TEST_CASE_FOLDER='.automation/test' # Folder for test cases we should always ignore
export TEST_CASE_FOLDER # Workaround SC2034
-WARNING_ARRAY_TEST=() # Array of warning linters that did not have an expected test result.
-export WARNING_ARRAY_TEST # Workaround SC2034
##############
# Format #