mara / mara-app

A framework for distributing flask apps across separate packages with minimal dependencies
MIT License
15 stars 4 forks source link

Log monkey patching +tests #21

Closed jacopofar closed 6 years ago

jacopofar commented 7 years ago

After trying pipenv I think it looks promising but is not stable enough (for example I encountered this issue running the tests).

Meanwhile, Tox has some problem installing the dependencies on Travis, but works on my local machine, and could not determine what's causing the problem or reproduce the bug locally or apply a workaround.

It seems to be related to the pip management of dependency_links (https://github.com/pypa/pip/issues/3939), which changed between versions and is being deprecated. Tox uses Pip and probably doesn't use this flag.

Sadly it seems there's not a simple way to have a Python test on Travis without having to maintain multiple lists of dependencies (requirements.txt, setup.py and the ones in .travis.yml), and the solution in this PR is to just use pytest and a requirements-dev.txt (but no requirements.txt) and keep the Travis config minimal in order to just specify Python 3.6 and 3.7 and the test command but no explicit dependencies.

jankatins commented 7 years ago

There is still the possibility to use pip install -e . (or python setup.py develop) to install it. That will then use the dependencies specified in setup.py.

I think this PR would benefit from splitting the testing infrastructure from the monkey patching issue (I still would like to see a proper config package instead of having this file copied all over the place...)

jacopofar commented 7 years ago

@janschulz to install pipenv? Or flask?

I tried to split the PR in two parts as suggested on the first one, but realized I couldn't test much without the monkey patching, maybe check that the configuration page gives an HTTP 200

ghost commented 7 years ago

pip install -e . (in the directory where the source is checked out) will install the checked out package in "development mode". As far as I remember it will install the dependencies (as defined in setup.py) first.