Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion snowfakery/data_generator_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ def __init__(
self.instance_states = {}
self.filter_row_values = self.filter_row_values_normal
snowfakery_version = self.options.get(
"snowfakery.standard_plugins.SnowfakeryVersion.snowfakery_version", 2
"snowfakery.standard_plugins.SnowfakeryVersion.snowfakery_version", 3
)
assert snowfakery_version in (2, 3)
self.native_types = snowfakery_version == 3
Expand Down
22 changes: 18 additions & 4 deletions tests/test_data_generator_runtime_dom.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,19 @@ def __init__(self):
self.random_references = []


def standard_runtime():
def standard_runtime(snowfakery_version=None):
options = {}
if snowfakery_version is not None:
options[
"snowfakery.standard_plugins.SnowfakeryVersion.snowfakery_version"
] = snowfakery_version
output_stream = DebugOutputStream()
interpreter = Interpreter(
output_stream=output_stream,
parent_application=SnowfakeryApplication(),
parse_result=FakeParseResult(),
globals=Globals(),
options=options,
)
runtime_context = RuntimeContext(interpreter=interpreter)
interpreter.current_context = runtime_context
Expand Down Expand Up @@ -150,15 +156,23 @@ def test_old_jinja_syntax(self):
repr(definition)
f = FieldFactory("field", definition, "abc.yml", 10)
repr(f)
x = f.generate_value(standard_runtime())
x = f.generate_value(standard_runtime(snowfakery_version=2))
assert x == 15

def test_mixed_jinja_syntax(self):
def test_mixed_jinja_syntax__version_2(self):
definition = SimpleValue("${{2+3}} <<5*3>>", "abc.yml", 10)
repr(definition)
f = FieldFactory("field", definition, "abc.yml", 10)
repr(f)
x = f.generate_value(standard_runtime())
x = f.generate_value(standard_runtime(snowfakery_version=2))
assert x == "5 <<5*3>>"

def test_mixed_jinja_syntax__version_3(self):
definition = SimpleValue("${{2+3}} <<5*3>>", "abc.yml", 10)
repr(definition)
f = FieldFactory("field", definition, "abc.yml", 10)
repr(f)
x = f.generate_value(standard_runtime(snowfakery_version=3))
assert x == "5 <<5*3>>"

def test_check_type(self):
Expand Down
1 change: 1 addition & 0 deletions tests/test_dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
class TestDates:
def test_old_dates_as_strings(self, generated_rows):
yaml = """
- snowfakery_version: 2
- object: OBJ
fields:
basedate: ${{datetime(year=2000, month=1, day=1)}}
Expand Down
3 changes: 2 additions & 1 deletion tests/test_faker.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def test_fake_two_params_flat(self, generated_rows):
"""
generate(StringIO(yaml), {}, None)
date = row_values(generated_rows, 0, "date")
assert type(date) == str, generated_rows.mock_calls
assert isinstance(date, str), generated_rows.mock_calls
assert len(date.split("-")) == 3, date

def test_fake_two_params_nested(self, generated_rows):
Expand Down Expand Up @@ -530,6 +530,7 @@ def test_context_aware_alernate_names(self, email, first_name, generated_rows):
@mock.patch("faker.providers.internet.en_US.Provider.ascii_safe_email")
def test_disable_matching(self, email, first_name, generated_rows):
yaml = """
- snowfakery_version: 2
- object: X
fields:
FirstName:
Expand Down
31 changes: 16 additions & 15 deletions tests/test_line_numbers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@
from snowfakery.data_gen_exceptions import DataGenSyntaxError, DataGenValueError

yaml = """ #1
- object: A #2
count: 10 #3
fields: #4
A: What a wonderful life #5
X: Y #6
- object: B #7
count: ${{expr}} #8
fields: #9
A: What a wonderful life #10
X: Y #11
- snowfakery_version: 2 #2
- object: A #3
count: 10 #4
fields: #5
A: What a wonderful life #6
X: Y #7
- object: B #8
count: ${{expr}} #9
fields: #10
A: What a wonderful life #11
X: Y #12
"""

yaml_with_syntax_error = """ #1
Expand All @@ -35,16 +36,16 @@ class TestLineNumbers:
def test_line_numbers(self):
result = parse_recipe(StringIO(yaml))
templates = result.templates
assert templates[0].line_num == 2
assert templates[0].fields[0].definition.line_num == 5
assert templates[0].line_num == 3
assert templates[0].fields[0].definition.line_num == 6
line_num = templates[0].fields[1].definition.line_num
assert 4 <= line_num <= 6 # anywhere in here is okay for small strings
assert templates[1].count_expr.line_num == 8
assert 5 <= line_num <= 7 # anywhere in here is okay for small strings
assert templates[1].count_expr.line_num == 9

def test_value_error_reporting(self):
with pytest.raises(DataGenValueError) as e:
generate(StringIO(yaml), {}, None)
assert str(e.value)[-2:] == ":8"
assert str(e.value)[-2:] == ":9"

def test_syntax_error_number_reporting(self):
with pytest.raises(DataGenSyntaxError) as e:
Expand Down
1 change: 1 addition & 0 deletions tests/test_output_streams.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def do_output(self, yaml):

def test_dates(self):
yaml = """
- snowfakery_version: 2
- object: foo
fields:
y2k: ${{date(year=2000, month=1, day=1)}}
Expand Down
2 changes: 2 additions & 0 deletions tests/test_references.py
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,7 @@ def test_random_reference__properties(self, generated_rows):
def test_random_reference__weird_type_properties(self, generated_rows):
# unusual types are not serialized and won't be returned
yaml = """
- snowfakery_version: 2
- plugin: tests.test_custom_plugins_and_providers.EvalPlugin
- object: Parent
nickname: parent_with_counter
Expand Down Expand Up @@ -966,6 +967,7 @@ def test_random_reference_to_objects_with_diverse_types(self, generated_rows):
# There is a risk that some weird types will not be serialized
# correctly.
yaml = """
- snowfakery_version: 2
- object: A
count: 3
nickname: AA
Expand Down
5 changes: 5 additions & 0 deletions tests/test_template_funcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ def test_conditional_nested(self, generated_rows):

def test_parse_date_from_datetime_string(self, generated_rows):
yaml = """
- snowfakery_version: 2
- object : A
fields:
a: ${{date("2012-01-01T00:01")}}
Expand All @@ -213,6 +214,7 @@ def test_parse_date_from_datetime_string(self, generated_rows):

def test_parse_date_from_date_string(self, generated_rows):
yaml = """
- snowfakery_version: 2
- object : A
fields:
a: ${{date("2012-01-01")}}
Expand All @@ -222,6 +224,7 @@ def test_parse_date_from_date_string(self, generated_rows):

def test_date_from_datetime(self, generated_rows):
yaml = """
- snowfakery_version: 2
- object : A
fields:
a: ${{date(datetime(year=2012, month=1, day=1))}}
Expand All @@ -231,6 +234,7 @@ def test_date_from_datetime(self, generated_rows):

def test_now_variable(self, generated_rows):
yaml = """
- snowfakery_version: 2
- object : A
fields:
a: ${{now}}
Expand All @@ -244,6 +248,7 @@ def test_now_variable(self, generated_rows):
def test_now_calls_datetime_now(self, datetime):
now = datetime.now = mock.Mock()
yaml = """
- snowfakery_version: 2
- object : A
fields:
a: ${{now}}
Expand Down