Skip to content

Commit

Permalink
Fixed error bundler param passing
Browse files Browse the repository at this point in the history
There are still a lot of messages that get passed without keywords. This
adds support back in for those messages. All messages that pass more
recently added parameters (e.g.: tier, for_appversions, etc.) use
keywords to pass their values.
  • Loading branch information
mattbasta committed Nov 14, 2012
1 parent 4bd94e1 commit 82f3177
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
27 changes: 27 additions & 0 deletions tests/test_errorbundler.py
@@ -1,13 +1,40 @@
import json
import nose
import sys
from nose.tools import eq_
from StringIO import StringIO

import validator.errorbundler as errorbundler
from validator.errorbundler import ErrorBundle
from validator.contextgenerator import ContextGenerator


def test_message_completeness():
"""Test we're fully expecting all of the values for a message."""

bundle = ErrorBundle()

bundle.error(
("id", ),
"error",
"description",
"file",
123, # line
456 # column
)

results = json.loads(bundle.render_json())
eq_(len(results["messages"]), 1, "Unexpected number of messages.")

message = results["messages"][0]
eq_(message["id"], ["id"])
eq_(message["message"], "error")
eq_(message["description"], "description")
eq_(message["file"], "file")
eq_(message["line"], 123)
eq_(message["column"], 456)


def test_json():
"""Test the JSON output capability of the error bundler."""

Expand Down
15 changes: 11 additions & 4 deletions validator/errorbundler.py
Expand Up @@ -77,12 +77,19 @@ def __init__(self, determined=True, listed=True, instant=False,
def _message(type_, message_type):
def wrap(self, *args, **kwargs):
message = {
"id": kwargs.get('err_id') or args[0],
"id": kwargs.get("err_id") or args[0],
"message": kwargs.get(message_type) or args[1],
"file": kwargs.get("filename", "") # Filename is never None.
"description": kwargs.get("description",
args[2] if len(args) > 2 else None),
# Filename is never None.
"file": kwargs.get("filename",
args[3] if len(args) > 3 else ""),
"line": kwargs.get("line",
args[4] if len(args) > 4 else None),
"column": kwargs.get("column",
args[5] if len(args) > 5 else None),
}
for field in ("description", "line", "column", "tier",
"for_appversions", "compatibility_type"):
for field in ("tier", "for_appversions", "compatibility_type", ):
message[field] = kwargs.get(field)

self._save_message(getattr(self, type_), type_, message,
Expand Down

0 comments on commit 82f3177

Please sign in to comment.