| import infra |
| import subprocess |
| import json |
| |
| |
| class CpeIdTest(infra.basetest.BRConfigTest): |
| config = "" |
| br2_external = [infra.filepath("tests/core/cpeid-br2-external")] |
| |
| def get_vars(self, var): |
| cmd = ["make", "--no-print-directory", "-C", self.b.builddir, |
| "VARS=%s%%" % var, "printvars"] |
| lines = subprocess.check_output(cmd).splitlines() |
| return dict([str(x, "utf-8").split("=") for x in lines]) |
| |
| def get_json(self, pkg): |
| cmd = ["make", "--no-print-directory", "-C", self.b.builddir, |
| "%s-show-info" % pkg] |
| return json.loads(subprocess.check_output(cmd)) |
| |
| def test_pkg1(self): |
| # this package has no CPE ID information, it should not have |
| # any CPE_ID variable defined. |
| pkg_vars = self.get_vars("CPE_ID_PKG1_CPE_ID") |
| cpe_vars = ["CPE_ID_VALID", "CPE_ID_NAME", "CPE_ID_VERSION", "CPE_ID_VERSION_MINOR", |
| "CPE_ID_PREFIX", "CPE_ID"] |
| for v in cpe_vars: |
| self.assertNotIn("CPE_ID_PKG1_%s" % v, pkg_vars) |
| pkg_json = self.get_json("cpe-id-pkg1") |
| self.assertNotIn("cpe-id", pkg_json['cpe-id-pkg1']) |
| |
| pkg_vars = self.get_vars("HOST_CPE_ID_PKG1_CPE_ID") |
| for v in cpe_vars: |
| self.assertNotIn("HOST_CPE_ID_PKG1_%s" % v, pkg_vars) |
| pkg_json = self.get_json("host-cpe-id-pkg1") |
| self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg1']) |
| |
| def test_pkg2(self): |
| # this package has no CPE ID information, it should not have |
| # any CPE_ID variable defined. |
| pkg_vars = self.get_vars("HOST_CPE_ID_PKG2_CPE_ID") |
| cpe_vars = ["CPE_ID_VALID", "CPE_ID_NAME", "CPE_ID_VERSION", "CPE_ID_VERSION_MINOR", |
| "CPE_ID_PREFIX", "CPE_ID"] |
| for v in cpe_vars: |
| self.assertNotIn("HOST_CPE_ID_PKG2_%s" % v, pkg_vars) |
| pkg_json = self.get_json("host-cpe-id-pkg2") |
| self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg2']) |
| |
| def test_pkg3(self): |
| # this package has just <pkg>_CPE_ID_VALID defined, so verify |
| # it has the default CPE_ID value, and that inheritance of the |
| # values for the host package is working |
| pkg_vars = self.get_vars("CPE_ID_PKG3_CPE_ID") |
| self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID"], |
| "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") |
| self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID_VALID"], "YES") |
| pkg_json = self.get_json("cpe-id-pkg3") |
| self.assertEqual(pkg_json['cpe-id-pkg3']['cpe-id'], |
| "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") |
| |
| pkg_vars = self.get_vars("HOST_CPE_ID_PKG3_CPE_ID") |
| self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID"], |
| "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") |
| self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID_VALID"], "YES") |
| pkg_json = self.get_json("host-cpe-id-pkg3") |
| self.assertEqual(pkg_json['host-cpe-id-pkg3']['cpe-id'], |
| "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") |
| |
| def test_pkg4(self): |
| # this package defines |
| # <pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX}, |
| # make sure we get the computed <pkg>_CPE_ID, and that it is |
| # inherited by the host variant |
| pkg_vars = self.get_vars("CPE_ID_PKG4_CPE_ID") |
| self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID"], |
| "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") |
| self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID_VALID"], "YES") |
| pkg_json = self.get_json("cpe-id-pkg4") |
| self.assertEqual(pkg_json['cpe-id-pkg4']['cpe-id'], |
| "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") |
| |
| pkg_vars = self.get_vars("HOST_CPE_ID_PKG4_CPE_ID") |
| self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID"], |
| "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") |
| self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID_VALID"], "YES") |
| pkg_json = self.get_json("host-cpe-id-pkg4") |
| self.assertEqual(pkg_json['host-cpe-id-pkg4']['cpe-id'], |
| "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") |
| |
| def test_pkg5(self): |
| # this package defines |
| # <pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX} and |
| # HOST_<pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX} |
| # separately, with different values. Make sure we get the |
| # right <pkg>_CPE_ID and HOST_<pkg>_CPE_ID values. |
| pkg_vars = self.get_vars("CPE_ID_PKG5_CPE_ID") |
| self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID"], |
| "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") |
| self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID_VALID"], "YES") |
| pkg_json = self.get_json("cpe-id-pkg5") |
| self.assertEqual(pkg_json['cpe-id-pkg5']['cpe-id'], |
| "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") |
| |
| pkg_vars = self.get_vars("HOST_CPE_ID_PKG5_CPE_ID") |
| self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID"], |
| "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*") |
| self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID_VALID"], "YES") |
| pkg_json = self.get_json("host-cpe-id-pkg5") |
| self.assertEqual(pkg_json['host-cpe-id-pkg5']['cpe-id'], |
| "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*") |