jejacks0n / teaspoon

Teaspoon: Javascript test runner for Rails. Use Selenium, BrowserStack, or PhantomJS.
1.43k stars 243 forks source link

Add support for configuring path to istanbul executable #252

Closed jcarlson closed 10 years ago

jcarlson commented 10 years ago

In my Rails project, istanbul is packaged as a Node dependency. The path to the executable is then ./node_modules/.bin/istanbul.

Some devs on the team have this path in their shell PATH var, but some do not. As there are some breaking API changes with the latest istanbul (0.3.0), it would be nice to tell Teaspoon to use the version bundled with the app and not bother searching the system path.

I wouldn't imagine this would be terribly difficult, would it?

jcarlson commented 10 years ago

I missed a spec, but fixed it. The build still fails because newer versions of istanbul have slightly different console output... namely the + in the table intersections has become a | in 0.2.12+, and starting in 0.3.0, there is a large deprecation notice, due to breaking API changes...

jejacks0n commented 10 years ago

Thanks. Does teaspoon work properly with both versions of Istanbul? You say there's API changes, and if it is broken it'd like to know.

jcarlson commented 10 years ago

For now Istanbul seems to detect and support backwards compatibility, but it emits a large deprecation notice to the console. Using version 0.3.0 did work for me but I chose to stick with 0.2.16 to avoid the notice.

You can see more details here:

https://github.com/gotwarlost/istanbul/blob/master/CHANGELOG.md

On Jul 27, 2014, at 12:28 AM, Jeremy Jackson notifications@github.com wrote:

Thanks. Does teaspoon work properly with both versions of Istanbul? You say there's API changes, and if it is broken it'd like to know.

— Reply to this email directly or view it on GitHub.

jejacks0n commented 10 years ago

I updated the istanbul interface to 0.3, but suspect it won't work nicely with version 0.2.*, so... thoughts?

jcarlson commented 10 years ago

Any change on this? You mention that you updated the interface to support istanbul 0.3.0, but this issue was really about allowing a project to configure the location of the istanbul executable...

SteveAquino commented 10 years ago

I'd also like this option. I'm able to hack around it, but it'd feel much nicer to know this is officially supported. In my teaspoon_env.rb:

# Hack to tell Teaspoon to use a local
# instal of Istanbul (for CI support)
class Teaspoon::Instrumentation
  def self.executable
    "./node_modules/istanbul/lib/cli.js"
  end
end
derekpeterson commented 9 years ago

I was going to work on adding support for this, and found this PR while looking for discussion, so I'm also curious about this feature's status.

I would like to have this option to avoid relying on global installs. Another hack is to prepend node_modules/.bin to the PATH, but that's not really a great solution. Official support would be better.

(Anyway, thanks for a great tool!)

mikepack commented 9 years ago

We don't have any immediate plans to work on this, but would gladly accept a PR.