@@ -17,6 +17,9 @@ defmodule ExUnit.DocTestTest.GoodModule do
17
17
"""
18
18
def test_sigil , do: :ok
19
19
20
+ @ doc " iex>1 + 2\n 3"
21
+ def no_trailing_new_line , do: :ok
22
+
20
23
@ doc """
21
24
iex> a = 1
22
25
iex> b = a + 2
@@ -265,6 +268,11 @@ defmodule ExUnit.DocTestTest.Incomplete do
265
268
def test_fun , do: :ok
266
269
end |> write_beam
267
270
271
+ defmodule ExUnit.DocTestTest.IncompleteNoTrailingNewLine do
272
+ @ doc "iex> 3 + 4"
273
+ def test_fun , do: :ok
274
+ end |> write_beam
275
+
268
276
defmodule ExUnit.DocTestTest.FenceIncomplete do
269
277
@ doc ~S'''
270
278
```
@@ -400,112 +408,112 @@ defmodule ExUnit.DocTestTest do
400
408
401
409
assert output =~ """
402
410
1) test moduledoc at ExUnit.DocTestTest.Invalid (1) (ExUnit.DocTestTest.ActuallyCompiled)
403
- test/ex_unit/doc_test_test.exs:391
404
- Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:130 : syntax error before: '*'
411
+ test/ex_unit/doc_test_test.exs:399
412
+ Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:133 : syntax error before: '*'
405
413
code: 1 + * 1
406
414
stacktrace:
407
- test/ex_unit/doc_test_test.exs:130 : ExUnit.DocTestTest.Invalid (module)
415
+ test/ex_unit/doc_test_test.exs:133 : ExUnit.DocTestTest.Invalid (module)
408
416
"""
409
417
410
418
assert output =~ """
411
419
2) test moduledoc at ExUnit.DocTestTest.Invalid (2) (ExUnit.DocTestTest.ActuallyCompiled)
412
- test/ex_unit/doc_test_test.exs:391
420
+ test/ex_unit/doc_test_test.exs:399
413
421
Doctest failed
414
422
code: 1 + hd(List.flatten([1])) === 3
415
423
left: 2
416
424
stacktrace:
417
- test/ex_unit/doc_test_test.exs:133 : ExUnit.DocTestTest.Invalid (module)
425
+ test/ex_unit/doc_test_test.exs:136 : ExUnit.DocTestTest.Invalid (module)
418
426
"""
419
427
420
428
assert output =~ """
421
429
3) test moduledoc at ExUnit.DocTestTest.Invalid (3) (ExUnit.DocTestTest.ActuallyCompiled)
422
- test/ex_unit/doc_test_test.exs:391
430
+ test/ex_unit/doc_test_test.exs:399
423
431
Doctest failed
424
432
code: inspect(:oops) === "#MapSet<[]>"
425
433
left: ":oops"
426
434
stacktrace:
427
- test/ex_unit/doc_test_test.exs:136 : ExUnit.DocTestTest.Invalid (module)
435
+ test/ex_unit/doc_test_test.exs:139 : ExUnit.DocTestTest.Invalid (module)
428
436
"""
429
437
430
438
# The stacktrace points to the cause of the error
431
439
assert output =~ """
432
440
4) test moduledoc at ExUnit.DocTestTest.Invalid (4) (ExUnit.DocTestTest.ActuallyCompiled)
433
- test/ex_unit/doc_test_test.exs:391
441
+ test/ex_unit/doc_test_test.exs:399
434
442
Doctest failed: got UndefinedFunctionError with message "function Hello.world/0 is undefined (module Hello is not available)"
435
443
code: Hello.world
436
444
stacktrace:
437
445
Hello.world()
438
- (for doctest at) test/ex_unit/doc_test_test.exs:139 : (test)
446
+ (for doctest at) test/ex_unit/doc_test_test.exs:142 : (test)
439
447
"""
440
448
441
449
assert output =~ """
442
450
5) test moduledoc at ExUnit.DocTestTest.Invalid (5) (ExUnit.DocTestTest.ActuallyCompiled)
443
- test/ex_unit/doc_test_test.exs:391
451
+ test/ex_unit/doc_test_test.exs:399
444
452
Doctest failed: expected exception WhatIsThis but got RuntimeError with message "oops"
445
453
code: raise "oops"
446
454
stacktrace:
447
- test/ex_unit/doc_test_test.exs:142 : ExUnit.DocTestTest.Invalid (module)
455
+ test/ex_unit/doc_test_test.exs:145 : ExUnit.DocTestTest.Invalid (module)
448
456
"""
449
457
450
458
assert output =~ """
451
459
6) test moduledoc at ExUnit.DocTestTest.Invalid (6) (ExUnit.DocTestTest.ActuallyCompiled)
452
- test/ex_unit/doc_test_test.exs:391
460
+ test/ex_unit/doc_test_test.exs:399
453
461
Doctest failed: wrong message for RuntimeError
454
462
expected:
455
463
"hello"
456
464
actual:
457
465
"oops"
458
466
code: raise "oops"
459
467
stacktrace:
460
- test/ex_unit/doc_test_test.exs:145 : ExUnit.DocTestTest.Invalid (module)
468
+ test/ex_unit/doc_test_test.exs:148 : ExUnit.DocTestTest.Invalid (module)
461
469
"""
462
470
463
471
assert output =~ """
464
472
7) test doc at ExUnit.DocTestTest.Invalid.a/0 (7) (ExUnit.DocTestTest.ActuallyCompiled)
465
- test/ex_unit/doc_test_test.exs:391
466
- Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:151 : syntax error before: '*'
473
+ test/ex_unit/doc_test_test.exs:399
474
+ Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:154 : syntax error before: '*'
467
475
code: 1 + * 1
468
476
stacktrace:
469
- test/ex_unit/doc_test_test.exs:151 : ExUnit.DocTestTest.Invalid (module)
477
+ test/ex_unit/doc_test_test.exs:154 : ExUnit.DocTestTest.Invalid (module)
470
478
"""
471
479
472
480
assert output =~ """
473
481
8) test doc at ExUnit.DocTestTest.Invalid.b/0 (8) (ExUnit.DocTestTest.ActuallyCompiled)
474
- test/ex_unit/doc_test_test.exs:391
475
- Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:157 : syntax error before: '*'
482
+ test/ex_unit/doc_test_test.exs:399
483
+ Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:160 : syntax error before: '*'
476
484
code: 1 + * 1
477
485
stacktrace:
478
- test/ex_unit/doc_test_test.exs:157 : ExUnit.DocTestTest.Invalid (module)
486
+ test/ex_unit/doc_test_test.exs:160 : ExUnit.DocTestTest.Invalid (module)
479
487
"""
480
488
481
489
assert output =~ """
482
490
9) test doc at ExUnit.DocTestTest.Invalid.dedented_past_fence/0 (9) (ExUnit.DocTestTest.ActuallyCompiled)
483
- test/ex_unit/doc_test_test.exs:391
484
- Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:181 : unexpected token: "`" (column 5, codepoint U+0060)
491
+ test/ex_unit/doc_test_test.exs:399
492
+ Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:184 : unexpected token: "`" (column 5, codepoint U+0060)
485
493
code: 3
486
494
```
487
495
stacktrace:
488
- test/ex_unit/doc_test_test.exs:180 : ExUnit.DocTestTest.Invalid (module)
496
+ test/ex_unit/doc_test_test.exs:183 : ExUnit.DocTestTest.Invalid (module)
489
497
"""
490
498
491
499
assert output =~ """
492
500
10) test doc at ExUnit.DocTestTest.Invalid.indented_not_enough/0 (10) (ExUnit.DocTestTest.ActuallyCompiled)
493
- test/ex_unit/doc_test_test.exs:391
494
- Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:165 : unexpected token: "`" (column 1, codepoint U+0060)
501
+ test/ex_unit/doc_test_test.exs:399
502
+ Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:168 : unexpected token: "`" (column 1, codepoint U+0060)
495
503
code: 3
496
504
`
497
505
stacktrace:
498
- test/ex_unit/doc_test_test.exs:164 : ExUnit.DocTestTest.Invalid (module)
506
+ test/ex_unit/doc_test_test.exs:167 : ExUnit.DocTestTest.Invalid (module)
499
507
"""
500
508
501
509
assert output =~ """
502
510
11) test doc at ExUnit.DocTestTest.Invalid.indented_too_much/0 (11) (ExUnit.DocTestTest.ActuallyCompiled)
503
- test/ex_unit/doc_test_test.exs:391
504
- Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:173 : unexpected token: "`" (column 3, codepoint U+0060)
511
+ test/ex_unit/doc_test_test.exs:399
512
+ Doctest did not compile, got: (SyntaxError) test/ex_unit/doc_test_test.exs:176 : unexpected token: "`" (column 3, codepoint U+0060)
505
513
code: 3
506
514
```
507
515
stacktrace:
508
- test/ex_unit/doc_test_test.exs:172 : ExUnit.DocTestTest.Invalid (module)
516
+ test/ex_unit/doc_test_test.exs:175 : ExUnit.DocTestTest.Invalid (module)
509
517
"""
510
518
end
511
519
@@ -611,6 +619,16 @@ defmodule ExUnit.DocTestTest do
611
619
end
612
620
end
613
621
622
+ test "fails with improper termination not ending in new line" do
623
+ assert_raise ExUnit.DocTest.Error ,
624
+ ~r[ test/ex_unit/doc_test_test\. exs:\d +: expected non-blank line to follow iex> prompt] , fn ->
625
+ defmodule NeverCompiled do
626
+ import ExUnit.DocTest
627
+ doctest ExUnit.DocTestTest.IncompleteNoTrailingNewLine
628
+ end
629
+ end
630
+ end
631
+
614
632
test "fails on invalid use" do
615
633
assert_raise RuntimeError , ~r" cannot define test" , fn ->
616
634
defmodule FunctionClashFail do
0 commit comments