1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
from pathlib import Path
import pytest
@pytest.fixture
def testcases():
return {
"base": (
"""
def test_a(snapshot):
assert snapshot(name="xyz") == "case 1"
assert snapshot(name="zyx") == "case 2"
"""
),
"modified": (
"""
def test_a(snapshot):
assert snapshot(name="xyz") == "case 1"
assert snapshot(name="zyx") == "case ??"
"""
),
}
@pytest.fixture
def run_testcases(pytester, testcases) -> tuple[pytest.Pytester, dict[str, str]]:
pytester.makepyfile(test_1=testcases["base"])
result = pytester.runpytest(
"-v",
"--snapshot-dirname=snaps",
"--snapshot-update",
)
result.stdout.re_match_lines((r"2 snapshots generated\.",))
return pytester, testcases
def test_run_all(run_testcases, plugin_args_fails_xdist):
pytester, _ = run_testcases
result = pytester.runpytest(
"-v", "--snapshot-dirname=snaps", *plugin_args_fails_xdist
)
result.stdout.re_match_lines(("2 snapshots passed",))
assert result.ret == 0
# Assert there's a snaps folder but no __snapshots__ folder
expected_dir = pytester.path / Path("snaps")
unexpected_dir = pytester.path / Path("__snapshots__")
assert expected_dir.exists()
assert not unexpected_dir.exists()
def test_failure(run_testcases, plugin_args_fails_xdist):
pytester, testcases = run_testcases
pytester.makepyfile(test_1=testcases["modified"])
result = pytester.runpytest(
"-vv", "--snapshot-dirname=snaps", *plugin_args_fails_xdist
)
result.stdout.re_match_lines(("1 snapshot failed. 1 snapshot passed.",))
assert result.ret == 1
# Assert there's a snaps folder but no __snapshots__ folder
expected_dir = pytester.path / Path("snaps")
unexpected_dir = pytester.path / Path("__snapshots__")
assert expected_dir.exists()
assert not unexpected_dir.exists()
def test_update(run_testcases, plugin_args_fails_xdist):
pytester, testcases = run_testcases
pytester.makepyfile(test_1=testcases["modified"])
result = pytester.runpytest(
"-v", "--snapshot-dirname=snaps", "--snapshot-update", *plugin_args_fails_xdist
)
assert "Can not relate snapshot name" not in str(result.stdout)
result.stdout.re_match_lines(("1 snapshot passed. 1 snapshot updated.",))
assert result.ret == 0
# Assert there's a snaps folder but no __snapshots__ folder
expected_dir = pytester.path / Path("snaps")
unexpected_dir = pytester.path / Path("__snapshots__")
assert expected_dir.exists()
assert not unexpected_dir.exists()
|