       waitsForPromise ->
         helpers.exec('cat', [], stream: 'stdout', stdin: testContents).then (text) ->
           expect(text).toBe(testContents)
+  describe '::execNode', ->
+    it 'cries when no argument is passed', ->
+      expect ->
+        helpers.execNode()
+      .toThrow()
+    it 'works', ->
+      waitsForPromise ->
+        helpers.execNode(__dirname + '/fixtures/something.js').then (data) ->
+          expect(data).toBe('STDOUT')
+    it 'lets you choose streams', ->
+      waitsForPromise ->
+        helpers.execNode(__dirname + '/fixtures/something.js', [], {stream: 'stderr'}).then (data) ->
+          expect(data).toBe('STDERR')
+    it 'accepts stdin', ->
+      waitsForPromise ->
+        helpers.execNode(__dirname + '/fixtures/something.js', ['input'], {stream: 'stdout', stdin: 'Wow'}).then (data) ->
+          expect(data).toBe('STDOUTWow')
   describe '::execFilePath', ->
     it 'cries when no argument is passed', ->
-      gotError = false
-      try
+      expect ->
         helpers.execFilePath()
-      catch erro then gotError = true
-      expect(gotError).toBe(true)
+      .toThrow()
     it 'cries when no filepath is passed', ->
       gotError = false
       try

describe 'linter helpers', ->
  describe '::exec', ->
    it 'cries when no argument is passed', ->
      gotError = false
      try
        helpers.exec()
      catch erro then gotError = true
      expect(gotError).toBe(true)
    it 'works', ->
      waitsForPromise ->
        helpers.exec('cat', [testFile]).then (text) ->

          expect(text).toBe(testContents)
  describe '::parse', ->
    it 'cries when no argument is passed', ->
      expect ->
        helpers.parse()
      .toThrow()
    it "cries when data isn't string", ->
      expect ->
        helpers.parse([], '')
