Basic setup:: >>> import os >>> from __main__ import base_path, reset_env, run_pip, pyversion, lib_py, write_file, get_env Some tests of freeze, first we have to install some stuff. Note that the test is a little crude at the end because Python 2.5+ adds egg info to the standard library, so stuff like wsgiref will show up in the freezing. (Probably that should be accounted for in pip, but currently it is not). :: >>> reset_env() >>> write_file('initools-req.txt', '''\ ... INITools==0.2 ... # and something else to test out: ... simplejson<=1.7.4 ... ''') >>> result = run_pip('install', '-r', 'initools-req.txt') >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() .../test-scratch freeze -- stdout: -------------------- INITools==0.2 simplejson==1.7.4... Now lets try it with an svn checkout:: >>> env = get_env() >>> result = env.run('svn', 'co', '-r3472', 'http://svn.colorstudy.com/INITools/trunk', 'initools-trunk') >>> result = env.run(os.path.join(env.base_path, 'bin/python'), 'setup.py', 'develop', ... cwd=os.path.join(env.base_path, 'initools-trunk')) >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -- stdout: -------------------- -e svn+http://svn.colorstudy.com/INITools/trunk@3472#egg=INITools-0.2.1dev_r3472-py2...-dev_r3472 simplejson==1.7.4... Now, straight from trunk (but not editable/setup.py develop):: >>> result = env.run(os.path.join(env.base_path, 'bin/easy_install'), 'http://svn.colorstudy.com/INITools/trunk') >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -- stderr: -------------------- Warning: cannot find svn location for INITools==...dev-r... -- stdout: -------------------- ## FIXME: could not find svn URL in dependency_links for this package: INITools==...dev-r... simplejson==1.7.4... Bah, that's no good! Let's give it a hint:: >>> result = run_pip('freeze', '-f', 'http://svn.colorstudy.com/INITools/trunk#egg=INITools-dev', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -f http://svn.colorstudy.com/INITools/trunk#egg=INITools-dev -- stdout: -------------------- -f http://svn.colorstudy.com/INITools/trunk#egg=INITools-dev # Installing as editable to satisfy requirement INITools==...dev-r...: -e svn+http://svn.colorstudy.com/INITools/trunk@...#egg=INITools-...dev_r... simplejson==1.7.4... What about a Git clone?:: >>> reset_env() >>> env = get_env() >>> result = env.run('git', 'clone', 'git://github.com/jezdez/django-pagination.git', 'django-pagination') >>> result = env.run('git', 'checkout', '1df6507872d73ee387eb375428eafbfc253dfcd8', ... cwd=os.path.join(env.base_path, 'django-pagination'), expect_stderr=True) >>> result = env.run(os.path.join(env.base_path, 'bin/python'), 'setup.py', 'develop', ... cwd=os.path.join(env.base_path, 'django-pagination')) >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -- stdout: -------------------- -e git://github.com/jezdez/django-pagination.git@...#egg=django_pagination-... ... >>> result = run_pip('freeze', '-f', 'git://github.com/jezdez/django-pagination.git#egg=django_pagination', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -f git://github.com/jezdez/django-pagination.git#egg=django_pagination -- stdout: -------------------- -f git://github.com/jezdez/django-pagination.git#egg=django_pagination -e git://github.com/jezdez/django-pagination.git@...#egg=django_pagination-...-dev ... Now what about Mercurial:: >>> reset_env() >>> env = get_env() >>> result = env.run('hg', 'clone', '-r', 'f8f7eaf275c5', 'http://bitbucket.org/jezdez/django-dbtemplates/', 'django-dbtemplates') >>> result = env.run(os.path.join(env.base_path, 'bin/python'), 'setup.py', 'develop', ... cwd=os.path.join(env.base_path, 'django-dbtemplates')) >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -- stdout: -------------------- -e hg+http://bitbucket.org/jezdez/django-dbtemplates/@...#egg=django_dbtemplates-... ... >>> result = run_pip('freeze', '-f', 'hg+http://bitbucket.org/jezdez/django-dbtemplates#egg=django_dbtemplates', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -f hg+http://bitbucket.org/jezdez/django-dbtemplates#egg=django_dbtemplates -- stdout: -------------------- -f hg+http://bitbucket.org/jezdez/django-dbtemplates#egg=django_dbtemplates -e hg+http://bitbucket.org/jezdez/django-dbtemplates/@...#egg=django_dbtemplates-... ... Heck, now look in the Bazaar:: >>> reset_env() >>> env = get_env() >>> result = env.run('bzr', 'checkout', '-r', '174', 'http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1/', 'django-wikiapp') >>> result = env.run(os.path.join(env.base_path, 'bin/python'), 'setup.py', 'develop', ... cwd=os.path.join(env.base_path, 'django-wikiapp')) >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -- stdout: -------------------- -e bzr+http://bazaar.launchpad.net/...django-wikiapp/django-wikiapp/release-0.1/@...#egg=django_wikiapp-... ... >>> result = run_pip('freeze', '-f', 'bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1/#egg=django-wikiapp', expect_stderr=True) >>> print result Script result: ...ython... pip.main() -E .../test-scratch freeze -f bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1/#egg=django-wikiapp -- stdout: -------------------- -f bzr+http://bazaar.launchpad.net/...django-wikiapp/django-wikiapp/release-0.1/#egg=django-wikiapp -e bzr+http://bazaar.launchpad.net/...django-wikiapp/django-wikiapp/release-0.1/@...#egg=django_wikiapp-... ... Test that wsgiref (from global site-packages) is reported normally, but not with --local:: >>> reset_env() >>> result = run_pip('install', 'initools==0.2') >>> result = run_pip('freeze', expect_stderr=True) >>> print result Script result: ...ython... pip.main() .../test-scratch freeze -- stdout: -------------------- INITools==0.2 wsgiref==... >>> result2 = run_pip('freeze', '--local', expect_stderr=True) >>> print result2 Script result: ...ython... pip.main() .../test-scratch freeze --local -- stdout: -------------------- INITools==0.2