Merge ~emitorino/review-tools:fix_usn_notfication_service_using_dpkg_list into review-tools:master

Proposed by Emilia Torino
Status: Merged
Approved by: Alex Murray
Approved revision: 9d3b4107458ffdaac944558a73f00d15dcfde288
Merged at revision: d4d7e8a69fdf1a912f47f923baa879e09d7b6ccc
Proposed branch: ~emitorino/review-tools:fix_usn_notfication_service_using_dpkg_list
Merge into: review-tools:master
Diff against target: 631 lines (+414/-22)
6 files modified
reviewtools/available.py (+13/-5)
reviewtools/store.py (+19/-14)
reviewtools/tests/test_available.py (+7/-3)
tests/test-updates-available.sh (+9/-0)
tests/test-updates-available.sh.expected (+103/-0)
tests/test.sh.expected (+263/-0)
Reviewer Review Type Date Requested Status
Alex Murray Approve
Review via email: mp+403485@code.launchpad.net

Description of the change

- store.py: consider faked-by-review-tools-dpkg part when checking if manifest_has_primed_staged_section
- available.py: considering binary names could contain arch specifier when parsing dpkg.list

To post a comment you must log in.
Revision history for this message
Emilia Torino (emitorino) :
Revision history for this message
Alex Murray (alexmurray) wrote :

