Skip to content
This repository was archived by the owner on Nov 3, 2023. It is now read-only.

Commit 7e0c3f4

Browse files
authored
Merge pull request #210 from varunagrawal/hacktoberfest
Print errors to stdout
2 parents ccfafc9 + f025f73 commit 7e0c3f4

File tree

3 files changed

+74
-71
lines changed

3 files changed

+74
-71
lines changed

src/pydocstyle/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def run_pydocstyle(use_pep257=False):
5555

5656
count = 0
5757
for error in errors:
58-
sys.stderr.write('%s\n' % error)
58+
sys.stdout.write('%s\n' % error)
5959
count += 1
6060
if count == 0:
6161
exit_code = ReturnCode.no_violations_found

src/pydocstyle/parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,8 @@ def parse_all(self):
380380
if self.current.value not in '([':
381381
raise AllError('Could not evaluate contents of __all__. ')
382382
if self.current.value == '[':
383-
sys.stderr.write(
384-
"{} WARNING: __all__ is defined as a list, this means "
383+
sys.stdout.write(
384+
"{0} WARNING: __all__ is defined as a list, this means "
385385
"pydocstyle cannot reliably detect contents of the __all__ "
386386
"variable, because it can be mutated. Change __all__ to be "
387387
"an (immutable) tuple, to remove this warning. Note, "

src/tests/test_integration.py

Lines changed: 71 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -216,22 +216,22 @@ def foo():
216216
"""))
217217

218218
env.write_config(ignore='D100')
219-
_, err, code = env.invoke()
219+
out, err, code = env.invoke()
220220
assert code == 1
221-
assert 'D100' not in err
222-
assert 'D103' in err
221+
assert 'D100' not in out
222+
assert 'D103' in out
223223

224224
env.write_config(ignore='')
225-
_, err, code = env.invoke()
225+
out, err, code = env.invoke()
226226
assert code == 1
227-
assert 'D100' in err
228-
assert 'D103' in err
227+
assert 'D100' in out
228+
assert 'D103' in out
229229

230230
env.write_config(ignore='D100,D103')
231-
_, err, code = env.invoke()
231+
out, err, code = env.invoke()
232232
assert code == 0
233-
assert 'D100' not in err
234-
assert 'D103' not in err
233+
assert 'D100' not in out
234+
assert 'D103' not in out
235235

236236

237237
def test_verbose(env):
@@ -259,6 +259,9 @@ def foo():
259259
out, err, code = env.invoke(args='--count')
260260
assert code == 1
261261
assert '2' in out
262+
# The error count should be in the last line of the output.
263+
# -2 since there is a newline at the end of the output.
264+
assert '2' == out.split('\n')[-2].strip()
262265

263266

264267
def test_select_cli(env):
@@ -269,10 +272,10 @@ def foo():
269272
pass
270273
"""))
271274

272-
_, err, code = env.invoke(args="--select=D100")
275+
out, err, code = env.invoke(args="--select=D100")
273276
assert code == 1
274-
assert 'D100' in err
275-
assert 'D103' not in err
277+
assert 'D100' in out
278+
assert 'D103' not in out
276279

277280

278281
def test_select_config(env):
@@ -284,10 +287,10 @@ def foo():
284287
"""))
285288

286289
env.write_config(select="D100")
287-
_, err, code = env.invoke()
290+
out, err, code = env.invoke()
288291
assert code == 1
289-
assert 'D100' in err
290-
assert 'D103' not in err
292+
assert 'D100' in out
293+
assert 'D103' not in out
291294

292295

293296
def test_add_select_cli(env):
@@ -300,11 +303,11 @@ def foo():
300303
"""))
301304

302305
env.write_config(select="D100")
303-
_, err, code = env.invoke(args="--add-select=D101")
306+
out, err, code = env.invoke(args="--add-select=D101")
304307
assert code == 1
305-
assert 'D100' in err
306-
assert 'D101' in err
307-
assert 'D103' not in err
308+
assert 'D100' in out
309+
assert 'D101' in out
310+
assert 'D103' not in out
308311

