Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jasmine test browserified code #6

Open
JacksonGariety opened this issue Feb 4, 2014 · 14 comments
Open

Jasmine test browserified code #6

JacksonGariety opened this issue Feb 4, 2014 · 14 comments

Comments

@JacksonGariety
Copy link

I'm trying to get gulp to build/transform my code with browserify/envify, and then test the transformed code with jasmine.

The browserify works:

gulp.src('./test/*')
  .pipe(browserify({ transform: ['reactify', 'envify'] }))
  .pipe(
    es.map(function (file, callback) {
      console.log(file.contents.toString()) //=> transformed code! :D
    })
  )

However when I pipe it into jasmine, I get failing tests which show code that is not reactified/envified:

gulp.src('./test/*')
  .pipe(browserify({ transform: ['reactify', 'envify'] }))
  .pipe(
    jasmine({ verbose: true }) //=> unexpected <ReactComponent/> (untransformed code)
  )
@deepak1556
Copy link

@sindresorhus is it because miniJasmineLib reading from file.path instead of the contents https://github.com/sindresorhus/gulp-jasmine/blob/master/index.js#L29 ?

@JacksonGariety
Copy link
Author

@deepak1556 yeah I was just about to post.

@sindresorhus would you merge if I made a fork of gulp-jasmine which takes file content instead of the path? If it just takes the path, that partially defeats the purpose of using Gulp over Grunt, since I'd need to write the browserified code to a temp file and then read it again.

@sindresorhus
Copy link
Owner

@JacksonGariety yes

@shuhei
Copy link

shuhei commented Feb 4, 2014

Perhaps eval with vm in minijasminenode?

@JacksonGariety
Copy link
Author

@shuhei juliemr/minijasminenode doesn't use vm, so is it necessary?

Nvm, the gulp-jasmine variables would clash with the user's variables.

@JacksonGariety
Copy link
Author

Stuck on an error where jasmine continually throws Error: jasmine.Suite() required no matter what I do.

If someone wants to take a look: https://github.com/jacksongariety/gulp-jasmine

@deepak1556
Copy link

you tried to expose it to global context which override mocha's it and was treating it as jasmine spec so was expecting a suite describe to cover it. if you try commenting your global.it that error will clear.

EDIT: Why not create a new context and rewire the methods as you are doing now and run vm in this context as global vm.runInNewContext ?

@shuhei
Copy link

shuhei commented Feb 5, 2014

It would be nice to make a pull request to minijasminenode instead of copying it into gulp-jasmine. I guess evaling Buffer can be acceptable to minijasminenode.

@JacksonGariety
Copy link
Author

@deepak1556 that's what I've discovered, working on that now.

@shuhei I was thinking add minijasminenode back, and simply do not use the index file, only jasmine-1.3.1 and the other two addons.

@JacksonGariety
Copy link
Author

@shuhei but minijasminenode never gains access to the actual data from the stream, it gets pushed and array of files.

@JacksonGariety
Copy link
Author

@deepak1556 but you can't require from within a vm, so this whole process is a run-around. I can't figure what should run in which context, and it all seems really, really hacky. Any ideas?

@JacksonGariety
Copy link
Author

Going to switch to mocha now, this doesn't work but it may be close: https://github.com/jacksongariety/gulp-jasmine

@deepak1556
Copy link

@JacksonGariety you can try to shim require with giving the relative path to modules like this inside a vm https://github.com/google/tracing-framework/blob/8bdbffb19453a102917201866c36ed750c668495/bin/trace-runner.js#L67 but yeah there is another problem prototype properties of the sandbox wont be available inside the newContext,so a failure method i suggested.

@sindresorhus
Copy link
Owner

I think using vm.runInNewContext might be a viable idea. I've been considering doing that for gulp-mocha.

Since Jasmine 2.0 is out now. It might just make more sense to use it directly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants