Skip to content

Commit bfe9b05

Browse files
authored
Merge pull request #79 from certik/lf3
Make `fpm test` fail if any tests fail
2 parents fda54c1 + 1ccae6c commit bfe9b05

3 files changed

Lines changed: 21 additions & 5 deletions

File tree

test/main.f90

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
program main
2-
use compiler_test_m, only : compiler_test_t
2+
use compiler_test_m, only : compiler_test_t
33
use sp_smart_pointer_test_m, only : sp_smart_pointer_test_t
44
implicit none
55

66
type(compiler_test_t) compiler_test
77
type(sp_smart_pointer_test_t) sp_smart_pointer_test
8+
integer :: failures
89

9-
call compiler_test%report()
10-
call sp_smart_pointer_test%report()
10+
failures = compiler_test%report()
11+
failures = failures + sp_smart_pointer_test%report()
12+
if (failures > 0) error stop
1113
end program

test/test_m.F90

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ function results_interface() result(test_results)
2828

2929
interface
3030

31-
module subroutine report(test)
31+
module function report(test) result(failures)
3232
implicit none
3333
class(test_t), intent(in) :: test
34-
end subroutine
34+
integer :: failures
35+
end function
3536

3637
end interface
3738

@@ -49,12 +50,14 @@ end module test_m
4950
integer i
5051
type(test_result_t), allocatable :: test_results(:)
5152

53+
failures = 0
5254
print *
5355
print *, test%subject()
5456

5557
test_results = test%results()
5658
do i=1,size(test_results)
5759
print *," ",test_results(i)%characterize()
60+
if (.not. test_results(i)%outcome()) failures = failures + 1
5861
end do
5962
end procedure
6063

test/test_result_m.f90

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module test_result_m
1111
logical outcome_
1212
contains
1313
procedure :: characterize
14+
procedure :: outcome
1415
end type
1516

1617
interface test_result_t
@@ -32,6 +33,12 @@ pure module function characterize(self) result(characterization)
3233
character(len=:), allocatable :: characterization
3334
end function
3435

36+
pure module function outcome(self) result(passes)
37+
implicit none
38+
class(test_result_t), intent(in) :: self
39+
logical :: passes
40+
end function
41+
3542
end interface
3643

3744
end module test_result_m
@@ -50,4 +57,8 @@ end module test_result_m
5057
characterization = merge("Pass: ", "Fail: ", self%outcome_) // self%description_
5158
end procedure
5259

60+
module procedure outcome
61+
passes = self%outcome_
62+
end procedure
63+
5364
end submodule test_result_s

0 commit comments

Comments
 (0)