pi-usereq 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/.gitignore +3 -0
  2. package/CHANGELOG.md +31 -0
  3. package/README.md +1 -1
  4. package/package.json +1 -1
  5. package/{req → pi-usereq}/docs/REFERENCES.md +196 -159
  6. package/{req → pi-usereq}/docs/REQUIREMENTS.md +65 -44
  7. package/{req → pi-usereq}/docs/WORKFLOW.md +66 -73
  8. package/src/core/config.ts +39 -12
  9. package/src/core/extension-status.ts +94 -58
  10. package/src/core/pi-notify.ts +198 -11
  11. package/src/core/runtime-project-paths.ts +3 -32
  12. package/src/core/settings-menu.ts +9 -4
  13. package/src/core/static-check.ts +35 -171
  14. package/src/index.ts +281 -86
  15. package/tests/attended-results-scenarios.ts +3 -13
  16. package/tests/cli-command-option-parity.test.ts +21 -12
  17. package/tests/debug-extension-harness.test.ts +11 -7
  18. package/tests/extension-registration.test.ts +371 -71
  19. package/tests/oracle-project.test.ts +8 -3
  20. package/tests/oracle-standalone.test.ts +7 -13
  21. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_c.c.json +0 -5
  22. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_cpp.cpp.json +0 -5
  23. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_csharp.cs.json +0 -5
  24. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_elixir.ex.json +0 -5
  25. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_go.go.json +0 -5
  26. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_haskell.hs.json +0 -5
  27. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_java.java.json +0 -5
  28. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_javascript.js.json +0 -5
  29. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_kotlin.kt.json +0 -5
  30. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_lua.lua.json +0 -5
  31. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_perl.pl.json +0 -5
  32. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_php.php.json +0 -5
  33. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_python.py.json +0 -5
  34. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_ruby.rb.json +0 -5
  35. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_rust.rs.json +0 -5
  36. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_scala.scala.json +0 -5
  37. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_shell.sh.json +0 -5
  38. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_swift.swift.json +0 -5
  39. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_typescript.ts.json +0 -5
  40. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_zig.zig.json +0 -5
  41. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_c.c.json +0 -5
  42. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_cpp.cpp.json +0 -5
  43. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_csharp.cs.json +0 -5
  44. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_elixir.ex.json +0 -5
  45. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_go.go.json +0 -5
  46. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_haskell.hs.json +0 -5
  47. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_java.java.json +0 -5
  48. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_javascript.js.json +0 -5
  49. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_kotlin.kt.json +0 -5
  50. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_lua.lua.json +0 -5
  51. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_perl.pl.json +0 -5
  52. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_php.php.json +0 -5
  53. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_python.py.json +0 -5
  54. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_ruby.rb.json +0 -5
  55. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_rust.rs.json +0 -5
  56. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_scala.scala.json +0 -5
  57. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_shell.sh.json +0 -5
  58. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_swift.swift.json +0 -5
  59. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_typescript.ts.json +0 -5
  60. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_zig.zig.json +0 -5
