From 597f2b5b3373839217efc06615c2f59c4de4f884 Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Wed, 4 Dec 2019 15:11:53 -0800 Subject: [PATCH] reveal bad value when job conf validation fails --- brozzler/model.py | 13 ++++++++++--- setup.py | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/brozzler/model.py b/brozzler/model.py index 77dae70..f65fe50 100644 --- a/brozzler/model.py +++ b/brozzler/model.py @@ -43,13 +43,20 @@ class JobValidator(cerberus.Validator): return url.scheme in ('http', 'https', 'ftp') class InvalidJobConf(Exception): - def __init__(self, errors): - self.errors = errors + def __init__(self, validator): + self.errors = validator.errors + try: + # Cerberus does a nice job hiding the bad value. In the case I + # debugged, I found it here. Maybe there's a better way to see it. + value = validator._errors[0].info[0][0].info[0][0].value + self.errors['bad value'] = value + except: + value = None def validate_conf(job_conf, schema=load_schema()): v = JobValidator(schema) if not v.validate(job_conf, normalize=False): - raise InvalidJobConf(v.errors) + raise InvalidJobConf(v) def merge(a, b): if isinstance(a, dict) and isinstance(b, dict): diff --git a/setup.py b/setup.py index f38425b..ef6391d 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ def find_package_data(package): setuptools.setup( name='brozzler', - version='1.5.16', + version='1.5.17', description='Distributed web crawling with browsers', url='https://github.com/internetarchive/brozzler', author='Noah Levitt',