Use istanbul test coverage on koa

Recently, I wrote some koa middlewares: koa-gzip, koa-fresh, and I want to do test coverage with my favorite module: blanket.

But blanket broken #393

$ m cov

/Users/mk2/git/koa-gzip/node_modules/blanket/node_modules/esprima/esprima.js:3872
            throw e;
                  ^
Error: Line 27: Unexpected token *
    at throwError (/Users/mk2/git/koa-gzip/node_modules/blanket/node_modules/esprima/esprima.js:1156:21)
    at throwUnexpected (/Users/mk2/git/koa-gzip/node_modules/blanket/node_modules/esprima/esprima.js:1213:9)

Is esprima not work?

First, I think esprima not support es6. But I search on github found #87 it's already support es6 now.

istanbul I found

I search 'coverage' on npm, istanbul just come out.

There are some articles about makr istanbul work with mocha:

Change blanket to istanbul

All diffs: koa-gzip#9af6

package.json: MUST use istanbul harmony branch

"devDependencies": {
  "autod": "*",
  "contributors": "*",
  "istanbul": "git://github.com/gotwarlost/istanbul.git#harmony",
  "koa": "0.5.0",
  "mm": "0.2.0",
  "mocha": "*",
  "should": "3.1.3",
  "supertest": "0.9.0"
}

Makefile:

install:
    @npm install --registry=http://r.cnpmjs.org --cache=${HOME}/.npm/.cache/cnpm

test: install
    @NODE_ENV=test node --harmony \
        node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha \
        -- -u exports \
        --reporter $(REPORTER) \
        --timeout $(TIMEOUT) \
        $(MOCHA_OPTS) \
        $(TESTS)

stdout:

$ mt


  index.test.js
    gzip()
      ✓ should work with no options
    when status 200 and request accept-encoding include gzip
      ✓ should return gzip string body (39ms)
      ✓ should return raw string body if body smaller than minLength
      ✓ should return raw string body if gzip body bigger than raw body
      ✓ should return gzip buffer body
      ✓ should return gzip stream body
      ✓ should return gzip json body
      ✓ should return number body
    when status 200 and request accept-encoding exclude gzip
      ✓ should return raw body
    when status non 200
      ✓ should return 404
      ✓ should return 500


  11 passing (117ms)

=============================================================================
Writing coverage object [/Users/mk2/git/koa-gzip/coverage/coverage.json]
Writing coverage reports at [/Users/mk2/git/koa-gzip/coverage]
=============================================================================

=============================== Coverage summary ===============================
Statements   : 100% ( 26/26 )
Branches     : 100% ( 19/19 )
Functions    : 100% ( 2/2 )
Lines        : 100% ( 26/26 )
================================================================================

istanbul is awesome! I run once tests, got all reports.

There is no more $ make test-cov.

Write for love

Hope this article make your coding life better and more fun.

Comments

Fork me on GitHub