From: Phil Sutter Date: Wed, 29 Aug 2018 14:33:39 +0000 (+0200) Subject: tests/py: Make nft-test.py a little more robust X-Git-Tag: v0.9.1~275 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=26c85388344e66abab8dda04f6f15963c7ad81d5;p=thirdparty%2Fnftables.git tests/py: Make nft-test.py a little more robust When adding a new test, missing payload file causes nft-test.py to choke due to accessing undeclared variables. Fix this by making sure relevant variables are declared outside of try-catch blocks. Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py index 23f73d50..4e69cd27 100755 --- a/tests/py/nft-test.py +++ b/tests/py/nft-test.py @@ -653,6 +653,9 @@ def payload_check(payload_buffer, file, cmd): file.seek(0, 0) i = 0 + if not payload_buffer: + return False + for lineno, want_line in enumerate(payload_buffer): line = file.readline() @@ -698,11 +701,12 @@ def rule_add(rule, filename, lineno, force_all_family_option, filename_path): return [-1, warning, error, unit_tests] if rule[1].strip() == "ok": + payload_expected = None try: payload_log = open("%s.payload" % filename_path) payload_expected = payload_find_expected(payload_log, rule[0]) except: - payload_expected = None + payload_log = None if enable_json_option: try: @@ -744,7 +748,10 @@ def rule_add(rule, filename, lineno, force_all_family_option, filename_path): payload_log = open("%s.payload.%s" % (filename_path, table.family)) table_payload_expected = payload_find_expected(payload_log, rule[0]) except: - if not payload_expected: + if not payload_log: + print_error("did not find any payload information", + filename_path) + elif not payload_expected: print_error("did not find payload information for " "rule '%s'" % rule[0], payload_log.name, 1) if not table_payload_expected: