summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kanavin <alexander.kanavin@linux.intel.com>2017-04-21 10:57:01 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-06-28 15:52:17 +0100
commit51c8ac2d6ae20ce605d863244739c87ef60110ec (patch)
treed1b0806f86b91109505a8ba3b0c365dfdaa25408
parent25b410d851a04aeea1a0de7cccf85dfce63b9de0 (diff)
downloadpoky-51c8ac2d6ae20ce605d863244739c87ef60110ec.tar.gz
oe-selftest: add a test for upstream version check regressions
The test runs an upstream version check, and then compares the list of recipes that failed the check (i.e. those where latest upstream version could not be established) against the list of known-broken upstreams. Mismatches either way (upstream check failed, recipe not in the exception list, or upstream check worked, recipe in exception list) fail the test. [YOCTO #11031] (From OE-Core rev: 544e04a11ab6c26a367ac0b67774bf7ffdf43c88) Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta-selftest/files/distrodata/checkpkg_exceptions26
-rw-r--r--meta/lib/oeqa/selftest/cases/distrodata.py43
2 files changed, 69 insertions, 0 deletions
diff --git a/meta-selftest/files/distrodata/checkpkg_exceptions b/meta-selftest/files/distrodata/checkpkg_exceptions
new file mode 100644
index 0000000000..f0d1f67487
--- /dev/null
+++ b/meta-selftest/files/distrodata/checkpkg_exceptions
@@ -0,0 +1,26 @@
1build-compare
2calibrateproto
3dbus-wait
4distcc
5fstests
6gnu-config
7gst-player
8kmscube
9libxcalibrate
10linux-firmware
11lsb
12mmc-utils
13ovmf
14piglit
15psplash
16puzzles
17rpm
18squashfs-tools
19tcf-agent
20unzip
21update-rc.d
22x264
23xcursor-transparent-theme
24xinetd
25xvideo-tests
26zip
diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py b/meta/lib/oeqa/selftest/cases/distrodata.py
new file mode 100644
index 0000000000..d5d286d5cc
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -0,0 +1,43 @@
1from oeqa.selftest.case import OESelftestTestCase
2from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
3from oeqa.utils.decorators import testcase
4from oeqa.utils.ftools import write_file
5
6class Distrodata(OESelftestTestCase):
7
8 @classmethod
9 def setUpClass(cls):
10 super(Distrodata, cls).setUpClass()
11 cls.exceptions_path = os.path.join(cls.testlayer_path, 'files', 'distrodata', "checkpkg_exceptions")
12
13 def test_checkpkg(self):
14 """
15 Summary: Test that upstream version checks do not regress
16 Expected: Upstream version checks should succeed except for the recipes listed in the exception list.
17 Product: oe-core
18 Author: Alexander Kanavin <alexander.kanavin@intel.com>
19 """
20 feature = 'INHERIT += "distrodata"\n'
21 feature += 'LICENSE_FLAGS_WHITELIST += " commercial"\n'
22
23 self.write_config(feature)
24 bitbake('-c checkpkg world')
25 checkpkg_result = open(os.path.join(get_bb_var("LOG_DIR"), "checkpkg.csv")).readlines()[1:]
26 exceptions = [exc.strip() for exc in open(self.exceptions_path).readlines()]
27 failed_upstream_checks = [pkg_data[0] for pkg_data in [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[11] == '']
28 regressed_failures = set(failed_upstream_checks) - set(exceptions)
29 regressed_successes = set(exceptions) - set(failed_upstream_checks)
30 msg = ""
31 if len(regressed_failures) > 0:
32 msg = msg + """
33The following packages failed upstream version checks. Please fix them using UPSTREAM_CHECK_URI/UPSTREAM_CHECK_REGEX
34(when using tarballs) or UPSTREAM_CHECK_GITTAGREGEX (when using git). If an upstream version check cannot be performed
35(for example, if upstream does not use git tags), you can add the package to list of exceptions in
36meta-selftest/files/distrodata/checkpkg_exceptions.
37""" + "\n".join(regressed_failures)
38 if len(regressed_successes) > 0:
39 msg = msg + """
40The following packages have been checked successfully for upstream versions (or they no longer exist in oe-core),
41but are in the exceptions list in meta-selftest/files/distrodata/checkpkg_exceptions. Please remove them from that list.
42""" + "\n".join(regressed_successes)
43 self.assertTrue(len(regressed_failures) == 0 and len(regressed_successes) == 0, msg)