309312

310313
def test_add_ignore_cli(env):
@@ -317,11 +320,11 @@ def foo():
317320
"""))
318321

319322
env.write_config(select="D100,D101")
320-
_, err, code = env.invoke(args="--add-ignore=D101")
323+
out, err, code = env.invoke(args="--add-ignore=D101")
321324
assert code == 1
322-
assert 'D100' in err
323-
assert 'D101' not in err
324-
assert 'D103' not in err
325+
assert 'D100' in out
326+
assert 'D101' not in out
327+
assert 'D103' not in out
325328

326329

327330
def test_conflicting_select_ignore_config(env):
@@ -368,21 +371,21 @@ def foo():
368371
env.write_config(ignore='D100', verbose=True)
369372
out, err, code = env.invoke()
370373
assert code == 0
371-
assert 'D301' not in err
372-
assert 'D302' not in err
374+
assert 'D301' not in out
375+
assert 'D302' not in out
373376

374377

375378
def test_missing_docstring_in_package(env):
376379
with env.open('__init__.py', 'wt') as init:
377380
pass # an empty package file
378381
out, err, code = env.invoke()
379382
assert code == 1
380-
assert 'D100' not in err # shouldn't be treated as a module
381-
assert 'D104' in err # missing docstring in package
383+
assert 'D100' not in out # shouldn't be treated as a module
384+
assert 'D104' in out # missing docstring in package
382385

383386

384387
def test_illegal_convention(env):
385-
out, err, code = env.invoke('--convention=illegal_conv')
388+
_, err, code = env.invoke('--convention=illegal_conv')
386389
assert code == 2, err
387390
assert "Illegal convention 'illegal_conv'." in err
388391
assert 'Possible conventions: pep257' in err
@@ -422,11 +425,11 @@ def foo():
422425
"""))
423426

424427
env.write_config(select="")
425-
_, err, code = env.invoke(args="--add-select=D100")
428+
out, err, code = env.invoke(args="--add-select=D100")
426429
assert code == 1
427-
assert 'D100' in err
428-
assert 'D101' not in err
429-
assert 'D103' not in err
430+
assert 'D100' in out
431+
assert 'D101' not in out
432+
assert 'D103' not in out
430433

431434

