mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
0ee154bee2
rubyspec compiles the extension libraries for capi specs in a temporary directory, and after that, deletes the directory. gcov resurrects the directory to save coverage statistics (.gcda files). However, the source and profiling artifacts (.gcno files) have been deleted. So, we need to ignore the .gcda files. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
54 lines
1.1 KiB
Ruby
54 lines
1.1 KiB
Ruby
#!ruby
|
|
require "pathname"
|
|
require "open3"
|
|
|
|
Pathname.glob("**/*.gcda").sort.each do |gcda|
|
|
if gcda.fnmatch("ext/*")
|
|
cwd, gcda = gcda.split.map {|s| s.to_s }
|
|
objdir = "."
|
|
elsif gcda.fnmatch("rubyspec_temp/*")
|
|
next
|
|
else
|
|
cwd, objdir, gcda = ".", gcda.dirname.to_s, gcda.to_s
|
|
end
|
|
puts "$ gcov -lpbc -o #{ objdir } #{ gcda }"
|
|
out, err, _status = Open3.capture3("gcov", "-lpbc", "-o", objdir, gcda, chdir: cwd)
|
|
puts out
|
|
puts err
|
|
|
|
# a black list of source files that contains wrong #line directives
|
|
if err !~ %r(
|
|
\A(
|
|
Cannot\ open\ source\ file\ (
|
|
defs/keywords
|
|
|zonetab\.list
|
|
|enc/jis/props\.kwd
|
|
|parser\.c
|
|
|parser\.rl
|
|
)\n
|
|
)*\z
|
|
)x
|
|
raise "Unexpected gcov output"
|
|
end
|
|
|
|
if out !~ %r(
|
|
\A(
|
|
File\ .*\nLines\ executed:.*\n
|
|
(
|
|
Branches\ executed:.*\n
|
|
Taken\ at\ least\ once:.*\n
|
|
|
|
|
No\ branches\n
|
|
)?
|
|
(
|
|
Calls\ executed:.*\n
|
|
|
|
|
No\ calls\n
|
|
)?
|
|
Creating\ .*\n
|
|
\n
|
|
)+\z
|
|
)x
|
|
raise "Unexpected gcov output"
|
|
end
|
|
end
|