Extend validate_base to take a load_strategy

This commit is contained in:
Anthony Sottile
2014-03-23 20:19:09 -07:00
parent 2699026908
commit d8f8f5e1f4
3 changed files with 14 additions and 2 deletions

View File

@@ -24,7 +24,7 @@ def get_validator(
exception_type on failure.
"""
def validate(filename=None):
def validate(filename=None, load_strategy=yaml.load):
filename = filename or os.path.join(git.get_root(), default_filename)
if not os.path.exists(filename):
@@ -33,7 +33,7 @@ def get_validator(
file_contents = open(filename, 'r').read()
try:
obj = yaml.load(file_contents)
obj = load_strategy(file_contents)
except Exception as e:
raise exception_type(
'File {0} is not a valid yaml file'.format(filename), e,

View File

@@ -0,0 +1,2 @@
foo: bar
bar: baz

View File

@@ -7,6 +7,8 @@ import pytest
from pre_commit import git
from pre_commit.clientlib.validate_base import get_validator
from pre_commit.ordereddict import OrderedDict
from pre_commit.yaml_extensions import ordered_load
from testing.util import get_resource_path
@@ -71,3 +73,11 @@ def test_raises_when_additional_validation_fails(additional_validator):
def test_returns_object_after_validating(noop_validator):
ret = noop_validator(get_resource_path('array_yaml_file.yaml'))
assert ret == ['foo', 'bar']
def test_load_strategy(noop_validator):
ret = noop_validator(
get_resource_path('ordering_data_test.yaml'),
load_strategy=ordered_load,
)
assert type(ret) is OrderedDict