Open max-sixty opened 7 months ago
One issue I didn't consider above is that some autoformatters & editors attempt to ensure there's exactly one new line at the end of non-empty files (for example end-of-file-fixer
). Some options:
.snap
files from that check themselves---
␙
One option would also just be to make the start/end marker be a problem of the formatter and say that if this is relevant, we encourage/provide support to format blessed markers into the snapshot.
https://github.com/mitsuhiko/insta/pull/506 does the "Finish with a YAML-like ---
" option.
We'd need to adjust the assertion code to check for newlines. And would also need a transition period where snapshots with different newlines pass with a warning that they won't in the future.
One option would also just be to make the start/end marker be a problem of the formatter and say that if this is relevant, we encourage/provide support to format blessed markers into the snapshot.
Is the "formatter" here yaml
/ json
/ ron
? I think that could be fine but newlines are often an issue with blocks of text, which are likely using assert_snapshot
. And we control yaml
now!
There's been some recent changes on how insta handles newlines. IIUC, we now just trim them from the start and end of every snapshot; this avoids showing incorrect diffs and inline snapshots failing to discriminate between newlines in the code and newlines in the snapshot.
I think there's an approach that would handle this well, but not confident and wanted to socialize it in case I'm missing something:
...has a snapshot value of two lines; excluding the first and last newlines within the string
Then, if there are newlines in the snapshot value, these can then be recognized because we know we've added exactly one newline at the start and at the end. Here's an example if the snapshot value had a leading newline:
This way, I don't think there can be any ambiguity.
[^1]: this generally means "is only one line", though very long single lines could start on the next line and become multiline