UbuntuGrok

Revision 21 as of 2008-10-03 05:21:51

Clear message

This documents the procedure I used to setup a Grok virtual environment for working on the Viejo content management system. Note that as of September 29th, grokproject 0.9 and grok 0.14 work on python2.5. So the easy_install-2.4 can be omitted.

  • sudo apt-get install build-essential python-dev python-setuptools subversion bzr

  • sudo easy_install virtualenv

  • mkdir viejo_virtualenv

  • cd viejo_virtualenv

  • virtualenv --no-site-packages virtualgrok

  • source virtualgrok/bin/activate

  • easy_install grokproject

  • grokproject Viejo

  • cd Viejo

  • rm -rf setup.py buildout.cfg src

  • bzr checkout lp:~viejo-team/viejo-code/yagni .

  • ./bin/buildout

  • ./bin/test

Now, we're good to go TDD. The main files and directories of our project are:

  • setup.py -> Mostly to include packages required for our project to work

  • buildout.cfg -> Configuration for our instance

  • src/viejo/models.py -> Stores the models of our application. See the Model-view-controller for more

  • src/viejo/tests -> Directory to store our unit doctests

  • src/viejo/tests/models.txt -> Unit doctests for our models.py module

  • src/viejo/ftests -> Directory to store our functional doctests

  • src/viejo/ftests/viejo.txt -> Functional doctests for our application

For every change we do to the application we always have to run Viejo/bin/test to check we don't break anything. We could access bin/test from anywhere in our path. For example, if we're inside our project's ftests directory we could call ../../../bin/test and will run all our unit and functional tests. If we only want to run a kind of tests we could call it like this:

  • bin/test -u -> It will run only unit doctests inside the src/viejo/tests directory

  • bin/test -f -> It will run only functional doctests inside the src/viejo/ftests directory

Some useful bzr commands we will need:

  • bzr status -> it will tell us which files have been changed, deleted or are about to be added to our branch. Always use bzr status before doing a check in. Maybe our local setup works, and we have to make sure launchpad get all the files we want

  • bzr add <filename> -> Makes bzr knows about our new file

  • bzr revert <filename> -> Restore <filename> to be the one we checked out

  • bzr ci -m "Some descriptive message" -> Checks changes back into launchpad