support/testing/tests/core/test_cpeid: new test
This commit adds a number of test cases to verify that the CPE_ID_* variables are properly handled by the generic package infrastructure and that the "make show-info" JSON output matches what we expect. A total of 5 different example packages are used to exercise different scenarios of CPE_ID_* variables usage. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Reviewed-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
c02d465274
commit
3950c53cd0
@ -0,0 +1 @@
|
|||||||
|
name: CPE_ID
|
@ -0,0 +1 @@
|
|||||||
|
include $(sort $(wildcard $(BR2_EXTERNAL_CPE_ID_PATH)/package/*/*.mk))
|
@ -0,0 +1,4 @@
|
|||||||
|
CPE_ID_PKG1_VERSION = 42
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
||||||
|
$(eval $(host-generic-package))
|
@ -0,0 +1,3 @@
|
|||||||
|
CPE_ID_PKG2_VERSION = 67
|
||||||
|
|
||||||
|
$(eval $(host-generic-package))
|
@ -0,0 +1,5 @@
|
|||||||
|
CPE_ID_PKG3_VERSION = 67
|
||||||
|
CPE_ID_PKG3_CPE_ID_VALID = YES
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
||||||
|
$(eval $(host-generic-package))
|
@ -0,0 +1,9 @@
|
|||||||
|
CPE_ID_PKG4_VERSION = 67
|
||||||
|
CPE_ID_PKG4_CPE_ID_VENDOR = foo
|
||||||
|
CPE_ID_PKG4_CPE_ID_NAME = bar
|
||||||
|
CPE_ID_PKG4_CPE_ID_VERSION = 42
|
||||||
|
CPE_ID_PKG4_CPE_ID_VERSION_MINOR = b2
|
||||||
|
CPE_ID_PKG4_CPE_ID_PREFIX = cpe:2.4:a
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
||||||
|
$(eval $(host-generic-package))
|
@ -0,0 +1,16 @@
|
|||||||
|
CPE_ID_PKG5_VERSION = 57
|
||||||
|
|
||||||
|
CPE_ID_PKG5_CPE_ID_VENDOR = foo
|
||||||
|
CPE_ID_PKG5_CPE_ID_NAME = bar
|
||||||
|
CPE_ID_PKG5_CPE_ID_VERSION = 42
|
||||||
|
CPE_ID_PKG5_CPE_ID_VERSION_MINOR = b2
|
||||||
|
CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.4:a
|
||||||
|
|
||||||
|
HOST_CPE_ID_PKG5_CPE_ID_VENDOR = baz
|
||||||
|
HOST_CPE_ID_PKG5_CPE_ID_NAME = fuz
|
||||||
|
HOST_CPE_ID_PKG5_CPE_ID_VERSION = 43
|
||||||
|
HOST_CPE_ID_PKG5_CPE_ID_VERSION_MINOR = b3
|
||||||
|
HOST_CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.5:a
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
||||||
|
$(eval $(host-generic-package))
|
109
support/testing/tests/core/test_cpeid.py
Normal file
109
support/testing/tests/core/test_cpeid.py
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
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:*:*:*:*:*:*")
|
Loading…
Reference in New Issue
Block a user