Commit c695f2c3 authored by baxley@chromium.org's avatar baxley@chromium.org

Add error handling to validate expectation names.

Do not allow slashes (\ or /), quotes (" or ') or spaces.

BUG=None
NOTRY=True

Review URL: https://codereview.chromium.org/100623002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238443 0039d316-1c4b-4281-b951-d872f2087c98
parent 6174a369
...@@ -13,6 +13,13 @@ import sys ...@@ -13,6 +13,13 @@ import sys
import image_tools import image_tools
_INVALID_EXPECTATION_CHARS = ['/', '\\', ' ', '"', '\'']
def IsValidExpectationName(expectation_name):
return not any(c in _INVALID_EXPECTATION_CHARS for c in expectation_name)
def GetExpectationPath(expectation, file_name=''): def GetExpectationPath(expectation, file_name=''):
"""Get the path to a test file in the given test run and expectation. """Get the path to a test file in the given test run and expectation.
...@@ -96,7 +103,14 @@ class ISpyUtils(object): ...@@ -96,7 +103,14 @@ class ISpyUtils(object):
expectation: name for this expectation, any existing expectation with the expectation: name for this expectation, any existing expectation with the
name will be replaced. name will be replaced.
images: a list of RGB encoded PIL.Images images: a list of RGB encoded PIL.Images
Raises:
ValueError: if the expectation name is invalid.
""" """
if not IsValidExpectationName(expectation):
raise ValueError("Expectation name contains an illegal character: %s." %
str(_INVALID_EXPECTATION_CHARS))
mask = image_tools.InflateMask(image_tools.CreateMask(images), 7) mask = image_tools.InflateMask(image_tools.CreateMask(images), 7)
self.UploadImage( self.UploadImage(
GetExpectationPath(expectation, 'expected.png'), images[0]) GetExpectationPath(expectation, 'expected.png'), images[0])
...@@ -112,7 +126,12 @@ class ISpyUtils(object): ...@@ -112,7 +126,12 @@ class ISpyUtils(object):
Raises: Raises:
cloud_bucket.NotFoundError: if the given expectation is not found. cloud_bucket.NotFoundError: if the given expectation is not found.
ValueError: if the expectation name is invalid.
""" """
if not IsValidExpectationName(expectation):
raise ValueError("Expectation name contains an illegal character: %s." %
str(_INVALID_EXPECTATION_CHARS))
expectation_tuple = self.GetExpectation(expectation) expectation_tuple = self.GetExpectation(expectation)
if not image_tools.SameImage( if not image_tools.SameImage(
actual, expectation_tuple.expected, mask=expectation_tuple.mask): actual, expectation_tuple.expected, mask=expectation_tuple.mask):
...@@ -198,7 +217,14 @@ class ISpyUtils(object): ...@@ -198,7 +217,14 @@ class ISpyUtils(object):
images: a json encoded list of base64 encoded png images. images: a json encoded list of base64 encoded png images.
pink_out: an image. pink_out: an image.
RGB: a json list representing the RGB values of a color to mask out. RGB: a json list representing the RGB values of a color to mask out.
Raises:
ValueError: if expectation name is invalid.
""" """
if not IsValidExpectationName(expectation):
raise ValueError("Expectation name contains an illegal character: %s." %
str(_INVALID_EXPECTATION_CHARS))
# convert the pink_out into a mask # convert the pink_out into a mask
black = (0, 0, 0, 255) black = (0, 0, 0, 255)
white = (255, 255, 255, 255) white = (255, 255, 255, 255)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment