diff -Nru click-reviewers-tools-0.4/bin/clickreviews/cr_common.py click-reviewers-tools-0.5/bin/clickreviews/cr_common.py --- click-reviewers-tools-0.4/bin/clickreviews/cr_common.py 2014-02-26 06:26:55.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/cr_common.py 2014-03-05 18:07:19.000000000 +0000 @@ -34,11 +34,14 @@ # cleanup import atexit + + def cleanup_unpack(): if UNPACK_DIR is not None and os.path.isdir(UNPACK_DIR): recursive_rm(UNPACK_DIR) atexit.register(cleanup_unpack) + # # Utility classes # @@ -103,6 +106,7 @@ # it now # self._list_all_compiled_binaries() + # TODO: update to use libclick API when available self.valid_frameworks = [] frameworks = sorted( glob.glob("/usr/share/click/frameworks/*.framework")) diff -Nru click-reviewers-tools-0.4/bin/clickreviews/cr_desktop.py click-reviewers-tools-0.5/bin/clickreviews/cr_desktop.py --- click-reviewers-tools-0.4/bin/clickreviews/cr_desktop.py 2014-02-26 06:26:55.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/cr_desktop.py 2014-03-05 18:07:19.000000000 +0000 @@ -289,7 +289,7 @@ self._add_result(t, n, s) continue elif de.getExec().split()[0] != "webbrowser-app" and \ - de.getExec().split()[0] != "webapp-container": + de.getExec().split()[0] != "webapp-container": s = "SKIPPED (not webapp-container or webbrowser-app)" self._add_result(t, n, s) continue @@ -708,11 +708,10 @@ def check_desktop_icon(self): '''Check Icon entry''' - ICON_SUFFIXES = [ - '.svg', - '.png', - '.jpg' - ] + ICON_SUFFIXES = ['.svg', + '.png', + '.jpg', + ] for app in sorted(self.desktop_entries): de = self._get_desktop_entry(app) t = 'info' @@ -728,11 +727,13 @@ s = "absolute path '%s' for icon given in .desktop file." % \ de.getIcon() l = 'http://askubuntu.com/questions/417369/what-does-desktop-icon-mean/417370' - elif not os.path.exists(os.path.join(self.unpack_dir, + elif not os.path.exists(os.path.join(self.unpack_dir, de.getIcon())) and \ - True not in filter(lambda a: \ - os.path.exists(os.path.join(self.unpack_dir, - de.getIcon()+a)), ICON_SUFFIXES): + True not in filter(lambda a: + os.path.exists(os.path.join( + self.unpack_dir, + de.getIcon() + a)), + ICON_SUFFIXES): t = 'error' s = "'%s' specified as icon in .desktop file for app '%s', " \ "which is not available in the click package." % \ diff -Nru click-reviewers-tools-0.4/bin/clickreviews/cr_lint.py click-reviewers-tools-0.5/bin/clickreviews/cr_lint.py --- click-reviewers-tools-0.4/bin/clickreviews/cr_lint.py 2014-02-06 18:31:24.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/cr_lint.py 2014-03-12 10:42:50.000000000 +0000 @@ -470,7 +470,7 @@ s = "email=%s does not match package domain=%s " \ "(Your email domain needs to match the reverse package " \ "namespace.)" % (self.email, - ".".join(pkg_domain_rev)) + ".".join(pkg_domain_rev)) self._add_result(t, n, s) def check_title(self): diff -Nru click-reviewers-tools-0.4/bin/clickreviews/cr_security.py click-reviewers-tools-0.5/bin/clickreviews/cr_security.py --- click-reviewers-tools-0.4/bin/clickreviews/cr_security.py 2014-01-22 16:36:47.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/cr_security.py 2014-03-05 18:07:19.000000000 +0000 @@ -36,18 +36,7 @@ def __init__(self, fn): ClickReview.__init__(self, fn, "security") - version_dirs = sorted(glob.glob("%s/templates/ubuntu/*" % - easyprof_dir)) - self.supported_policy_versions = [] - for d in version_dirs: - if not os.path.isdir(d): - continue - try: - self.supported_policy_versions.append(float( - os.path.basename(d))) - except TypeError: - continue - self.supported_policy_versions = sorted(self.supported_policy_versions) + self.supported_policy_versions = self._get_supported_policy_versions() self.all_fields = ['abstractions', 'author', @@ -83,8 +72,12 @@ self.extraneous_templates = ['ubuntu-sdk', 'default'] - self.framework_policy = {'ubuntu-sdk-13.10': '1.0', - 'ubuntu-sdk-14.04': '1.1'} + # framework policy is based on major framework version. In 13.10, there + # was only 'ubuntu-sdk-13.10', but in 14.04, there will be several, + # like 'ubuntu-sdk-14.04-html5', 'ubuntu-sdk-14.04-platform', etc + self.major_framework_policy = {'ubuntu-sdk-13.10': 1.0, + 'ubuntu-sdk-14.04': 1.1, + } self.security_manifests = dict() for app in self.manifest['hooks']: @@ -173,6 +166,22 @@ m = self.security_manifests[f] return (f, m) + def _get_supported_policy_versions(self): + '''Get the supported AppArmor policy versions''' + version_dirs = sorted(glob.glob("%s/templates/ubuntu/*" % + easyprof_dir)) + supported_policy_versions = [] + for d in version_dirs: + if not os.path.isdir(d): + continue + try: + supported_policy_versions.append(float(os.path.basename(d))) + except TypeError: + continue + supported_policy_versions = sorted(supported_policy_versions) + + return supported_policy_versions + def check_policy_vendor(self): '''Check policy_vendor''' for app in sorted(self.manifest['hooks']): @@ -214,7 +223,7 @@ highest = sorted(self.supported_policy_versions)[-1] t = 'info' - n = 'policy_version_is_%s (%s)' % (str(highest), f) + n = 'policy_version_is_highest (%s, %s)' % (str(highest), f) s = "OK" if float(m['policy_version']) != highest: t = 'info' @@ -224,13 +233,20 @@ t = 'info' n = 'policy_version_matches_framework (%s)' % (f) s = "OK" - if str(m['policy_version']) != \ - self.framework_policy[self.manifest['framework']]: + found_major = False + for k in self.major_framework_policy.keys(): + # TODO: use libclick when it is available + if not self.manifest['framework'].startswith(k): + continue + found_major = True + if m['policy_version'] != self.major_framework_policy[k]: + t = 'error' + s = '%s != %s (%s)' % (str(m['policy_version']), + self.major_framework_policy[k], + self.manifest['framework']) + if not found_major: t = 'error' - s = '%s != %s (%s)' % (str(m['policy_version']), - self.framework_policy[ - self.manifest['framework']], - self.manifest['framework']) + s = "Invalid framework '%s'" % self.manifest['framework'] self._add_result(t, n, s) def check_template(self): diff -Nru click-reviewers-tools-0.4/bin/clickreviews/cr_tests.py click-reviewers-tools-0.5/bin/clickreviews/cr_tests.py --- click-reviewers-tools-0.4/bin/clickreviews/cr_tests.py 2014-02-27 13:49:27.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/cr_tests.py 2014-03-04 16:38:41.000000000 +0000 @@ -62,6 +62,11 @@ return ("%s.json" % app, json.loads(TEST_SECURITY[app])) +def _get_security_supported_policy_versions(self): + '''Pretend we read the contens of /usr/share/apparmor/easyprof''' + return [1.0, 1.1] + + def _extract_desktop_entry(self, app): '''Pretend we read the desktop file''' return ("%s.desktop" % app, TEST_DESKTOP[app]) @@ -122,6 +127,9 @@ patches.append(patch( 'clickreviews.cr_security.ClickReviewSecurity._get_security_manifest', _get_security_manifest)) +patches.append(patch( + 'clickreviews.cr_security.ClickReviewSecurity._get_supported_policy_versions', + _get_security_supported_policy_versions)) # desktop overrides patches.append(patch( diff -Nru click-reviewers-tools-0.4/bin/clickreviews/tests/test_cr_desktop.py click-reviewers-tools-0.5/bin/clickreviews/tests/test_cr_desktop.py --- click-reviewers-tools-0.4/bin/clickreviews/tests/test_cr_desktop.py 2014-02-26 06:26:55.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/tests/test_cr_desktop.py 2014-03-05 18:07:19.000000000 +0000 @@ -195,7 +195,7 @@ '''Test check_desktop_exec_webbrowser with both required''' for exe in ['webbrowser-app --webapp', 'webapp-container']: c = ClickReviewDesktop(self.test_name) - ex = "%s --enable-back-forward " % exe + \ + ex = "%s --enable-back-forward " % exe + \ "--webappUrlPatterns=https?://mobile.twitter.com/* " + \ "--webappModelSearchPath=. " + \ "http://mobile.twitter.com" diff -Nru click-reviewers-tools-0.4/bin/clickreviews/tests/test_cr_security.py click-reviewers-tools-0.5/bin/clickreviews/tests/test_cr_security.py --- click-reviewers-tools-0.4/bin/clickreviews/tests/test_cr_security.py 2014-01-22 16:36:47.000000000 +0000 +++ click-reviewers-tools-0.5/bin/clickreviews/tests/test_cr_security.py 2014-03-04 16:38:41.000000000 +0000 @@ -56,7 +56,7 @@ expected['info'] = dict() expected['warn'] = dict() expected['error'] = dict() - expected['info']["security_policy_version_is_%s (%s)" % + expected['info']["security_policy_version_is_highest (%s, %s)" % (highest_version, self.default_security_json)] = \ {"text": "OK"} self.check_results(report, expected=expected) @@ -76,7 +76,8 @@ expected['info'] = dict() expected['warn'] = dict() expected['error'] = dict() - expected['info']["security_policy_version_is_%s (%s)" % (highest, + expected['info']["security_policy_version_is_highest (%s, %s)" % ( + highest, self.default_security_json)] = \ {"text": "0.1 != %s" % highest} expected['error']["security_policy_version_exists (%s)" % @@ -103,13 +104,14 @@ expected['info'] = dict() expected['warn'] = dict() expected['error'] = dict() - expected['info']["security_policy_version_is_%s (%s)" % (highest, + expected['info']["security_policy_version_is_highest (%s, %s)" % ( + highest, self.default_security_json)] = \ {"text": "%s != %s" % (version, highest)} self.check_results(report, expected=expected) def test_check_policy_version_unspecified(self): - '''Test check_policy_version() - bad version''' + '''Test check_policy_version() - unspecified''' c = ClickReviewSecurity(self.test_name) self.set_test_security_manifest(self.default_appname, "policy_version", None) @@ -131,9 +133,13 @@ # matches the framework for f in tmp.valid_frameworks: self.set_test_manifest("framework", f) + policy_version = 0 + for k in tmp.major_framework_policy.keys(): + if f.startswith(k): + policy_version = tmp.major_framework_policy[k] self.set_test_security_manifest(self.default_appname, "policy_version", - tmp.framework_policy[f]) + policy_version) c = ClickReviewSecurity(self.test_name) c.check_policy_version() report = c.click_report @@ -141,10 +147,10 @@ self.check_results(report, expected_counts) def test_check_policy_version_framework_unmatch(self): - '''Test check_policy_version() - unmatching framework''' + '''Test check_policy_version() - unmatching framework (lower)''' self.set_test_manifest("framework", "ubuntu-sdk-14.04") self.set_test_security_manifest(self.default_appname, - "policy_version", "1.0") + "policy_version", 1.0) c = ClickReviewSecurity(self.test_name) c.check_policy_version() report = c.click_report @@ -161,6 +167,48 @@ {"text": "1.0 != 1.1 (ubuntu-sdk-14.04)"} self.check_results(report, expected=expected) + def test_check_policy_version_framework_unmatch2(self): + '''Test check_policy_version() - unmatching framework (higher)''' + self.set_test_manifest("framework", "ubuntu-sdk-13.10") + self.set_test_security_manifest(self.default_appname, + "policy_version", 1.1) + c = ClickReviewSecurity(self.test_name) + c.check_policy_version() + report = c.click_report + + expected_counts = {'info': None, 'warn': 0, 'error': 1} + self.check_results(report, expected_counts) + + expected = dict() + expected['info'] = dict() + expected['warn'] = dict() + expected['error'] = dict() + expected['error']["security_policy_version_matches_framework (%s)" % + self.default_security_json] = \ + {"text": "1.1 != 1.0 (ubuntu-sdk-13.10)"} + self.check_results(report, expected=expected) + + def test_check_policy_version_framework_unmatch3(self): + '''Test check_policy_version() - unmatching framework (nonexistent)''' + self.set_test_manifest("framework", "nonexistent") + self.set_test_security_manifest(self.default_appname, + "policy_version", 1.1) + c = ClickReviewSecurity(self.test_name) + c.check_policy_version() + report = c.click_report + + expected_counts = {'info': None, 'warn': 0, 'error': 1} + self.check_results(report, expected_counts) + + expected = dict() + expected['info'] = dict() + expected['warn'] = dict() + expected['error'] = dict() + expected['error']["security_policy_version_matches_framework (%s)" % + self.default_security_json] = \ + {"text": "Invalid framework 'nonexistent'"} + self.check_results(report, expected=expected) + def test_check_policy_vendor_unspecified(self): '''Test check_policy_vendor() - unspecified''' c = ClickReviewSecurity(self.test_name) diff -Nru click-reviewers-tools-0.4/clickreviews/cr_common.py click-reviewers-tools-0.5/clickreviews/cr_common.py --- click-reviewers-tools-0.4/clickreviews/cr_common.py 2014-02-26 06:26:55.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/cr_common.py 2014-03-05 18:07:19.000000000 +0000 @@ -34,11 +34,14 @@ # cleanup import atexit + + def cleanup_unpack(): if UNPACK_DIR is not None and os.path.isdir(UNPACK_DIR): recursive_rm(UNPACK_DIR) atexit.register(cleanup_unpack) + # # Utility classes # @@ -103,6 +106,7 @@ # it now # self._list_all_compiled_binaries() + # TODO: update to use libclick API when available self.valid_frameworks = [] frameworks = sorted( glob.glob("/usr/share/click/frameworks/*.framework")) diff -Nru click-reviewers-tools-0.4/clickreviews/cr_desktop.py click-reviewers-tools-0.5/clickreviews/cr_desktop.py --- click-reviewers-tools-0.4/clickreviews/cr_desktop.py 2014-02-26 06:26:55.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/cr_desktop.py 2014-03-05 18:07:19.000000000 +0000 @@ -289,7 +289,7 @@ self._add_result(t, n, s) continue elif de.getExec().split()[0] != "webbrowser-app" and \ - de.getExec().split()[0] != "webapp-container": + de.getExec().split()[0] != "webapp-container": s = "SKIPPED (not webapp-container or webbrowser-app)" self._add_result(t, n, s) continue @@ -708,11 +708,10 @@ def check_desktop_icon(self): '''Check Icon entry''' - ICON_SUFFIXES = [ - '.svg', - '.png', - '.jpg' - ] + ICON_SUFFIXES = ['.svg', + '.png', + '.jpg', + ] for app in sorted(self.desktop_entries): de = self._get_desktop_entry(app) t = 'info' @@ -728,11 +727,13 @@ s = "absolute path '%s' for icon given in .desktop file." % \ de.getIcon() l = 'http://askubuntu.com/questions/417369/what-does-desktop-icon-mean/417370' - elif not os.path.exists(os.path.join(self.unpack_dir, + elif not os.path.exists(os.path.join(self.unpack_dir, de.getIcon())) and \ - True not in filter(lambda a: \ - os.path.exists(os.path.join(self.unpack_dir, - de.getIcon()+a)), ICON_SUFFIXES): + True not in filter(lambda a: + os.path.exists(os.path.join( + self.unpack_dir, + de.getIcon() + a)), + ICON_SUFFIXES): t = 'error' s = "'%s' specified as icon in .desktop file for app '%s', " \ "which is not available in the click package." % \ diff -Nru click-reviewers-tools-0.4/clickreviews/cr_lint.py click-reviewers-tools-0.5/clickreviews/cr_lint.py --- click-reviewers-tools-0.4/clickreviews/cr_lint.py 2014-02-06 18:31:24.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/cr_lint.py 2014-03-12 10:42:50.000000000 +0000 @@ -470,7 +470,7 @@ s = "email=%s does not match package domain=%s " \ "(Your email domain needs to match the reverse package " \ "namespace.)" % (self.email, - ".".join(pkg_domain_rev)) + ".".join(pkg_domain_rev)) self._add_result(t, n, s) def check_title(self): diff -Nru click-reviewers-tools-0.4/clickreviews/cr_security.py click-reviewers-tools-0.5/clickreviews/cr_security.py --- click-reviewers-tools-0.4/clickreviews/cr_security.py 2014-01-22 16:36:47.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/cr_security.py 2014-03-05 18:07:19.000000000 +0000 @@ -36,18 +36,7 @@ def __init__(self, fn): ClickReview.__init__(self, fn, "security") - version_dirs = sorted(glob.glob("%s/templates/ubuntu/*" % - easyprof_dir)) - self.supported_policy_versions = [] - for d in version_dirs: - if not os.path.isdir(d): - continue - try: - self.supported_policy_versions.append(float( - os.path.basename(d))) - except TypeError: - continue - self.supported_policy_versions = sorted(self.supported_policy_versions) + self.supported_policy_versions = self._get_supported_policy_versions() self.all_fields = ['abstractions', 'author', @@ -83,8 +72,12 @@ self.extraneous_templates = ['ubuntu-sdk', 'default'] - self.framework_policy = {'ubuntu-sdk-13.10': '1.0', - 'ubuntu-sdk-14.04': '1.1'} + # framework policy is based on major framework version. In 13.10, there + # was only 'ubuntu-sdk-13.10', but in 14.04, there will be several, + # like 'ubuntu-sdk-14.04-html5', 'ubuntu-sdk-14.04-platform', etc + self.major_framework_policy = {'ubuntu-sdk-13.10': 1.0, + 'ubuntu-sdk-14.04': 1.1, + } self.security_manifests = dict() for app in self.manifest['hooks']: @@ -173,6 +166,22 @@ m = self.security_manifests[f] return (f, m) + def _get_supported_policy_versions(self): + '''Get the supported AppArmor policy versions''' + version_dirs = sorted(glob.glob("%s/templates/ubuntu/*" % + easyprof_dir)) + supported_policy_versions = [] + for d in version_dirs: + if not os.path.isdir(d): + continue + try: + supported_policy_versions.append(float(os.path.basename(d))) + except TypeError: + continue + supported_policy_versions = sorted(supported_policy_versions) + + return supported_policy_versions + def check_policy_vendor(self): '''Check policy_vendor''' for app in sorted(self.manifest['hooks']): @@ -214,7 +223,7 @@ highest = sorted(self.supported_policy_versions)[-1] t = 'info' - n = 'policy_version_is_%s (%s)' % (str(highest), f) + n = 'policy_version_is_highest (%s, %s)' % (str(highest), f) s = "OK" if float(m['policy_version']) != highest: t = 'info' @@ -224,13 +233,20 @@ t = 'info' n = 'policy_version_matches_framework (%s)' % (f) s = "OK" - if str(m['policy_version']) != \ - self.framework_policy[self.manifest['framework']]: + found_major = False + for k in self.major_framework_policy.keys(): + # TODO: use libclick when it is available + if not self.manifest['framework'].startswith(k): + continue + found_major = True + if m['policy_version'] != self.major_framework_policy[k]: + t = 'error' + s = '%s != %s (%s)' % (str(m['policy_version']), + self.major_framework_policy[k], + self.manifest['framework']) + if not found_major: t = 'error' - s = '%s != %s (%s)' % (str(m['policy_version']), - self.framework_policy[ - self.manifest['framework']], - self.manifest['framework']) + s = "Invalid framework '%s'" % self.manifest['framework'] self._add_result(t, n, s) def check_template(self): diff -Nru click-reviewers-tools-0.4/clickreviews/cr_tests.py click-reviewers-tools-0.5/clickreviews/cr_tests.py --- click-reviewers-tools-0.4/clickreviews/cr_tests.py 2014-02-27 13:49:27.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/cr_tests.py 2014-03-04 16:38:41.000000000 +0000 @@ -62,6 +62,11 @@ return ("%s.json" % app, json.loads(TEST_SECURITY[app])) +def _get_security_supported_policy_versions(self): + '''Pretend we read the contens of /usr/share/apparmor/easyprof''' + return [1.0, 1.1] + + def _extract_desktop_entry(self, app): '''Pretend we read the desktop file''' return ("%s.desktop" % app, TEST_DESKTOP[app]) @@ -122,6 +127,9 @@ patches.append(patch( 'clickreviews.cr_security.ClickReviewSecurity._get_security_manifest', _get_security_manifest)) +patches.append(patch( + 'clickreviews.cr_security.ClickReviewSecurity._get_supported_policy_versions', + _get_security_supported_policy_versions)) # desktop overrides patches.append(patch( diff -Nru click-reviewers-tools-0.4/clickreviews/tests/test_cr_desktop.py click-reviewers-tools-0.5/clickreviews/tests/test_cr_desktop.py --- click-reviewers-tools-0.4/clickreviews/tests/test_cr_desktop.py 2014-02-26 06:26:55.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/tests/test_cr_desktop.py 2014-03-05 18:07:19.000000000 +0000 @@ -195,7 +195,7 @@ '''Test check_desktop_exec_webbrowser with both required''' for exe in ['webbrowser-app --webapp', 'webapp-container']: c = ClickReviewDesktop(self.test_name) - ex = "%s --enable-back-forward " % exe + \ + ex = "%s --enable-back-forward " % exe + \ "--webappUrlPatterns=https?://mobile.twitter.com/* " + \ "--webappModelSearchPath=. " + \ "http://mobile.twitter.com" diff -Nru click-reviewers-tools-0.4/clickreviews/tests/test_cr_security.py click-reviewers-tools-0.5/clickreviews/tests/test_cr_security.py --- click-reviewers-tools-0.4/clickreviews/tests/test_cr_security.py 2014-01-22 16:36:47.000000000 +0000 +++ click-reviewers-tools-0.5/clickreviews/tests/test_cr_security.py 2014-03-04 16:38:41.000000000 +0000 @@ -56,7 +56,7 @@ expected['info'] = dict() expected['warn'] = dict() expected['error'] = dict() - expected['info']["security_policy_version_is_%s (%s)" % + expected['info']["security_policy_version_is_highest (%s, %s)" % (highest_version, self.default_security_json)] = \ {"text": "OK"} self.check_results(report, expected=expected) @@ -76,7 +76,8 @@ expected['info'] = dict() expected['warn'] = dict() expected['error'] = dict() - expected['info']["security_policy_version_is_%s (%s)" % (highest, + expected['info']["security_policy_version_is_highest (%s, %s)" % ( + highest, self.default_security_json)] = \ {"text": "0.1 != %s" % highest} expected['error']["security_policy_version_exists (%s)" % @@ -103,13 +104,14 @@ expected['info'] = dict() expected['warn'] = dict() expected['error'] = dict() - expected['info']["security_policy_version_is_%s (%s)" % (highest, + expected['info']["security_policy_version_is_highest (%s, %s)" % ( + highest, self.default_security_json)] = \ {"text": "%s != %s" % (version, highest)} self.check_results(report, expected=expected) def test_check_policy_version_unspecified(self): - '''Test check_policy_version() - bad version''' + '''Test check_policy_version() - unspecified''' c = ClickReviewSecurity(self.test_name) self.set_test_security_manifest(self.default_appname, "policy_version", None) @@ -131,9 +133,13 @@ # matches the framework for f in tmp.valid_frameworks: self.set_test_manifest("framework", f) + policy_version = 0 + for k in tmp.major_framework_policy.keys(): + if f.startswith(k): + policy_version = tmp.major_framework_policy[k] self.set_test_security_manifest(self.default_appname, "policy_version", - tmp.framework_policy[f]) + policy_version) c = ClickReviewSecurity(self.test_name) c.check_policy_version() report = c.click_report @@ -141,10 +147,10 @@ self.check_results(report, expected_counts) def test_check_policy_version_framework_unmatch(self): - '''Test check_policy_version() - unmatching framework''' + '''Test check_policy_version() - unmatching framework (lower)''' self.set_test_manifest("framework", "ubuntu-sdk-14.04") self.set_test_security_manifest(self.default_appname, - "policy_version", "1.0") + "policy_version", 1.0) c = ClickReviewSecurity(self.test_name) c.check_policy_version() report = c.click_report @@ -161,6 +167,48 @@ {"text": "1.0 != 1.1 (ubuntu-sdk-14.04)"} self.check_results(report, expected=expected) + def test_check_policy_version_framework_unmatch2(self): + '''Test check_policy_version() - unmatching framework (higher)''' + self.set_test_manifest("framework", "ubuntu-sdk-13.10") + self.set_test_security_manifest(self.default_appname, + "policy_version", 1.1) + c = ClickReviewSecurity(self.test_name) + c.check_policy_version() + report = c.click_report + + expected_counts = {'info': None, 'warn': 0, 'error': 1} + self.check_results(report, expected_counts) + + expected = dict() + expected['info'] = dict() + expected['warn'] = dict() + expected['error'] = dict() + expected['error']["security_policy_version_matches_framework (%s)" % + self.default_security_json] = \ + {"text": "1.1 != 1.0 (ubuntu-sdk-13.10)"} + self.check_results(report, expected=expected) + + def test_check_policy_version_framework_unmatch3(self): + '''Test check_policy_version() - unmatching framework (nonexistent)''' + self.set_test_manifest("framework", "nonexistent") + self.set_test_security_manifest(self.default_appname, + "policy_version", 1.1) + c = ClickReviewSecurity(self.test_name) + c.check_policy_version() + report = c.click_report + + expected_counts = {'info': None, 'warn': 0, 'error': 1} + self.check_results(report, expected_counts) + + expected = dict() + expected['info'] = dict() + expected['warn'] = dict() + expected['error'] = dict() + expected['error']["security_policy_version_matches_framework (%s)" % + self.default_security_json] = \ + {"text": "Invalid framework 'nonexistent'"} + self.check_results(report, expected=expected) + def test_check_policy_vendor_unspecified(self): '''Test check_policy_vendor() - unspecified''' c = ClickReviewSecurity(self.test_name) diff -Nru click-reviewers-tools-0.4/debian/changelog click-reviewers-tools-0.5/debian/changelog --- click-reviewers-tools-0.4/debian/changelog 2014-03-13 14:23:02.000000000 +0000 +++ click-reviewers-tools-0.5/debian/changelog 2014-03-13 14:23:02.000000000 +0000 @@ -1,3 +1,12 @@ +click-reviewers-tools (0.5) trusty; urgency=medium + + [ Jamie Strandboge ] + * mock self.supported_policy_versions + * support multiple frameworks on system in security tests + * add/update tests for multiple frameworks in security tests + + -- Daniel Holbach Thu, 27 Feb 2014 15:30:51 +0100 + click-reviewers-tools (0.4) trusty; urgency=medium [ Daniel Holbach ] diff -Nru click-reviewers-tools-0.4/run-pep8 click-reviewers-tools-0.5/run-pep8 --- click-reviewers-tools-0.4/run-pep8 1970-01-01 00:00:00.000000000 +0000 +++ click-reviewers-tools-0.5/run-pep8 2014-03-05 18:07:19.000000000 +0000 @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +echo "= pep8 =" +for i in ./bin/click-check* ./clickreviews/*py ./clickreviews/tests/*py ; do + echo "Checking $i" + pep8 $i +done diff -Nru click-reviewers-tools-0.4/setup.cfg click-reviewers-tools-0.5/setup.cfg --- click-reviewers-tools-0.4/setup.cfg 1970-01-01 00:00:00.000000000 +0000 +++ click-reviewers-tools-0.5/setup.cfg 2014-03-05 18:07:19.000000000 +0000 @@ -0,0 +1,3 @@ +# E501 line too long +[pep8] +ignore = E501