html-cov.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /**
  2. * Module dependencies.
  3. */
  4. var JSONCov = require('./json-cov');
  5. var readFileSync = require('fs').readFileSync;
  6. var join = require('path').join;
  7. /**
  8. * Expose `HTMLCov`.
  9. */
  10. exports = module.exports = HTMLCov;
  11. /**
  12. * Initialize a new `JsCoverage` reporter.
  13. *
  14. * @api public
  15. * @param {Runner} runner
  16. */
  17. function HTMLCov(runner) {
  18. var jade = require('jade');
  19. var file = join(__dirname, '/templates/coverage.jade');
  20. var str = readFileSync(file, 'utf8');
  21. var fn = jade.compile(str, { filename: file });
  22. var self = this;
  23. JSONCov.call(this, runner, false);
  24. runner.on('end', function() {
  25. process.stdout.write(fn({
  26. cov: self.cov,
  27. coverageClass: coverageClass
  28. }));
  29. });
  30. }
  31. /**
  32. * Return coverage class for a given coverage percentage.
  33. *
  34. * @api private
  35. * @param {number} coveragePctg
  36. * @return {string}
  37. */
  38. function coverageClass(coveragePctg) {
  39. if (coveragePctg >= 75) {
  40. return 'high';
  41. }
  42. if (coveragePctg >= 50) {
  43. return 'medium';
  44. }
  45. if (coveragePctg >= 25) {
  46. return 'low';
  47. }
  48. return 'terrible';
  49. }