UNPKG

istanbul

Version:

Yet another JS code coverage tool that computes statement, line, function and branch coverage with module loader hooks to transparently add coverage when running tests. Supports all JS coverage use cases including unit tests, server side functional tests

62 lines (54 loc) 1.53 kB
/* Copyright (c) 2012, Yahoo! Inc. All rights reserved. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var util = require('util'), fs = require('fs'), Store = require('./index'); /** * a `Store` implementation that doesn't actually store anything. It assumes that keys * are absolute file paths, and contents are contents of those files. * Thus, `set` for this store is no-op, `get` returns the * contents of the filename that the key represents, `hasKey` returns true if the key * supplied is a valid file path and `keys` always returns an empty array. * * Usage * ----- * * var store = require('istanbul').Store.create('fslookup'); * * * @class LookupStore * @extends Store * @module store * @constructor */ function LookupStore(opts) { Store.call(this, opts); } LookupStore.TYPE = 'fslookup'; util.inherits(LookupStore, Store); Store.mix(LookupStore, { keys: function () { return []; }, get: function (key) { return fs.readFileSync(key, 'utf8'); }, hasKey: function (key) { var stats; try { stats = fs.statSync(key); return stats.isFile(); } catch (ex) { return false; } }, set: function (key /*, contents */) { if (!this.hasKey(key)) { throw new Error('Attempt to set contents for non-existent file [' + key + '] on a fslookup store'); } return key; } }); module.exports = LookupStore;