From 6db26ca1c657ee752443ef3efcf4052c6ad84a57 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 18 Aug 2015 22:53:14 +0200 Subject: [PATCH] autopkgtest: Don't cache results for undefined versions If a result.tar does not contain a testpkg-version, we must still match it against pending.txt, but we must not add it to the results cache. This ends up being a "null" version key (JSON's serialization of None) which becomes an actual version string once this is read back. --- autopkgtest.py | 11 ++++++----- tests/test_autopkgtest.py | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/autopkgtest.py b/autopkgtest.py index 7606841..1d012da 100644 --- a/autopkgtest.py +++ b/autopkgtest.py @@ -398,11 +398,12 @@ class AutoPackageTest(object): # add this result src_arch_results = self.test_results.setdefault(src, {}).setdefault(arch, [stamp, {}, False]) - if passed: - # update ever_passed field - src_arch_results[2] = True - src_arch_results[1][ver] = (passed, merge_triggers( - src_arch_results[1].get(ver, (None, []))[1], satisfied_triggers)) + if ver is not None: + if passed: + # update ever_passed field + src_arch_results[2] = True + src_arch_results[1][ver] = (passed, merge_triggers( + src_arch_results[1].get(ver, (None, []))[1], satisfied_triggers)) # update latest_stamp if stamp > src_arch_results[0]: src_arch_results[0] = stamp diff --git a/tests/test_autopkgtest.py b/tests/test_autopkgtest.py index 7e2e698..92d1e9a 100644 --- a/tests/test_autopkgtest.py +++ b/tests/test_autopkgtest.py @@ -818,6 +818,21 @@ lightgreen 1 i386 green 3 self.assertEqual(self.pending_requests, '') + # one more tmpfail result, should not confuse britney with None version + self.swift.set_results({'autopkgtest-series': { + 'series/i386/l/lightgreen/20150101_100201@': (16, None), + }}) + self.do_test( + [], + NOT_CONSIDERED, + [r'\blightgreen\b.*>1 to .*>2<', + r'autopkgtest for lightgreen 2: .*amd64.*Regression.*i386.*Regression'], + ['in progress']) + with open(os.path.join(self.data.path, 'data/series-proposed/autopkgtest/results.cache')) as f: + contents = f.read() + self.assertNotIn('null', contents) + self.assertNotIn('None', contents) + def test_rerun_failure(self): '''manually re-running failed tests gets picked up'''