File tree Expand file tree Collapse file tree 6 files changed +74
-3
lines changed
src/syrupy/extensions/amber
tests/syrupy/extensions/amber Expand file tree Collapse file tree 6 files changed +74
-3
lines changed Original file line number Diff line number Diff line change 5050ENV /
5151env.bak /
5252venv.bak /
53- .vscode
5453.idea
5554.DS_Store
55+
56+ # IDE
57+ .vscode
58+ ! .vscode /extensions.json
59+ ! .vscode /settings.json
Original file line number Diff line number Diff line change 1+ {
2+ "recommendations" : [
3+ " littlefoxteam.vscode-python-test-adapter" ,
4+ " ms-python.mypy-type-checker"
5+ ]
6+ }
Original file line number Diff line number Diff line change 1+ {
2+ "pythonTestExplorer.testFramework" : " pytest"
3+ }
Original file line number Diff line number Diff line change 11import collections
22import inspect
3- import os
43from collections import OrderedDict
54from types import (
65 FunctionType ,
@@ -124,6 +123,10 @@ def write_file(
124123 f .write (f"{ cls ._marker_prefix } { cls .Marker .Name } : { snapshot .name } \n " )
125124 for data_line in snapshot_data .splitlines (keepends = True ):
126125 f .write (cls .with_indent (data_line , 1 ))
126+ if data_line .endswith ("\n " ):
127+ # splitlines does not split on a terminal/trailing newline, so we must
128+ # account for that manually
129+ f .write (cls .with_indent ("" , 1 ))
127130 f .write (f"\n { cls ._marker_prefix } { cls .Marker .Divider } \n " )
128131
129132 @classmethod
@@ -168,7 +171,9 @@ def __read_file_with_markers(
168171 if test_name and snapshot_data :
169172 yield Snapshot (
170173 name = test_name ,
171- data = snapshot_data .rstrip (os .linesep ),
174+ data = snapshot_data .removesuffix ("\r \n " )
175+ if snapshot_data .endswith ("\r \n " )
176+ else snapshot_data .removesuffix ("\n " ),
172177 tainted = tainted ,
173178 )
174179 test_name = None
Original file line number Diff line number Diff line change 1+ # serializer version: 1
2+ # name: test_multiline_repr
3+ Line1
4+ Line2
5+
6+ Line3
7+ # ---
8+ # name: test_trailing_2_newlines_in_repr
9+ ReprWithNewline
10+
11+
12+ # ---
13+ # name: test_trailing_newline_in_repr
14+ ReprWithNewline
15+
16+ # ---
17+ # name: test_trailing_no_newline_in_repr
18+ ReprWithNewline
19+ # ---
Original file line number Diff line number Diff line change 1+ class ReprWithNewline :
2+ def __init__ (self , newlines : int = 1 ) -> None :
3+ self .newlines = newlines
4+
5+ def __repr__ (self ) -> str :
6+ newlines = "\n " * self .newlines
7+ return f"ReprWithNewline{ newlines } "
8+
9+
10+ def test_trailing_no_newline_in_repr (snapshot ):
11+ assert ReprWithNewline (0 ) == snapshot
12+
13+
14+ def test_trailing_newline_in_repr (snapshot ):
15+ assert ReprWithNewline (1 ) == snapshot
16+
17+
18+ def test_trailing_2_newlines_in_repr (snapshot ):
19+ assert ReprWithNewline (2 ) == snapshot
20+
21+
22+ class MultilineRepr :
23+ def __repr__ (self ) -> str :
24+ return "\n " .join (
25+ [
26+ "Line1" ,
27+ "Line2\n " , # extra newline
28+ "Line3 " , # with an extra space
29+ ]
30+ )
31+
32+
33+ def test_multiline_repr (snapshot ):
34+ assert MultilineRepr () == snapshot
You can’t perform that action at this time.
0 commit comments