Skip to content
This repository has been archived by the owner on Oct 3, 2019. It is now read-only.

Commit

Permalink
Update test style
Browse files Browse the repository at this point in the history
  • Loading branch information
jacebrowning committed Jun 1, 2017
1 parent b1d80f9 commit 95475bf
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 53 deletions.
2 changes: 1 addition & 1 deletion .pylint.ini
Expand Up @@ -65,7 +65,7 @@ confidence=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,import-star-module-level,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,long-suffix,old-ne-operator,old-octal-literal,suppressed-message,useless-suppression,locally-disabled,fixme,too-few-public-methods,too-many-public-methods,invalid-name,global-statement,too-many-ancestors,missing-docstring,no-else-return,too-many-instance-attributes,too-many-branches,arguments-differ,unnecessary-lambda,no-member
disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,import-star-module-level,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,long-suffix,old-ne-operator,old-octal-literal,suppressed-message,useless-suppression,locally-disabled,fixme,too-few-public-methods,too-many-public-methods,invalid-name,global-statement,too-many-ancestors,missing-docstring,no-else-return,too-many-instance-attributes,too-many-branches,arguments-differ,no-member


[REPORTS]
Expand Down
103 changes: 52 additions & 51 deletions yorm/tests/test_utilities.py
Expand Up @@ -39,15 +39,14 @@ def instance(model_class):


@pytest.fixture
def instance_pile(model_class):
def instances(model_class):
instances = [
model_class(kind, key)
for kind in ('spam', 'egg')
for key in ('foo', 'bar')
]
# mostly because this is used primarily by match tests
for inst in instances:
inst.__mapper__.create()
for instance in instances:
instance.__mapper__.create()

return instances

Expand Down Expand Up @@ -113,7 +112,7 @@ def it_requires_a_mapped_class_or_instance():

def describe_match():

def class_factory(model_class, instance_pile):
def with_class_and_factory(model_class, instances):
matches = list(
utilities.match(
model_class,
Expand All @@ -122,91 +121,93 @@ def class_factory(model_class, instance_pile):
key='foo',
)
)
assert len(matches) == 1
expect(len(matches)) == 1
instance = matches[0]
assert instance.kind == 'spam'
assert instance.key == 'foo'
assert instance in instance_pile
expect(instance.kind) == 'spam'
expect(instance.key) == 'foo'
expect(instances).contains(instance)

def class_no_factory(model_class, instance_pile):
def with_class_and_no_factory(model_class, instances):
matches = list(
utilities.match(
model_class,
kind='spam',
key='foo',
)
)
assert len(matches) == 1
expect(len(matches)) == 1
instance = matches[0]
assert instance.kind == 'spam'
assert instance.key == 'foo'
assert instance in instance_pile
expect(instance.kind) == 'spam'
expect(instance.key) == 'foo'
expect(instances).contains(instance)

def string_self_factory(model_class, instance_pile):
def with_string(model_class, instances):
matches = list(
utilities.match(
"data/{self.kind}/{self.key}.yml",
(lambda key, kind: model_class(kind, key)),
kind='spam',
key='bar',
"data/{kind}/{key}.yml",
(lambda key, kind: model_class(kind, key, test="test")),
kind='egg',
key='foo',
)
)
assert len(matches) == 1
expect(len(matches)) == 1
instance = matches[0]
assert instance.kind == 'spam'
assert instance.key == 'bar'
assert instance in instance_pile
expect(instance.kind) == 'egg'
expect(instance.key) == 'foo'
expect(instances).contains(instance)

def string_factory(model_class, instance_pile):
def with_self_string(model_class, instances):
matches = list(
utilities.match(
"data/{kind}/{key}.yml",
(lambda key, kind: model_class(kind, key)),
kind='egg',
key='foo',
"data/{self.kind}/{self.key}.yml",
(lambda key, kind: model_class(kind, key, test="test")),
kind='spam',
key='bar',
)
)
assert len(matches) == 1
expect(len(matches)) == 1
instance = matches[0]
assert instance.kind == 'egg'
assert instance.key == 'foo'
assert instance in instance_pile
expect(instance.kind) == 'spam'
expect(instance.key) == 'bar'
expect(instances).contains(instance)

def class_factory_wildcard(model_class, instance_pile):
def with_class_and_partial_match(model_class, instances):
matches = list(
utilities.match(
model_class,
(lambda key, kind: model_class(kind, key)),
kind='spam',
)
)
assert len(matches) == 2
assert all(i.kind == 'spam' for i in matches)
assert all(i in instance_pile for i in matches)
expect(len(matches)) == 2
for instance in matches:
expect(instance.kind) == 'spam'
expect(instances).contains(instance)

def string_self_factory_wildcard(model_class, instance_pile):
def with_string_and_partial_match(model_class, instances):
matches = list(
utilities.match(
"data/{self.kind}/{self.key}.yml",
(lambda key, kind: model_class(kind, key)),
kind='egg',
"data/{kind}/{key}.yml",
(lambda key, kind: model_class(kind, key, test="test")),
key='foo',
)
)
assert len(matches) == 2
assert all(i.kind == 'egg' for i in matches)
assert all(i in instance_pile for i in matches)
expect(len(matches)) == 2
for instance in matches:
expect(instance.key) == 'foo'
expect(instances).contains(instance)

def string_factory_wildcard(model_class, instance_pile):
def with_self_string_and_partial_match(model_class, instances):
matches = list(
utilities.match(
"data/{kind}/{key}.yml",
(lambda key, kind: model_class(kind, key)),
key='foo',
"data/{self.kind}/{self.key}.yml",
(lambda key, kind: model_class(kind, key, test="test")),
kind='egg',
)
)
assert len(matches) == 2
assert all(i.key == 'foo' for i in matches)
assert all(i in instance_pile for i in matches)
expect(len(matches)) == 2
for instance in matches:
expect(instance.kind) == 'egg'
expect(instances).contains(instance)


def describe_load():
Expand Down
4 changes: 3 additions & 1 deletion yorm/utilities.py
Expand Up @@ -83,16 +83,18 @@ def match(cls_or_path, _factory=None, **kwargs):
"""Yield all matching mapped objects.
Can be used two ways:
* With a YORM-decorated class, optionally with a factory callable
* With a Python 3-style string template and a factory callable
The factory callable must accept keyuword arguments, extracted from the file
The factory callable must accept keyword arguments, extracted from the file
name merged with those passed to match(). If no factory is given, the class
itself is used as the factory (same signature).
Keyword arguments are used to filter objects. Filtering is only done by
filename, so only fields that are part of the path_format can be filtered
against.
"""
if isinstance(cls_or_path, type):
path_format = common.path_formats[cls_or_path]
Expand Down

0 comments on commit 95475bf

Please sign in to comment.