summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter <peter@pmikkelsen.com>2026-09-11 19:46:19 +0000
committerpeter <peter@pmikkelsen.com>2026-09-11 19:46:19 +0000
commit89cb9ef00ed67b0705a532d052e79d4ad0efa7b7 (patch)
tree280e96bb95a0f25585958b6d3554884fc89e5900
parent2fe657dde56ded2a06a57826f6f3fc641f440727 (diff)
Tests to get coverage of module.c
FossilOrigin-Name: a711bc8cdf63cce84b3322b4396c277ec72697696555d1dac3d22aa54f4794c6
-rw-r--r--src/lib/aplwc_internal.h6
-rw-r--r--src/lib/module.c7
-rw-r--r--src/lib/syntax.c1
-rwxr-xr-xtests/scripts/bad/10.aplwc3
-rwxr-xr-xtests/scripts/bad/11.aplwc3
-rwxr-xr-xtests/scripts/bad/12.aplwc3
-rwxr-xr-xtests/scripts/bad/13.aplwc3
-rwxr-xr-xtests/scripts/bad/7.aplwc3
-rwxr-xr-xtests/scripts/bad/8.aplwc3
-rwxr-xr-xtests/scripts/bad/9.aplwc3
-rwxr-xr-xtests/scripts/good/3.aplwc3
11 files changed, 29 insertions, 9 deletions
diff --git a/src/lib/aplwc_internal.h b/src/lib/aplwc_internal.h
index 0bdd5b5..328b5de 100644
--- a/src/lib/aplwc_internal.h
+++ b/src/lib/aplwc_internal.h
@@ -32,11 +32,11 @@ typedef int symbol_t;
enum keyword {
KW_MODULE,
KW_SYMBOL,
- KW_EXPORT,
-
- N_KWDS
+ KW_EXPORT
};
+#define N_KWDS KW_EXPORT+1
+
struct aplwc {
struct aplwc_fns fns;
enum aplwc_rc last_error;
diff --git a/src/lib/module.c b/src/lib/module.c
index c7e552f..2ef5ba3 100644
--- a/src/lib/module.c
+++ b/src/lib/module.c
@@ -65,7 +65,7 @@ read_keyword_decl(struct aplwc *aplwc, struct aplwc_module *module, size_t offse
#define t(n) module->tokens->tokens[offset+(n)]
- max = module->tokens->length - offset;
+ max = module->tokens->length - offset - 1;
assert(t(0).tag == TOKEN_TAG_KEYWORD);
switch(t(0).data.keyword){
@@ -103,12 +103,9 @@ fail:
}
}
break;
- default:
- assert(0);
- return -1;
}
- if((len >= 0) && (max > (size_t)len))
+ if(ALWAYS(len >= 0) && (max > (size_t)len))
if(t(len+1).tag != TOKEN_TAG_NEWLINE)
goto fail;
len++; /* For the keyword itself */
diff --git a/src/lib/syntax.c b/src/lib/syntax.c
index 5c340bc..4850b1a 100644
--- a/src/lib/syntax.c
+++ b/src/lib/syntax.c
@@ -520,7 +520,6 @@ keyword_init(struct aplwc *aplwc)
case KW_MODULE: cstr = "module"; break;
case KW_SYMBOL: cstr = "symbol"; break;
case KW_EXPORT: cstr = "export"; break;
- case N_KWDS: assert(0); break;
}
if((str = chars_to_string(aplwc, cstr, -1)) == NULL)
diff --git a/tests/scripts/bad/10.aplwc b/tests/scripts/bad/10.aplwc
new file mode 100755
index 0000000..ae7d5f7
--- /dev/null
+++ b/tests/scripts/bad/10.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:module \ No newline at end of file
diff --git a/tests/scripts/bad/11.aplwc b/tests/scripts/bad/11.aplwc
new file mode 100755
index 0000000..3de20cd
--- /dev/null
+++ b/tests/scripts/bad/11.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:module 123
diff --git a/tests/scripts/bad/12.aplwc b/tests/scripts/bad/12.aplwc
new file mode 100755
index 0000000..471643b
--- /dev/null
+++ b/tests/scripts/bad/12.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:symbol plus \ No newline at end of file
diff --git a/tests/scripts/bad/13.aplwc b/tests/scripts/bad/13.aplwc
new file mode 100755
index 0000000..50bdb9f
--- /dev/null
+++ b/tests/scripts/bad/13.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:symbol plus + +
diff --git a/tests/scripts/bad/7.aplwc b/tests/scripts/bad/7.aplwc
new file mode 100755
index 0000000..ae9dcf3
--- /dev/null
+++ b/tests/scripts/bad/7.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:symbol \ No newline at end of file
diff --git a/tests/scripts/bad/8.aplwc b/tests/scripts/bad/8.aplwc
new file mode 100755
index 0000000..c2610e0
--- /dev/null
+++ b/tests/scripts/bad/8.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:symbol 123
diff --git a/tests/scripts/bad/9.aplwc b/tests/scripts/bad/9.aplwc
new file mode 100755
index 0000000..469cc0b
--- /dev/null
+++ b/tests/scripts/bad/9.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:symbol plus 123
diff --git a/tests/scripts/good/3.aplwc b/tests/scripts/good/3.aplwc
new file mode 100755
index 0000000..7a6c0c5
--- /dev/null
+++ b/tests/scripts/good/3.aplwc
@@ -0,0 +1,3 @@
+#!/usr/bin/env aplwc-repl
+
+:export plus minus foo \ No newline at end of file