432435
def test_pep257_convention(env):
@@ -442,13 +445,13 @@ def foo():
442445
'''))
443446

444447
env.write_config(convention="pep257")
445-
_, err, code = env.invoke()
448+
out, err, code = env.invoke()
446449
assert code == 1
447-
assert 'D100' in err
448-
assert 'D211' in err
449-
assert 'D203' not in err
450-
assert 'D212' not in err
451-
assert 'D213' not in err
450+
assert 'D100' in out
451+
assert 'D211' in out
452+
assert 'D203' not in out
453+
assert 'D212' not in out
454+
assert 'D213' not in out
452455

453456

454457
def test_config_file_inheritance(env):
@@ -483,11 +486,11 @@ def bar():
483486
pass
484487
"""))
485488

486-
_, err, code = env.invoke()
489+
out, err, code = env.invoke()
487490

488491
assert code == 1
489-
assert 'D100' in err
490-
assert 'D103' in err
492+
assert 'D100' in out
493+
assert 'D103' in out
491494

492495

493496
def test_config_file_cumulative_add_ignores(env):
@@ -522,9 +525,9 @@ def foo():
522525
with env.open(os.path.join('A', 'a.py'), 'wt') as test:
523526
test.write(test_content)
524527

525-
_, err, code = env.invoke()
528+
out, err, code = env.invoke()
526529

527-
err = parse_errors(err)
530+
err = parse_errors(out)
528531

529532
assert code == 1
530533
assert 'base.py' in err, err
@@ -565,9 +568,9 @@ def foo():
565568
with env.open(os.path.join('A', 'a.py'), 'wt') as test:
566569
test.write(test_content)
567570

568-
_, err, code = env.invoke()
571+
out, err, code = env.invoke()
569572

570-
err = parse_errors(err)
573+
err = parse_errors(out)
571574

572575
assert code == 1
573576
assert 'base.py' in err, err
@@ -605,12 +608,12 @@ def test_config_file_convention_overrides_select(env):
605608
with env.open(os.path.join('A', 'a.py'), 'wt') as test:
606609
test.write(test_content)
607610

608-
_, err, code = env.invoke()
611+
out, err, code = env.invoke()
609612

610613
assert code == 1
611-
assert 'D100' in err, err
612-
assert 'base.py' not in err, err
613-
assert 'a.py' in err, err
614+
assert 'D100' in out, out
615+
assert 'base.py' not in out, out
616+
assert 'a.py' in out, out
614617

615618

616619
def test_cli_overrides_config_file(env):
@@ -642,13 +645,13 @@ def foo():
642645
pass
643646
"""))
644647

645-
_, err, code = env.invoke(args="--convention=pep257")
648+
out, err, code = env.invoke(args="--convention=pep257")
646649

647650
assert code == 1
648-
assert 'D100' in err, err
649-
assert 'D103' not in err, err
650-
assert 'base.py' in err, err
651-
assert 'a.py' not in err, err
651+
assert 'D100' in out, out
652+
assert 'D103' not in out, out
653+
assert 'base.py' in out, out
654+
assert 'a.py' not in out, out
652655

653656

654657
def test_cli_match_overrides_config_file(env):
@@ -681,13 +684,13 @@ def foo():
681684
with env.open(os.path.join('A', 'a.py'), 'wt') as test:
682685
test.write("")
683686

684-
_, err, code = env.invoke(args="--match=a.py --match-dir=A")
687+
out, err, code = env.invoke(args="--match=a.py --match-dir=A")
685688

686689
assert code == 1
687-
assert 'D100' in err, err
688-
assert 'D103' not in err, err
689-
assert 'base.py' not in err, err
690-
assert 'a.py' in err, err
690+
assert 'D100' in out, out
691+
assert 'D103' not in out, out
692+
assert 'base.py' not in out, out
693+
assert 'a.py' in out, out
691694

692695

693696
def test_config_file_convention_overrides_ignore(env):
@@ -722,13 +725,13 @@ def foo():
722725
with env.open(os.path.join('A', 'a.py'), 'wt') as test:
723726
test.write(test_content)
724727

725-
_, err, code = env.invoke()
728+
out, err, code = env.invoke()
726729

727730
assert code == 1
728-
assert 'D100' in err, err
729-
assert 'D103' in err, err
730-
assert 'base.py' not in err, err
731-
assert 'a.py' in err, err
731+
assert 'D100' in out, out
732+
assert 'D103' in out, out
733+
assert 'base.py' not in out, out
734+
assert 'a.py' in out, out
732735

733736

734737
def test_config_file_ignore_overrides_select(env):
@@ -764,9 +767,9 @@ def bar():
764767
with env.open(os.path.join('A', 'a.py'), 'wt') as test:
765768
test.write(test_content)
766769

767-
_, err, code = env.invoke()
770+
out, err, code = env.invoke()
768771

769-
err = parse_errors(err)
772+
err = parse_errors(out)
770773

771774
assert code == 1
772775
assert 'base.py' in err, err
@@ -820,9 +823,9 @@ def bar():
820823
with env.open(os.path.join('B', 'b.py'), 'wt') as test:
821824
test.write(test_content)
822825

823-
_, err, code = env.invoke()
826+
out, err, code = env.invoke()
824827

825-
err = parse_errors(err)
828+
err = parse_errors(out)
826829

827830
assert code == 1
828831
assert 'base.py' in err, err

0 commit comments

Comments
 (0)