nyc 7.0.0-candidate2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +25 -4
  3. package/bin/nyc.js +155 -137
  4. package/index.js +9 -9
  5. package/lib/process-args.js +33 -0
  6. package/node_modules/ansi-regex/package.json +1 -1
  7. package/node_modules/ansi-styles/package.json +1 -1
  8. package/node_modules/append-transform/index.js +8 -3
  9. package/node_modules/append-transform/package.json +19 -21
  10. package/node_modules/async/package.json +1 -1
  11. package/node_modules/babel-generator/lib/buffer.js +48 -28
  12. package/node_modules/babel-generator/lib/generators/base.js +4 -1
  13. package/node_modules/babel-generator/lib/generators/classes.js +2 -0
  14. package/node_modules/babel-generator/lib/generators/expressions.js +6 -23
  15. package/node_modules/babel-generator/lib/generators/flow.js +1 -0
  16. package/node_modules/babel-generator/lib/generators/statements.js +23 -14
  17. package/node_modules/babel-generator/lib/generators/types.js +2 -6
  18. package/node_modules/babel-generator/lib/index.js +82 -92
  19. package/node_modules/babel-generator/lib/node/index.js +0 -5
  20. package/node_modules/babel-generator/lib/printer.js +191 -178
  21. package/node_modules/babel-generator/lib/source-map.js +19 -33
  22. package/node_modules/babel-generator/lib/whitespace.js +3 -9
  23. package/node_modules/babel-generator/package.json +14 -14
  24. package/node_modules/babel-traverse/lib/path/introspection.js +62 -62
  25. package/node_modules/babel-traverse/lib/path/lib/removal-hooks.js +8 -0
  26. package/node_modules/babel-traverse/package.json +11 -11
  27. package/node_modules/balanced-match/README.md +2 -2
  28. package/node_modules/balanced-match/index.js +1 -1
  29. package/node_modules/balanced-match/package.json +12 -12
  30. package/node_modules/brace-expansion/index.js +10 -0
  31. package/node_modules/brace-expansion/package.json +11 -11
  32. package/node_modules/builtin-modules/package.json +1 -1
  33. package/node_modules/chalk/package.json +1 -1
  34. package/node_modules/code-point-at/package.json +1 -1
  35. package/node_modules/convert-source-map/index.js +1 -1
  36. package/node_modules/convert-source-map/package.json +17 -17
  37. package/node_modules/core-js/CHANGELOG.md +8 -0
  38. package/node_modules/core-js/bower.json +1 -1
  39. package/node_modules/core-js/build/config.js +6 -0
  40. package/node_modules/core-js/client/core.js +1238 -1233
  41. package/node_modules/core-js/client/core.min.js +4 -4
  42. package/node_modules/core-js/client/core.min.js.map +1 -1
  43. package/node_modules/core-js/client/library.js +1194 -1189
  44. package/node_modules/core-js/client/library.min.js +4 -4
  45. package/node_modules/core-js/client/library.min.js.map +1 -1
  46. package/node_modules/core-js/client/shim.js +1213 -1222
  47. package/node_modules/core-js/client/shim.min.js +4 -4
  48. package/node_modules/core-js/client/shim.min.js.map +1 -1
  49. package/node_modules/core-js/es7/observable.js +6 -6
  50. package/node_modules/core-js/fn/date/to-string.js +2 -2
  51. package/node_modules/core-js/fn/observable.js +6 -6
  52. package/node_modules/core-js/fn/symbol/has-instance.js +1 -1
  53. package/node_modules/core-js/library/es7/observable.js +6 -6
  54. package/node_modules/core-js/library/fn/date/to-string.js +2 -2
  55. package/node_modules/core-js/library/fn/observable.js +6 -6
  56. package/node_modules/core-js/library/fn/symbol/has-instance.js +1 -1
  57. package/node_modules/core-js/library/modules/_a-number-value.js +4 -4
  58. package/node_modules/core-js/library/modules/_array-reduce.js +27 -27
  59. package/node_modules/core-js/library/modules/_array-species-constructor.js +15 -15
  60. package/node_modules/core-js/library/modules/_collection-strong.js +0 -1
  61. package/node_modules/core-js/library/modules/_create-property.js +7 -7
  62. package/node_modules/core-js/library/modules/_date-to-primitive.js +8 -8
  63. package/node_modules/core-js/library/modules/_enum-bug-keys.js +3 -3
  64. package/node_modules/core-js/library/modules/_ie8-dom-define.js +2 -2
  65. package/node_modules/core-js/library/modules/_inherit-if-required.js +7 -7
  66. package/node_modules/core-js/library/modules/_object-create.js +41 -40
  67. package/node_modules/core-js/library/modules/_object-dps.js +12 -12
  68. package/node_modules/core-js/library/modules/_object-forced-pam.js +6 -6
  69. package/node_modules/core-js/library/modules/_object-gopd.js +15 -15
  70. package/node_modules/core-js/library/modules/_object-gopn.js +6 -6
  71. package/node_modules/core-js/library/modules/_object-gpo.js +12 -12
  72. package/node_modules/core-js/library/modules/_object-keys-internal.js +16 -16
  73. package/node_modules/core-js/library/modules/_object-keys.js +6 -6
  74. package/node_modules/core-js/library/modules/_shared-key.js +4 -4
  75. package/node_modules/core-js/library/modules/_strict-method.js +6 -6
  76. package/node_modules/core-js/library/modules/_string-ws.js +1 -1
  77. package/node_modules/core-js/library/modules/_typed-array.js +0 -2
  78. package/node_modules/core-js/library/modules/_typed-buffer.js +0 -2
  79. package/node_modules/core-js/library/modules/_wks-define.js +8 -8
  80. package/node_modules/core-js/library/modules/es6.array.every.js +9 -9
  81. package/node_modules/core-js/library/modules/es6.array.for-each.js +10 -10
  82. package/node_modules/core-js/library/modules/es6.array.index-of.js +14 -14
  83. package/node_modules/core-js/library/modules/es6.array.is-array.js +3 -3
  84. package/node_modules/core-js/library/modules/es6.array.join.js +11 -11
  85. package/node_modules/core-js/library/modules/es6.array.last-index-of.js +21 -21
  86. package/node_modules/core-js/library/modules/es6.array.map.js +9 -9
  87. package/node_modules/core-js/library/modules/es6.array.reduce-right.js +9 -9
  88. package/node_modules/core-js/library/modules/es6.array.reduce.js +9 -9
  89. package/node_modules/core-js/library/modules/es6.array.slice.js +27 -27
  90. package/node_modules/core-js/library/modules/es6.array.some.js +9 -9
  91. package/node_modules/core-js/library/modules/es6.array.sort.js +22 -22
  92. package/node_modules/core-js/library/modules/es6.date.now.js +3 -3
  93. package/node_modules/core-js/library/modules/es6.date.to-iso-string.js +27 -27
  94. package/node_modules/core-js/library/modules/es6.function.bind.js +3 -3
  95. package/node_modules/core-js/library/modules/es6.number.to-fixed.js +112 -113
  96. package/node_modules/core-js/library/modules/es6.number.to-precision.js +17 -17
  97. package/node_modules/core-js/library/modules/es6.object.create.js +2 -2
  98. package/node_modules/core-js/library/modules/es6.object.define-properties.js +2 -2
  99. package/node_modules/core-js/library/modules/es6.object.define-property.js +2 -2
  100. package/node_modules/core-js/library/modules/es6.parse-float.js +3 -3
  101. package/node_modules/core-js/library/modules/es6.parse-int.js +3 -3
  102. package/node_modules/core-js/library/modules/es6.promise.js +0 -2
  103. package/node_modules/core-js/library/modules/es6.reflect.apply.js +9 -4
  104. package/node_modules/core-js/library/modules/es6.reflect.construct.js +18 -10
  105. package/node_modules/core-js/library/modules/es6.typed.array-buffer.js +0 -1
  106. package/node_modules/core-js/library/modules/es6.weak-map.js +0 -1
  107. package/node_modules/core-js/library/modules/es7.asap.js +11 -11
  108. package/node_modules/core-js/library/modules/es7.object.define-getter.js +11 -11
  109. package/node_modules/core-js/library/modules/es7.object.define-setter.js +11 -11
  110. package/node_modules/core-js/library/modules/es7.object.enumerable-entries.js +12 -0
  111. package/node_modules/core-js/library/modules/es7.object.enumerable-keys.js +12 -0
  112. package/node_modules/core-js/library/modules/es7.object.enumerable-values.js +12 -0
  113. package/node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js +1 -1
  114. package/node_modules/core-js/library/modules/es7.object.lookup-getter.js +17 -17
  115. package/node_modules/core-js/library/modules/es7.object.lookup-setter.js +17 -17
  116. package/node_modules/core-js/library/modules/es7.observable.js +198 -198
  117. package/node_modules/core-js/library/modules/es7.string.match-all.js +29 -29
  118. package/node_modules/core-js/library/stage/pre.js +9 -9
  119. package/node_modules/core-js/modules/_a-number-value.js +4 -4
  120. package/node_modules/core-js/modules/_array-reduce.js +27 -27
  121. package/node_modules/core-js/modules/_array-species-constructor.js +15 -15
  122. package/node_modules/core-js/modules/_collection-strong.js +0 -1
  123. package/node_modules/core-js/modules/_create-property.js +7 -7
  124. package/node_modules/core-js/modules/_date-to-primitive.js +8 -8
  125. package/node_modules/core-js/modules/_enum-bug-keys.js +3 -3
  126. package/node_modules/core-js/modules/_ie8-dom-define.js +2 -2
  127. package/node_modules/core-js/modules/_inherit-if-required.js +7 -7
  128. package/node_modules/core-js/modules/_object-create.js +41 -40
  129. package/node_modules/core-js/modules/_object-dps.js +12 -12
  130. package/node_modules/core-js/modules/_object-forced-pam.js +6 -6
  131. package/node_modules/core-js/modules/_object-gopd.js +15 -15
  132. package/node_modules/core-js/modules/_object-gopn.js +6 -6
  133. package/node_modules/core-js/modules/_object-gpo.js +12 -12
  134. package/node_modules/core-js/modules/_object-keys-internal.js +16 -16
  135. package/node_modules/core-js/modules/_object-keys.js +6 -6
  136. package/node_modules/core-js/modules/_shared-key.js +4 -4
  137. package/node_modules/core-js/modules/_strict-method.js +6 -6
  138. package/node_modules/core-js/modules/_string-ws.js +1 -1
  139. package/node_modules/core-js/modules/_typed-array.js +0 -2
  140. package/node_modules/core-js/modules/_typed-buffer.js +0 -2
  141. package/node_modules/core-js/modules/_wks-define.js +8 -8
  142. package/node_modules/core-js/modules/es6.array.every.js +9 -9
  143. package/node_modules/core-js/modules/es6.array.for-each.js +10 -10
  144. package/node_modules/core-js/modules/es6.array.index-of.js +14 -14
  145. package/node_modules/core-js/modules/es6.array.is-array.js +3 -3
  146. package/node_modules/core-js/modules/es6.array.join.js +11 -11
  147. package/node_modules/core-js/modules/es6.array.last-index-of.js +21 -21
  148. package/node_modules/core-js/modules/es6.array.map.js +9 -9
  149. package/node_modules/core-js/modules/es6.array.reduce-right.js +9 -9
  150. package/node_modules/core-js/modules/es6.array.reduce.js +9 -9
  151. package/node_modules/core-js/modules/es6.array.slice.js +27 -27
  152. package/node_modules/core-js/modules/es6.array.some.js +9 -9
  153. package/node_modules/core-js/modules/es6.array.sort.js +22 -22
  154. package/node_modules/core-js/modules/es6.date.now.js +3 -3
  155. package/node_modules/core-js/modules/es6.date.to-iso-string.js +27 -27
  156. package/node_modules/core-js/modules/es6.date.to-primitive.js +3 -3
  157. package/node_modules/core-js/modules/es6.function.bind.js +3 -3
  158. package/node_modules/core-js/modules/es6.number.to-fixed.js +112 -113
  159. package/node_modules/core-js/modules/es6.number.to-precision.js +17 -17
  160. package/node_modules/core-js/modules/es6.object.create.js +2 -2
  161. package/node_modules/core-js/modules/es6.object.define-properties.js +2 -2
  162. package/node_modules/core-js/modules/es6.object.define-property.js +2 -2
  163. package/node_modules/core-js/modules/es6.parse-float.js +3 -3
  164. package/node_modules/core-js/modules/es6.parse-int.js +3 -3
  165. package/node_modules/core-js/modules/es6.promise.js +0 -2
  166. package/node_modules/core-js/modules/es6.reflect.apply.js +9 -4
  167. package/node_modules/core-js/modules/es6.reflect.construct.js +18 -10
  168. package/node_modules/core-js/modules/es6.regexp.to-string.js +24 -24
  169. package/node_modules/core-js/modules/es6.typed.array-buffer.js +0 -1
  170. package/node_modules/core-js/modules/es6.weak-map.js +0 -1
  171. package/node_modules/core-js/modules/es7.asap.js +11 -11
  172. package/node_modules/core-js/modules/es7.object.define-getter.js +11 -11
  173. package/node_modules/core-js/modules/es7.object.define-setter.js +11 -11
  174. package/node_modules/core-js/modules/es7.object.enumerable-entries.js +12 -0
  175. package/node_modules/core-js/modules/es7.object.enumerable-keys.js +12 -0
  176. package/node_modules/core-js/modules/es7.object.enumerable-values.js +12 -0
  177. package/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js +1 -1
  178. package/node_modules/core-js/modules/es7.object.lookup-getter.js +17 -17
  179. package/node_modules/core-js/modules/es7.object.lookup-setter.js +17 -17
  180. package/node_modules/core-js/modules/es7.observable.js +198 -198
  181. package/node_modules/core-js/modules/es7.string.match-all.js +29 -29
  182. package/node_modules/core-js/package.json +15 -15
  183. package/node_modules/core-js/stage/pre.js +9 -9
  184. package/node_modules/debug/package.json +1 -1
  185. package/node_modules/decamelize/package.json +1 -1
  186. package/node_modules/default-require-extensions/package.json +1 -2
  187. package/node_modules/error-ex/package.json +1 -1
  188. package/node_modules/escape-string-regexp/package.json +1 -1
  189. package/node_modules/find-up/package.json +1 -1
  190. package/node_modules/get-caller-file/.travis.yml +20 -0
  191. package/node_modules/get-caller-file/README.md +4 -0
  192. package/node_modules/get-caller-file/appveyor.yml +35 -0
  193. package/node_modules/get-caller-file/fixtures/bar.js +6 -0
  194. package/node_modules/get-caller-file/fixtures/foo.js +6 -0
  195. package/node_modules/get-caller-file/index.js +20 -0
  196. package/node_modules/get-caller-file/package.json +78 -0
  197. package/node_modules/get-caller-file/test.js +21 -0
  198. package/node_modules/graceful-fs/package.json +1 -1
  199. package/node_modules/has-ansi/package.json +1 -1
  200. package/node_modules/hosted-git-info/package.json +1 -1
  201. package/node_modules/inherits/package.json +1 -1
  202. package/node_modules/invert-kv/package.json +1 -1
  203. package/node_modules/is-arrayish/package.json +1 -1
  204. package/node_modules/is-builtin-module/package.json +1 -1
  205. package/node_modules/is-fullwidth-code-point/package.json +1 -1
  206. package/node_modules/is-utf8/package.json +1 -1
  207. package/node_modules/isarray/package.json +1 -1
  208. package/node_modules/istanbul-lib-instrument/CHANGELOG.md +11 -0
  209. package/node_modules/istanbul-lib-instrument/README.md +24 -0
  210. package/node_modules/istanbul-lib-instrument/package.json +18 -16
  211. package/node_modules/lcid/package.json +1 -1
  212. package/node_modules/load-json-file/package.json +1 -1
  213. package/node_modules/lodash.assign/package.json +1 -1
  214. package/node_modules/lodash.keys/package.json +1 -1
  215. package/node_modules/lodash.rest/package.json +1 -1
  216. package/node_modules/ms/package.json +1 -1
  217. package/node_modules/normalize-package-data/package.json +1 -1
  218. package/node_modules/number-is-nan/package.json +1 -1
  219. package/node_modules/os-locale/package.json +1 -1
  220. package/node_modules/parse-json/package.json +1 -1
  221. package/node_modules/path-exists/package.json +1 -1
  222. package/node_modules/path-type/package.json +1 -1
  223. package/node_modules/pify/package.json +1 -1
  224. package/node_modules/pinkie/package.json +1 -1
  225. package/node_modules/pinkie-promise/package.json +1 -1
  226. package/node_modules/read-pkg/package.json +1 -1
  227. package/node_modules/read-pkg-up/package.json +1 -1
  228. package/node_modules/require-directory/package.json +1 -1
  229. package/node_modules/require-main-filename/package.json +1 -1
  230. package/node_modules/rimraf/package.json +15 -15
  231. package/node_modules/rimraf/rimraf.js +2 -2
  232. package/node_modules/set-blocking/package.json +1 -1
  233. package/node_modules/spdx-correct/package.json +1 -1
  234. package/node_modules/spdx-exceptions/package.json +1 -1
  235. package/node_modules/spdx-expression-parse/package.json +1 -1
  236. package/node_modules/spdx-license-ids/package.json +1 -1
  237. package/node_modules/string-width/package.json +1 -1
  238. package/node_modules/strip-ansi/package.json +1 -1
  239. package/node_modules/strip-bom/package.json +1 -1
  240. package/node_modules/supports-color/package.json +1 -1
  241. package/node_modules/validate-npm-package-license/package.json +1 -1
  242. package/node_modules/which-module/package.json +1 -1
  243. package/node_modules/wrap-ansi/package.json +1 -1
  244. package/node_modules/y18n/package.json +1 -1
  245. package/node_modules/yargs/CHANGELOG.md +14 -0
  246. package/node_modules/yargs/lib/command.js +2 -7
  247. package/node_modules/yargs/lib/validation.js +8 -2
  248. package/node_modules/yargs/node_modules/cliui/package.json +1 -1
  249. package/node_modules/yargs/node_modules/window-size/package.json +1 -1
  250. package/node_modules/yargs/package.json +18 -17
  251. package/node_modules/yargs/yargs.js +9 -7
  252. package/node_modules/yargs-parser/CHANGELOG.md +10 -0
  253. package/node_modules/yargs-parser/index.js +9 -4
  254. package/node_modules/yargs-parser/node_modules/camelcase/index.js +1 -1
  255. package/node_modules/yargs-parser/node_modules/camelcase/package.json +18 -18
  256. package/node_modules/yargs-parser/package.json +24 -19
  257. package/package.json +9 -8
  258. package/node_modules/babel-generator/lib/position.js +0 -42
  259. package/node_modules/istanbul-lib-hook/node_modules/append-transform/index.js +0 -93
  260. package/node_modules/istanbul-lib-hook/node_modules/append-transform/license +0 -21
  261. package/node_modules/istanbul-lib-hook/node_modules/append-transform/package.json +0 -99
  262. package/node_modules/istanbul-lib-hook/node_modules/append-transform/readme.md +0 -72
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ <a name="7.1.0"></a>
6
+ # [7.1.0](https://github.com/bcoe/nyc/compare/v7.0.0...v7.1.0) (2016-07-24)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * make --all flag work with files with extensions other than .js ([#326](https://github.com/bcoe/nyc/issues/326)) ([d0a8674](https://github.com/bcoe/nyc/commit/d0a8674))
12
+ * work around for Windows path issue nodejs/node[#6624](https://github.com/bcoe/nyc/issues/6624) ([6b1fed0](https://github.com/bcoe/nyc/commit/6b1fed0))
13
+
14
+
15
+ ### Features
16
+
17
+ * nyc no longer tries to run arguments passed to the instrumented bin ([#322](https://github.com/bcoe/nyc/issues/322)) ([e0a8c0b](https://github.com/bcoe/nyc/commit/e0a8c0b))
18
+ * use istanbul-lib-hook to wrap require and support vm hooks ([#308](https://github.com/bcoe/nyc/issues/308)) ([2b64cf8](https://github.com/bcoe/nyc/commit/2b64cf8))
19
+
20
+
21
+
5
22
  <a name="7.0.0"></a>
6
23
  # [7.0.0](https://github.com/bcoe/nyc/compare/v6.6.1...v7.0.0) (2016-07-09)
7
24
 
package/README.md CHANGED
@@ -222,19 +222,40 @@ modules should be required in the subprocess collecting coverage:
222
222
  ## Caching
223
223
 
224
224
  You can run `nyc` with the optional `--cache` flag, to prevent it from
225
- instrumenting the same files multiple times. This can signficantly
225
+ instrumenting the same files multiple times. This can significantly
226
226
  improve runtime performance.
227
227
 
228
228
  ## Configuring `nyc`
229
229
 
230
- Any configuration options that can be set via the command line
231
- can also be specified in the `nyc` stanza of your package.json:
230
+ Any configuration options that can be set via the command line can also be specified in the `nyc` stanza of your package.json (these will not affect `nyc` subcommands):
232
231
 
233
232
  ```json
234
233
  {
234
+ "description": "These are just examples for demonstration, nothing prescriptive",
235
235
  "nyc": {
236
236
  "lines": 99,
237
- "check-coverage": false,
237
+ "statements": 99,
238
+ "functions": 99,
239
+ "branches": 99,
240
+ "include": [
241
+ "src/**/*.js"
242
+ ],
243
+ "exclude": [
244
+ "src/**/*.spec.js"
245
+ ],
246
+ "reporter": [
247
+ "lcov",
248
+ "text-summary"
249
+ ],
250
+ "require": [
251
+ "./test/helpers/some-helper.js"
252
+ ],
253
+ "extension": [
254
+ ".jsx"
255
+ ],
256
+ "cache": true,
257
+ "all": true,
258
+ "check-coverage": true,
238
259
  "report-dir": "./alternative"
239
260
  }
240
261
  }
package/bin/nyc.js CHANGED
@@ -7,145 +7,14 @@ try {
7
7
  } catch (e) {
8
8
  NYC = require('../index.js')
9
9
  }
10
+ var processArgs = require('../lib/process-args')
10
11
 
11
12
  var sw = require('spawn-wrap')
12
13
  var wrapper = require.resolve('./wrap.js')
14
+ var Yargs = require('yargs/yargs')
13
15
 
14
- var yargs = require('yargs/yargs')(process.argv.slice(2))
15
- .usage('$0 [command] [options]\n\nrun your tests with the nyc bin to instrument them with coverage')
16
- .command('report', 'run coverage report for .nyc_output', function (yargs) {
17
- return yargs
18
- .usage('$0 report [options]')
19
- .option('reporter', {
20
- alias: 'r',
21
- describe: 'coverage reporter(s) to use',
22
- default: 'text'
23
- })
24
- .option('report-dir', {
25
- describe: 'directory to output coverage reports in',
26
- default: 'coverage'
27
- })
28
- .option('temp-directory', {
29
- describe: 'directory from which coverage JSON files are read',
30
- default: './.nyc_output'
31
- })
32
- .example('$0 report --reporter=lcov', 'output an HTML lcov report to ./coverage')
33
- })
34
- .command('check-coverage', 'check whether coverage is within thresholds provided', function (yargs) {
35
- return yargs
36
- .usage('$0 check-coverage [options]')
37
- .option('branches', {
38
- default: 0,
39
- description: 'what % of branches must be covered?'
40
- })
41
- .option('functions', {
42
- default: 0,
43
- description: 'what % of functions must be covered?'
44
- })
45
- .option('lines', {
46
- default: 90,
47
- description: 'what % of lines must be covered?'
48
- })
49
- .option('statements', {
50
- default: 0,
51
- description: 'what % of statements must be covered?'
52
- })
53
- .example('$0 check-coverage --lines 95', "check whether the JSON in nyc's output folder meets the thresholds provided")
54
- })
55
- .command(require('../lib/commands/instrument'))
56
- .option('reporter', {
57
- alias: 'r',
58
- describe: 'coverage reporter(s) to use',
59
- default: 'text'
60
- })
61
- .option('report-dir', {
62
- describe: 'directory to output coverage reports in',
63
- default: 'coverage'
64
- })
65
- .option('silent', {
66
- alias: 's',
67
- default: false,
68
- type: 'boolean',
69
- describe: "don't output a report after tests finish running"
70
- })
71
- .option('all', {
72
- alias: 'a',
73
- default: false,
74
- type: 'boolean',
75
- describe: 'whether or not to instrument all files of the project (not just the ones touched by your test suite)'
76
- })
77
- .option('exclude', {
78
- alias: 'x',
79
- default: [],
80
- describe: 'a list of specific files and directories that should be excluded from coverage, glob patterns are supported, node_modules is always excluded'
81
- })
82
- .option('include', {
83
- alias: 'n',
84
- default: [],
85
- describe: 'a list of specific files that should be covered, glob patterns are supported'
86
- })
87
- .option('require', {
88
- alias: 'i',
89
- default: [],
90
- describe: 'a list of additional modules that nyc should attempt to require in its subprocess, e.g., babel-register, babel-polyfill.'
91
- })
92
- .option('cache', {
93
- alias: 'c',
94
- default: false,
95
- type: 'boolean',
96
- describe: 'cache instrumentation results for improved performance'
97
- })
98
- .option('extension', {
99
- alias: 'e',
100
- default: [],
101
- describe: 'a list of extensions that nyc should handle in addition to .js'
102
- })
103
- .option('check-coverage', {
104
- type: 'boolean',
105
- default: false,
106
- describe: 'check whether coverage is within thresholds provided'
107
- })
108
- .option('branches', {
109
- default: 0,
110
- description: 'what % of branches must be covered?'
111
- })
112
- .option('functions', {
113
- default: 0,
114
- description: 'what % of functions must be covered?'
115
- })
116
- .option('lines', {
117
- default: 90,
118
- description: 'what % of lines must be covered?'
119
- })
120
- .option('statements', {
121
- default: 0,
122
- description: 'what % of statements must be covered?'
123
- })
124
- .option('source-map', {
125
- default: true,
126
- type: 'boolean',
127
- description: 'should nyc detect and handle source maps?'
128
- })
129
- .option('instrument', {
130
- default: true,
131
- type: 'boolean',
132
- description: 'should nyc handle instrumentation?'
133
- })
134
- .option('hook-run-in-context', {
135
- default: true,
136
- type: 'boolean',
137
- description: 'should nyc wrap vm.runInThisContext?'
138
- })
139
- .help('h')
140
- .alias('h', 'help')
141
- .version()
142
- .pkgConf('nyc', process.cwd())
143
- .example('$0 npm test', 'instrument your tests with coverage')
144
- .example('$0 --require babel-core/register npm test', 'instrument your tests with coverage and babel')
145
- .example('$0 report --reporter=text-lcov', 'output lcov report after running your tests')
146
- .epilog('visit https://git.io/voHar for list of available reporters')
147
-
148
- var argv = yargs.argv
16
+ var yargs = decorateYargs(buildYargs())
17
+ var argv = yargs.parse(processArgs.hideInstrumenteeArgs())
149
18
 
150
19
  if (argv._[0] === 'report') {
151
20
  // run a report.
@@ -155,7 +24,7 @@ if (argv._[0] === 'report') {
155
24
  } else if (argv._[0] === 'check-coverage') {
156
25
  checkCoverage(argv)
157
26
  } else if (argv._[0] === 'instrument') {
158
- // noop, let the command handler do its thing.
27
+ // look in lib/commands/instrument.js for logic.
159
28
  } else if (argv._.length) {
160
29
  // wrap subprocesses and execute argv[1]
161
30
  argv.require = arrify(argv.require)
@@ -206,7 +75,11 @@ if (argv._[0] === 'report') {
206
75
  // set process.exitCode. Keep track so that both children are run, but
207
76
  // a non-zero exit codes in either one leads to an overall non-zero exit code.
208
77
  process.exitCode = 0
209
- foreground(nyc.mungeArgs(argv), function (done) {
78
+ foreground(processArgs.hideInstrumenterArgs(
79
+ // use the same argv descrption, but don't exit
80
+ // for flags like --help.
81
+ buildYargs().parse(process.argv.slice(2))
82
+ ), function (done) {
210
83
  var mainChildExitCode = process.exitCode
211
84
 
212
85
  if (argv.checkCoverage) {
@@ -244,3 +117,148 @@ function checkCoverage (argv, cb) {
244
117
  statements: argv.statements
245
118
  })
246
119
  }
120
+
121
+ function buildYargs () {
122
+ return Yargs([])
123
+ .usage('$0 [command] [options]\n\nrun your tests with the nyc bin to instrument them with coverage')
124
+ .command('report', 'run coverage report for .nyc_output', function (yargs) {
125
+ return yargs
126
+ .usage('$0 report [options]')
127
+ .option('reporter', {
128
+ alias: 'r',
129
+ describe: 'coverage reporter(s) to use',
130
+ default: 'text'
131
+ })
132
+ .option('report-dir', {
133
+ describe: 'directory to output coverage reports in',
134
+ default: 'coverage'
135
+ })
136
+ .option('temp-directory', {
137
+ describe: 'directory from which coverage JSON files are read',
138
+ default: './.nyc_output'
139
+ })
140
+ .example('$0 report --reporter=lcov', 'output an HTML lcov report to ./coverage')
141
+ })
142
+ .command('check-coverage', 'check whether coverage is within thresholds provided', function (yargs) {
143
+ return yargs
144
+ .usage('$0 check-coverage [options]')
145
+ .option('branches', {
146
+ default: 0,
147
+ description: 'what % of branches must be covered?'
148
+ })
149
+ .option('functions', {
150
+ default: 0,
151
+ description: 'what % of functions must be covered?'
152
+ })
153
+ .option('lines', {
154
+ default: 90,
155
+ description: 'what % of lines must be covered?'
156
+ })
157
+ .option('statements', {
158
+ default: 0,
159
+ description: 'what % of statements must be covered?'
160
+ })
161
+ .example('$0 check-coverage --lines 95', "check whether the JSON in nyc's output folder meets the thresholds provided")
162
+ })
163
+ .option('reporter', {
164
+ alias: 'r',
165
+ describe: 'coverage reporter(s) to use',
166
+ default: 'text'
167
+ })
168
+ .option('report-dir', {
169
+ describe: 'directory to output coverage reports in',
170
+ default: 'coverage'
171
+ })
172
+ .option('silent', {
173
+ alias: 's',
174
+ default: false,
175
+ type: 'boolean',
176
+ describe: "don't output a report after tests finish running"
177
+ })
178
+ .option('all', {
179
+ alias: 'a',
180
+ default: false,
181
+ type: 'boolean',
182
+ describe: 'whether or not to instrument all files of the project (not just the ones touched by your test suite)'
183
+ })
184
+ .option('exclude', {
185
+ alias: 'x',
186
+ default: [],
187
+ describe: 'a list of specific files and directories that should be excluded from coverage, glob patterns are supported, node_modules is always excluded'
188
+ })
189
+ .option('include', {
190
+ alias: 'n',
191
+ default: [],
192
+ describe: 'a list of specific files that should be covered, glob patterns are supported'
193
+ })
194
+ .option('require', {
195
+ alias: 'i',
196
+ default: [],
197
+ describe: 'a list of additional modules that nyc should attempt to require in its subprocess, e.g., babel-register, babel-polyfill.'
198
+ })
199
+ .option('cache', {
200
+ alias: 'c',
201
+ default: false,
202
+ type: 'boolean',
203
+ describe: 'cache instrumentation results for improved performance'
204
+ })
205
+ .option('extension', {
206
+ alias: 'e',
207
+ default: [],
208
+ describe: 'a list of extensions that nyc should handle in addition to .js'
209
+ })
210
+ .option('check-coverage', {
211
+ type: 'boolean',
212
+ default: false,
213
+ describe: 'check whether coverage is within thresholds provided'
214
+ })
215
+ .option('branches', {
216
+ default: 0,
217
+ description: 'what % of branches must be covered?'
218
+ })
219
+ .option('functions', {
220
+ default: 0,
221
+ description: 'what % of functions must be covered?'
222
+ })
223
+ .option('lines', {
224
+ default: 90,
225
+ description: 'what % of lines must be covered?'
226
+ })
227
+ .option('statements', {
228
+ default: 0,
229
+ description: 'what % of statements must be covered?'
230
+ })
231
+ .option('source-map', {
232
+ default: true,
233
+ type: 'boolean',
234
+ description: 'should nyc detect and handle source maps?'
235
+ })
236
+ .option('instrument', {
237
+ default: true,
238
+ type: 'boolean',
239
+ description: 'should nyc handle instrumentation?'
240
+ })
241
+ .option('hook-run-in-context', {
242
+ default: true,
243
+ type: 'boolean',
244
+ description: 'should nyc wrap vm.runInThisContext?'
245
+ })
246
+ .pkgConf('nyc', process.cwd())
247
+ .example('$0 npm test', 'instrument your tests with coverage')
248
+ .example('$0 --require babel-core/register npm test', 'instrument your tests with coverage and babel')
249
+ .example('$0 report --reporter=text-lcov', 'output lcov report after running your tests')
250
+ .epilog('visit https://git.io/voHar for list of available reporters')
251
+ .boolean('help')
252
+ .boolean('h')
253
+ .boolean('version')
254
+ }
255
+
256
+ // decorate yargs with all the actions
257
+ // that would make it exit: help, version, command.
258
+ function decorateYargs (yargs) {
259
+ return yargs
260
+ .help('h')
261
+ .alias('h', 'help')
262
+ .version()
263
+ .command(require('../lib/commands/instrument'))
264
+ }
package/index.js CHANGED
@@ -143,13 +143,17 @@ NYC.prototype.addFile = function (filename) {
143
143
  }
144
144
  }
145
145
 
146
- NYC.prototype._readTranspiledSource = function (path) {
146
+ NYC.prototype._readTranspiledSource = function (filePath) {
147
147
  var source = null
148
- Module._extensions['.js']({
148
+ var ext = path.extname(filePath)
149
+ if (typeof Module._extensions[ext] === 'undefined') {
150
+ ext = '.js'
151
+ }
152
+ Module._extensions[ext]({
149
153
  _compile: function (content, filename) {
150
154
  source = content
151
155
  }
152
- }, path)
156
+ }, filePath)
153
157
  return source
154
158
  }
155
159
 
@@ -287,6 +291,8 @@ NYC.prototype._handleSourceMap = function (cacheDir, code, hash, filename) {
287
291
 
288
292
  NYC.prototype._handleJs = function (code, filename) {
289
293
  var relFile = path.relative(this.cwd, filename)
294
+ // ensure the path has correct casing (see istanbuljs/nyc#269 and nodejs/node#6624)
295
+ filename = path.resolve(this.cwd, relFile)
290
296
  return this._maybeInstrumentSource(code, filename, relFile) || code
291
297
  }
292
298
 
@@ -473,10 +479,4 @@ NYC.prototype.tempDirectory = function () {
473
479
  return path.resolve(this.cwd, './', this._tempDirectory)
474
480
  }
475
481
 
476
- NYC.prototype.mungeArgs = function (yargv) {
477
- var argv = process.argv.slice(1)
478
- argv = argv.slice(argv.indexOf(yargv._[0]))
479
- return argv
480
- }
481
-
482
482
  module.exports = NYC
@@ -0,0 +1,33 @@
1
+ var parser = require('yargs-parser')
2
+ var commands = [
3
+ 'report',
4
+ 'check-coverage',
5
+ 'instrument'
6
+ ]
7
+
8
+ module.exports = {
9
+ // don't pass arguments that are meant
10
+ // for nyc to the bin being instrumented.
11
+ hideInstrumenterArgs: function (yargv) {
12
+ var argv = process.argv.slice(1)
13
+ argv = argv.slice(argv.indexOf(yargv._[0]))
14
+ return argv
15
+ },
16
+ // don't pass arguments for the bin being
17
+ // instrumented to nyc.
18
+ hideInstrumenteeArgs: function () {
19
+ var argv = process.argv.slice(2)
20
+ var yargv = parser(argv)
21
+ if (!yargv._.length) return argv
22
+ for (var i = 0, command; (command = yargv._[i]) !== undefined; i++) {
23
+ if (~commands.indexOf(command)) return argv
24
+ }
25
+
26
+ // drop all the arguments after the bin being
27
+ // instrumented by nyc.
28
+ argv = argv.slice(0, argv.indexOf(yargv._[0]))
29
+ argv.push(yargv._[0])
30
+
31
+ return argv
32
+ }
33
+ }
@@ -29,7 +29,7 @@
29
29
  "/has-ansi",
30
30
  "/strip-ansi"
31
31
  ],
32
- "_resolved": "http://54.88.212.27:8080/a/ansi-regex/_attachments/ansi-regex-2.0.0.tgz",
32
+ "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
33
33
  "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
34
34
  "_shrinkwrap": null,
35
35
  "_spec": "ansi-regex@^2.0.0",
@@ -32,7 +32,7 @@
32
32
  "_requiredBy": [
33
33
  "/chalk"
34
34
  ],
35
- "_resolved": "http://54.88.212.27:8080/a/ansi-styles/_attachments/ansi-styles-2.2.1.tgz",
35
+ "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
36
36
  "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
37
37
  "_shrinkwrap": null,
38
38
  "_spec": "ansi-styles@^2.2.1",
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var js = require('default-require-extensions/js');
4
-
5
3
  module.exports = appendTransform;
6
4
 
7
5
  var count = 0;
@@ -16,7 +14,7 @@ function appendTransform(transform, ext, extensions) {
16
14
  var forwardGet;
17
15
  var forwardSet;
18
16
 
19
- var descriptor = Object.getOwnPropertyDescriptor(extensions, ext) || {value: js, configurable: true};
17
+ var descriptor = Object.getOwnPropertyDescriptor(extensions, ext) || {value: undefined, configurable: true};
20
18
 
21
19
  if (
22
20
  ((descriptor.get || descriptor.set) && !(descriptor.get && descriptor.set)) ||
@@ -44,7 +42,14 @@ function appendTransform(transform, ext, extensions) {
44
42
  };
45
43
  }
46
44
 
45
+ function hookWasUndefined(module, filename) {
46
+ throw new Error('Can not load ' + filename + '. No require extension has been installed for ' + ext + ' files');
47
+ }
48
+
47
49
  function wrapCustomHook(hook) {
50
+ if (hook === undefined) {
51
+ return hookWasUndefined;
52
+ }
48
53
  return function (module, filename) {
49
54
  // We wrap every added extension, but we only apply the transform to the one on top of the stack
50
55
  if (!module[key]) {
@@ -1,38 +1,38 @@
1
1
  {
2
2
  "_args": [
3
3
  [
4
- "append-transform@*",
5
- "/Users/benjamincoe/bcoe/nyc"
4
+ "append-transform@^0.3.0",
5
+ "/Users/benjamincoe/bcoe/nyc/node_modules/istanbul-lib-hook"
6
6
  ]
7
7
  ],
8
- "_from": "append-transform@*",
9
- "_id": "append-transform@0.4.0",
8
+ "_from": "append-transform@>=0.3.0 <0.4.0",
9
+ "_id": "append-transform@0.3.0",
10
10
  "_inCache": true,
11
11
  "_installable": true,
12
12
  "_location": "/append-transform",
13
- "_nodeVersion": "0.10.40",
13
+ "_nodeVersion": "5.4.1",
14
14
  "_npmUser": {
15
15
  "email": "james@talmage.io",
16
16
  "name": "jamestalmage"
17
17
  },
18
- "_npmVersion": "3.4.0",
18
+ "_npmVersion": "3.5.3",
19
19
  "_phantomChildren": {},
20
20
  "_requested": {
21
21
  "name": "append-transform",
22
- "raw": "append-transform@*",
23
- "rawSpec": "*",
22
+ "raw": "append-transform@^0.3.0",
23
+ "rawSpec": "^0.3.0",
24
24
  "scope": null,
25
- "spec": "*",
25
+ "spec": ">=0.3.0 <0.4.0",
26
26
  "type": "range"
27
27
  },
28
28
  "_requiredBy": [
29
- "/"
29
+ "/istanbul-lib-hook"
30
30
  ],
31
- "_resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
32
- "_shasum": "d76ebf8ca94d276e247a36bad44a4b74ab611991",
31
+ "_resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.3.0.tgz",
32
+ "_shasum": "d6933ce4a85f09445d9ccc4cc119051b7381a813",
33
33
  "_shrinkwrap": null,
34
- "_spec": "append-transform@*",
35
- "_where": "/Users/benjamincoe/bcoe/nyc",
34
+ "_spec": "append-transform@^0.3.0",
35
+ "_where": "/Users/benjamincoe/bcoe/nyc/node_modules/istanbul-lib-hook",
36
36
  "author": {
37
37
  "email": "james@talmage.io",
38
38
  "name": "James Talmage",
@@ -41,9 +41,7 @@
41
41
  "bugs": {
42
42
  "url": "https://github.com/jamestalmage/append-transform/issues"
43
43
  },
44
- "dependencies": {
45
- "default-require-extensions": "^1.0.0"
46
- },
44
+ "dependencies": {},
47
45
  "description": "Install a transform to `require.extensions` that always runs last, even if additional extensions are added later.",
48
46
  "devDependencies": {
49
47
  "ava": "^0.7.0",
@@ -54,8 +52,8 @@
54
52
  },
55
53
  "directories": {},
56
54
  "dist": {
57
- "shasum": "d76ebf8ca94d276e247a36bad44a4b74ab611991",
58
- "tarball": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz"
55
+ "shasum": "d6933ce4a85f09445d9ccc4cc119051b7381a813",
56
+ "tarball": "https://registry.npmjs.org/append-transform/-/append-transform-0.3.0.tgz"
59
57
  },
60
58
  "engines": {
61
59
  "node": ">=0.10.0"
@@ -63,7 +61,7 @@
63
61
  "files": [
64
62
  "index.js"
65
63
  ],
66
- "gitHead": "0b737d26fdebbdfb8ed4be096535099ed7da9ab1",
64
+ "gitHead": "66aed1b6ee4634e96c08478c79b428e25e97928a",
67
65
  "homepage": "https://github.com/jamestalmage/append-transform#readme",
68
66
  "keywords": [
69
67
  "append",
@@ -92,7 +90,7 @@
92
90
  "scripts": {
93
91
  "test": "xo && nyc --reporter=lcov --reporter=text ava"
94
92
  },
95
- "version": "0.4.0",
93
+ "version": "0.3.0",
96
94
  "xo": {
97
95
  "ignores": [
98
96
  "test.js"
@@ -29,7 +29,7 @@
29
29
  "/handlebars",
30
30
  "/istanbul-lib-report"
31
31
  ],
32
- "_resolved": "http://54.88.212.27:8080/a/async/_attachments/async-1.5.2.tgz",
32
+ "_resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
33
33
  "_shasum": "ec6a61ae56480c0c3cb241c95618e20892f9672a",
34
34
  "_shrinkwrap": null,
35
35
  "_spec": "async@^1.4.2",