Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(626)

Side by Side Diff: tools/cc-frame-viewer/third_party/gl-matrix/tasks/test/coverage.rake

Issue 12251005: [cc-frame-viewer] Add gl-matrix to third_party [redux] (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 desc "Generate JavaScript code coverage report in ./covershot"
2 task :coverage => %w(
3 coverage:dependencies
4 coverage:clean
5 coverage:prepare
6 coverage:instrumentation
7 coverage:write_manifest
8 coverage:execute
9 coverage:generate
10 coverage:done
11 )
12
13 namespace :coverage do
14 task :dependencies do
15 unless File.exist?(base_path.join('node_modules'))
16 if %x[which npm].strip.length == 0
17 raise <<-end_error
18 Could not execute `npm`! Please make sure node.js and the Node Package
19 Manager (NPM) are available and can be executed without root
20 permissions.
21 end_error
22 else
23 cmd = "npm install && bundle exec #{$0} #{ARGV.join ' '}"
24 puts "Executing the following command:"
25 puts
26 puts " #{cmd}"
27 puts
28 puts
29 Kernel.exec cmd
30 end
31 end
32 end
33
34 task :clean do
35 rm_rf base_path.join('covershot')
36 rm_rf base_path.join('tmp')
37 end
38
39 task :prepare do
40 manifest = sprockets['gl-matrix-manifest.js']
41 coverage_path = base_path.join('tmp/coverage')
42
43 manifest.dependencies.each do |part|
44 path = coverage_path.join('lib').join(part.pathname.basename)
45 mkdir_p(path.dirname) unless File.directory?(path.dirname)
46 File.open(path, 'w') do |f|
47 f.print part.body
48 end
49 end
50 end
51
52 task :instrumentation do
53 bin = 'jscoverage'
54 opts = [ '--no-highlight' ]
55 input = base_path.join('tmp/coverage/lib').to_s
56 output = base_path.join('tmp/coverage/lib-cov').to_s
57
58 unless system *[bin, opts, input, output].flatten
59 raise "Instrumentation failure. Please make sure `jscoverage` is installed ."
60 end
61 end
62
63 task :write_manifest do
64 manifest = sprockets['gl-matrix-manifest.js']
65 coverage_path = base_path.join('tmp/coverage')
66
67 File.open(coverage_path.join('manifest.js'), 'w') do |manifest_out|
68 manifest_out.puts <<-end_script
69 var covershot = require('covershot');
70 var csrequire = covershot.require.bind(null, require);
71
72 function pull(str) {
73 var exps = csrequire(str);
74 for (var i in exps) {
75 global[i] = exps[i];
76 }
77 }
78
79 global.GLMAT_EPSILON = 0.000001;
80 global.GLMAT_ARRAY_TYPE = Float32Array;
81
82 end_script
83 manifest.dependencies.each do |part|
84 path = coverage_path.join('lib-cov').join(part.pathname.basename)
85 manifest_out.puts "pull('#{path}');"
86 end
87 manifest_out.puts <<-end_script
88 function CoverageReporter() {
89 this.reportRunnerResults = function(suite) {
90 covershot.writeCoverage();
91 };
92 };
93
94 jasmine.getEnv().addReporter(new CoverageReporter());
95 end_script
96 end
97 end
98
99 task :execute do
100 jasmine_node = base_path.join('node_modules/jasmine-node/bin/jasmine-node'). to_s
101 spec = base_path.join('spec').to_s
102
103 unless system jasmine_node, spec
104 raise "jasmine-node tests failed. Coverage report not generated."
105 end
106 end
107
108 task :generate do
109 covershot = base_path.join('node_modules/covershot/bin/covershot').to_s
110 data_dir = base_path.join('covershot/data').to_s
111 format = 'html'
112
113 unless system covershot, data_dir, '-f', format
114 raise "Execution of covershot failed. Coverage report not generated."
115 end
116 end
117
118 task :done do
119 rm_rf base_path.join('tmp')
120 puts
121 puts
122 puts "Coverage report generated in: #{base_path.join("covershot/index.html") }"
123 puts
124 end
125 end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698