From 3ab71d7448a5dfb972ab2c2b06121507ed29d5a4 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 9 Dec 2022 14:46:06 -0600 Subject: [PATCH] Rename test function, make 'bad' files binary & add another test --- .gitignore | 1 + .pre-commit-config.yaml | 4 +- ports/unix/main.c | 4 +- tests/circuitpython/bad4.toml | 1 + tests/circuitpython/environ_test.py | 42 ------------------- tests/circuitpython/getenv_test.py | 20 +++++++++ ...environ_test.py.exp => getenv_test.py.exp} | 35 ++++++++-------- 7 files changed, 44 insertions(+), 63 deletions(-) create mode 100644 tests/circuitpython/bad4.toml delete mode 100644 tests/circuitpython/environ_test.py create mode 100644 tests/circuitpython/getenv_test.py rename tests/circuitpython/{environ_test.py.exp => getenv_test.py.exp} (69%) diff --git a/.gitignore b/.gitignore index 2fdfe207a2..9cb1e9ea5e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ !atmel-samd/asf/**/*.a *.elf *.bin +!*.toml.bin *.map *.hex *.dis diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1905b233cf..05e193f0e9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,9 +8,9 @@ repos: hooks: - id: check-yaml - id: end-of-file-fixer - exclude: '^(tests/.*\.exp|tests/cmdline/.*|tests/.*/data/.*|ports/espressif/esp-idf-config/.*|ports/espressif/boards/.*/sdkconfig)' + exclude: '^(tests/.*\.toml|tests/.*\.exp|tests/cmdline/.*|tests/.*/data/.*|ports/espressif/esp-idf-config/.*|ports/espressif/boards/.*/sdkconfig)' - id: trailing-whitespace - exclude: '^(tests/.*\.exp|tests/cmdline/.*|tests/.*/data/.*|lib/mbedtls_errors/.*)' + exclude: '^(tests/.*\.toml|tests/.*\.exp|tests/cmdline/.*|tests/.*/data/.*|lib/mbedtls_errors/.*)' - repo: local hooks: - id: translations diff --git a/ports/unix/main.c b/ports/unix/main.c index 506a8ed433..e423634e58 100644 --- a/ports/unix/main.c +++ b/ports/unix/main.c @@ -423,9 +423,9 @@ STATIC void set_sys_argv(char *argv[], int argc, int start_arg) { mp_obj_t common_hal_os_getenv_path(const char *path, const char *key, mp_obj_t default_); STATIC mp_obj_t getenv_from_file(mp_obj_t path_in, mp_obj_t key_to_get_in) { return common_hal_os_getenv_path(mp_obj_str_get_str(path_in), - mp_obj_str_get_str(key_to_get_in), default_); + mp_obj_str_get_str(key_to_get_in), mp_const_none); } -MP_DEFINE_CONST_FUN_OBJ_2(getenv_from_file_obj, get_key); +MP_DEFINE_CONST_FUN_OBJ_2(getenv_from_file_obj, getenv_from_file); MP_NOINLINE int main_(int argc, char **argv); diff --git a/tests/circuitpython/bad4.toml b/tests/circuitpython/bad4.toml new file mode 100644 index 0000000000..befe224084 --- /dev/null +++ b/tests/circuitpython/bad4.toml @@ -0,0 +1 @@ +string=" \ No newline at end of file diff --git a/tests/circuitpython/environ_test.py b/tests/circuitpython/environ_test.py deleted file mode 100644 index 9781444100..0000000000 --- a/tests/circuitpython/environ_test.py +++ /dev/null @@ -1,42 +0,0 @@ -import os - -try: - getenv_from_file -except NameError: - # Because run-tests.py suppresses site-packages, this test can't be run - # on the host interpreter. However, it can be run manually to - # generate/update the expected file. - # - # After 3.11 becomes standard, change this to use tomllib. - import tomlkit - - def getenv_from_file(filename, key): - with open(filename) as f: - s = tomlkit.load(f) - return s.get(key, None) - - -def run_test(f, k=None): - try: - v = get_key(f"{BASE}/{f}.toml", k or f) - print(f, k, repr(v)) - except Exception as e: - print(f, k, "err") - - -if "/" in __file__: - BASE = __file__.rsplit("/", 1)[0] -else: - BASE = "." - -run_test("good", "notpresent") -run_test("good", "string") -run_test("good", "number") -run_test("good", "cstring") -run_test("good", "cnumber") -run_test("good", "subvalue") -for i in range(8): - run_test("good", f"string{i}") -run_test("bad1", "string") -run_test("bad2", "string") -run_test("bad3", "string") diff --git a/tests/circuitpython/getenv_test.py b/tests/circuitpython/getenv_test.py new file mode 100644 index 0000000000..d3735cc260 --- /dev/null +++ b/tests/circuitpython/getenv_test.py @@ -0,0 +1,20 @@ +def run_test(f, k=None): + try: + v = getenv_from_file(f"{BASE}/{f}.toml", k or f) + print(f, k, repr(v)) + except Exception as e: + print(f, k, str(e)) + + +BASE = __file__.rpartition("/")[0] or "." + +run_test("good", "notpresent") +run_test("good", "string") +run_test("good", "number") +run_test("good", "cstring") +run_test("good", "cnumber") +run_test("good", "subvalue") +for i in range(8): + run_test("good", f"string{i}") +for i in range(1, 5): + run_test(f"bad{i}", f"string") diff --git a/tests/circuitpython/environ_test.py.exp b/tests/circuitpython/getenv_test.py.exp similarity index 69% rename from tests/circuitpython/environ_test.py.exp rename to tests/circuitpython/getenv_test.py.exp index f168b089c0..e7c58666c2 100644 --- a/tests/circuitpython/environ_test.py.exp +++ b/tests/circuitpython/getenv_test.py.exp @@ -1,17 +1,18 @@ -good notpresent None -good string 'hello world' -good number 7 -good cstring 'hello comment' -good cnumber 127 -good subvalue None -good string0 None -good string1 '\n' -good string2 'Áx' -good string3 'Áx' -good string4 '\x0c"\\' -good string5 '\t\r\x08' -good string6 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -good string7 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -bad1 string err -bad2 string err -bad3 string err +good.toml notpresent None +good.toml string 'hello world' +good.toml number 7 +good.toml cstring 'hello comment' +good.toml cnumber 127 +good.toml subvalue None +good.toml string0 None +good.toml string1 '\n' +good.toml string2 'Áx' +good.toml string3 'Áx' +good.toml string4 '\x0c"\\' +good.toml string5 '\t\r\x08' +good.toml string6 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' +good.toml string7 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' +bad1.toml.bin string Invalid byte '\n' +bad2.toml.bin string Invalid byte '"' +bad3.toml.bin string invalid syntax for integer with base 10: '' +bad4.toml.bin string Invalid byte 'EOF'