[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 11/30] qapi: Improve include file name reporting in e
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PULL 11/30] qapi: Improve include file name reporting in error messages |
Date: |
Thu, 1 Mar 2018 13:42:26 -0600 |
From: Markus Armbruster <address@hidden>
Error messages print absolute file names of included files even if the
user gave a relative one on the command line:
$ PYTHONPATH=scripts python -B tests/qapi-schema/test-qapi.py
tests/qapi-schema/include-cycle.json
In file included from tests/qapi-schema/include-cycle.json:1:
In file included from
/work/armbru/qemu/tests/qapi-schema/include-cycle-b.json:1:
/work/armbru/qemu/tests/qapi-schema/include-cycle-c.json:1: Inclusion loop
for include-cycle.json
Improve this to
In file included from tests/qapi-schema/include-cycle.json:1:
In file included from tests/qapi-schema/include-cycle-b.json:1:
tests/qapi-schema/include-cycle-c.json:1: Inclusion loop for
include-cycle.json
The error message when an include file can't be opened prints the
include directive's file name, which is relative to the including
file. Change this to print the file name relative to the working
directory. Visible in tests/qapi-schema/include-no-file.err.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Michael Roth <address@hidden>
Signed-off-by: Eric Blake <address@hidden>
---
scripts/qapi/common.py | 12 ++++++------
tests/qapi-schema/include-no-file.err | 2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
index 47673928dcc..bfa9bfec01d 100644
--- a/scripts/qapi/common.py
+++ b/scripts/qapi/common.py
@@ -259,9 +259,8 @@ class QAPIDoc(object):
class QAPISchemaParser(object):
def __init__(self, fp, previously_included=[], incl_info=None):
- abs_fname = os.path.abspath(fp.name)
self.fname = fp.name
- previously_included.append(abs_fname)
+ previously_included.append(os.path.abspath(fp.name))
self.incl_info = incl_info
self.src = fp.read()
if self.src == '' or self.src[-1] != '\n':
@@ -292,7 +291,7 @@ class QAPISchemaParser(object):
if not isinstance(include, str):
raise QAPISemError(info,
"Value of 'include' must be a string")
- self._include(include, info, os.path.dirname(abs_fname),
+ self._include(include, info, os.path.dirname(self.fname),
previously_included)
elif "pragma" in expr:
self.reject_expr_doc(cur_doc)
@@ -325,7 +324,8 @@ class QAPISchemaParser(object):
% doc.symbol)
def _include(self, include, info, base_dir, previously_included):
- incl_abs_fname = os.path.join(base_dir, include)
+ incl_fname = os.path.join(base_dir, include)
+ incl_abs_fname = os.path.abspath(incl_fname)
# catch inclusion cycle
inf = info
while inf:
@@ -337,9 +337,9 @@ class QAPISchemaParser(object):
if incl_abs_fname in previously_included:
return
try:
- fobj = open(incl_abs_fname, 'r')
+ fobj = open(incl_fname, 'r')
except IOError as e:
- raise QAPISemError(info, '%s: %s' % (e.strerror, include))
+ raise QAPISemError(info, '%s: %s' % (e.strerror, incl_fname))
exprs_include = QAPISchemaParser(fobj, previously_included, info)
self.exprs.extend(exprs_include.exprs)
self.docs.extend(exprs_include.docs)
diff --git a/tests/qapi-schema/include-no-file.err
b/tests/qapi-schema/include-no-file.err
index d5b9b22d85d..e42bcf4bc1a 100644
--- a/tests/qapi-schema/include-no-file.err
+++ b/tests/qapi-schema/include-no-file.err
@@ -1 +1 @@
-tests/qapi-schema/include-no-file.json:1: No such file or directory:
include-no-file-sub.json
+tests/qapi-schema/include-no-file.json:1: No such file or directory:
tests/qapi-schema/include-no-file-sub.json
--
2.14.3
- [Qemu-devel] [PULL 03/30] qapi: Generate up-to-date copyright notice, (continued)
- [Qemu-devel] [PULL 03/30] qapi: Generate up-to-date copyright notice, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 02/30] qapi: Streamline boilerplate comment generation, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 07/30] qapi: Turn generators into modules, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 09/30] qapi-gen: Convert from getopt to argparse, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 05/30] qapi: New classes QAPIGenC, QAPIGenH, QAPIGenDoc, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 06/30] qapi: Reduce use of global variables in generators some, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 10/30] qapi: Touch generated files only when they change, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 12/30] qapi/common: Eliminate QAPISchema.exprs, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 13/30] qapi: Lift error reporting from QAPISchema.__init__() to callers, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 15/30] qapi: Record 'include' directives in parse tree, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 11/30] qapi: Improve include file name reporting in error messages,
Eric Blake <=
- [Qemu-devel] [PULL 08/30] qapi-gen: New common driver for code and doc generators, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 14/30] qapi: Concentrate QAPISchemaParser.exprs updates in .__init__(), Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 16/30] qapi: Generate in source order, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 17/30] qapi: Record 'include' directives in intermediate representation, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 18/30] qapi: Rename generated qmp-marshal.c to qmp-commands.c, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 21/30] qapi/common: Fix guardname() for funny filenames, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 20/30] qapi/types qapi/visit: Generate built-in stuff into separate files, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 19/30] qapi: Make code-generating visitors use QAPIGen more, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 22/30] qapi: Generate separate .h, .c for each module, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 24/30] watchdog: Consolidate QAPI into single file, Eric Blake, 2018/03/01