| 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
|
|
|