Files
2025-08-27 17:10:05 +08:00

54 lines
1.4 KiB
CoffeeScript

vows = require 'vows'
assert = require 'assert'
phantom = require '../phantom'
describe = (name, bat) -> vows.describe(name).addBatch(bat).export(module)
# Make coffeescript not return anything
# This is needed because vows topics do different things if you have a return
# value
t = (fn) ->
->
fn.apply this, arguments
return
describe "The phantom module (error behavior)",
"Can try to spawn instance at nonexistent path":
topic: t ->
phantom.create {port: 12311, path: "./test/doesn't-exist"}, (ph, err) =>
@callback null, [ph, err]
"which is null": ([ph, err]) ->
assert.isNull ph
"which returned an error": ([ph, err]) ->
assert.isObject err
"with an error code of ENOENT": ([ph, err]) ->
assert.strictEqual err?.code, "ENOENT"
"Can try to spawn two instances on the same port":
topic: t ->
phantom.create {port: 12312}, (ph, err) =>
@callback null, [ph, err]
"where the first succeeds": ([ph, err]) ->
assert.isObject ph
"and does not error": ([ph, err]) ->
assert.isNull err
"but, when the second is run,":
topic: t ->
phantom.create {port: 12312}, (ph2, err2) =>
@callback null, [ph2, err2]
"it fails": ([ph2, err2]) ->
assert.isNull ph2
"and it errors": ([ph2, err2]) ->
assert.isObject err2
"with error code EADDRINUSE": ([ph2, err2]) ->
assert.equal err2.code, "EADDRINUSE"