diff mbox series

[2/7] docparse: Add tests

Message ID 20211018154800.11013-3-chrubis@suse.cz
State Changes Requested
Headers show
Series docparse improvements | expand

Commit Message

Cyril Hrubis Oct. 18, 2021, 3:47 p.m. UTC
This add a simple tests for the docparse parser.

Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
 docparse/tests/empty_struct.c        |  2 ++
 docparse/tests/empty_struct.c.out    |  3 +++
 docparse/tests/expand_flags.c        |  3 +++
 docparse/tests/expand_flags.c.out    |  6 ++++++
 docparse/tests/include.c             |  5 +++++
 docparse/tests/include.c.out         |  4 ++++
 docparse/tests/include.h             |  1 +
 docparse/tests/macro.c               |  5 +++++
 docparse/tests/macro.c.out           |  4 ++++
 docparse/tests/multiline_macro.c     |  6 ++++++
 docparse/tests/multiline_macro.c.out |  4 ++++
 docparse/tests/tags.c                |  7 +++++++
 docparse/tests/tags.c.out            | 13 +++++++++++++
 docparse/tests/test.sh               | 18 ++++++++++++++++++
 14 files changed, 81 insertions(+)
 create mode 100644 docparse/tests/empty_struct.c
 create mode 100644 docparse/tests/empty_struct.c.out
 create mode 100644 docparse/tests/expand_flags.c
 create mode 100644 docparse/tests/expand_flags.c.out
 create mode 100644 docparse/tests/include.c
 create mode 100644 docparse/tests/include.c.out
 create mode 100644 docparse/tests/include.h
 create mode 100644 docparse/tests/macro.c
 create mode 100644 docparse/tests/macro.c.out
 create mode 100644 docparse/tests/multiline_macro.c
 create mode 100644 docparse/tests/multiline_macro.c.out
 create mode 100644 docparse/tests/tags.c
 create mode 100644 docparse/tests/tags.c.out
 create mode 100755 docparse/tests/test.sh

Comments

Petr Vorel Oct. 22, 2021, 11:32 a.m. UTC | #1
> This add a simple tests for the docparse parser.

Very nice, thanks! Maybe remame multiline_macro.c.out to multiline_macro.json
to get json syntax in editors? (multiline_macro.c.out.json would be ugly).

I also wanted to have perl parser which would take expected output from tests
sources put as comment, but I haven't finished Christian's effort. Thus atm it's
really better just to put files with output.

Kind regards,
Petr
Petr Vorel Oct. 22, 2021, 11:41 a.m. UTC | #2
HI Cyril,

It'd be nice, if this was run by make test.

Also I'm quite surprised by this behavior:

$ cd docparse/tests/ && make test
cat test.sh >test 
chmod a+x test

When this was added?

Kind regards,
Petr
Cyril Hrubis Oct. 25, 2021, 12:46 p.m. UTC | #3
Hi!
> Very nice, thanks! Maybe remame multiline_macro.c.out to multiline_macro.json
> to get json syntax in editors? (multiline_macro.c.out.json would be ugly).

What about foo.c.json then?
Cyril Hrubis Oct. 25, 2021, 12:51 p.m. UTC | #4
Hi!
> It'd be nice, if this was run by make test.
> 
> Also I'm quite surprised by this behavior:
> 
> $ cd docparse/tests/ && make test
> cat test.sh >test 
> chmod a+x test
>
> When this was added?

There is no Makefile in that directory, this does not even make any
sense. I guess that this is GNU Make pulling default rules out of thin
air...
Petr Vorel Oct. 25, 2021, 8 p.m. UTC | #5
> Hi!
> > Very nice, thanks! Maybe remame multiline_macro.c.out to multiline_macro.json
> > to get json syntax in editors? (multiline_macro.c.out.json would be ugly).

> What about foo.c.json then?
Sure, LGTM.

Kind regards,
Petr
Petr Vorel Oct. 25, 2021, 8:01 p.m. UTC | #6
> Hi!
> > It'd be nice, if this was run by make test.

> > Also I'm quite surprised by this behavior:

> > $ cd docparse/tests/ && make test
> > cat test.sh >test 
> > chmod a+x test

> > When this was added?

> There is no Makefile in that directory, this does not even make any
> sense. I guess that this is GNU Make pulling default rules out of thin
> air...
GNU make again surprised me :) OK, let's ignore this funny default target.
But it'd be nice to have these tests run in CI and in make test target by
default.

Kind regards,
Petr
diff mbox series

Patch

