aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2019-03-01 16:40:48 +0100
committerMarkus Armbruster <armbru@redhat.com>2019-03-05 14:43:11 +0100
commit709395f8f627808175307f0c298ce71614fa67d0 (patch)
tree6b4741f70ae41f46617e9e5c34dfa7e6e346028a /tests
parentdddee4d7ba3c0992a32f805c02cb612775dfba54 (diff)
downloadqemu-709395f8f627808175307f0c298ce71614fa67d0.zip
qemu-709395f8f627808175307f0c298ce71614fa67d0.tar.gz
qemu-709395f8f627808175307f0c298ce71614fa67d0.tar.bz2
qapi: Fix code generation for sub-modules in other directories
The #include directives to pull in sub-modules use file names relative to the main module. Works only when all modules are in the same directory, or the main module's output directory is in the compiler's include path. Use relative file names instead. The dummy variable we generate to avoid empty .o files has an invalid name for sub-modules in other directories. Fix that. Both messed up in commit 252dc3105fc "qapi: Generate separate .h, .c for each module". Escaped testing because tests/qapi-schema-test.json doesn't cover sub-modules in other directories, only tests/qapi-schema/include-relpath.json does, and we generate and compile C code only for the former, not the latter. Fold the latter into the former. This would have caught the mistakes fixed in this commit. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20190301154051.23317-5-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/.gitignore8
-rw-r--r--tests/Makefile.include44
-rw-r--r--tests/qapi-schema/include-relpath-sub.json2
-rw-r--r--tests/qapi-schema/include-relpath.err0
-rw-r--r--tests/qapi-schema/include-relpath.exit1
-rw-r--r--tests/qapi-schema/include-relpath.json1
-rw-r--r--tests/qapi-schema/include-relpath.out20
-rw-r--r--tests/qapi-schema/include/relpath.json1
-rw-r--r--tests/qapi-schema/include/sub-module.json5
-rw-r--r--tests/qapi-schema/qapi-schema-test.json3
-rw-r--r--tests/qapi-schema/qapi-schema-test.out9
-rw-r--r--tests/qapi-schema/sub-sub-module.json6
12 files changed, 70 insertions, 30 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
index f2bf85c..c88f8f2 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -12,9 +12,17 @@ test-*
!test-*.c
!docker/test-*
test-qapi-commands.[ch]
+include/test-qapi-commands-sub-module.[ch]
+test-qapi-commands-sub-sub-module.[ch]
test-qapi-events.[ch]
+include/test-qapi-events-sub-module.[ch]
+test-qapi-events-sub-sub-module.[ch]
test-qapi-types.[ch]
+include/test-qapi-types-sub-module.[ch]
+test-qapi-types-sub-sub-module.[ch]
test-qapi-visit.[ch]
+include/test-qapi-visit-sub-module.[ch]
+test-qapi-visit-sub-sub-module.[ch]
test-qapi-introspect.[ch]
*-test
qapi-schema/*.test.*
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 5527581..97e1cb9 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -441,7 +441,6 @@ qapi-schema += include-format-err.json
qapi-schema += include-nested-err.json
qapi-schema += include-no-file.json
qapi-schema += include-non-file.json
-qapi-schema += include-relpath.json
qapi-schema += include-repetition.json
qapi-schema += include-self-cycle.json
qapi-schema += include-simple.json
@@ -508,8 +507,18 @@ qapi-schema += unknown-expr-key.json
check-qapi-schema-y := $(addprefix tests/qapi-schema/, $(qapi-schema))
-GENERATED_FILES += tests/test-qapi-types.h tests/test-qapi-visit.h \
- tests/test-qapi-commands.h tests/test-qapi-events.h \
+GENERATED_FILES += tests/test-qapi-types.h \
+ tests/include/test-qapi-types-sub-module.h \
+ tests/test-qapi-types-sub-sub-module.h \
+ tests/test-qapi-visit.h \
+ tests/include/test-qapi-visit-sub-module.h \
+ tests/test-qapi-visit-sub-sub-module.h \
+ tests/test-qapi-commands.h \
+ tests/include/test-qapi-commands-sub-module.h \
+ tests/test-qapi-commands-sub-sub-module.h \
+ tests/test-qapi-events.h \
+ tests/include/test-qapi-events-sub-module.h \
+ tests/test-qapi-events-sub-sub-module.h \
tests/test-qapi-introspect.h
test-obj-y = tests/check-qnum.o tests/check-qstring.o tests/check-qdict.o \
@@ -537,7 +546,12 @@ QEMU_CFLAGS += -I$(SRC_PATH)/tests
# Deps that are common to various different sets of tests below
test-util-obj-y = libqemuutil.a
test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y)
-test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \
+test-qapi-obj-y = tests/test-qapi-types.o \
+ tests/include/test-qapi-types-sub-module.o \
+ tests/test-qapi-types-sub-sub-module.o \
+ tests/test-qapi-visit.o \
+ tests/include/test-qapi-visit-sub-module.o \
+ tests/test-qapi-visit-sub-sub-module.o \
tests/test-qapi-introspect.o \
$(test-qom-obj-y)
benchmark-crypto-obj-y = $(authz-obj-y) $(crypto-obj-y) $(test-qom-obj-y)
@@ -613,12 +627,32 @@ tests/test-replication$(EXESUF): tests/test-replication.o $(test-util-obj-y) \
$(test-block-obj-y)
tests/test-qapi-types.c tests/test-qapi-types.h \
+tests/include/test-qapi-types-sub-module.c \
+tests/include/test-qapi-types-sub-module.h \
+tests/test-qapi-types-sub-sub-module.c \
+tests/test-qapi-types-sub-sub-module.h \
tests/test-qapi-visit.c tests/test-qapi-visit.h \
+tests/include/test-qapi-visit-sub-module.c \
+tests/include/test-qapi-visit-sub-module.h \
+tests/test-qapi-visit-sub-sub-module.c \
+tests/test-qapi-visit-sub-sub-module.h \
tests/test-qapi-commands.h tests/test-qapi-commands.c \
+tests/include/test-qapi-commands-sub-module.h \
+tests/include/test-qapi-commands-sub-module.c \
+tests/test-qapi-commands-sub-sub-module.h \
+tests/test-qapi-commands-sub-sub-module.c \
tests/test-qapi-events.c tests/test-qapi-events.h \
+tests/include/test-qapi-events-sub-module.c \
+tests/include/test-qapi-events-sub-module.h \
+tests/test-qapi-events-sub-sub-module.c \
+tests/test-qapi-events-sub-sub-module.h \
tests/test-qapi-introspect.c tests/test-qapi-introspect.h: \
tests/test-qapi-gen-timestamp ;
-tests/test-qapi-gen-timestamp: $(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(qapi-py)
+tests/test-qapi-gen-timestamp: \
+ $(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json \
+ $(SRC_PATH)/tests/qapi-schema/include/sub-module.json \
+ $(SRC_PATH)/tests/qapi-schema/sub-sub-module.json \
+ $(qapi-py)
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
-o tests -p "test-" $<, \
"GEN","$(@:%-timestamp=%)")
diff --git a/tests/qapi-schema/include-relpath-sub.json b/tests/qapi-schema/include-relpath-sub.json
deleted file mode 100644
index 4bd4af4..0000000
--- a/tests/qapi-schema/include-relpath-sub.json
+++ /dev/null
@@ -1,2 +0,0 @@
-{ 'enum': 'Status',
- 'data': [ 'good', 'bad', 'ugly' ] }
diff --git a/tests/qapi-schema/include-relpath.err b/tests/qapi-schema/include-relpath.err
deleted file mode 100644
index e69de29..0000000
--- a/tests/qapi-schema/include-relpath.err
+++ /dev/null
diff --git a/tests/qapi-schema/include-relpath.exit b/tests/qapi-schema/include-relpath.exit
deleted file mode 100644
index 573541a..0000000
--- a/tests/qapi-schema/include-relpath.exit
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/tests/qapi-schema/include-relpath.json b/tests/qapi-schema/include-relpath.json
deleted file mode 100644
index 05018f3..0000000
--- a/tests/qapi-schema/include-relpath.json
+++ /dev/null
@@ -1 +0,0 @@
-{ 'include': 'include/relpath.json' }
diff --git a/tests/qapi-schema/include-relpath.out b/tests/qapi-schema/include-relpath.out
deleted file mode 100644
index cf8636b..0000000
--- a/tests/qapi-schema/include-relpath.out
+++ /dev/null
@@ -1,20 +0,0 @@
-module None
-object q_empty
-enum QType
- prefix QTYPE
- member none
- member qnull
- member qnum
- member qstring
- member qdict
- member qlist
- member qbool
-module include-relpath.json
-include include/relpath.json
-module include/relpath.json
-include include-relpath-sub.json
-module include-relpath-sub.json
-enum Status
- member good
- member bad
- member ugly
diff --git a/tests/qapi-schema/include/relpath.json b/tests/qapi-schema/include/relpath.json
deleted file mode 100644
index 45dee24..0000000
--- a/tests/qapi-schema/include/relpath.json
+++ /dev/null
@@ -1 +0,0 @@
-{ 'include': '../include-relpath-sub.json' }
diff --git a/tests/qapi-schema/include/sub-module.json b/tests/qapi-schema/include/sub-module.json
new file mode 100644
index 0000000..f2bdbd3
--- /dev/null
+++ b/tests/qapi-schema/include/sub-module.json
@@ -0,0 +1,5 @@
+# *-*- Mode: Python -*-*
+
+# Sub-module of ../qapi-schema-test.json
+
+{ 'include': '../sub-sub-module.json' }
diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json
index 70612f3..1f130a0 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -130,6 +130,9 @@
'sizes': ['size'],
'any': ['any'] } }
+# for testing sub-modules
+{ 'include': 'include/sub-module.json' }
+
# testing commands
{ 'command': 'user_def_cmd', 'data': {} }
{ 'command': 'user_def_cmd1', 'data': {'ud1a': 'UserDefOne'} }
diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out
index 97f671c..baba4c8 100644
--- a/tests/qapi-schema/qapi-schema-test.out
+++ b/tests/qapi-schema/qapi-schema-test.out
@@ -176,6 +176,15 @@ object UserDefNativeListUnion
case string: q_obj_strList-wrapper
case sizes: q_obj_sizeList-wrapper
case any: q_obj_anyList-wrapper
+include include/sub-module.json
+module include/sub-module.json
+include sub-sub-module.json
+module sub-sub-module.json
+enum Status
+ member good
+ member bad
+ member ugly
+module qapi-schema-test.json
command user_def_cmd None -> None
gen=True success_response=True boxed=False oob=False preconfig=False
object q_obj_user_def_cmd1-arg
diff --git a/tests/qapi-schema/sub-sub-module.json b/tests/qapi-schema/sub-sub-module.json
new file mode 100644
index 0000000..524ef9b
--- /dev/null
+++ b/tests/qapi-schema/sub-sub-module.json
@@ -0,0 +1,6 @@
+# *-*- Mode: Python -*-*
+
+# Sub-module of sub-module include/sub-module.json of qapi-schema-test.json
+
+{ 'enum': 'Status',
+ 'data': [ 'good', 'bad', 'ugly' ] }