LGTM! Thanks Emi

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/reviewtools/available.py b/reviewtools/available.py
index fa52cae..e43960b 100644
--- a/reviewtools/available.py
+++ b/reviewtools/available.py
@@ -416,9 +416,9 @@ def _update_seen(seen_fn, seen_db, pkg_db):
416# rocks416# rocks
417def scan_store(secnot_db_fn, store_db_fn, seen_db_fn, pkgname, store_db_type="snap"):417def scan_store(secnot_db_fn, store_db_fn, seen_db_fn, pkgname, store_db_type="snap"):
418 """For each entry in store db (either snap or rock), see if there are any418 """For each entry in store db (either snap or rock), see if there are any
419 binary packages with security notices, if see report them if not in the419 binary packages with security notices, if see report them if not in the
420 seen db. We perform these actions on each snap and rock and do not form420 seen db. We perform these actions on each snap and rock and do not form
421 a queue to keep the implementation simple.421 a queue to keep the implementation simple.
422 """422 """
423 secnot_db = read_usn_db(secnot_db_fn)423 secnot_db = read_usn_db(secnot_db_fn)
424 store_db = read_file_as_json_dict(store_db_fn)424 store_db = read_file_as_json_dict(store_db_fn)
@@ -483,8 +483,16 @@ def scan_snap(secnot_db_fn, snap_fn, with_cves=False):
483 if not line.startswith("ii "):483 if not line.startswith("ii "):
484 continue484 continue
485 tmp = line.split()485 tmp = line.split()
486 pkg_name = tmp[1]
487 # Since dpkg 1.16.2, the binary name could include and arch qualifier: e.g liblz4-1:amd64
488 # For now we assume that if the colon is present, we are in a situation where the binary name is
489 # including the arch. We could assert valid architectures as well but that means this code should be
490 # updated as new arch are supported or even existing ones are removed.
491 arch_qualifier_parts = pkg_name.split(":")
492 if len(arch_qualifier_parts) == 2:
493 pkg_name = arch_qualifier_parts[0]
486 man["parts"][fake_key]["stage-packages"].append(494 man["parts"][fake_key]["stage-packages"].append(
487 "%s=%s" % (tmp[1], tmp[2])495 "%s=%s" % (pkg_name, tmp[2])
488 )496 )
489497
490 secnot_db = read_usn_db(secnot_db_fn)498 secnot_db = read_usn_db(secnot_db_fn)
@@ -526,7 +534,7 @@ def scan_rock(secnot_db_fn, rock_fn, with_cves=False):
526534
527def scan_shared_publishers(store_fn):535def scan_shared_publishers(store_fn):
528 """Check store db for any snaps with a shared email that don't also have a536 """Check store db for any snaps with a shared email that don't also have a
529 mapping.537 mapping.
530 """538 """
531 store_db = read_file_as_json_dict(store_fn)539 store_db = read_file_as_json_dict(store_fn)
532 report = get_shared_snap_without_override(store_db)540 report = get_shared_snap_without_override(store_db)
diff --git a/reviewtools/store.py b/reviewtools/store.py
index 7cda73a..3e27b4e 100644
--- a/reviewtools/store.py
+++ b/reviewtools/store.py
@@ -325,7 +325,7 @@ def get_pkg_revisions(item, secnot_db, errors, pkg_type="snap"):
325325
326def get_shared_snap_without_override(store_db):326def get_shared_snap_without_override(store_db):
327 """Report snaps that use a shared email but don't have an entry for327 """Report snaps that use a shared email but don't have an entry for
328 additional addresses.328 additional addresses.
329 """329 """
330 missing = {}330 missing = {}
331 for item in store_db:331 for item in store_db:
@@ -351,7 +351,7 @@ def get_shared_snap_without_override(store_db):
351# TODO: support for build-packages is not fully implemented yet.351# TODO: support for build-packages is not fully implemented yet.
352def get_staged_and_build_packages_from_manifest(m):352def get_staged_and_build_packages_from_manifest(m):
353 """Obtain list of packages in primed-stage-packages if section is present.353 """Obtain list of packages in primed-stage-packages if section is present.
354 If not, obtain it from stage-packages for various parts instead354 If not, obtain it from stage-packages for various parts instead
355 """355 """
356 if "parts" not in m:356 if "parts" not in m:
357 debug("Could not find 'parts' in manifest")357 debug("Could not find 'parts' in manifest")
@@ -366,14 +366,20 @@ def get_staged_and_build_packages_from_manifest(m):
366 manifest_has_primed_staged_section = False366 manifest_has_primed_staged_section = False
367367
368 if "primed-stage-packages" in m and m["primed-stage-packages"] is not None:368 if "primed-stage-packages" in m and m["primed-stage-packages"] is not None:
369 # An empty primed-stage-packages section (i.e. primed-stage-packages: [])
370 # is consider valid as well.
369 manifest_has_primed_staged_section = True371 manifest_has_primed_staged_section = True
370 # Note, prime-stage-packages is grouped with stage-packages372 # Note, prime-stage-packages is grouped with stage-packages
371 get_packages_from_manifest_section(d, m["primed-stage-packages"], "staged")373 get_packages_from_manifest_section(d, m["primed-stage-packages"], "staged")
372374
373 for part in m["parts"]:375 for part in m["parts"]:
374 # stage-packages part is only analyzed if primed-stage-packages is not376 # stage-packages in each part is only analyzed if primed-stage-packages
375 # present.377 # is not present. The only exception is if the snap includes the
376 if not manifest_has_primed_staged_section:378 # dpkg.list file (e.g. core snaps) since primed-stage-packages is always empty
379 if (
380 not manifest_has_primed_staged_section
381 or part == "faked-by-review-tools-dpkg"
382 ):
377 if (383 if (
378 "stage-packages" in m["parts"][part]384 "stage-packages" in m["parts"][part]
379 and m["parts"][part]["stage-packages"] is not None385 and m["parts"][part]["stage-packages"] is not None
@@ -401,8 +407,7 @@ def get_staged_and_build_packages_from_manifest(m):
401407
402408
403def get_staged_packages_from_rock_manifest(m):409def get_staged_packages_from_rock_manifest(m):
404 """Obtain list of packages in stage-packages if section is present.410 """Obtain list of packages in stage-packages if section is present."""
405 """
406 if "stage-packages" not in m:411 if "stage-packages" not in m:
407 debug("Could not find 'stage-packages' in manifest")412 debug("Could not find 'stage-packages' in manifest")
408 return None413 return None
@@ -426,7 +431,7 @@ def get_staged_packages_from_rock_manifest(m):
426# key.431# key.
427def get_packages_from_manifest_section(d, manifest_section, package_type):432def get_packages_from_manifest_section(d, manifest_section, package_type):
428 """Obtain packages from a given manifest section (primed-stage-packages433 """Obtain packages from a given manifest section (primed-stage-packages
429 or stage-packages along with any build-packages for a given part)434 or stage-packages along with any build-packages for a given part)
430 """435 """
431 for entry in manifest_section:436 for entry in manifest_section:
432 if "=" not in entry:437 if "=" not in entry:
@@ -451,7 +456,7 @@ def get_packages_from_manifest_section(d, manifest_section, package_type):
451# snaps, git trees)456# snaps, git trees)
452def get_packages_from_rock_manifest_section(d, manifest_section, package_type):457def get_packages_from_rock_manifest_section(d, manifest_section, package_type):
453 """Obtain packages from a given manifest section (rock manifest v1 only458 """Obtain packages from a given manifest section (rock manifest v1 only
454 has staged-packages)459 has staged-packages)
455 """460 """
456 for entry in manifest_section:461 for entry in manifest_section:
457 # rock manifest v1 stage-packages section is a list of462 # rock manifest v1 stage-packages section is a list of
@@ -486,8 +491,8 @@ def get_packages_from_rock_manifest_section(d, manifest_section, package_type):
486491
487def normalize_and_verify_snap_manifest(m):492def normalize_and_verify_snap_manifest(m):
488 """Normalize manifest (ie, assign empty types if None for SafeLoader493 """Normalize manifest (ie, assign empty types if None for SafeLoader
489 defaults) and verify snap manifest is well-formed and has everything we494 defaults) and verify snap manifest is well-formed and has everything we
490 expect"""495 expect"""
491 # normalize toplevel keys496 # normalize toplevel keys
492 assign_type_to_dict_values(m, SnapReview.snap_manifest_required)497 assign_type_to_dict_values(m, SnapReview.snap_manifest_required)
493 assign_type_to_dict_values(m, SnapReview.snap_manifest_optional)498 assign_type_to_dict_values(m, SnapReview.snap_manifest_optional)
@@ -507,9 +512,9 @@ def normalize_and_verify_snap_manifest(m):
507512
508def normalize_and_verify_rock_manifest(m):513def normalize_and_verify_rock_manifest(m):
509 """Normalize manifest (ie, assign empty types if None for SafeLoader514 """Normalize manifest (ie, assign empty types if None for SafeLoader
510 defaults) and verify rock manifest is well-formed and has everything we515 defaults) and verify rock manifest is well-formed and has everything we
511 expect in this initial implementation.516 expect in this initial implementation.
512 TODO: Update once rock manifest is properly implemented"""517 TODO: Update once rock manifest is properly implemented"""
513 # normalize toplevel keys518 # normalize toplevel keys
514 assign_type_to_dict_values(m, RockReview.rock_manifest_required)519 assign_type_to_dict_values(m, RockReview.rock_manifest_required)
515 assign_type_to_dict_values(m, RockReview.rock_manifest_optional)520 assign_type_to_dict_values(m, RockReview.rock_manifest_optional)
diff --git a/reviewtools/tests/test_available.py b/reviewtools/tests/test_available.py
index 08e73de..a9ce71e 100644
--- a/reviewtools/tests/test_available.py
+++ b/reviewtools/tests/test_available.py
@@ -568,7 +568,7 @@ each snap revision
568568
569 def test_check__secnot_report_for_kernel_stage_and_build_pkg_new_secnot(self):569 def test_check__secnot_report_for_kernel_stage_and_build_pkg_new_secnot(self):
570 """Test _secnot_report_for_pkg() - new secnot for build and570 """Test _secnot_report_for_pkg() - new secnot for build and
571 staged pkg"""571 staged pkg"""
572 errors = {}572 errors = {}
573 self.pkg_db = store.get_pkg_revisions(573 self.pkg_db = store.get_pkg_revisions(
574 self.kernel_store_db[0], self.secnot_kernel_and_build_pkgs_db, errors574 self.kernel_store_db[0], self.secnot_kernel_and_build_pkgs_db, errors
@@ -912,6 +912,10 @@ Revision r12 (i386; channels: candidate, beta)
912 snap_fn = "./tests/test-core_16-2.37.2_amd64.snap"912 snap_fn = "./tests/test-core_16-2.37.2_amd64.snap"
913 res = available.scan_snap(self.secnot_core_with_dpkg_list_fn, snap_fn)913 res = available.scan_snap(self.secnot_core_with_dpkg_list_fn, snap_fn)
914 self.assertTrue(len(res) > 0)914 self.assertTrue(len(res) > 0)
915 # This asserts a binary was obtained from the URLs since its not listed in the USN binaries keys
916 self.assertIn("libc-bin", res)
917 # This asserts the dpkg-query file was properly parsed and arch qualifiers were ignored LP: #1930105
918 self.assertIn("libc6", res)
915 self.assertIn("3323-1", res)919 self.assertIn("3323-1", res)
916920
917 def test_check_scan_snap_dpkg_list_app(self):921 def test_check_scan_snap_dpkg_list_app(self):
@@ -1063,7 +1067,7 @@ Revision r12 (i386; channels: candidate, beta)
10631067
1064 def test_check_scan_store_with_pkgname_bad_publisher(self):1068 def test_check_scan_store_with_pkgname_bad_publisher(self):
1065 """Test scan_store() - with pkgname and bad publisher - snaps and1069 """Test scan_store() - with pkgname and bad publisher - snaps and
1066 rocks1070 rocks
1067 """1071 """
1068 store_dbs = {1072 store_dbs = {
1069 "snap": ["./tests/test-store-unittest-bad-1.db", "1ad"],1073 "snap": ["./tests/test-store-unittest-bad-1.db", "1ad"],
@@ -1128,7 +1132,7 @@ Revision r12 (i386; channels: candidate, beta)
1128 self,1132 self,
1129 ):1133 ):
1130 """Test scan_store() - kernel snap and build pkg update but invalid1134 """Test scan_store() - kernel snap and build pkg update but invalid
1131 snapcraft version"""1135 snapcraft version"""
1132 store_fn = "./tests/test-store-kernel-invalid-snapcraft-version.db"1136 store_fn = "./tests/test-store-kernel-invalid-snapcraft-version.db"
1133 (sent, errors) = available.scan_store(1137 (sent, errors) = available.scan_store(
1134 self.secnot_build_pkgs_only_fn, store_fn, None, None1138 self.secnot_build_pkgs_only_fn, store_fn, None, None
diff --git a/tests/test-core-with-primed-staged_16-2.37.2_amd64.snap b/tests/test-core-with-primed-staged_16-2.37.2_amd64.snap
1135new file mode 1006441139new file mode 100644
index 0000000..dc17a96
1136Binary files /dev/null and b/tests/test-core-with-primed-staged_16-2.37.2_amd64.snap differ1140Binary files /dev/null and b/tests/test-core-with-primed-staged_16-2.37.2_amd64.snap differ
diff --git a/tests/test-updates-available.sh b/tests/test-updates-available.sh
index fc90e53..05fea65 100755
--- a/tests/test-updates-available.sh
+++ b/tests/test-updates-available.sh
@@ -242,6 +242,15 @@ echo "Running: snap-updates-available --with-cves --usn-db='./tests/test-usn-cor
242PYTHONPATH=./ ./bin/snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core_16-2.37.2_amd64.snap' 2>&1 | tee -a "$tmp"242PYTHONPATH=./ ./bin/snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core_16-2.37.2_amd64.snap' 2>&1 | tee -a "$tmp"
243echo "" | tee -a "$tmp"243echo "" | tee -a "$tmp"
244244
245# testing core snap with manifest including primed-stage-packages: [] LP: #1930106
246echo "Running: snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core-with-primed-staged_16-2.37.2_amd64.snap'" | tee -a "$tmp"
247PYTHONPATH=./ ./bin/snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./test-core-with-primed-staged_16-2.37.2_amd64.snap' 2>&1 | tee -a "$tmp"
248echo "" | tee -a "$tmp"
249
250echo "Running: snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core-with-primed-staged_16-2.37.2_amd64.snap'" | tee -a "$tmp"
251PYTHONPATH=./ ./bin/snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core-with-primed-staged_16-2.37.2_amd64.snap' 2>&1 | tee -a "$tmp"
252echo "" | tee -a "$tmp"
253
245echo "Running: snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-dpkg-list-app_1.0_amd64.snap'" | tee -a "$tmp"254echo "Running: snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-dpkg-list-app_1.0_amd64.snap'" | tee -a "$tmp"
246PYTHONPATH=./ ./bin/snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-dpkg-list-app_1.0_amd64.snap' 2>&1 | tee -a "$tmp"255PYTHONPATH=./ ./bin/snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-dpkg-list-app_1.0_amd64.snap' 2>&1 | tee -a "$tmp"
247echo "" | tee -a "$tmp"256echo "" | tee -a "$tmp"
diff --git a/tests/test-updates-available.sh.expected b/tests/test-updates-available.sh.expected
index 9558d25..20216b9 100644
--- a/tests/test-updates-available.sh.expected
+++ b/tests/test-updates-available.sh.expected
@@ -1051,6 +1051,10 @@ Running: snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.d
1051 "3323-1",1051 "3323-1",
1052 "3534-1"1052 "3534-1"
1053 ],1053 ],
1054 "libc6": [
1055 "3323-1",
1056 "3534-1"
1057 ],
1054 "multiarch-support": [1058 "multiarch-support": [
1055 "3323-1",1059 "3323-1",
1056 "3534-1"1060 "3534-1"
@@ -1073,6 +1077,69 @@ Running: snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with
1073 "CVE-2018-1000001"1077 "CVE-2018-1000001"
1074 ]1078 ]
1075 },1079 },
1080 "libc6": {
1081 "3323-1": [
1082 "CVE-2017-1000366"
1083 ],
1084 "3534-1": [
1085 "CVE-2017-1000408",
1086 "CVE-2017-1000409",
1087 "CVE-2017-15670",
1088 "CVE-2017-15804",
1089 "CVE-2017-16997",
1090 "CVE-2017-17426",
1091 "CVE-2018-1000001"
1092 ]
1093 },
1094 "multiarch-support": {
1095 "3323-1": [
1096 "CVE-2017-1000366"
1097 ],
1098 "3534-1": [
1099 "CVE-2017-1000408",
1100 "CVE-2017-1000409",
1101 "CVE-2017-15670",
1102 "CVE-2017-15804",
1103 "CVE-2017-16997",
1104 "CVE-2017-17426",
1105 "CVE-2018-1000001"
1106 ]
1107 }
1108}
1109
1110Running: snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core-with-primed-staged_16-2.37.2_amd64.snap'
1111ERROR: Could not find './test-core-with-primed-staged_16-2.37.2_amd64.snap'
1112
1113Running: snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with-dpkg-list.db' --snap='./tests/test-core-with-primed-staged_16-2.37.2_amd64.snap'
1114{
1115 "libc-bin": {
1116 "3323-1": [
1117 "CVE-2017-1000366"
1118 ],
1119 "3534-1": [
1120 "CVE-2017-1000408",
1121 "CVE-2017-1000409",
1122 "CVE-2017-15670",
1123 "CVE-2017-15804",
1124 "CVE-2017-16997",
1125 "CVE-2017-17426",
1126 "CVE-2018-1000001"
1127 ]
1128 },
1129 "libc6": {
1130 "3323-1": [
1131 "CVE-2017-1000366"
1132 ],
1133 "3534-1": [
1134 "CVE-2017-1000408",
1135 "CVE-2017-1000409",
1136 "CVE-2017-15670",
1137 "CVE-2017-15804",
1138 "CVE-2017-16997",
1139 "CVE-2017-17426",
1140 "CVE-2018-1000001"
1141 ]
1142 },
1076 "multiarch-support": {1143 "multiarch-support": {
1077 "3323-1": [1144 "3323-1": [
1078 "CVE-2017-1000366"1145 "CVE-2017-1000366"
@@ -1095,6 +1162,10 @@ Running: snap-updates-available --usn-db='./tests/test-usn-core-with-dpkg-list.d
1095 "3323-1",1162 "3323-1",
1096 "3534-1"1163 "3534-1"
1097 ],1164 ],
1165 "libc6": [
1166 "3323-1",
1167 "3534-1"
1168 ],
1098 "multiarch-support": [1169 "multiarch-support": [
1099 "3323-1",1170 "3323-1",
1100 "3534-1"1171 "3534-1"
@@ -1117,6 +1188,20 @@ Running: snap-updates-available --with-cves --usn-db='./tests/test-usn-core-with
1117 "CVE-2018-1000001"1188 "CVE-2018-1000001"
1118 ]1189 ]
1119 },1190 },
1191 "libc6": {
1192 "3323-1": [
1193 "CVE-2017-1000366"
1194 ],
1195 "3534-1": [
1196 "CVE-2017-1000408",
1197 "CVE-2017-1000409",
1198 "CVE-2017-15670",
1199 "CVE-2017-15804",
1200 "CVE-2017-16997",
1201 "CVE-2017-17426",
1202 "CVE-2018-1000001"
1203 ]
1204 },
1120 "multiarch-support": {1205 "multiarch-support": {
1121 "3323-1": [1206 "3323-1": [
1122 "CVE-2017-1000366"1207 "CVE-2017-1000366"
@@ -1813,6 +1898,10 @@ Running: snap-check-notices --no-fetch ./tests/test-core_16-2.37.2_amd64.snap
1813 "3323-1",1898 "3323-1",
1814 "3534-1"1899 "3534-1"
1815 ],1900 ],
1901 "libc6": [
1902 "3323-1",
1903 "3534-1"
1904 ],
1816 "multiarch-support": [1905 "multiarch-support": [
1817 "3323-1",1906 "3323-1",
1818 "3534-1"1907 "3534-1"
@@ -1839,6 +1928,20 @@ Running: snap-check-notices --no-fetch --with-cves ./tests/test-core_16-2.37.2_a
1839 "CVE-2018-1000001"1928 "CVE-2018-1000001"
1840 ]1929 ]
1841 },1930 },
1931 "libc6": {
1932 "3323-1": [
1933 "CVE-2017-1000366"
1934 ],
1935 "3534-1": [
1936 "CVE-2017-1000408",
1937 "CVE-2017-1000409",
1938 "CVE-2017-15670",
1939 "CVE-2017-15804",
1940 "CVE-2017-16997",
1941 "CVE-2017-17426",
1942 "CVE-2018-1000001"
1943 ]
1944 },
1842 "multiarch-support": {1945 "multiarch-support": {
1843 "3323-1": [1946 "3323-1": [
1844 "CVE-2017-1000366"1947 "CVE-2017-1000366"
diff --git a/tests/test.sh.expected b/tests/test.sh.expected
index 499cd67..e79db3e 100644
--- a/tests/test.sh.expected
+++ b/tests/test.sh.expected
@@ -26011,6 +26011,269 @@ test-content_0.1_all.snap: pass
26011 }26011 }
26012}26012}
2601326013
26014= test-core-with-primed-staged_16-2.37.2_amd64.snap =
26015Errors
26016------
26017 - lint-snap-v2:snap_type_redflag
26018 (NEEDS REVIEW) type 'os' not allowed
26019test-core-with-primed-staged_16-2.37.2_amd64.snap: FAIL
26020
26021= --sdk test-core-with-primed-staged_16-2.37.2_amd64.snap =
26022= snap.v2_declaration =
26023{
26024 "error": {},
26025 "info": {},
26026 "warn": {}
26027}
26028= snap.v2_functional =
26029{
26030 "error": {},
26031 "info": {},
26032 "warn": {}
26033}
26034= snap.v2_lint =
26035{
26036 "error": {
26037 "lint-snap-v2:snap_type_redflag": {
26038 "manual_review": true,
26039 "text": "(NEEDS REVIEW) type 'os' not allowed"
26040 }
26041 },
26042 "info": {
26043 "lint-snap-v2:apps_present": {
26044 "manual_review": false,
26045 "text": "OK (optional apps field not specified)"
26046 },
26047 "lint-snap-v2:architecture_specified_needed:amd64": {
26048 "manual_review": false,
26049 "text": "Could not find compiled binaries for architecture 'amd64'"
26050 },
26051 "lint-snap-v2:architecture_valid": {
26052 "manual_review": false,
26053 "text": "OK"
26054 },
26055 "lint-snap-v2:assumes_valid": {
26056 "manual_review": false,
26057 "text": "OK (assumes not specified)"
26058 },
26059 "lint-snap-v2:confinement_valid": {
26060 "manual_review": false,
26061 "text": "'confinement' should not be used with 'type: os'"
26062 },
26063 "lint-snap-v2:description": {
26064 "manual_review": false,
26065 "text": "OK"
26066 },
26067 "lint-snap-v2:description_present": {
26068 "manual_review": false,
26069 "text": "OK"
26070 },
26071 "lint-snap-v2:grade_valid": {
26072 "manual_review": false,
26073 "text": "OK"
26074 },
26075 "lint-snap-v2:hook_executable:configure": {
26076 "manual_review": false,
26077 "text": "OK"
26078 },
26079 "lint-snap-v2:hooks_present": {
26080 "manual_review": false,
26081 "text": "OK (optional hooks field not specified)"
26082 },
26083 "lint-snap-v2:iffy_files": {
26084 "manual_review": false,
26085 "text": "OK"
26086 },
26087 "lint-snap-v2:name_valid": {
26088 "manual_review": false,
26089 "text": "OK"
26090 },
26091 "lint-snap-v2:snap_manifest": {
26092 "manual_review": false,
26093 "text": "OK"
26094 },
26095 "lint-snap-v2:snap_type_valid": {
26096 "manual_review": false,
26097 "text": "OK"
26098 },
26099 "lint-snap-v2:summary": {
26100 "manual_review": false,
26101 "text": "OK"
26102 },
26103 "lint-snap-v2:summary_present": {
26104 "manual_review": false,
26105 "text": "OK"
26106 },
26107 "lint-snap-v2:title_present": {
26108 "manual_review": false,
26109 "text": "OK (optional title field not specified)"
26110 },
26111 "lint-snap-v2:unknown_field": {
26112 "manual_review": false,
26113 "text": "OK"
26114 },
26115 "lint-snap-v2:unknown_hook": {
26116 "manual_review": false,
26117 "text": "OK"
26118 },
26119 "lint-snap-v2:valid_unicode": {
26120 "manual_review": false,
26121 "text": "ok"
26122 },
26123 "lint-snap-v2:vcs_files": {
26124 "manual_review": false,
26125 "text": "OK"
26126 },
26127 "lint-snap-v2:version_valid": {
26128 "manual_review": false,
26129 "text": "OK"
26130 }
26131 },
26132 "warn": {}
26133}
26134= snap.v2_security =
26135{
26136 "error": {},
26137 "info": {
26138 "security-snap-v2:squashfs_files": {
26139 "manual_review": false,
26140 "text": "OK"
26141 },
26142 "security-snap-v2:squashfs_repack_checksum": {
26143 "manual_review": false,
26144 "text": "OK"
26145 }
26146 },
26147 "warn": {}
26148}
26149
26150= --json test-core-with-primed-staged_16-2.37.2_amd64.snap =
26151{
26152 "snap.v2_declaration": {
26153 "error": {},
26154 "info": {},
26155 "warn": {}
26156 },
26157 "snap.v2_functional": {
26158 "error": {},
26159 "info": {},
26160 "warn": {}
26161 },
26162 "snap.v2_lint": {
26163 "error": {
26164 "lint-snap-v2:snap_type_redflag": {
26165 "manual_review": true,
26166 "text": "(NEEDS REVIEW) type 'os' not allowed"
26167 }
26168 },
26169 "info": {
26170 "lint-snap-v2:apps_present": {
26171 "manual_review": false,
26172 "text": "OK (optional apps field not specified)"
26173 },
26174 "lint-snap-v2:architecture_specified_needed:amd64": {
26175 "manual_review": false,
26176 "text": "Could not find compiled binaries for architecture 'amd64'"
26177 },
26178 "lint-snap-v2:architecture_valid": {
26179 "manual_review": false,
26180 "text": "OK"
26181 },
26182 "lint-snap-v2:assumes_valid": {
26183 "manual_review": false,
26184 "text": "OK (assumes not specified)"
26185 },
26186 "lint-snap-v2:confinement_valid": {
26187 "manual_review": false,
26188 "text": "'confinement' should not be used with 'type: os'"
26189 },
26190 "lint-snap-v2:description": {
26191 "manual_review": false,
26192 "text": "OK"
26193 },
26194 "lint-snap-v2:description_present": {
26195 "manual_review": false,
26196 "text": "OK"
26197 },
26198 "lint-snap-v2:grade_valid": {
26199 "manual_review": false,
26200 "text": "OK"
26201 },
26202 "lint-snap-v2:hook_executable:configure": {
26203 "manual_review": false,
26204 "text": "OK"
26205 },
26206 "lint-snap-v2:hooks_present": {
26207 "manual_review": false,
26208 "text": "OK (optional hooks field not specified)"
26209 },
26210 "lint-snap-v2:iffy_files": {
26211 "manual_review": false,
26212 "text": "OK"
26213 },
26214 "lint-snap-v2:name_valid": {
26215 "manual_review": false,
26216 "text": "OK"
26217 },
26218 "lint-snap-v2:snap_manifest": {
26219 "manual_review": false,
26220 "text": "OK"
26221 },
26222 "lint-snap-v2:snap_type_valid": {
26223 "manual_review": false,
26224 "text": "OK"
26225 },
26226 "lint-snap-v2:summary": {
26227 "manual_review": false,
26228 "text": "OK"
26229 },
26230 "lint-snap-v2:summary_present": {
26231 "manual_review": false,
26232 "text": "OK"
26233 },
26234 "lint-snap-v2:title_present": {
26235 "manual_review": false,
26236 "text": "OK (optional title field not specified)"
26237 },
26238 "lint-snap-v2:unknown_field": {
26239 "manual_review": false,
26240 "text": "OK"
26241 },
26242 "lint-snap-v2:unknown_hook": {
26243 "manual_review": false,
26244 "text": "OK"
26245 },
26246 "lint-snap-v2:valid_unicode": {
26247 "manual_review": false,
26248 "text": "ok"
26249 },
26250 "lint-snap-v2:vcs_files": {
26251 "manual_review": false,
26252 "text": "OK"
26253 },
26254 "lint-snap-v2:version_valid": {
26255 "manual_review": false,
26256 "text": "OK"
26257 }
26258 },
26259 "warn": {}
26260 },
26261 "snap.v2_security": {
26262 "error": {},
26263 "info": {
26264 "security-snap-v2:squashfs_files": {
26265 "manual_review": false,
26266 "text": "OK"
26267 },
26268 "security-snap-v2:squashfs_repack_checksum": {
26269 "manual_review": false,
26270 "text": "OK"
26271 }
26272 },
26273 "warn": {}
26274 }
26275}
26276
26014= test-core_16-2.37.2_amd64.snap =26277= test-core_16-2.37.2_amd64.snap =
26015Errors26278Errors
26016------26279------

Subscribers

People subscribed via source and target branches