aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xextras/scripts/tests/test_crcchecker.sh11
-rwxr-xr-xsrc/tools/vppapigen/vppapigen.py11
2 files changed, 20 insertions, 2 deletions
diff --git a/extras/scripts/tests/test_crcchecker.sh b/extras/scripts/tests/test_crcchecker.sh
index 7cfda086483..e275bd9d6bf 100755
--- a/extras/scripts/tests/test_crcchecker.sh
+++ b/extras/scripts/tests/test_crcchecker.sh
@@ -129,6 +129,17 @@ verify_check_patchset_fails
# get rid of the "erroneous" commit in the previous test
git reset --hard HEAD~1
+echo "TEST14: Verify we handle new .api file"
+cat >crccheck3.api <<EOL
+autoreply define foo
+{
+ bool bar;
+};
+EOL
+git add crccheck3.api
+git commit -m "a new message in new file";
+extras/scripts/crcchecker.py --check-patchset
+
echo "TEST: All tests got the expected result, cleaning up."
# done with all the tests - clean up
diff --git a/src/tools/vppapigen/vppapigen.py b/src/tools/vppapigen/vppapigen.py
index 2d2097904c5..06bfbff238f 100755
--- a/src/tools/vppapigen/vppapigen.py
+++ b/src/tools/vppapigen/vppapigen.py
@@ -753,8 +753,15 @@ class VPPAPI(object):
def parse_filename(self, filename, debug=0):
if self.revision:
git_show = f'git show {self.revision}:{filename}'
- with Popen(git_show.split(), stdout=PIPE, encoding='utf-8') as git:
- return self.parse_fd(git.stdout, None)
+ proc = Popen(git_show.split(), stdout=PIPE, encoding='utf-8')
+ try:
+ data, errs = proc.communicate()
+ if proc.returncode != 0:
+ print(f'File not found: {self.revision}:{filename}', file=sys.stderr)
+ sys.exit(2)
+ return self.parse_string(data, debug=debug)
+ except Exception as e:
+ sys.exit(3)
else:
try:
with open(filename, encoding='utf-8') as fd: