← Back to team overview

canonical-ubuntu-qa team mailing list archive

[Merge] ~andersson123/autopkgtest-cloud:fix-package-page-nonexistent-package into autopkgtest-cloud:master

 

Tim Andersson has proposed merging ~andersson123/autopkgtest-cloud:fix-package-page-nonexistent-package into autopkgtest-cloud:master.

Requested reviews:
  Canonical's Ubuntu QA (canonical-ubuntu-qa)
Related bugs:
  Bug #2058059 in Auto Package Testing: "Handle non-existent packages better"
  https://bugs.launchpad.net/auto-package-testing/+bug/2058059

For more details, see:
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/462703
-- 
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:fix-package-page-nonexistent-package into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
index 810163d..27d36e5 100755
--- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
+++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
@@ -12,7 +12,7 @@ from wsgiref.handlers import CGIHandler
 
 import flask
 from helpers.admin import select_abnormally_long_jobs
-from helpers.exceptions import RunningJSONNotFound
+from helpers.exceptions import NonExistentPackage, RunningJSONNotFound
 from helpers.utils import get_all_releases, get_supported_releases
 from werkzeug.middleware.proxy_fix import ProxyFix
 
@@ -279,6 +279,8 @@ def package_overview(package, _=None):
     ):
         arches.add(row[3])
         results.setdefault(row[2], {})[row[3]] = human_exitcode(row[1])
+    if not results:
+        raise NonExistentPackage()
 
     running_info = dict(
         (k, v) for (k, v) in get_running_jobs().items() if k == package
diff --git a/charms/focal/autopkgtest-web/webcontrol/helpers/exceptions.py b/charms/focal/autopkgtest-web/webcontrol/helpers/exceptions.py
index e94164e..9b32ae4 100644
--- a/charms/focal/autopkgtest-web/webcontrol/helpers/exceptions.py
+++ b/charms/focal/autopkgtest-web/webcontrol/helpers/exceptions.py
@@ -15,6 +15,15 @@ class RunningJSONNotFound(FileNotFoundError):
         return 500
 
 
+class NonExistentPackage(Exception):
+    def __init__(self):
+        super().__init__()
+        self._code = 404
+
+    def exit_code(self):
+        return self._code
+
+
 class WebControlException(Exception):
     def __init__(self, message, exit_code):
         super().__init__(message)