test_cpeid.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import infra
  2. import subprocess
  3. import json
  4. class CpeIdTest(infra.basetest.BRConfigTest):
  5. config = ""
  6. br2_external = [infra.filepath("tests/core/cpeid-br2-external")]
  7. def get_vars(self, var):
  8. cmd = ["make", "--no-print-directory", "-C", self.b.builddir,
  9. "VARS=%s%%" % var, "printvars"]
  10. lines = subprocess.check_output(cmd).splitlines()
  11. return dict([str(x, "utf-8").split("=") for x in lines])
  12. def get_json(self, pkg):
  13. cmd = ["make", "--no-print-directory", "-C", self.b.builddir,
  14. "%s-show-info" % pkg]
  15. return json.loads(subprocess.check_output(cmd))
  16. def test_pkg1(self):
  17. # this package has no CPE ID information, it should not have
  18. # any CPE_ID variable defined.
  19. pkg_vars = self.get_vars("CPE_ID_PKG1_CPE_ID")
  20. cpe_vars = ["CPE_ID_VALID", "CPE_ID_NAME", "CPE_ID_VERSION", "CPE_ID_VERSION_MINOR",
  21. "CPE_ID_PREFIX", "CPE_ID"]
  22. for v in cpe_vars:
  23. self.assertNotIn("CPE_ID_PKG1_%s" % v, pkg_vars)
  24. pkg_json = self.get_json("cpe-id-pkg1")
  25. self.assertNotIn("cpe-id", pkg_json['cpe-id-pkg1'])
  26. pkg_vars = self.get_vars("HOST_CPE_ID_PKG1_CPE_ID")
  27. for v in cpe_vars:
  28. self.assertNotIn("HOST_CPE_ID_PKG1_%s" % v, pkg_vars)
  29. pkg_json = self.get_json("host-cpe-id-pkg1")
  30. self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg1'])
  31. def test_pkg2(self):
  32. # this package has no CPE ID information, it should not have
  33. # any CPE_ID variable defined.
  34. pkg_vars = self.get_vars("HOST_CPE_ID_PKG2_CPE_ID")
  35. cpe_vars = ["CPE_ID_VALID", "CPE_ID_NAME", "CPE_ID_VERSION", "CPE_ID_VERSION_MINOR",
  36. "CPE_ID_PREFIX", "CPE_ID"]
  37. for v in cpe_vars:
  38. self.assertNotIn("HOST_CPE_ID_PKG2_%s" % v, pkg_vars)
  39. pkg_json = self.get_json("host-cpe-id-pkg2")
  40. self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg2'])
  41. def test_pkg3(self):
  42. # this package has just <pkg>_CPE_ID_VALID defined, so verify
  43. # it has the default CPE_ID value, and that inheritance of the
  44. # values for the host package is working
  45. pkg_vars = self.get_vars("CPE_ID_PKG3_CPE_ID")
  46. self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID"],
  47. "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
  48. self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID_VALID"], "YES")
  49. pkg_json = self.get_json("cpe-id-pkg3")
  50. self.assertEqual(pkg_json['cpe-id-pkg3']['cpe-id'],
  51. "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
  52. pkg_vars = self.get_vars("HOST_CPE_ID_PKG3_CPE_ID")
  53. self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID"],
  54. "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
  55. self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID_VALID"], "YES")
  56. pkg_json = self.get_json("host-cpe-id-pkg3")
  57. self.assertEqual(pkg_json['host-cpe-id-pkg3']['cpe-id'],
  58. "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
  59. def test_pkg4(self):
  60. # this package defines
  61. # <pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX},
  62. # make sure we get the computed <pkg>_CPE_ID, and that it is
  63. # inherited by the host variant
  64. pkg_vars = self.get_vars("CPE_ID_PKG4_CPE_ID")
  65. self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID"],
  66. "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
  67. self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID_VALID"], "YES")
  68. pkg_json = self.get_json("cpe-id-pkg4")
  69. self.assertEqual(pkg_json['cpe-id-pkg4']['cpe-id'],
  70. "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
  71. pkg_vars = self.get_vars("HOST_CPE_ID_PKG4_CPE_ID")
  72. self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID"],
  73. "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
  74. self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID_VALID"], "YES")
  75. pkg_json = self.get_json("host-cpe-id-pkg4")
  76. self.assertEqual(pkg_json['host-cpe-id-pkg4']['cpe-id'],
  77. "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
  78. def test_pkg5(self):
  79. # this package defines
  80. # <pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX} and
  81. # HOST_<pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX}
  82. # separately, with different values. Make sure we get the
  83. # right <pkg>_CPE_ID and HOST_<pkg>_CPE_ID values.
  84. pkg_vars = self.get_vars("CPE_ID_PKG5_CPE_ID")
  85. self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID"],
  86. "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
  87. self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID_VALID"], "YES")
  88. pkg_json = self.get_json("cpe-id-pkg5")
  89. self.assertEqual(pkg_json['cpe-id-pkg5']['cpe-id'],
  90. "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
  91. pkg_vars = self.get_vars("HOST_CPE_ID_PKG5_CPE_ID")
  92. self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID"],
  93. "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*")
  94. self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID_VALID"], "YES")
  95. pkg_json = self.get_json("host-cpe-id-pkg5")
  96. self.assertEqual(pkg_json['host-cpe-id-pkg5']['cpe-id'],
  97. "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*")