From 34492dc40e1a48086bf8a7b405c1a904ab04847c Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 4 Apr 2013 15:12:33 -0700 Subject: [PATCH] fixes bug 713909 - [tinder] generateLog should raise better errors on missing files, r=Pike --- apps/tinder/tests.py | 20 +++++++++++++++++++- apps/tinder/views.py | 9 ++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/apps/tinder/tests.py b/apps/tinder/tests.py index 9ad18518..211a1a75 100644 --- a/apps/tinder/tests.py +++ b/apps/tinder/tests.py @@ -16,7 +16,7 @@ from django.test.client import Client from mbdb.models import (Build, Change, Master, Log, Property, SourceStamp, Builder, Slave) -from tinder.views import _waterfall +from tinder.views import _waterfall, LogMountKeyError from tinder.templatetags import build_extras @@ -319,6 +319,24 @@ def test_showlog(self): ok_('stderr content\n' in content) ok_('json' not in content) + def test_showlog_invalid_master(self): + master = Master.objects.all()[0] + + build = Build.objects.all()[0] + step = build.steps.all()[0] + log = Log.objects.create( + name='foo', + filename='foo.log', + step=step, + ) + url = reverse('tinder.views.showlog', + args=[master.name, log.filename]) + self.assertRaises( + LogMountKeyError, + self.client.get, + url + ) + def test_render_tbpl(self): url = reverse('tinder.views.tbpl') response = self.client.get(url) diff --git a/apps/tinder/views.py b/apps/tinder/views.py index b81d80f3..7aac9527 100644 --- a/apps/tinder/views.py +++ b/apps/tinder/views.py @@ -30,6 +30,10 @@ resultclasses = ['success', 'warning', 'failure', 'skip', 'except'] +class LogMountKeyError(Exception): + pass + + def debug_(*msg): if False: print ' '.join(msg) @@ -703,7 +707,10 @@ def generateLog(master, filename): try: base = settings.LOG_MOUNTS[master] except KeyError: - raise Http404("Master `%s` not found" % master) + raise LogMountKeyError( + 'The log mount %r is not in settings.LOG_MOUNTS' + % master + ) head = re.compile('(\d+):(\d)') f = None filename = os.path.join(base, filename)