Skip to content

Commit a803e71

Browse files
committed
set plaintext as fallback ifmt
1 parent 4374fa7 commit a803e71

File tree

6 files changed

+42
-8
lines changed

6 files changed

+42
-8
lines changed

nested_diff/cli.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,12 @@ def get_dumper(fmt, **kwargs):
157157

158158
raise RuntimeError(f'Unsupported output format: {fmt}')
159159

160-
@staticmethod
161-
def guess_fmt(fp, default, ignore_fps=(sys.stdin, sys.stdout, sys.stderr)):
160+
def guess_fmt(
161+
self,
162+
fp,
163+
default,
164+
ignore_fps=(sys.stdin, sys.stdout, sys.stderr),
165+
):
162166
"""Guess format of a file object according it's extension."""
163167
if fp in ignore_fps:
164168
return default
@@ -168,7 +172,7 @@ def guess_fmt(fp, default, ignore_fps=(sys.stdin, sys.stdout, sys.stderr)):
168172
if fmt == 'yml':
169173
fmt = 'yaml'
170174

171-
return fmt if fmt else default
175+
return fmt if fmt in self.supported_ifmts else default
172176

173177
@staticmethod
174178
def get_loader(fmt, **kwargs):
@@ -209,7 +213,7 @@ def load(self, file_):
209213
210214
"""
211215
if self.args.ifmt == 'auto':
212-
fmt = self.guess_fmt(file_, 'json')
216+
fmt = self.guess_fmt(file_, 'plaintext')
213217
else:
214218
fmt = self.args.ifmt
215219

tests/cli/shared.a.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
one
2+
two
3+
three

tests/cli/shared.b.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
one
2+
two

tests/cli/test_cli.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,22 @@ def test_excepthook_raise_system_exit_127():
7272
assert e.value.code == 127
7373

7474

75-
def test_guess_fmt_aliases():
75+
def test_guess_fmt():
7676
class FakeFP:
7777
name = None
7878

79-
aliases = {
79+
exts = {
80+
'ini': 'ini',
81+
'json': 'json',
82+
'py': 'default',
83+
'txt': 'default',
8084
'yml': 'yaml',
8185
}
8286
fake_fp = FakeFP()
8387

84-
for ext in sorted(aliases):
88+
for ext, fmt in sorted(exts.items()):
8589
fake_fp.name = f'filename.{ext}'
86-
assert cli.App(args=()).guess_fmt(fake_fp, 'default') == aliases[ext]
90+
assert cli.App(args=()).guess_fmt(fake_fp, 'default') == fmt
8791

8892

8993
def test_guess_fmt_ignore_fp_defaults():

tests/cli/test_diff_tool.py

+15
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,21 @@ def test_html_ofmt_wrappings(capsys, expected, rpath):
284284
assert captured.out == expected
285285

286286

287+
def test_fallback_ifmt(capsys, expected, rpath):
288+
exit_code = nested_diff.diff_tool.App(
289+
args=(
290+
rpath('shared.a.txt'),
291+
rpath('shared.b.txt'),
292+
),
293+
).run()
294+
295+
captured = capsys.readouterr()
296+
assert captured.err == ''
297+
assert exit_code == 1
298+
299+
assert captured.out == expected
300+
301+
287302
def test_plaintext_ifmt(capsys, expected, rpath):
288303
exit_code = nested_diff.diff_tool.App(
289304
args=(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# <str>
2+
@@ -1,4 +1,3 @@
3+
one
4+
two
5+
- three
6+

0 commit comments

Comments
 (0)