mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Extend validate_base to take a load_strategy
This commit is contained in:
parent
2699026908
commit
d8f8f5e1f4
3 changed files with 14 additions and 2 deletions
|
|
@ -24,7 +24,7 @@ def get_validator(
|
||||||
exception_type on failure.
|
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)
|
filename = filename or os.path.join(git.get_root(), default_filename)
|
||||||
|
|
||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
|
|
@ -33,7 +33,7 @@ def get_validator(
|
||||||
file_contents = open(filename, 'r').read()
|
file_contents = open(filename, 'r').read()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
obj = yaml.load(file_contents)
|
obj = load_strategy(file_contents)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise exception_type(
|
raise exception_type(
|
||||||
'File {0} is not a valid yaml file'.format(filename), e,
|
'File {0} is not a valid yaml file'.format(filename), e,
|
||||||
|
|
|
||||||
2
testing/resources/ordering_data_test.yaml
Normal file
2
testing/resources/ordering_data_test.yaml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
foo: bar
|
||||||
|
bar: baz
|
||||||
|
|
@ -7,6 +7,8 @@ import pytest
|
||||||
|
|
||||||
from pre_commit import git
|
from pre_commit import git
|
||||||
from pre_commit.clientlib.validate_base import get_validator
|
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
|
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):
|
def test_returns_object_after_validating(noop_validator):
|
||||||
ret = noop_validator(get_resource_path('array_yaml_file.yaml'))
|
ret = noop_validator(get_resource_path('array_yaml_file.yaml'))
|
||||||
assert ret == ['foo', 'bar']
|
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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue