1

I'm having trouble getting my mocha tests to work on Codeship. These are working locally. I've deleted the repo and ran npm install. Still worked locally but not remote.

I'm not sure if this is a coffeescript compile error when codeship tries to run the tests, but there isn't too much information about their platform's support for the language.

Am I missing something I have to add to my codeship test environment? Not sure why the code would be fine local but break everything in codeship.

When run locally:

Debugger listening on port 5858


  Verify codeship works
    Ok should eql Ok
      ✓ should not post to the public channel


  1 passing (487ms)

Codeship test result:

debugger listening on port 5858

/home/rof/src/github.com/sprk-platform/tracker-bot/test/conversation_test.coffee:27
return function*() {
^
SyntaxError: Unexpected token *
at Module._compile (module.js:439:25)
at Object.loadFile (/home/rof/.nvm/v0.10.45/lib/node_modules/coffee-script/lib/coffee-script/register.js:16:19)
at Module.load (/home/rof/.nvm/v0.10.45/lib/node_modules/coffee-script/lib/coffee-script/register.js:45:36)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at /home/rof/.nvm/v0.10.45/lib/node_modules/mocha/lib/mocha.js:219:27
at Array.forEach (native)
at Mocha.loadFiles (/home/rof/.nvm/v0.10.45/lib/node_modules/mocha/lib/mocha.js:216:14)
at Mocha.run (/home/rof/.nvm/v0.10.45/lib/node_modules/mocha/lib/mocha.js:468:10)
at Object.<anonymous> (/home/rof/.nvm/v0.10.45/lib/node_modules/mocha/bin/_mocha:403:18)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:945:3

Test file:

expect = require('chai').expect
should = require('chai').should

Helper      = require('hubot-test-helper')
helper = new Helper('../scripts/events.coffee')

co          = require('co')
Promise     = require('bluebird')

describe 'Verify codeship works', ->

  beforeEach ->
    @room = helper.createRoom()
    return

  describe 'Ok should eql Ok', ->

    beforeEach ->
      co =>
        yield @room.user.say '1', 'hello'
        return

    it 'should not post to the public channel', ->
      expect("ok").to.eql "ok"
      return

Events.coffee:

module.exports = (robot) ->
  robot.on 'some-event', (some, data) ->
    robot.messageRoom 'room1', "got event with #{some} #{data}"

  robot.respond /send event$/i, (msg) ->
    robot.emit 'response-event',
      content: 'hello'

Package.json:

{
  "dependencies": {
    "hubot": "latest",
    "hubot-brain-inspect": "0.0.1",
    "hubot-conversation": "^1.0.3",
    "hubot-diagnostics": "0.0.1",
    "hubot-env": "0.0.2",
    "hubot-google-images": "^0.2.6",
    "hubot-google-translate": "^0.2.0",
    "hubot-help": "^0.1.3",
    "hubot-heroku-keepalive": "^1.0.2",
    "hubot-maps": "0.0.2",
    "hubot-pugme": "^0.1.0",
    "hubot-redis-brain": "0.0.3",
    "hubot-rules": "^0.1.1",
    "hubot-scripts": "^2.16.2",
    "hubot-shipit": "^0.2.0",
    "knwl.js": "^1.0.2",
    "nlp_compromise": "^3.0.8",
    "qs": "^6.1.0",
    "coffee-script": "latest"
  },
  "engines": {
    "node": "0.10.x"
  },
  "scripts": {
    "test": "node_modules/.bin/mocha --opts ./test/mocha.opts"
  },
  "devDependencies": {
    "bluebird": "^3.3.5",
    "chai": "3.5.0",
    "co": "4.6.0",
    "coffee-errors": "^0.8.6",
    "hubot-mock-adapter": "^1.0.0",
    "hubot-test-helper": "latest",
    "mocha": "latest",
    "mocha-retry": "^0.1.0",
    "mockery": "latest",
    "sinon": "latest",
    "sinon-chai": "latest"
  }
}

And the mocha.opts:

--compilers coffee:coffee-script/register
--ui tdd
--reporter spec
--recursive
--debug
--inline-diffs

Also tried adding --require coffee-script

Myk Klemme
  • 540
  • 1
  • 4
  • 15

1 Answers1

1

Looks like the issue was an inconsistent node version. Local was 5.6.0 and package.json required 0.10.x. The thing that was breaking the tests was yield, which is part of ECMA6.

Myk Klemme
  • 540
  • 1
  • 4
  • 15