diff --git a/docparse/tests/empty_struct.c b/docparse/tests/empty_struct.c
new file mode 100644
index 000000000..e5d986413
--- /dev/null
+++ b/docparse/tests/empty_struct.c
@@ -0,0 +1,2 @@ 
+static struct tst_test test = {
+};
diff --git a/docparse/tests/empty_struct.c.out b/docparse/tests/empty_struct.c.out
new file mode 100644
index 000000000..9f49f5332
--- /dev/null
+++ b/docparse/tests/empty_struct.c.out
@@ -0,0 +1,3 @@ 
+  "empty_struct": {
+   "fname": "empty_struct.c"
+  }
\ No newline at end of file
diff --git a/docparse/tests/expand_flags.c b/docparse/tests/expand_flags.c
new file mode 100644
index 000000000..64f6da64e
--- /dev/null
+++ b/docparse/tests/expand_flags.c
@@ -0,0 +1,3 @@ 
+static struct tst_test test = {
+	.all_filesystems = 1,
+};
diff --git a/docparse/tests/expand_flags.c.out b/docparse/tests/expand_flags.c.out
new file mode 100644
index 000000000..cd79dd296
--- /dev/null
+++ b/docparse/tests/expand_flags.c.out
@@ -0,0 +1,6 @@ 
+  "expand_flags": {
+   "all_filesystems": "1",
+   "needs_device": "1",
+   "needs_tmpdir": "1",
+   "fname": "expand_flags.c"
+  }
\ No newline at end of file
diff --git a/docparse/tests/include.c b/docparse/tests/include.c
new file mode 100644
index 000000000..7a35e3bb4
--- /dev/null
+++ b/docparse/tests/include.c
@@ -0,0 +1,5 @@ 
+#include "include.h"
+
+static struct tst_test test = {
+	.test_variants = TEST_VARIANTS,
+};
diff --git a/docparse/tests/include.c.out b/docparse/tests/include.c.out
new file mode 100644
index 000000000..b4ef1ccda
--- /dev/null
+++ b/docparse/tests/include.c.out
@@ -0,0 +1,4 @@ 
+  "include": {
+   "test_variants": "10",
+   "fname": "include.c"
+  }
\ No newline at end of file
diff --git a/docparse/tests/include.h b/docparse/tests/include.h
new file mode 100644
index 000000000..efa11d24f
--- /dev/null
+++ b/docparse/tests/include.h
@@ -0,0 +1 @@ 
+#define TEST_VARIANTS 10
diff --git a/docparse/tests/macro.c b/docparse/tests/macro.c
new file mode 100644
index 000000000..296da12f5
--- /dev/null
+++ b/docparse/tests/macro.c
@@ -0,0 +1,5 @@ 
+#define TEST_VARIANTS 10
+
+static struct tst_test test = {
+	.test_variants = TEST_VARIANTS,
+};
diff --git a/docparse/tests/macro.c.out b/docparse/tests/macro.c.out
new file mode 100644
index 000000000..0dc73d8ec
--- /dev/null
+++ b/docparse/tests/macro.c.out
@@ -0,0 +1,4 @@ 
+  "macro": {
+   "test_variants": "10",
+   "fname": "macro.c"
+  }
\ No newline at end of file
diff --git a/docparse/tests/multiline_macro.c b/docparse/tests/multiline_macro.c
new file mode 100644
index 000000000..2de58112b
--- /dev/null
+++ b/docparse/tests/multiline_macro.c
@@ -0,0 +1,6 @@ 
+#define TEST_VARIANTS \
+	10
+
+static struct tst_test test = {
+	.test_variants = TEST_VARIANTS,
+};
diff --git a/docparse/tests/multiline_macro.c.out b/docparse/tests/multiline_macro.c.out
new file mode 100644
index 000000000..bafd037da
--- /dev/null
+++ b/docparse/tests/multiline_macro.c.out
@@ -0,0 +1,4 @@ 
+  "multiline_macro": {
+   "test_variants": "10",
+   "fname": "multiline_macro.c"
+  }
\ No newline at end of file
diff --git a/docparse/tests/tags.c b/docparse/tests/tags.c
new file mode 100644
index 000000000..ade3974ff
--- /dev/null
+++ b/docparse/tests/tags.c
@@ -0,0 +1,7 @@ 
+static struct tst_test test = {
+	.tags = (const struct tst_tag[]) {
+		{"tag-name-1", "tag-value-1"},
+		{"tag-name-2", "tag-value-2"},
+		{}
+	}
+};
diff --git a/docparse/tests/tags.c.out b/docparse/tests/tags.c.out
new file mode 100644
index 000000000..14cc14f1c
--- /dev/null
+++ b/docparse/tests/tags.c.out
@@ -0,0 +1,13 @@ 
+  "tags": {
+   "tags": [
+     [
+      "tag-name-1",
+      "tag-value-1"
+     ],
+     [
+      "tag-name-2",
+      "tag-value-2"
+     ]
+    ],
+   "fname": "tags.c"
+  }
\ No newline at end of file
diff --git a/docparse/tests/test.sh b/docparse/tests/test.sh
new file mode 100755
index 000000000..cc78dcae6
--- /dev/null
+++ b/docparse/tests/test.sh
@@ -0,0 +1,18 @@ 
+#!/bin/sh
+
+fail=0
+
+for i in *.c; do
+	../docparse $i > out.tmp
+	if ! diff out.tmp $i.out &> /dev/null; then
+		echo "***"
+		echo "$i output differs!"
+		diff -u out.tmp $i.out
+		echo "***"
+		fail=1
+	fi
+done
+
+rm -f out.tmp
+
+exit $fail