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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: tools/cc-frame-viewer/third_party/gl-matrix/tasks/test/coverage.rake
diff --git a/tools/cc-frame-viewer/third_party/gl-matrix/tasks/test/coverage.rake b/tools/cc-frame-viewer/third_party/gl-matrix/tasks/test/coverage.rake
new file mode 100644
index 0000000000000000000000000000000000000000..fdd8535eee183ab64ff8b11c1e6501699e2ae0f4
--- /dev/null
+++ b/tools/cc-frame-viewer/third_party/gl-matrix/tasks/test/coverage.rake
@@ -0,0 +1,125 @@
+desc "Generate JavaScript code coverage report in ./covershot"
+task :coverage => %w(
+ coverage:dependencies
+ coverage:clean
+ coverage:prepare
+ coverage:instrumentation
+ coverage:write_manifest
+ coverage:execute
+ coverage:generate
+ coverage:done
+)
+
+namespace :coverage do
+ task :dependencies do
+ unless File.exist?(base_path.join('node_modules'))
+ if %x[which npm].strip.length == 0
+ raise <<-end_error
+ Could not execute `npm`! Please make sure node.js and the Node Package
+ Manager (NPM) are available and can be executed without root
+ permissions.
+ end_error
+ else
+ cmd = "npm install && bundle exec #{$0} #{ARGV.join ' '}"
+ puts "Executing the following command:"
+ puts
+ puts " #{cmd}"
+ puts
+ puts
+ Kernel.exec cmd
+ end
+ end
+ end
+
+ task :clean do
+ rm_rf base_path.join('covershot')
+ rm_rf base_path.join('tmp')
+ end
+
+ task :prepare do
+ manifest = sprockets['gl-matrix-manifest.js']
+ coverage_path = base_path.join('tmp/coverage')
+
+ manifest.dependencies.each do |part|
+ path = coverage_path.join('lib').join(part.pathname.basename)
+ mkdir_p(path.dirname) unless File.directory?(path.dirname)
+ File.open(path, 'w') do |f|
+ f.print part.body
+ end
+ end
+ end
+
+ task :instrumentation do
+ bin = 'jscoverage'
+ opts = [ '--no-highlight' ]
+ input = base_path.join('tmp/coverage/lib').to_s
+ output = base_path.join('tmp/coverage/lib-cov').to_s
+
+ unless system *[bin, opts, input, output].flatten
+ raise "Instrumentation failure. Please make sure `jscoverage` is installed."
+ end
+ end
+
+ task :write_manifest do
+ manifest = sprockets['gl-matrix-manifest.js']
+ coverage_path = base_path.join('tmp/coverage')
+
+ File.open(coverage_path.join('manifest.js'), 'w') do |manifest_out|
+ manifest_out.puts <<-end_script
+ var covershot = require('covershot');
+ var csrequire = covershot.require.bind(null, require);
+
+ function pull(str) {
+ var exps = csrequire(str);
+ for (var i in exps) {
+ global[i] = exps[i];
+ }
+ }
+
+ global.GLMAT_EPSILON = 0.000001;
+ global.GLMAT_ARRAY_TYPE = Float32Array;
+
+ end_script
+ manifest.dependencies.each do |part|
+ path = coverage_path.join('lib-cov').join(part.pathname.basename)
+ manifest_out.puts "pull('#{path}');"
+ end
+ manifest_out.puts <<-end_script
+ function CoverageReporter() {
+ this.reportRunnerResults = function(suite) {
+ covershot.writeCoverage();
+ };
+ };
+
+ jasmine.getEnv().addReporter(new CoverageReporter());
+ end_script
+ end
+ end
+
+ task :execute do
+ jasmine_node = base_path.join('node_modules/jasmine-node/bin/jasmine-node').to_s
+ spec = base_path.join('spec').to_s
+
+ unless system jasmine_node, spec
+ raise "jasmine-node tests failed. Coverage report not generated."
+ end
+ end
+
+ task :generate do
+ covershot = base_path.join('node_modules/covershot/bin/covershot').to_s
+ data_dir = base_path.join('covershot/data').to_s
+ format = 'html'
+
+ unless system covershot, data_dir, '-f', format
+ raise "Execution of covershot failed. Coverage report not generated."
+ end
+ end
+
+ task :done do
+ rm_rf base_path.join('tmp')
+ puts
+ puts
+ puts "Coverage report generated in: #{base_path.join("covershot/index.html")}"
+ puts
+ end
+end

Powered by Google App Engine
This is Rietveld 408576698