   _diff '', x, y
 
 tdiff = (t, x, y, opts) ->
-  t.fail result if result = tapediff x, y, opts
+  if result = tapediff x, y, opts
+    t.fail result 
+  else
+    t.pass 'diff ok'
 
 test 'tapediff', (t) ->
   t.equal (tapediff null, null), null
-  t.equal (tapediff null, { foo: 3.1415, bar: 'bar', baz: 'baz' }), 'Mismatched : expected \'null\', actual \'[object Object]\'' 
-  t.equal (tapediff { foo: 3.1415, bar: 'bar', baz: 'baz' }, null), 'Mismatched : expected \'[object Object]\', actual \'null\''
+  t.equal (tapediff null, { foo: 3.1415, bar: 'bar', baz: 'baz' }), "Mismatched : expected 'null', actual '[object Object]'" 
+  t.equal (tapediff { foo: 3.1415, bar: 'bar', baz: 'baz' }, null), "Mismatched : expected '[object Object]', actual 'null'"
   t.equal (tapediff { foo: 3.1415, bar: 'bar', baz: 'baz' }, { foo: 3.1415, bar: 'bar', baz: 'baz' }), null
   t.equal (tapediff { foo: 3.1415, bar: 'bar', baz: Number.NaN }, { foo: 3.1415, bar: 'bar', baz: Number.NaN }), null
-  t.equal (tapediff { foo: 3.1415, bar: 'ba', baz: 'baz' }, { foo: 3.1415, bar: 'bar', baz: 'baz' }), 'Mismatched bar: expected \'ba\', actual \'bar\''
-  t.equal (tapediff { foo: 3.1415, bar: 'ba', baz: 'baz' }, { foo: 3.1415, bar: 'bar', baz: 'baz' }), 'Mismatched bar: expected \'ba\', actual \'bar\''
+  t.equal (tapediff { foo: 3.1415, bar: 'ba', baz: 'baz' }, { foo: 3.1415, bar: 'bar', baz: 'baz' }), "Mismatched bar: expected 'ba', actual 'bar'"
+  t.equal (tapediff { foo: 3.1415, bar: 'ba', baz: 'baz' }, { foo: 3.1415, bar: 'bar', baz: 'baz' }), "Mismatched bar: expected 'ba', actual 'bar'"
   t.equal (tapediff { qux: { foo: 3.1415, bar: 'bar', baz: 'baz' } }, { qux: { foo: 3.1415, bar: 'bar', baz: 'baz' } }), null
-  t.equal (tapediff { qux: { foo: 3.1415, bar: 'bar', baz: 'baz' } }, { qux: { foo: 3.1415, bar: 10, baz: 'baz' } }), 'Mismatched qux.bar: expected \'bar\', actual \'10\''
+  t.equal (tapediff { qux: { foo: 3.1415, bar: 'bar', baz: 'baz' } }, { qux: { foo: 3.1415, bar: 10, baz: 'baz' } }), "Mismatched qux.bar: expected 'bar', actual '10'"
   t.equal (tapediff { qux: { foo: 3.1415, bar: 'bar', baz: 'baz' } }, { qux: { foo: 3.1415, bar: 10, baz: 'baz' } }, { include: ['qux.foo', 'qux.baz'] } ), null
   t.equal (tapediff { qux: { foo: 3.1415, bar: 'bar', baz: 'baz' } }, { qux: { foo: 3.1415, bar: 10, baz: 'baz' } }, { exclude: ['qux.bar'] } ), null
   t.end()

# Pass -jar /path/to/h2o.jar to override the default jar
JAR_PATH = if argv.jar then path.resolve argv.jar else path.resolve process.cwd(), '..', path.join 'h2o-app', 'build', 'libs', 'h2o-app.jar'

throw "H2O jar '#{jarpath}' not found!" unless fs.existsSync JAR_PATH

# Node.js equivalent of Steam.Xhr
Xhr = (_, host) ->

argv = (require 'minimist') process.argv.slice 2
EOL = (require 'os').EOL
fs = require 'fs'
path = require 'path'
spawn = (require 'child_process').spawn
