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

Create isolated environment for each framework #995

Closed
hamiltont opened this issue Aug 11, 2014 · 8 comments
Closed

Create isolated environment for each framework #995

hamiltont opened this issue Aug 11, 2014 · 8 comments

Comments

@hamiltont
Copy link
Contributor

As mentioned in #966, most languages with package systems also have tools to isolate environments (e.g. environment A has packages foo-v1,bar-v1.2,zlib-v0.6 while environment B has foo-v3,bar-v4.4,zlib-v0.6). We should use this! The first step is to separate all the framework-specific requirements out into their respective directories. @methane is making huge strides for python over in #984, @jberger basically finished this for perl with #986. This leaves languages like scala, php, etc, many of which already have some of their dependencies declared inside each framework folder.

The next step is to choose an environment isolation framework for each language. In #966 we discuss this step for Perl. @jberger prefers Carton, but also mentions local::lib and some other stuff I don't know (perlbrew, plenv). Once we settle on an environment manager for that language, we can apply it to all the tests.

Personally I think we should delay this until #448 is completed as it will become much cleaner to implement with a language-based directory structure (e.g. stuff like frameworks/php/... and frameworks/perl/...) Done

@jberger
Copy link
Contributor

jberger commented Aug 17, 2014

I have implemented a Carton deployment solution for the Mojolicious app in #1019

@hamiltont
Copy link
Contributor Author

A number of the PHP apps use composer, so it's now mentioned on the PHP readme

@methane
Copy link
Contributor

methane commented Aug 18, 2014

Should Isolated environments be in $TROOT?

@hamiltont
Copy link
Contributor Author

@methane Either $TROOT or $IROOT/<test-name> would be fine

@methane
Copy link
Contributor

methane commented Aug 18, 2014

OK. Python has 3 interpreters (CPython 2, CPython 3 and PyPy) and I should create
virtual environments for each interpreters.
I'll use $TROOT/py2, $TROOT/py3 and $TROOT/pypy.

@hamiltont
Copy link
Contributor Author

This sounds perfect!

In case this idea assists you : I commonly make the first commit in my branch a modification to the .travis.yml file that removes all frameworks I'm not working on, and then perform a rebase and delete that commit right before I send in the pull request.

@methane
Copy link
Contributor

methane commented Aug 18, 2014

That's a nice hack!

@msmith-techempower
Copy link
Member

This is now the overarching design of the tests, and while probably still not perfect it is essentially in the master branch.

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

5 participants