From 60ccf528dbf6b6dc7f52e0ee56310666c7ea2d6a Mon Sep 17 00:00:00 2001 From: Gonzalo Larralde <132825+gonzalolarralde@users.noreply.github.com> Date: Fri, 9 Jan 2026 02:46:15 -0300 Subject: [PATCH] Add PIOASM test cases for error and valid outputs Added new test cases to cover invalid character errors, invalid .lang_opt usage, unknown directive errors, and a valid JSON output scenario for pioasm. These tests improve coverage of error handling and output formatting. --- .../general/test_invalid_character_errors.pio | 13 +++++ .../general/test_lang_opt_invalid_errors.pio | 16 ++++++ .../general/test_unknown_directive_errors.pio | 13 +++++ .../output/test_output_json_full_valid.pio | 57 +++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 tools/pioasm/test/errors/general/test_invalid_character_errors.pio create mode 100644 tools/pioasm/test/errors/general/test_lang_opt_invalid_errors.pio create mode 100644 tools/pioasm/test/errors/general/test_unknown_directive_errors.pio create mode 100644 tools/pioasm/test/valid/output/test_output_json_full_valid.pio diff --git a/tools/pioasm/test/errors/general/test_invalid_character_errors.pio b/tools/pioasm/test/errors/general/test_invalid_character_errors.pio new file mode 100644 index 00000000..7898f04d --- /dev/null +++ b/tools/pioasm/test/errors/general/test_invalid_character_errors.pio @@ -0,0 +1,13 @@ +// run: pioasm input.pio +.program invalid_character +@ + nop +// -- Output +// Command: pioasm input.pio +// Exit code: 1 +// Stdout: +// Stderr: +// input.pio:3.1: invalid character: @ +// 3 | @ +// | ^ +// diff --git a/tools/pioasm/test/errors/general/test_lang_opt_invalid_errors.pio b/tools/pioasm/test/errors/general/test_lang_opt_invalid_errors.pio new file mode 100644 index 00000000..5b9e2b04 --- /dev/null +++ b/tools/pioasm/test/errors/general/test_lang_opt_invalid_errors.pio @@ -0,0 +1,16 @@ +// run: pioasm input.pio +.program lang_opt_invalid +.lang_opt python foo = "unterminated + nop +// -- Output +// Command: pioasm input.pio +// Exit code: 1 +// Stdout: +// Stderr: +// input.pio:3.24: invalid character: " +// 3 | .lang_opt python foo = "unterminated +// | ^ +// input.pio:3.1-22: expected format is .lang_opt language option_name = option_value +// 3 | .lang_opt python foo = "unterminated +// | ^~~~~~~~~~~~~~~~~~~~~~ +// diff --git a/tools/pioasm/test/errors/general/test_unknown_directive_errors.pio b/tools/pioasm/test/errors/general/test_unknown_directive_errors.pio new file mode 100644 index 00000000..54e2d698 --- /dev/null +++ b/tools/pioasm/test/errors/general/test_unknown_directive_errors.pio @@ -0,0 +1,13 @@ +// run: pioasm input.pio +.program unknown_directive +.bogus 1 + nop +// -- Output +// Command: pioasm input.pio +// Exit code: 1 +// Stdout: +// Stderr: +// input.pio:3.1-6: unknown directive .bogus +// 3 | .bogus 1 +// | ^~~~~~ +// diff --git a/tools/pioasm/test/valid/output/test_output_json_full_valid.pio b/tools/pioasm/test/valid/output/test_output_json_full_valid.pio new file mode 100644 index 00000000..120ff6f6 --- /dev/null +++ b/tools/pioasm/test/valid/output/test_output_json_full_valid.pio @@ -0,0 +1,57 @@ +// run: pioasm -o json input.pio +.define PUBLIC global_const 7 + +.program format_test +.origin 4 +.side_set 2 opt pindirs +.define PUBLIC prog_const 3 +public entry: +.wrap_target + nop side 1 +.wrap + +.program second_prog + nop +// -- Output +// Command: pioasm -o json input.pio +// Exit code: 0 +// Stdout: +// { +// "publicSymbols": { +// "global_const": 7 +// }, +// "programs": [ +// { +// "name": "format_test", +// "wrapTarget": 0, +// "wrap": 0, +// "origin": 4, +// "sideset": {"size": 3, "optional": true, "pindirs": true}, +// "publicSymbols": { +// "prog_const": 3 +// }, +// "publicLabels": { +// "entry": 0 +// }, +// "instructions": [ +// {"hex": "B442"} +// ] +// }, +// { +// "name": "second_prog", +// "wrapTarget": 0, +// "wrap": 0, +// "origin": -1, +// "sideset": {"size": 0, "optional": false, "pindirs": false}, +// "publicSymbols": { +// }, +// "publicLabels": { +// }, +// "instructions": [ +// {"hex": "A042"} +// ] +// } +// ] +// } +// +// Stderr: