@@ -76,3 +76,47 @@ temp_pkg_dir() do
76
76
@test err. msg == " PackageWithFailingTests had test errors"
77
77
end
78
78
end
79
+
80
+ # Testing with code-coverage
81
+ @unix_only begin # TODO : delete unix_only when #8911, #9654 are fixed
82
+ temp_pkg_dir () do
83
+ Pkg
. generate (
" PackageWithCodeCoverage" ,
" MIT" , config
= Dict (
" user.name" => " Julia Test" ,
" user.email" => " [email protected] " ))
84
+
85
+ src = """
86
+ module PackageWithCodeCoverage
87
+
88
+ export f1, f2, f3, untested
89
+
90
+ f1(x) = 2x
91
+ f2(x) = f1(x)
92
+ function f3(x)
93
+ 3x
94
+ end
95
+ untested(x) = 7
96
+
97
+ end"""
98
+ linetested = [false , false , false , false , true , true , false , true , false , false ]
99
+ open (Pkg. dir (" PackageWithCodeCoverage" , " src" , " PackageWithCodeCoverage.jl" ), " w" ) do f
100
+ println (f, src)
101
+ end
102
+ isdir (Pkg. dir (" PackageWithCodeCoverage" ," test" )) || mkdir (Pkg. dir (" PackageWithCodeCoverage" ," test" ))
103
+ open (Pkg. dir (" PackageWithCodeCoverage" , " test" , " runtests.jl" )," w" ) do f
104
+ println (f," using PackageWithCodeCoverage, Base.Test" )
105
+ println (f," @test f2(2) == 4" )
106
+ println (f," @test f3(5) == 15" )
107
+ end
108
+
109
+ Pkg. test (" PackageWithCodeCoverage" )
110
+ covfile = Pkg. dir (" PackageWithCodeCoverage" ," src" ," PackageWithCodeCoverage.jl.cov" )
111
+ @test ! isfile (covfile)
112
+ Pkg. test (" PackageWithCodeCoverage" , coverage= true )
113
+ @test isfile (covfile)
114
+ covstr = readall (covfile)
115
+ srclines = split (src, ' \n ' )
116
+ covlines = split (covstr, ' \n ' )
117
+ for i = 1 : length (linetested)
118
+ covline = (linetested[i] ? " 1 " : " - " )* srclines[i]
119
+ @test covlines[i] == covline
120
+ end
121
+ end
122
+ end
0 commit comments