@@ -1,5 +0,0 @@
1
- {
2
- "code": 1,
3
- "stdout": "# Static-Check(Ruff): <ROOT>/tests/fixtures/fixture_shell.sh\nResult: FAIL\nEvidence:\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:15:8\n |\n14 | # @brief Extended PATH including local binary directory.\n15 | export PATH_EXT=\"/usr/local/bin\"\n | ^^^^^^^^\n16 |\n17 | # @brief Immutable maximum iteration counter.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:18:10\n |\n17 | # @brief Immutable maximum iteration counter.\n18 | readonly MAX_COUNT=10\n | ^^^^^^^^^\n19 |\n20 | # @brief Build version set via declare.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:21:12\n |\n20 | # @brief Build version set via declare.\n21 | declare -r BUILD_VERSION=\"1.0.0\"\n | ^^^^^^^^^^^^^\n22 |\n23 | # @brief Debug mode flag (0=off, 1=on).\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:29:12\n |\n28 | # @brief Indexed array of supported languages.\n29 | declare -a LANGUAGES=(\"python\" \"rust\" \"go\" \"java\" \"typescript\")\n | ^^^^^^^^^\n30 |\n31 | # @brief Associative array mapping extensions to languages.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:32:12\n |\n31 | # @brief Associative array mapping extensions to languages.\n32 | declare -A EXT_MAP=(\n | ^^^^^^^\n33 | [py]=\"python\"\n34 | [rs]=\"rust\"\n |\n\ninvalid-syntax: Expected `)`, found `=`\n --> tests/fixtures/fixture_shell.sh:33:9\n |\n31 | # @brief Associative array mapping extensions to languages.\n32 | declare -A EXT_MAP=(\n33 | [py]=\"python\"\n | ^\n34 | [rs]=\"rust\"\n35 | [go]=\"go\"\n |\n\ninvalid-syntax: Expected an assignment target\n --> tests/fixtures/fixture_shell.sh:38:1\n |\n36 | [java]=\"java\"\n37 | [ts]=\"typescript\"\n38 | )\n | ^\n39 |\n40 | # ── Functions ─────────────────────────────────────────────────────────\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:44:10\n |\n42 | # @brief Greet a user by name on stdout.\n43 | # @param $1 The user's name.\n44 | function greet() {\n | ^^^^^\n45 | local name=\"${1:?Name required}\"\n46 | # Validate non-empty name\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:44:18\n |\n42 | # @brief Greet a user by name on stdout.\n43 | # @param $1 The user's name.\n44 | function greet() {\n | ^\n45 | local name=\"${1:?Name required}\"\n46 | # Validate non-empty name\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:45:11\n |\n43 | # @param $1 The user's name.\n44 | function greet() {\n45 | local name=\"${1:?Name required}\"\n | ^^^^\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:45:15\n |\n43 | # @param $1 The user's name.\n44 | function greet() {\n45 | local name=\"${1:?Name required}\"\n | ^\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:47:14\n |\n45 | local name=\"${1:?Name required}\"\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n | ^^^^^^^\n48 | echo \"Error: empty name\" >&2\n49 | return 1\n |\n\ninvalid-syntax: Expected `else`, found `;`\n --> tests/fixtures/fixture_shell.sh:47:24\n |\n45 | local name=\"${1:?Name required}\"\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n | ^\n48 | echo \"Error: empty name\" >&2\n49 | return 1\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:48:9\n |\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n48 | echo \"Error: empty name\" >&2\n | ^^^^\n49 | return 1\n50 | fi\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:48:14\n |\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n48 | echo \"Error: empty name\" >&2\n | ^^^^^^^^^^^^^^^^^^^\n49 | return 1\n50 | fi\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:48:35\n |\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n48 | echo \"Error: empty name\" >&2\n | ^\n49 | return 1\n50 | fi\n |\n\ninvalid-syntax: Expected `}`, found newline\n --> tests/fixtures/fixture_shell.sh:48:37\n |\n46 | # Validate non-empty name\n47 | if [[ -z \"$name\" ]]; then\n48 | echo \"Error: empty name\" >&2\n | ^\n49 | return 1\n50 | fi\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:49:1\n |\n47 | if [[ -z \"$name\" ]]; then\n48 | echo \"Error: empty name\" >&2\n49 | return 1\n | ^^^^^^^^\n50 | fi\n51 | echo \"Hello ${name}!\"\n |\n\ninvalid-syntax: unindent does not match any outer indentation level\n --> tests/fixtures/fixture_shell.sh:50:1\n |\n48 | echo \"Error: empty name\" >&2\n49 | return 1\n50 | fi\n | ^^^^\n51 | echo \"Hello ${name}!\"\n52 | }\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:51:1\n |\n49 | return 1\n50 | fi\n51 | echo \"Hello ${name}!\"\n | ^^^^\n52 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:51:10\n |\n49 | return 1\n50 | fi\n51 | echo \"Hello ${name}!\"\n | ^^^^^^^^^^^^^^^^\n52 | }\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:52:1\n |\n50 | fi\n51 | echo \"Hello ${name}!\"\n52 | }\n | ^\n53 |\n54 | # @brief Remove temporary files and directories.\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:52:2\n |\n50 | fi\n51 | echo \"Hello ${name}!\"\n52 | }\n | ^\n53 |\n54 | # @brief Remove temporary files and directories.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:56:11\n |\n54 | # @brief Remove temporary files and directories.\n55 | # @details Called by trap on EXIT for cleanup.\n56 | cleanup() {\n | ^\n57 | local tmp_dir=\"${TMPDIR:-/tmp}/myapp_$$\"\n58 | if [[ -d \"$tmp_dir\" ]]; then\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:57:11\n |\n55 | # @details Called by trap on EXIT for cleanup.\n56 | cleanup() {\n57 | local tmp_dir=\"${TMPDIR:-/tmp}/myapp_$$\"\n | ^^^^^^^\n58 | if [[ -d \"$tmp_dir\" ]]; then\n59 | # Remove temp directory and all contents\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:57:18\n |\n55 | # @details Called by trap on EXIT for cleanup.\n56 | cleanup() {\n57 | local tmp_dir=\"${TMPDIR:-/tmp}/myapp_$$\"\n | ^\n58 | if [[ -d \"$tmp_dir\" ]]; then\n59 | # Remove temp directory and all contents\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:58:14\n |\n56 | cleanup() {\n57 | local tmp_dir=\"${TMPDIR:-/tmp}/myapp_$$\"\n58 | if [[ -d \"$tmp_dir\" ]]; then\n | ^^^^^^^^^^\n59 | # Remove temp directory and all contents\n60 | rm -rf \"$tmp_dir\"\n |\n\ninvalid-syntax: Expected `else`, found `;`\n --> tests/fixtures/fixture_shell.sh:58:27\n |\n56 | cleanup() {\n57 | local tmp_dir=\"${TMPDIR:-/tmp}/myapp_$$\"\n58 | if [[ -d \"$tmp_dir\" ]]; then\n | ^\n59 | # Remove temp directory and all contents\n60 | rm -rf \"$tmp_dir\"\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:60:9\n |\n58 | if [[ -d \"$tmp_dir\" ]]; then\n59 | # Remove temp directory and all contents\n60 | rm -rf \"$tmp_dir\"\n | ^^\n61 | fi\n62 | echo \"Cleanup complete\"\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:60:16\n |\n58 | if [[ -d \"$tmp_dir\" ]]; then\n59 | # Remove temp directory and all contents\n60 | rm -rf \"$tmp_dir\"\n | ^^^^^^^^^^\n61 | fi\n62 | echo \"Cleanup complete\"\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:61:5\n |\n59 | # Remove temp directory and all contents\n60 | rm -rf \"$tmp_dir\"\n61 | fi\n | ^^\n62 | echo \"Cleanup complete\"\n63 | }\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:62:5\n |\n60 | rm -rf \"$tmp_dir\"\n61 | fi\n62 | echo \"Cleanup complete\"\n | ^^^^\n63 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:62:10\n |\n60 | rm -rf \"$tmp_dir\"\n61 | fi\n62 | echo \"Cleanup complete\"\n | ^^^^^^^^^^^^^^^^^^\n63 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:68:14\n |\n66 | # @param $@ Command-line arguments.\n67 | # @return Sets global variables based on parsed options.\n68 | parse_args() {\n | ^\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:69:11\n |\n67 | # @return Sets global variables based on parsed options.\n68 | parse_args() {\n69 | local opt\n | ^^^\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n |\n\ninvalid-syntax: Expected `}`, found newline\n --> tests/fixtures/fixture_shell.sh:69:14\n |\n67 | # @return Sets global variables based on parsed options.\n68 | parse_args() {\n69 | local opt\n | ^\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:70:1\n |\n68 | parse_args() {\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n | ^^^^\n71 | case \"$opt\" in\n72 | v)\n |\n\ninvalid-syntax: Expected `:`, found string\n --> tests/fixtures/fixture_shell.sh:70:19\n |\n68 | parse_args() {\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n | ^^^^^^^^^\n71 | case \"$opt\" in\n72 | v)\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:70:29\n |\n68 | parse_args() {\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n | ^^^\n71 | case \"$opt\" in\n72 | v)\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:70:32\n |\n68 | parse_args() {\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n | ^\n71 | case \"$opt\" in\n72 | v)\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:71:1\n |\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n | ^^^^^^^^\n72 | v)\n73 | # Enable verbose output\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:71:14\n |\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n | ^^^^^^\n72 | v)\n73 | # Enable verbose output\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:71:23\n |\n69 | local opt\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n | ^\n72 | v)\n73 | # Enable verbose output\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:72:1\n |\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n72 | v)\n | ^^^^^^^^^^^^\n73 | # Enable verbose output\n74 | VERBOSE=1\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:72:14\n |\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n72 | v)\n | ^\n73 | # Enable verbose output\n74 | VERBOSE=1\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:72:15\n |\n70 | while getopts \"vdhf:o:\" opt; do\n71 | case \"$opt\" in\n72 | v)\n | ^\n73 | # Enable verbose output\n74 | VERBOSE=1\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:74:1\n |\n72 | v)\n73 | # Enable verbose output\n74 | VERBOSE=1\n | ^^^^^^^^^^^^^^^^\n75 | ;;\n76 | d)\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:75:17\n |\n73 | # Enable verbose output\n74 | VERBOSE=1\n75 | ;;\n | ^\n76 | d)\n77 | # Enable debug mode\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:75:18\n |\n73 | # Enable verbose output\n74 | VERBOSE=1\n75 | ;;\n | ^\n76 | d)\n77 | # Enable debug mode\n |\n\nE703 Statement ends with an unnecessary semicolon\n --> tests/fixtures/fixture_shell.sh:75:18\n |\n73 | # Enable verbose output\n74 | VERBOSE=1\n75 | ;;\n | ^\n76 | d)\n77 | # Enable debug mode\n |\nhelp: Remove unnecessary semicolon\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:75:19\n |\n73 | # Enable verbose output\n74 | VERBOSE=1\n75 | ;;\n | ^\n76 | d)\n77 | # Enable debug mode\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:76:13\n |\n74 | VERBOSE=1\n75 | ;;\n76 | d)\n | ^\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:76:14\n |\n74 | VERBOSE=1\n75 | ;;\n76 | d)\n | ^\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:76:15\n |\n74 | VERBOSE=1\n75 | ;;\n76 | d)\n | ^\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:78:1\n |\n76 | d)\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n | ^^^^^^^^^^^^^^^^\n79 | ;;\n80 | f)\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:79:17\n |\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n79 | ;;\n | ^\n80 | f)\n81 | # Set input file path\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:79:18\n |\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n79 | ;;\n | ^\n80 | f)\n81 | # Set input file path\n |\n\nE703 Statement ends with an unnecessary semicolon\n --> tests/fixtures/fixture_shell.sh:79:18\n |\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n79 | ;;\n | ^\n80 | f)\n81 | # Set input file path\n |\nhelp: Remove unnecessary semicolon\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:79:19\n |\n77 | # Enable debug mode\n78 | DEBUG_MODE=1\n79 | ;;\n | ^\n80 | f)\n81 | # Set input file path\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:80:13\n |\n78 | DEBUG_MODE=1\n79 | ;;\n80 | f)\n | ^\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:80:14\n |\n78 | DEBUG_MODE=1\n79 | ;;\n80 | f)\n | ^\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:80:15\n |\n78 | DEBUG_MODE=1\n79 | ;;\n80 | f)\n | ^\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:82:1\n |\n80 | f)\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n | ^^^^^^^^^^^^^^^^\n83 | ;;\n84 | o)\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:83:17\n |\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n | ^\n84 | o)\n85 | # Set output file path\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:83:18\n |\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n | ^\n84 | o)\n85 | # Set output file path\n |\n\nE703 Statement ends with an unnecessary semicolon\n --> tests/fixtures/fixture_shell.sh:83:18\n |\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n | ^\n84 | o)\n85 | # Set output file path\n |\nhelp: Remove unnecessary semicolon\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:83:19\n |\n81 | # Set input file path\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n | ^\n84 | o)\n85 | # Set output file path\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:84:13\n |\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n84 | o)\n | ^\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:84:14\n |\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n84 | o)\n | ^\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:84:15\n |\n82 | INPUT_FILE=\"$OPTARG\"\n83 | ;;\n84 | o)\n | ^\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:86:1\n |\n84 | o)\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n | ^^^^^^^^^^^^^^^^\n87 | ;;\n88 | h)\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:87:17\n |\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n | ^\n88 | h)\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:87:18\n |\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n | ^\n88 | h)\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n |\n\nE703 Statement ends with an unnecessary semicolon\n --> tests/fixtures/fixture_shell.sh:87:18\n |\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n | ^\n88 | h)\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n |\nhelp: Remove unnecessary semicolon\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:87:19\n |\n85 | # Set output file path\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n | ^\n88 | h)\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:88:13\n |\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n88 | h)\n | ^\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:88:14\n |\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n88 | h)\n | ^\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:88:15\n |\n86 | OUTPUT_FILE=\"$OPTARG\"\n87 | ;;\n88 | h)\n | ^\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:89:1\n |\n87 | ;;\n88 | h)\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n | ^^^^^^^^^^^^^^^^\n90 | return 0\n91 | ;;\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:89:22\n |\n87 | ;;\n88 | h)\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n90 | return 0\n91 | ;;\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:91:17\n |\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n91 | ;;\n | ^\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:91:18\n |\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n91 | ;;\n | ^\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n |\n\nE703 Statement ends with an unnecessary semicolon\n --> tests/fixtures/fixture_shell.sh:91:18\n |\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n91 | ;;\n | ^\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n |\nhelp: Remove unnecessary semicolon\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:91:19\n |\n89 | echo \"Usage: $0 [-v] [-d] [-f file] [-o output] [-h]\"\n90 | return 0\n91 | ;;\n | ^\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:92:13\n |\n90 | return 0\n91 | ;;\n92 | *)\n | ^\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:92:14\n |\n90 | return 0\n91 | ;;\n92 | *)\n | ^\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:92:15\n |\n90 | return 0\n91 | ;;\n92 | *)\n | ^\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:93:1\n |\n91 | ;;\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n | ^^^^^^^^^^^^^^^^\n94 | return 1\n95 | ;;\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:93:22\n |\n91 | ;;\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^\n94 | return 1\n95 | ;;\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:93:46\n |\n91 | ;;\n92 | *)\n93 | echo \"Unknown option: $opt\" >&2\n | ^\n94 | return 1\n95 | ;;\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:95:17\n |\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n95 | ;;\n | ^\n96 | esac\n97 | done\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:95:18\n |\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n95 | ;;\n | ^\n96 | esac\n97 | done\n |\n\nE703 Statement ends with an unnecessary semicolon\n --> tests/fixtures/fixture_shell.sh:95:18\n |\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n95 | ;;\n | ^\n96 | esac\n97 | done\n |\nhelp: Remove unnecessary semicolon\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:95:19\n |\n93 | echo \"Unknown option: $opt\" >&2\n94 | return 1\n95 | ;;\n | ^\n96 | esac\n97 | done\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:96:9\n |\n94 | return 1\n95 | ;;\n96 | esac\n | ^\n97 | done\n98 | shift $((OPTIND - 1))\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:97:5\n |\n95 | ;;\n96 | esac\n97 | done\n | ^\n98 | shift $((OPTIND - 1))\n99 | }\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:98:11\n |\n96 | esac\n97 | done\n98 | shift $((OPTIND - 1))\n | ^\n99 | }\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:99:1\n |\n 97 | done\n 98 | shift $((OPTIND - 1))\n 99 | }\n | ^\n100 |\n101 | # @brief Process a file with error handling and logging.\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:99:2\n |\n 97 | done\n 98 | shift $((OPTIND - 1))\n 99 | }\n | ^\n100 |\n101 | # @brief Process a file with error handling and logging.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:105:16\n |\n103 | # @param $2 Optional output path (defaults to stdout).\n104 | # @return 0 on success, 1 on failure.\n105 | process_file() {\n | ^\n106 | local input=\"$1\"\n107 | local output=\"${2:-/dev/stdout}\"\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:106:11\n |\n104 | # @return 0 on success, 1 on failure.\n105 | process_file() {\n106 | local input=\"$1\"\n | ^^^^^\n107 | local output=\"${2:-/dev/stdout}\"\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:106:16\n |\n104 | # @return 0 on success, 1 on failure.\n105 | process_file() {\n106 | local input=\"$1\"\n | ^\n107 | local output=\"${2:-/dev/stdout}\"\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:107:5\n |\n105 | process_file() {\n106 | local input=\"$1\"\n107 | local output=\"${2:-/dev/stdout}\"\n | ^^^^^\n108 |\n109 | # Verify input file exists and is readable\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:107:11\n |\n105 | process_file() {\n106 | local input=\"$1\"\n107 | local output=\"${2:-/dev/stdout}\"\n | ^^^^^^\n108 |\n109 | # Verify input file exists and is readable\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:107:17\n |\n105 | process_file() {\n106 | local input=\"$1\"\n107 | local output=\"${2:-/dev/stdout}\"\n | ^\n108 |\n109 | # Verify input file exists and is readable\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:110:11\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n | ^\n111 | echo \"Error: file not found: $input\" >&2\n112 | return 1\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:110:16\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n | ^^^^^^^^\n111 | echo \"Error: file not found: $input\" >&2\n112 | return 1\n |\n\ninvalid-syntax: Expected `else`, found `;`\n --> tests/fixtures/fixture_shell.sh:110:27\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n | ^\n111 | echo \"Error: file not found: $input\" >&2\n112 | return 1\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:111:9\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n111 | echo \"Error: file not found: $input\" >&2\n | ^^^^\n112 | return 1\n113 | fi\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:111:14\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n111 | echo \"Error: file not found: $input\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n112 | return 1\n113 | fi\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:111:47\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n111 | echo \"Error: file not found: $input\" >&2\n | ^\n112 | return 1\n113 | fi\n |\n\ninvalid-syntax: Expected `}`, found newline\n --> tests/fixtures/fixture_shell.sh:111:49\n |\n109 | # Verify input file exists and is readable\n110 | if [[ ! -f \"$input\" ]]; then\n111 | echo \"Error: file not found: $input\" >&2\n | ^\n112 | return 1\n113 | fi\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:112:1\n |\n110 | if [[ ! -f \"$input\" ]]; then\n111 | echo \"Error: file not found: $input\" >&2\n112 | return 1\n | ^^^^^^^^\n113 | fi\n |\n\ninvalid-syntax: unindent does not match any outer indentation level\n --> tests/fixtures/fixture_shell.sh:113:1\n |\n111 | echo \"Error: file not found: $input\" >&2\n112 | return 1\n113 | fi\n | ^^^^\n114 |\n115 | if [[ ! -r \"$input\" ]]; then\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:115:1\n |\n113 | fi\n114 |\n115 | if [[ ! -r \"$input\" ]]; then\n | ^^^^\n116 | echo \"Error: file not readable: $input\" >&2\n117 | return 1\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:115:11\n |\n113 | fi\n114 |\n115 | if [[ ! -r \"$input\" ]]; then\n | ^\n116 | echo \"Error: file not readable: $input\" >&2\n117 | return 1\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:115:16\n |\n113 | fi\n114 |\n115 | if [[ ! -r \"$input\" ]]; then\n | ^^^^^^^^\n116 | echo \"Error: file not readable: $input\" >&2\n117 | return 1\n |\n\ninvalid-syntax: Expected `:`, found `;`\n --> tests/fixtures/fixture_shell.sh:115:27\n |\n113 | fi\n114 |\n115 | if [[ ! -r \"$input\" ]]; then\n | ^\n116 | echo \"Error: file not readable: $input\" >&2\n117 | return 1\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:115:27\n |\n113 | fi\n114 |\n115 | if [[ ! -r \"$input\" ]]; then\n | ^\n116 | echo \"Error: file not readable: $input\" >&2\n117 | return 1\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:116:1\n |\n115 | if [[ ! -r \"$input\" ]]; then\n116 | echo \"Error: file not readable: $input\" >&2\n | ^^^^^^^^\n117 | return 1\n118 | fi\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:116:14\n |\n115 | if [[ ! -r \"$input\" ]]; then\n116 | echo \"Error: file not readable: $input\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n117 | return 1\n118 | fi\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:116:50\n |\n115 | if [[ ! -r \"$input\" ]]; then\n116 | echo \"Error: file not readable: $input\" >&2\n | ^\n117 | return 1\n118 | fi\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:118:5\n |\n116 | echo \"Error: file not readable: $input\" >&2\n117 | return 1\n118 | fi\n | ^\n119 |\n120 | # Count lines using wc\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:121:11\n |\n120 | # Count lines using wc\n121 | local line_count\n | ^^^^^^^^^^\n122 | line_count=$(wc -l < \"$input\")\n123 | echo \"Processing $input ($line_count lines)\" >&2\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:122:16\n |\n120 | # Count lines using wc\n121 | local line_count\n122 | line_count=$(wc -l < \"$input\")\n | ^\n123 | echo \"Processing $input ($line_count lines)\" >&2\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:123:10\n |\n121 | local line_count\n122 | line_count=$(wc -l < \"$input\")\n123 | echo \"Processing $input ($line_count lines)\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n124 |\n125 | # Transform and write output\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:123:51\n |\n121 | local line_count\n122 | line_count=$(wc -l < \"$input\")\n123 | echo \"Processing $input ($line_count lines)\" >&2\n | ^\n124 |\n125 | # Transform and write output\n |\n\ninvalid-syntax: Expected `:`, found `=`\n --> tests/fixtures/fixture_shell.sh:126:14\n |\n125 | # Transform and write output\n126 | while IFS= read -r line; do\n | ^\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:126:24\n |\n125 | # Transform and write output\n126 | while IFS= read -r line; do\n | ^^^^\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:126:28\n |\n125 | # Transform and write output\n126 | while IFS= read -r line; do\n | ^\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:128:1\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^^^^^^^^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:128:15\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^^^^^^^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:128:24\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:128:34\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:128:37\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:128:40\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected `,`, found `:`\n --> tests/fixtures/fixture_shell.sh:128:46\n |\n126 | while IFS= read -r line; do\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n | ^\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:129:14\n |\n127 | # Skip empty lines and comments\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n129 | echo \"$line\"\n | ^^^^^^^\n130 | done < \"$input\" > \"$output\"\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:130:5\n |\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n | ^^^^\n131 |\n132 | return 0\n |\n\ninvalid-syntax: Expected `]`, found newline\n --> tests/fixtures/fixture_shell.sh:130:32\n |\n128 | [[ -z \"$line\" || \"$line\" =~ ^[[:space:]]*# ]] && continue\n129 | echo \"$line\"\n130 | done < \"$input\" > \"$output\"\n | ^\n131 |\n132 | return 0\n |\n\ninvalid-syntax: Expected `]`, found `return`\n --> tests/fixtures/fixture_shell.sh:132:5\n |\n130 | done < \"$input\" > \"$output\"\n131 |\n132 | return 0\n | ^^^^^^\n133 | }\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:132:5\n |\n130 | done < \"$input\" > \"$output\"\n131 |\n132 | return 0\n | ^\n133 | }\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:133:1\n |\n132 | return 0\n133 | }\n | ^\n134 |\n135 | # @brief Execute a command with retry logic.\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:133:2\n |\n132 | return 0\n133 | }\n | ^\n134 |\n135 | # @brief Execute a command with retry logic.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:139:17\n |\n137 | # @param $@ The command and arguments to execute.\n138 | # @return Exit code of the final attempt.\n139 | retry_command() {\n | ^\n140 | local max_attempts=\"$1\"\n141 | shift\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:140:11\n |\n138 | # @return Exit code of the final attempt.\n139 | retry_command() {\n140 | local max_attempts=\"$1\"\n | ^^^^^^^^^^^^\n141 | shift\n142 | local attempt=1\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:140:23\n |\n138 | # @return Exit code of the final attempt.\n139 | retry_command() {\n140 | local max_attempts=\"$1\"\n | ^\n141 | shift\n142 | local attempt=1\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:141:5\n |\n139 | retry_command() {\n140 | local max_attempts=\"$1\"\n141 | shift\n | ^^^^^\n142 | local attempt=1\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:142:5\n |\n140 | local max_attempts=\"$1\"\n141 | shift\n142 | local attempt=1\n | ^^^^^\n143 |\n144 | while (( attempt <= max_attempts )); do\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:142:11\n |\n140 | local max_attempts=\"$1\"\n141 | shift\n142 | local attempt=1\n | ^^^^^^^\n143 |\n144 | while (( attempt <= max_attempts )); do\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:142:18\n |\n140 | local max_attempts=\"$1\"\n141 | shift\n142 | local attempt=1\n | ^\n143 |\n144 | while (( attempt <= max_attempts )); do\n |\n\ninvalid-syntax: Expected `}`, found newline\n --> tests/fixtures/fixture_shell.sh:142:20\n |\n140 | local max_attempts=\"$1\"\n141 | shift\n142 | local attempt=1\n | ^\n143 |\n144 | while (( attempt <= max_attempts )); do\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:144:1\n |\n142 | local attempt=1\n143 |\n144 | while (( attempt <= max_attempts )); do\n | ^^^^\n145 | # Attempt the command\n146 | if \"$@\"; then\n |\n\ninvalid-syntax: Expected `:`, found `;`\n --> tests/fixtures/fixture_shell.sh:144:40\n |\n142 | local attempt=1\n143 |\n144 | while (( attempt <= max_attempts )); do\n | ^\n145 | # Attempt the command\n146 | if \"$@\"; then\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:144:40\n |\n142 | local attempt=1\n143 |\n144 | while (( attempt <= max_attempts )); do\n | ^\n145 | # Attempt the command\n146 | if \"$@\"; then\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:146:1\n |\n144 | while (( attempt <= max_attempts )); do\n145 | # Attempt the command\n146 | if \"$@\"; then\n | ^^^^^^^^\n147 | return 0\n148 | fi\n |\n\ninvalid-syntax: Expected `:`, found `;`\n --> tests/fixtures/fixture_shell.sh:146:16\n |\n144 | while (( attempt <= max_attempts )); do\n145 | # Attempt the command\n146 | if \"$@\"; then\n | ^\n147 | return 0\n148 | fi\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:146:16\n |\n144 | while (( attempt <= max_attempts )); do\n145 | # Attempt the command\n146 | if \"$@\"; then\n | ^\n147 | return 0\n148 | fi\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:147:1\n |\n145 | # Attempt the command\n146 | if \"$@\"; then\n147 | return 0\n | ^^^^^^^^^^^^\n148 | fi\n149 | echo \"Attempt $attempt/$max_attempts failed\" >&2\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:148:9\n |\n146 | if \"$@\"; then\n147 | return 0\n148 | fi\n | ^\n149 | echo \"Attempt $attempt/$max_attempts failed\" >&2\n150 | (( attempt++ ))\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:149:14\n |\n147 | return 0\n148 | fi\n149 | echo \"Attempt $attempt/$max_attempts failed\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n150 | (( attempt++ ))\n151 | # Exponential backoff\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:149:55\n |\n147 | return 0\n148 | fi\n149 | echo \"Attempt $attempt/$max_attempts failed\" >&2\n | ^\n150 | (( attempt++ ))\n151 | # Exponential backoff\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:150:22\n |\n148 | fi\n149 | echo \"Attempt $attempt/$max_attempts failed\" >&2\n150 | (( attempt++ ))\n | ^\n151 | # Exponential backoff\n152 | sleep $(( 2 ** (attempt - 1) ))\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:152:15\n |\n150 | (( attempt++ ))\n151 | # Exponential backoff\n152 | sleep $(( 2 ** (attempt - 1) ))\n | ^\n153 | done\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:153:5\n |\n151 | # Exponential backoff\n152 | sleep $(( 2 ** (attempt - 1) ))\n153 | done\n | ^\n154 |\n155 | echo \"All $max_attempts attempts failed\" >&2\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:155:10\n |\n153 | done\n154 |\n155 | echo \"All $max_attempts attempts failed\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n156 | return 1\n157 | }\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:155:47\n |\n153 | done\n154 |\n155 | echo \"All $max_attempts attempts failed\" >&2\n | ^\n156 | return 1\n157 | }\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:157:1\n |\n155 | echo \"All $max_attempts attempts failed\" >&2\n156 | return 1\n157 | }\n | ^\n158 |\n159 | # @brief Log a message with timestamp prefix.\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:157:2\n |\n155 | echo \"All $max_attempts attempts failed\" >&2\n156 | return 1\n157 | }\n | ^\n158 |\n159 | # @brief Log a message with timestamp prefix.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:162:15\n |\n160 | # @param $1 Log level (INFO, WARN, ERROR).\n161 | # @param $@ Message text.\n162 | log_message() {\n | ^\n163 | local level=\"$1\"\n164 | shift\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:163:11\n |\n161 | # @param $@ Message text.\n162 | log_message() {\n163 | local level=\"$1\"\n | ^^^^^\n164 | shift\n165 | local timestamp\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:163:16\n |\n161 | # @param $@ Message text.\n162 | log_message() {\n163 | local level=\"$1\"\n | ^\n164 | shift\n165 | local timestamp\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:164:5\n |\n162 | log_message() {\n163 | local level=\"$1\"\n164 | shift\n | ^^^^^\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:165:5\n |\n163 | local level=\"$1\"\n164 | shift\n165 | local timestamp\n | ^^^^^\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n167 | echo \"[$timestamp] [$level] $*\" >&2\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:165:11\n |\n163 | local level=\"$1\"\n164 | shift\n165 | local timestamp\n | ^^^^^^^^^\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n167 | echo \"[$timestamp] [$level] $*\" >&2\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:166:5\n |\n164 | shift\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n | ^^^^^^^^^\n167 | echo \"[$timestamp] [$level] $*\" >&2\n168 | }\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:166:14\n |\n164 | shift\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n | ^\n167 | echo \"[$timestamp] [$level] $*\" >&2\n168 | }\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:166:15\n |\n164 | shift\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n | ^\n167 | echo \"[$timestamp] [$level] $*\" >&2\n168 | }\n |\n\ninvalid-syntax: Expected `)`, found string\n --> tests/fixtures/fixture_shell.sh:166:22\n |\n164 | shift\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n | ^^^^^^^^^^^^^^^^^^^^\n167 | echo \"[$timestamp] [$level] $*\" >&2\n168 | }\n |\n\ninvalid-syntax: Expected `,`, found `)`\n --> tests/fixtures/fixture_shell.sh:166:42\n |\n164 | shift\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n | ^\n167 | echo \"[$timestamp] [$level] $*\" >&2\n168 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:167:10\n |\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n167 | echo \"[$timestamp] [$level] $*\" >&2\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^\n168 | }\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:167:38\n |\n165 | local timestamp\n166 | timestamp=$(date '+%Y-%m-%d %H:%M:%S')\n167 | echo \"[$timestamp] [$level] $*\" >&2\n | ^\n168 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:172:13\n |\n170 | # @brief Generate a temporary file and return its path.\n171 | # @return Path to the created temporary file.\n172 | make_temp() {\n | ^\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:173:11\n |\n171 | # @return Path to the created temporary file.\n172 | make_temp() {\n173 | local tmpfile\n | ^^^^^^^\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n175 | echo \"$tmpfile\"\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:174:5\n |\n172 | make_temp() {\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n | ^^^^^^^\n175 | echo \"$tmpfile\"\n176 | }\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:174:12\n |\n172 | make_temp() {\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n | ^\n175 | echo \"$tmpfile\"\n176 | }\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:174:13\n |\n172 | make_temp() {\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n | ^\n175 | echo \"$tmpfile\"\n176 | }\n |\n\ninvalid-syntax: Expected `)`, found string\n --> tests/fixtures/fixture_shell.sh:174:22\n |\n172 | make_temp() {\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n175 | echo \"$tmpfile\"\n176 | }\n |\n\ninvalid-syntax: Expected `,`, found `)`\n --> tests/fixtures/fixture_shell.sh:174:52\n |\n172 | make_temp() {\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n | ^\n175 | echo \"$tmpfile\"\n176 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:175:10\n |\n173 | local tmpfile\n174 | tmpfile=$(mktemp \"${TMPDIR:-/tmp}/myapp_XXXXXX\")\n175 | echo \"$tmpfile\"\n | ^^^^^^^^^^\n176 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:181:6\n |\n180 | # @brief Register cleanup function on script exit.\n181 | trap cleanup EXIT\n | ^^^^^^^\n182 |\n183 | # @brief Handle interrupt signal gracefully.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:181:14\n |\n180 | # @brief Register cleanup function on script exit.\n181 | trap cleanup EXIT\n | ^^^^\n182 |\n183 | # @brief Handle interrupt signal gracefully.\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:184:6\n |\n183 | # @brief Handle interrupt signal gracefully.\n184 | trap 'echo \"Interrupted\"; exit 130' INT TERM\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n185 |\n186 | # ── Here document ─────────────────────────────────────────────────────\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:184:37\n |\n183 | # @brief Handle interrupt signal gracefully.\n184 | trap 'echo \"Interrupted\"; exit 130' INT TERM\n | ^^^\n185 |\n186 | # ── Here document ─────────────────────────────────────────────────────\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:184:41\n |\n183 | # @brief Handle interrupt signal gracefully.\n184 | trap 'echo \"Interrupted\"; exit 130' INT TERM\n | ^^^^\n185 |\n186 | # ── Here document ─────────────────────────────────────────────────────\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:189:19\n |\n188 | # @brief Generate a configuration file using heredoc.\n189 | generate_config() {\n | ^\n190 | cat <<EOF\n191 | # Auto-generated configuration\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:192:1\n |\n190 | cat <<EOF\n191 | # Auto-generated configuration\n192 | version=${BUILD_VERSION}\n | ^^^^^^^\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:192:8\n |\n190 | cat <<EOF\n191 | # Auto-generated configuration\n192 | version=${BUILD_VERSION}\n | ^\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:192:9\n |\n190 | cat <<EOF\n191 | # Auto-generated configuration\n192 | version=${BUILD_VERSION}\n | ^\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:193:1\n |\n191 | # Auto-generated configuration\n192 | version=${BUILD_VERSION}\n193 | debug=${DEBUG_MODE}\n | ^^^^^\n194 | max_count=${MAX_COUNT}\n195 | EOF\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:193:6\n |\n191 | # Auto-generated configuration\n192 | version=${BUILD_VERSION}\n193 | debug=${DEBUG_MODE}\n | ^\n194 | max_count=${MAX_COUNT}\n195 | EOF\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:193:7\n |\n191 | # Auto-generated configuration\n192 | version=${BUILD_VERSION}\n193 | debug=${DEBUG_MODE}\n | ^\n194 | max_count=${MAX_COUNT}\n195 | EOF\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:194:1\n |\n192 | version=${BUILD_VERSION}\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n | ^^^^^^^^^\n195 | EOF\n196 | }\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:194:10\n |\n192 | version=${BUILD_VERSION}\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n | ^\n195 | EOF\n196 | }\n |\n\ninvalid-syntax: Got unexpected token $\n --> tests/fixtures/fixture_shell.sh:194:11\n |\n192 | version=${BUILD_VERSION}\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n | ^\n195 | EOF\n196 | }\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:195:1\n |\n193 | debug=${DEBUG_MODE}\n194 | max_count=${MAX_COUNT}\n195 | EOF\n | ^^^\n196 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:203:13\n |\n201 | # @param $1 Non-negative integer.\n202 | # @return Factorial result.\n203 | factorial() {\n | ^\n204 | local n=\"${1:-1}\"\n205 | local result=1\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:204:11\n |\n202 | # @return Factorial result.\n203 | factorial() {\n204 | local n=\"${1:-1}\"\n | ^\n205 | local result=1\n206 | local i\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:204:12\n |\n202 | # @return Factorial result.\n203 | factorial() {\n204 | local n=\"${1:-1}\"\n | ^\n205 | local result=1\n206 | local i\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:205:5\n |\n203 | factorial() {\n204 | local n=\"${1:-1}\"\n205 | local result=1\n | ^^^^^\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:205:11\n |\n203 | factorial() {\n204 | local n=\"${1:-1}\"\n205 | local result=1\n | ^^^^^^\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n |\n\ninvalid-syntax: Expected `,`, found `=`\n --> tests/fixtures/fixture_shell.sh:205:17\n |\n203 | factorial() {\n204 | local n=\"${1:-1}\"\n205 | local result=1\n | ^\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:206:5\n |\n204 | local n=\"${1:-1}\"\n205 | local result=1\n206 | local i\n | ^^^^^\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n |\n\ninvalid-syntax: Expected `,`, found name\n --> tests/fixtures/fixture_shell.sh:206:11\n |\n204 | local n=\"${1:-1}\"\n205 | local result=1\n206 | local i\n | ^\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n |\n\ninvalid-syntax: Expected `}`, found newline\n --> tests/fixtures/fixture_shell.sh:206:12\n |\n204 | local n=\"${1:-1}\"\n205 | local result=1\n206 | local i\n | ^\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:207:1\n |\n205 | local result=1\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n | ^^^^\n208 | # Multiply accumulator\n209 | (( result *= i ))\n |\n\ninvalid-syntax: Expected `)`, found `=`\n --> tests/fixtures/fixture_shell.sh:207:14\n |\n205 | local result=1\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n | ^\n208 | # Multiply accumulator\n209 | (( result *= i ))\n |\n\ninvalid-syntax: Expected an expression\n --> tests/fixtures/fixture_shell.sh:207:31\n |\n205 | local result=1\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n | ^\n208 | # Multiply accumulator\n209 | (( result *= i ))\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:207:32\n |\n205 | local result=1\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n | ^\n208 | # Multiply accumulator\n209 | (( result *= i ))\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:207:33\n |\n205 | local result=1\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n | ^\n208 | # Multiply accumulator\n209 | (( result *= i ))\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:207:33\n |\n205 | local result=1\n206 | local i\n207 | for (( i = 2; i <= n; i++ )); do\n | ^\n208 | # Multiply accumulator\n209 | (( result *= i ))\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:209:1\n |\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n209 | (( result *= i ))\n | ^^^^^^^^\n210 | done\n211 | echo \"$result\"\n |\n\ninvalid-syntax: Expected `)`, found `*=`\n --> tests/fixtures/fixture_shell.sh:209:19\n |\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n209 | (( result *= i ))\n | ^^\n210 | done\n211 | echo \"$result\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:209:24\n |\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n209 | (( result *= i ))\n | ^\n210 | done\n211 | echo \"$result\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:209:25\n |\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n209 | (( result *= i ))\n | ^\n210 | done\n211 | echo \"$result\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:209:26\n |\n207 | for (( i = 2; i <= n; i++ )); do\n208 | # Multiply accumulator\n209 | (( result *= i ))\n | ^\n210 | done\n211 | echo \"$result\"\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:210:5\n |\n208 | # Multiply accumulator\n209 | (( result *= i ))\n210 | done\n | ^\n211 | echo \"$result\"\n212 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:211:10\n |\n209 | (( result *= i ))\n210 | done\n211 | echo \"$result\"\n | ^^^^^^^^^\n212 | }\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:212:1\n |\n210 | done\n211 | echo \"$result\"\n212 | }\n | ^\n213 |\n214 | # ── Source external configuration ─────────────────────────────────────\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:212:2\n |\n210 | done\n211 | echo \"$result\"\n212 | }\n | ^\n213 |\n214 | # ── Source external configuration ─────────────────────────────────────\n |\n\ninvalid-syntax: Expected an identifier\n --> tests/fixtures/fixture_shell.sh:217:11\n |\n216 | # @brief Load external configuration script if present.\n217 | if [[ -f ./config.sh ]]; then\n | ^\n218 | source ./config.sh\n219 | fi\n |\n\ninvalid-syntax: Expected `:`, found `;`\n --> tests/fixtures/fixture_shell.sh:217:24\n |\n216 | # @brief Load external configuration script if present.\n217 | if [[ -f ./config.sh ]]; then\n | ^\n218 | source ./config.sh\n219 | fi\n |\n\nE702 Multiple statements on one line (semicolon)\n --> tests/fixtures/fixture_shell.sh:217:24\n |\n216 | # @brief Load external configuration script if present.\n217 | if [[ -f ./config.sh ]]; then\n | ^\n218 | source ./config.sh\n219 | fi\n |\n\ninvalid-syntax: Unexpected indentation\n --> tests/fixtures/fixture_shell.sh:218:1\n |\n216 | # @brief Load external configuration script if present.\n217 | if [[ -f ./config.sh ]]; then\n218 | source ./config.sh\n | ^^^^\n219 | fi\n |\n\ninvalid-syntax: Expected an identifier\n --> tests/fixtures/fixture_shell.sh:218:13\n |\n216 | # @brief Load external configuration script if present.\n217 | if [[ -f ./config.sh ]]; then\n218 | source ./config.sh\n | ^\n219 | fi\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:219:1\n |\n217 | if [[ -f ./config.sh ]]; then\n218 | source ./config.sh\n219 | fi\n | ^\n220 |\n221 | # coverage extension block\n |\n\ninvalid-syntax: Expected an identifier\n --> tests/fixtures/fixture_shell.sh:222:9\n |\n221 | # coverage extension block\n222 | source ./env.sh\n | ^\n223 | . ./helpers.sh\n224 | source ./shared.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:223:1\n |\n221 | # coverage extension block\n222 | source ./env.sh\n223 | . ./helpers.sh\n | ^\n224 | source ./shared.sh\n225 | . ./paths.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:223:3\n |\n221 | # coverage extension block\n222 | source ./env.sh\n223 | . ./helpers.sh\n | ^\n224 | source ./shared.sh\n225 | . ./paths.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:223:4\n |\n221 | # coverage extension block\n222 | source ./env.sh\n223 | . ./helpers.sh\n | ^\n224 | source ./shared.sh\n225 | . ./paths.sh\n |\n\ninvalid-syntax: Expected an identifier\n --> tests/fixtures/fixture_shell.sh:224:9\n |\n222 | source ./env.sh\n223 | . ./helpers.sh\n224 | source ./shared.sh\n | ^\n225 | . ./paths.sh\n226 | source ./runtime.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:225:1\n |\n223 | . ./helpers.sh\n224 | source ./shared.sh\n225 | . ./paths.sh\n | ^\n226 | source ./runtime.sh\n227 | . ./exports.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:225:3\n |\n223 | . ./helpers.sh\n224 | source ./shared.sh\n225 | . ./paths.sh\n | ^\n226 | source ./runtime.sh\n227 | . ./exports.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:225:4\n |\n223 | . ./helpers.sh\n224 | source ./shared.sh\n225 | . ./paths.sh\n | ^\n226 | source ./runtime.sh\n227 | . ./exports.sh\n |\n\ninvalid-syntax: Expected an identifier\n --> tests/fixtures/fixture_shell.sh:226:9\n |\n224 | source ./shared.sh\n225 | . ./paths.sh\n226 | source ./runtime.sh\n | ^\n227 | . ./exports.sh\n228 | source ./network.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:227:1\n |\n225 | . ./paths.sh\n226 | source ./runtime.sh\n227 | . ./exports.sh\n | ^\n228 | source ./network.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:227:3\n |\n225 | . ./paths.sh\n226 | source ./runtime.sh\n227 | . ./exports.sh\n | ^\n228 | source ./network.sh\n |\n\ninvalid-syntax: Expected a statement\n --> tests/fixtures/fixture_shell.sh:227:4\n |\n225 | . ./paths.sh\n226 | source ./runtime.sh\n227 | . ./exports.sh\n | ^\n228 | source ./network.sh\n |\n\ninvalid-syntax: Expected an identifier\n --> tests/fixtures/fixture_shell.sh:228:9\n |\n226 | source ./runtime.sh\n227 | . ./exports.sh\n228 | source ./network.sh\n | ^\n229 |\n230 | # REQ-COVER-SRS-231 START\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:236:21\n |\n234 | # @param value Input value for helper construct 1.\n235 | # @return Output value for helper construct 1.\n236 | req_cover_shell_1() {\n | ^\n237 | echo \"$(( $1 + 1 ))\"\n238 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:237:8\n |\n235 | # @return Output value for helper construct 1.\n236 | req_cover_shell_1() {\n237 | echo \"$(( $1 + 1 ))\"\n | ^^^^^^^^^^^^^^^\n238 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:245:21\n |\n243 | # @param value Input value for helper construct 2.\n244 | # @return Output value for helper construct 2.\n245 | req_cover_shell_2() {\n | ^\n246 | echo \"$(( $1 + 2 ))\"\n247 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:246:8\n |\n244 | # @return Output value for helper construct 2.\n245 | req_cover_shell_2() {\n246 | echo \"$(( $1 + 2 ))\"\n | ^^^^^^^^^^^^^^^\n247 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:254:21\n |\n252 | # @param value Input value for helper construct 3.\n253 | # @return Output value for helper construct 3.\n254 | req_cover_shell_3() {\n | ^\n255 | echo \"$(( $1 + 3 ))\"\n256 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:255:8\n |\n253 | # @return Output value for helper construct 3.\n254 | req_cover_shell_3() {\n255 | echo \"$(( $1 + 3 ))\"\n | ^^^^^^^^^^^^^^^\n256 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:263:21\n |\n261 | # @param value Input value for helper construct 4.\n262 | # @return Output value for helper construct 4.\n263 | req_cover_shell_4() {\n | ^\n264 | echo \"$(( $1 + 4 ))\"\n265 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:264:8\n |\n262 | # @return Output value for helper construct 4.\n263 | req_cover_shell_4() {\n264 | echo \"$(( $1 + 4 ))\"\n | ^^^^^^^^^^^^^^^\n265 | }\n |\n\ninvalid-syntax: Simple statements must be separated by newlines or semicolons\n --> tests/fixtures/fixture_shell.sh:272:21\n |\n270 | # @param value Input value for helper construct 5.\n271 | # @return Output value for helper construct 5.\n272 | req_cover_shell_5() {\n | ^\n273 | echo \"$(( $1 + 5 ))\"\n274 | }\n |\n\ninvalid-syntax: Expected `,`, found string\n --> tests/fixtures/fixture_shell.sh:273:8\n |\n271 | # @return Output value for helper construct 5.\n272 | req_cover_shell_5() {\n273 | echo \"$(( $1 + 5 ))\"\n | ^^^^^^^^^^^^^^^\n274 | }\n |\n\nFound 259 errors.\n\n",
4
- "stderr": ""
5
- }