def test_assert_match_success(testdir, basic_case_dir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match(u'the value of snapshot1.txt', 'snapshot1.txt') """) assert_pytest_passes(testdir)
def test_assert_match_dir_delete_snapshot_file(testdir, basic_case_dir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match_dir({ 'obj1.txt': u'the value of obj1.txt', }, 'dict_snapshot1') """) result = testdir.runpytest('-v', '--snapshot-update') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', '*::test_sth ERROR*', "E* AssertionError: Snapshot directory was modified: case_dir", 'E* Snapshots that should be deleted: (run pytest with --allow-snapshot-deletion to delete them)', 'E* dict_snapshot1?obj2.txt', ]) assert result.ret == 1 result = testdir.runpytest('-v', '--snapshot-update', '--allow-snapshot-deletion') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', '*::test_sth ERROR*', 'E* AssertionError: Snapshot directory was modified: case_dir', 'E* Deleted snapshots:', 'E* dict_snapshot1?obj2.txt', ]) assert result.ret == 1 assert_pytest_passes(testdir) # assert that snapshot update worked
def test_assert_match_dir_update_existing_snapshot(testdir, basic_case_dir, case_dir_repr, snapshot_name_repr): """ Tests that `Snapshot.assert_match_dir` works when updating an existing snapshot. Also tests that `Snapshot` supports absolute/relative str/Path snapshot directories and snapshot paths. """ testdir.makepyfile(""" try: from pathlib import Path except ImportError: from pathlib2 import Path def test_sth(snapshot): snapshot.snapshot_dir = {case_dir_repr} snapshot.assert_match_dir({{ 'obj1.txt': u'the value of obj1.txt', 'obj2.txt': u'the NEW value of obj2.txt', }}, {snapshot_name_repr}) """.format(case_dir_repr=case_dir_repr, snapshot_name_repr=snapshot_name_repr)) result = testdir.runpytest('-v', '--snapshot-update') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', '*::test_sth ERROR*', "E* AssertionError: Snapshot directory was modified: case_dir", 'E* Updated snapshots:', 'E* dict_snapshot1?obj2.txt', ]) assert result.ret == 1 assert_pytest_passes(testdir) # assert that snapshot update worked
def test_assert_match_success_bytes(testdir, basic_case_dir): testdir.makepyfile(r""" import os def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match(b'the valu\xc3\x89 of snapshot1.txt' + os.linesep.encode(), 'snapshot1.txt') """) assert_pytest_passes(testdir)
def test_default_snapshot_dir_without_parametrize(testdir): testdir.makepyfile(""" from pathlib import Path def test_sth(snapshot): assert snapshot.snapshot_dir == \ Path('snapshots/test_default_snapshot_dir_without_parametrize/test_sth').absolute() """) assert_pytest_passes(testdir)
def test_assert_match_dir_success(testdir, basic_case_dir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match_dir({ 'obj1.txt': u'the value of obj1.txt', 'obj2.txt': u'the value of obj2.txt', }, 'dict_snapshot1') """) assert_pytest_passes(testdir)
def test_assert_match_update_existing_snapshot_no_change(testdir, basic_case_dir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match(u'the value of snapshot1.txt', 'snapshot1.txt') """) result = testdir.runpytest('-v', '--snapshot-update') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', ]) assert result.ret == 0 assert_pytest_passes(testdir) # assert that snapshot update worked
def test_assert_match_create_new_snapshot(testdir, basic_case_dir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match(u'the NEW value of new_snapshot1.txt', 'sub_dir/new_snapshot1.txt') """) result = testdir.runpytest('-v', '--snapshot-update') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', '*::test_sth ERROR*', "E* Snapshot directory was modified: case_dir", 'E* Created snapshots:', 'E* sub_dir?new_snapshot1.txt', ]) assert result.ret == 1 assert_pytest_passes(testdir) # assert that snapshot update worked
def test_assert_match_dir_create_new_snapshot_dir(testdir, basic_case_dir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.snapshot_dir = 'case_dir' snapshot.assert_match_dir({ 'obj1.txt': u'the value of obj1.txt', }, 'new_dict_snapshot') """) result = testdir.runpytest('-v', '--snapshot-update') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', '*::test_sth ERROR*', 'E* AssertionError: Snapshot directory was modified: case_dir', 'E* Created snapshots:', 'E* new_dict_snapshot?obj1.txt', ]) assert result.ret == 1 assert_pytest_passes(testdir) # assert that snapshot update worked
def test_assert_match_create_new_snapshot_in_default_dir(testdir): testdir.makepyfile(""" def test_sth(snapshot): snapshot.assert_match(u'the value of new_snapshot1.txt', 'sub_dir/new_snapshot1.txt') """) result = testdir.runpytest('-v', '--snapshot-update') result.stdout.fnmatch_lines([ '*::test_sth PASSED*', '*::test_sth ERROR*', "E* Snapshot directory was modified: snapshots?test_assert_match_create_new_snapshot_in_default_dir?test_sth", 'E* Created snapshots:', 'E* sub_dir?new_snapshot1.txt', ]) assert result.ret == 1 assert testdir.tmpdir.join( 'snapshots/test_assert_match_create_new_snapshot_in_default_dir/test_sth/sub_dir/new_snapshot1.txt' ).read_text('utf-8') == u'the value of new_snapshot1.txt' assert_pytest_passes(testdir) # assert that snapshot update worked