pytest-django-2.9.1/0000755000076500000240000000000012605027767015067 5ustar andreasstaff00000000000000pytest-django-2.9.1/.coveragerc0000644000076500000240000000007312110204627017167 0ustar andreasstaff00000000000000[run] parallel = true source = pytest_django branch = true pytest-django-2.9.1/.gitignore0000644000076500000240000000023012604427562017046 0ustar andreasstaff00000000000000*.pyc build/ /dist/ *.egg-info _build .tox .DS_Store *~ .env /.coverage.* /.coverage /htmlcov/ /bin/ /include/ /lib/ /src/ /share/ .cache .Python .eggs pytest-django-2.9.1/.travis.yml0000644000076500000240000000461312603531207017167 0ustar andreasstaff00000000000000# Use container-based environment (faster startup, allows caches). sudo: false language: python python: - "3.5" env: - TESTENV=pypy-2.8.1-master-sqlite_file - TESTENV=pypy3-2.8.1-1.8-sqlite_file - TESTENV=python2.6-2.8.1-1.6-sqlite_file - TESTENV=python2.7-2.8.1-1.4-sqlite_file - TESTENV=python2.7-2.8.1-1.5-sqlite_file - TESTENV=python2.7-2.8.1-1.6-sqlite_file - TESTENV=python2.7-2.8.1-1.7-sqlite_file - TESTENV=python2.7-2.8.1-1.8-sqlite_file - TESTENV=python2.7-2.8.1-1.9-sqlite_file - TESTENV=python2.7-2.8.1-master-mysql_innodb - TESTENV=python2.7-2.8.1-master-mysql_myisam - TESTENV=python2.7-2.8.1-master-sqlite_file - TESTENV=python3.2-2.8.1-1.6-sqlite_file - TESTENV=python3.3-2.8.1-1.6-sqlite_file - TESTENV=python3.4-2.8.1-1.5-sqlite_file - TESTENV=python3.4-2.8.1-1.6-sqlite_file - TESTENV=python3.4-2.8.1-1.7-sqlite_file - TESTENV=python3.4-2.8.1-1.8-sqlite_file - TESTENV=python3.4-2.8.1-1.9-sqlite_file - TESTENV=python3.4-2.8.1-master-sqlite_file - TESTENV=python3.5-2.7.3-master-sqlite_file - TESTENV=python3.5-2.8.1-master-postgres - TESTENV=python3.5-2.8.1-master-sqlite - TESTENV=python3.5-2.8.1-master-sqlite_file - TESTENV=checkqa-python2.7 - TESTENV=checkqa-python3.4 matrix: allow_failures: - env: TESTENV=pypy-2.8.1-master-sqlite_file - env: TESTENV=python2.7-2.8.1-master-mysql_innodb - env: TESTENV=python2.7-2.8.1-master-mysql_myisam - env: TESTENV=python2.7-2.8.1-master-sqlite_file - env: TESTENV=python3.4-2.8.1-master-sqlite_file - env: TESTENV=python3.5-2.7.3-master-sqlite_file - env: TESTENV=python3.5-2.8.1-master-postgres - env: TESTENV=python3.5-2.8.1-master-sqlite - env: TESTENV=python3.5-2.8.1-master-sqlite_file install: # Create pip wrapper script, using travis_retry (a function) and # inject it into tox.ini. - mkdir -p bin - PATH=$PWD/bin:$PATH - printf '#!/bin/sh\n' > bin/travis_retry_pip - declare -f travis_retry >> bin/travis_retry_pip - printf '\necho "Using pip-wrapper.." >&2\ntravis_retry pip "$@"' >> bin/travis_retry_pip - chmod +x bin/travis_retry_pip - sed -i.bak 's/^\[testenv\]/\0\ninstall_command = travis_retry_pip install {opts} {packages}/' tox.ini - diff tox.ini tox.ini.bak && return 1 || true - sed -i.bak 's/whitelist_externals =/\0\n travis_retry_pip/' tox.ini - diff tox.ini tox.ini.bak && return 1 || true - pip install tox script: tox -e $TESTENVpytest-django-2.9.1/AUTHORS0000644000076500000240000000077312555155111016133 0ustar andreasstaff00000000000000Ben Firshman created the original version of pytest-django. This fork is currently maintained by Andreas Pelme . These people have provided bug fixes, new features, improved the documentation or just made pytest-django more awesome: Ruben Bakker Ralf Schmitt Rob Berry Floris Bruynooghe Rafal Stozek Donald Stufft Nicolas Delaby Daniel Hahler pytest-django-2.9.1/docs/0000755000076500000240000000000012605027767016017 5ustar andreasstaff00000000000000pytest-django-2.9.1/docs/_static/0000755000076500000240000000000012605027767017445 5ustar andreasstaff00000000000000pytest-django-2.9.1/docs/_static/basic.css0000644000076500000240000002037111736345616021243 0ustar andreasstaff00000000000000/* * basic.css * ~~~~~~~~~ * * Sphinx stylesheet -- basic theme. * * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* -- main layout ----------------------------------------------------------- */ div.clearer { clear: both; } /* -- relbar ---------------------------------------------------------------- */ div.related { width: 100%; font-size: 90%; } div.related h3 { display: none; } div.related ul { margin: 0; padding: 0 0 0 10px; list-style: none; } div.related li { display: inline; } div.related li.right { float: right; margin-right: 5px; } /* -- sidebar --------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 10px 5px 0 10px; } div.sphinxsidebar { float: left; width: 230px; margin-left: -100%; font-size: 90%; } div.sphinxsidebar ul { list-style: none; } div.sphinxsidebar ul ul, div.sphinxsidebar ul.want-points { margin-left: 20px; list-style: square; } div.sphinxsidebar ul ul { margin-top: 0; margin-bottom: 0; } div.sphinxsidebar form { margin-top: 10px; } div.sphinxsidebar input { border: 1px solid #98dbcc; font-family: sans-serif; font-size: 1em; } div.sphinxsidebar input[type="text"] { width: 170px; } div.sphinxsidebar input[type="submit"] { width: 30px; } img { border: 0; } /* -- search page ----------------------------------------------------------- */ ul.search { margin: 10px 0 0 20px; padding: 0; } ul.search li { padding: 5px 0 5px 20px; background-image: url(file.png); background-repeat: no-repeat; background-position: 0 7px; } ul.search li a { font-weight: bold; } ul.search li div.context { color: #888; margin: 2px 0 0 30px; text-align: left; } ul.keywordmatches li.goodmatch a { font-weight: bold; } /* -- index page ------------------------------------------------------------ */ table.contentstable { width: 90%; } table.contentstable p.biglink { line-height: 150%; } a.biglink { font-size: 1.3em; } span.linkdescr { font-style: italic; padding-top: 5px; font-size: 90%; } /* -- general index --------------------------------------------------------- */ table.indextable { width: 100%; } table.indextable td { text-align: left; vertical-align: top; } table.indextable dl, table.indextable dd { margin-top: 0; margin-bottom: 0; } table.indextable tr.pcap { height: 10px; } table.indextable tr.cap { margin-top: 10px; background-color: #f2f2f2; } img.toggler { margin-right: 3px; margin-top: 3px; cursor: pointer; } div.modindex-jumpbox { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin: 1em 0 1em 0; padding: 0.4em; } div.genindex-jumpbox { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin: 1em 0 1em 0; padding: 0.4em; } /* -- general body styles --------------------------------------------------- */ a.headerlink { visibility: hidden; } h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, dt:hover > a.headerlink { visibility: visible; } div.body p.caption { text-align: inherit; } div.body td { text-align: left; } .field-list ul { padding-left: 1em; } .first { margin-top: 0 !important; } p.rubric { margin-top: 30px; font-weight: bold; } img.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } img.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } img.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } .align-left { text-align: left; } .align-center { text-align: center; } .align-right { text-align: right; } /* -- sidebars -------------------------------------------------------------- */ div.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; padding: 7px 7px 0 7px; background-color: #ffe; width: 40%; float: right; } p.sidebar-title { font-weight: bold; } /* -- topics ---------------------------------------------------------------- */ div.topic { border: 1px solid #ccc; padding: 7px 7px 0 7px; margin: 10px 0 10px 0; } p.topic-title { font-size: 1.1em; font-weight: bold; margin-top: 10px; } /* -- admonitions ----------------------------------------------------------- */ div.admonition { margin-top: 10px; margin-bottom: 10px; padding: 7px; } div.admonition dt { font-weight: bold; } div.admonition dl { margin-bottom: 0; } p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; } div.body p.centered { text-align: center; margin-top: 25px; } /* -- tables ---------------------------------------------------------------- */ table.docutils { border: 0; border-collapse: collapse; } table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; border-top: 0; border-left: 0; border-right: 0; border-bottom: 1px solid #aaa; } table.field-list td, table.field-list th { border: 0 !important; } table.footnote td, table.footnote th { border: 0 !important; } th { text-align: left; padding-right: 5px; } table.citation { border-left: solid 1px gray; margin-left: 1px; } table.citation td { border-bottom: none; } /* -- other body styles ----------------------------------------------------- */ ol.arabic { list-style: decimal; } ol.loweralpha { list-style: lower-alpha; } ol.upperalpha { list-style: upper-alpha; } ol.lowerroman { list-style: lower-roman; } ol.upperroman { list-style: upper-roman; } dl { margin-bottom: 15px; } dd p { margin-top: 0px; } dd ul, dd table { margin-bottom: 10px; } dd { margin-top: 3px; margin-bottom: 10px; margin-left: 30px; } dt:target, .highlighted { background-color: #fbe54e; } dl.glossary dt { font-weight: bold; font-size: 1.1em; } .field-list ul { margin: 0; padding-left: 1em; } .field-list p { margin: 0; } .refcount { color: #060; } .optional { font-size: 1.3em; } .versionmodified { font-style: italic; } .system-message { background-color: #fda; padding: 5px; border: 3px solid red; } .footnote:target { background-color: #ffa; } .line-block { display: block; margin-top: 1em; margin-bottom: 1em; } .line-block .line-block { margin-top: 0; margin-bottom: 0; margin-left: 1.5em; } .guilabel, .menuselection { font-family: sans-serif; } .accelerator { text-decoration: underline; } .classifier { font-style: oblique; } abbr, acronym { border-bottom: dotted 1px; cursor: help; } /* -- code displays --------------------------------------------------------- */ pre { overflow: auto; overflow-y: hidden; /* fixes display issues on Chrome browsers */ } td.linenos pre { padding: 5px 0px; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { margin-left: 0.5em; } table.highlighttable td { padding: 0 0.5em 0 0.5em; } tt.descname { background-color: transparent; font-weight: bold; font-size: 1.2em; } tt.descclassname { background-color: transparent; } tt.xref, a tt { background-color: transparent; font-weight: bold; } h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { background-color: transparent; } .viewcode-link { float: right; } .viewcode-back { float: right; font-family: sans-serif; } div.viewcode-block:target { margin: -1px -10px; padding: 0 10px; } /* -- math display ---------------------------------------------------------- */ img.math { vertical-align: middle; } div.body div.math p { text-align: center; } span.eqno { float: right; } /* -- printout stylesheet --------------------------------------------------- */ @media print { div.document, div.documentwrapper, div.bodywrapper { margin: 0 !important; width: 100%; } div.sphinxsidebar, div.related, div.footer, #top-link { display: none; } }pytest-django-2.9.1/docs/_static/rtd.css0000644000076500000240000003640111726721255020750 0ustar andreasstaff00000000000000/* * rtd.css * ~~~~~~~~~~~~~~~ * * Sphinx stylesheet -- sphinxdoc theme. Originally created by * Armin Ronacher for Werkzeug. * * Customized for ReadTheDocs by Eric Pierce & Eric Holscher * * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* RTD colors * light blue: #e8ecef * medium blue: #8ca1af * dark blue: #465158 * dark grey: #444444 * * white hover: #d1d9df; * medium blue hover: #697983; * green highlight: #8ecc4c * light blue (project bar): #e8ecef */ @import url("basic.css"); /* PAGE LAYOUT -------------------------------------------------------------- */ body { font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; text-align: center; color: black; background-color: #465158; padding: 0; margin: 0; } div.document { text-align: left; background-color: #e8ecef; } div.bodywrapper { background-color: #ffffff; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; margin: 0 0 0 16em; } div.body { margin: 0; padding: 0.5em 1.3em; min-width: 20em; } div.related { font-size: 1em; background-color: #465158; } div.documentwrapper { float: left; width: 100%; background-color: #e8ecef; } /* HEADINGS --------------------------------------------------------------- */ h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; line-height: 1.15; color: #111; clear: both; } h2 { margin: 2em 0 0.2em 0; font-size: 1.35em; padding: 0; color: #465158; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; color: #6c818f; } div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { color: black; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa !important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } /* LINKS ------------------------------------------------------------------ */ /* Normal links get a pseudo-underline */ a { color: #444; text-decoration: none; border-bottom: 1px solid #ccc; } /* Links in sidebar, TOC, index trees and tables have no underline */ .sphinxsidebar a, .toctree-wrapper a, .indextable a, #indices-and-tables a { color: #444; text-decoration: none; border-bottom: none; } /* Most links get an underline-effect when hovered */ a:hover, div.toctree-wrapper a:hover, .indextable a:hover, #indices-and-tables a:hover { color: #111; text-decoration: none; border-bottom: 1px solid #111; } /* Footer links */ div.footer a { color: #86989B; text-decoration: none; border: none; } div.footer a:hover { color: #a6b8bb; text-decoration: underline; border: none; } /* Permalink anchor (subtle grey with a red hover) */ div.body a.headerlink { color: #ccc; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none; border: none; } div.body a.headerlink:hover { color: #c60f0f; border: none; } /* NAVIGATION BAR --------------------------------------------------------- */ div.related ul { height: 2.5em; } div.related ul li { margin: 0; padding: 0.65em 0; float: left; display: block; color: white; /* For the >> separators */ font-size: 0.8em; } div.related ul li.right { float: right; margin-right: 5px; color: transparent; /* Hide the | separators */ } /* "Breadcrumb" links in nav bar */ div.related ul li a { order: none; background-color: inherit; font-weight: bold; margin: 6px 0 6px 4px; line-height: 1.75em; color: #ffffff; padding: 0.4em 0.8em; border: none; border-radius: 3px; } /* previous / next / modules / index links look more like buttons */ div.related ul li.right a { margin: 0.375em 0; background-color: #697983; text-shadow: 0 1px rgba(0, 0, 0, 0.5); border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* All navbar links light up as buttons when hovered */ div.related ul li a:hover { background-color: #8ca1af; color: #ffffff; text-decoration: none; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* Take extra precautions for tt within links */ a tt, div.related ul li a tt { background: inherit !important; color: inherit !important; } /* SIDEBAR ---------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 0; } div.sphinxsidebar { margin: 0; margin-left: -100%; float: left; top: 3em; left: 0; padding: 0 1em; width: 14em; font-size: 1em; text-align: left; background-color: #e8ecef; } div.sphinxsidebar img { max-width: 12em; } div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p.logo { margin: 1.2em 0 0.3em 0; font-size: 1em; padding: 0; color: #222222; font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; } div.sphinxsidebar h3 a { color: #444444; } div.sphinxsidebar ul, div.sphinxsidebar p { margin-top: 0; padding-left: 0; line-height: 130%; background-color: #e8ecef; } /* No bullets for nested lists, but a little extra indentation */ div.sphinxsidebar ul ul { list-style-type: none; margin-left: 1.5em; padding: 0; } /* A little top/bottom padding to prevent adjacent links' borders * from overlapping each other */ div.sphinxsidebar ul li { padding: 1px 0; } /* A little left-padding to make these align with the ULs */ div.sphinxsidebar p.topless { padding-left: 0 0 0 1em; } /* Make these into hidden one-liners */ div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: nowrap; overflow: hidden; } /* ...which become visible when hovered */ div.sphinxsidebar ul li:hover, div.sphinxsidebar p.topless:hover { overflow: visible; } /* Search text box and "Go" button */ #searchbox { margin-top: 2em; margin-bottom: 1em; background: #ddd; padding: 0.5em; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } #searchbox h3 { margin-top: 0; } /* Make search box and button abut and have a border */ input, div.sphinxsidebar input { border: 1px solid #999; float: left; } /* Search textbox */ input[type="text"] { margin: 0; padding: 0 3px; height: 20px; width: 144px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-topleft: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; } /* Search button */ input[type="submit"] { margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ height: 22px; color: #444; background-color: #e8ecef; padding: 1px 4px; font-weight: bold; border-top-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; } input[type="submit"]:hover { color: #ffffff; background-color: #8ecc4c; } div.sphinxsidebar p.searchtip { clear: both; padding: 0.5em 0 0 0; background: #ddd; color: #666; font-size: 0.9em; } /* Sidebar links are unusual */ div.sphinxsidebar li a, div.sphinxsidebar p a { background: #e8ecef; /* In case links overlap main content */ border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border: 1px solid transparent; /* To prevent things jumping around on hover */ padding: 0 5px 0 5px; } div.sphinxsidebar li a:hover, div.sphinxsidebar p a:hover { color: #111; text-decoration: none; border: 1px solid #888; } div.sphinxsidebar p.logo a { border: 0; } /* Tweak any link appearing in a heading */ div.sphinxsidebar h3 a { } /* OTHER STUFF ------------------------------------------------------------ */ cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } tt { background-color: #f2f2f2; color: #444; } tt.descname, tt.descclassname, tt.xref { border: 0; } hr { border: 1px solid #abc; margin: 2em; } pre, #_fontwidthtest { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; margin: 1em 2em; font-size: 0.95em; letter-spacing: 0.015em; line-height: 120%; padding: 0.5em; border: 1px solid #ccc; background-color: #eee; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } pre a { color: inherit; text-decoration: underline; } td.linenos pre { margin: 1em 0em; } td.code pre { margin: 1em 0em; } div.quotebar { background-color: #f8f8f8; max-width: 250px; float: right; padding: 2px 7px; border: 1px solid #ccc; } div.topic { background-color: #f8f8f8; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } /* ADMONITIONS AND WARNINGS ------------------------------------------------- */ /* Shared by admonitions, warnings and sidebars */ div.admonition, div.warning, div.sidebar { font-size: 0.9em; margin: 2em; padding: 0; /* border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; */ } div.admonition p, div.warning p, div.sidebar p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre, div.sidebar pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title, div.sidebar p.sidebar-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; font-weight: bold; font-size: 1.1em; text-shadow: 0 1px rgba(0, 0, 0, 0.5); } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol, div.sidebar ul, div.sidebar ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } /* Admonitions and sidebars only */ div.admonition, div.sidebar { border: 1px solid #609060; background-color: #e9ffe9; } div.admonition p.admonition-title, div.sidebar p.sidebar-title { background-color: #70A070; border-bottom: 1px solid #609060; } /* Warnings only */ div.warning { border: 1px solid #900000; background-color: #ffe9e9; } div.warning p.admonition-title { background-color: #b04040; border-bottom: 1px solid #900000; } /* Sidebars only */ div.sidebar { max-width: 30%; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } .viewcode-back { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } dl { margin: 1em 0 2.5em 0; } /* Highlight target when you click an internal link */ dt:target { background: #ffe080; } /* Don't highlight whole divs */ div.highlight { background: transparent; } /* But do highlight spans (so search results can be highlighted) */ span.highlight { background: #ffe080; } div.footer { background-color: #465158; color: #eeeeee; padding: 0 2em 2em 2em; clear: both; font-size: 0.8em; text-align: center; } p { margin: 0.8em 0 0.5em 0; } .section p img.math { margin: 0; } .section p img { margin: 1em 2em; } /* MOBILE LAYOUT -------------------------------------------------------------- */ @media screen and (max-width: 600px) { h1, h2, h3, h4, h5 { position: relative; } ul { padding-left: 1.25em; } div.bodywrapper a.headerlink, #indices-and-tables h1 a { color: #e6e6e6; font-size: 80%; float: right; line-height: 1.8; position: absolute; right: -0.7em; visibility: inherit; } div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { line-height: 1.5; } pre { font-size: 0.7em; overflow: auto; word-wrap: break-word; white-space: pre-wrap; } div.related ul { height: 2.5em; padding: 0; text-align: left; } div.related ul li { clear: both; color: #465158; padding: 0.2em 0; } div.related ul li:last-child { border-bottom: 1px dotted #8ca1af; padding-bottom: 0.4em; margin-bottom: 1em; width: 100%; } div.related ul li a { color: #465158; padding-right: 0; } div.related ul li a:hover { background: inherit; color: inherit; } div.related ul li.right { clear: none; padding: 0.65em 0; margin-bottom: 0.5em; } div.related ul li.right a { color: #fff; padding-right: 0.8em; } div.related ul li.right a:hover { background-color: #8ca1af; } div.body { clear: both; min-width: 0; word-wrap: break-word; } div.bodywrapper { margin: 0 0 0 0; } div.sphinxsidebar { float: none; margin: 0; width: auto; } div.sphinxsidebar input[type="text"] { height: 2em; line-height: 2em; width: 70%; } div.sphinxsidebar input[type="submit"] { height: 2em; margin-left: 0.5em; width: 20%; } div.sphinxsidebar p.searchtip { background: inherit; margin-bottom: 1em; } div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: normal; } .bodywrapper img { display: block; margin-left: auto; margin-right: auto; max-width: 100%; } div.documentwrapper { float: none; } div.admonition, div.warning, pre, blockquote { margin-left: 0em; margin-right: 0em; } .body p img { margin: 0; } #searchbox { background: transparent; } .related:not(:first-child) li { display: none; } .related:not(:first-child) li.right { display: block; } div.footer { padding: 1em; } .rtd_doc_footer .badge { float: none; margin: 1em auto; position: static; } .rtd_doc_footer .badge.revsys-inline { margin-right: auto; margin-bottom: 2em; } table.indextable { display: block; width: auto; } .indextable tr { display: block; } .indextable td { display: block; padding: 0; width: auto !important; } .indextable td dt { margin: 1em 0; } ul.search { margin-left: 0.25em; } ul.search li div.context { font-size: 90%; line-height: 1.1; margin-bottom: 1; margin-left: 0; } } pytest-django-2.9.1/docs/changelog.rst0000644000076500000240000002253712605027702020476 0ustar andreasstaff00000000000000Changelog ========= 2.9.1 ----- Bug fixes ^^^^^^^^^ * Fix regression introduced in 2.9.0 that caused TestCase subclasses with mixins to cause errors. Thanks MikeVL for `the bug report `_. 2.9.0 ----- 2.9.0 focus on compatibility with Django 1.9 and master as well as pytest 2.8.1 and Python 3.5 Features ^^^^^^^^ * `--fail-on-template-vars` - fail tests for invalid variables in templates. Thanks to Johannes Hoppe for idea and implementation. Thanks Daniel Hahler for review and feedback. Bug fixes ^^^^^^^^^ * Ensure urlconf is properly reset when using @pytest.mark.urls. Thanks to Sarah Bird, David Szotten, Daniel Hahler and Yannick PÉROUX for patch and discussions. Fixes `issue #183 `_. * Call `setUpClass()` in Django `TestCase` properly when test class is inherited multiple places. Thanks to Benedikt Forchhammer for report and initial test case. Fixes `issue #265 `_. Compatibility ^^^^^^^^^^^^^ * Settings defined in `pytest.ini`/`tox.ini`/`setup.cfg` used to override `DJANGO_SETTINGS_MODULE` defined in the environment. Previously the order was undocmented. Now, instead the settings from the environment will be used instead. If you previously relied on overriding the enviornment variable, you can instead specify `addopts = --ds=yourtestsettings` in the ini-file which will use the test settings. See `PR #199 `_. * Support for Django 1.9. * Support for Django master (to be 1.10) as of 2015-10-06. * Drop support for Django 1.3. While pytest-django supports a wide range of Django versions, extended for Django 1.3 was dropped in february 2013. 2.8.0 ----- Features ^^^^^^^^ * pytest's verbosity is being used for Django's code to setup/teardown the test database (#172). * Added a new option `--nomigrations` to avoid running Django 1.7+ migrations when constructing the test database. Huge thanks to Renan Ivo for complete patch, tests and documentation. Bug fixes ^^^^^^^^^ * Fixed compatibility issues related to Django 1.8's `setUpClass`/`setUpTestData`. Django 1.8 is now a fully supported version. Django master as of 2014-01-18 (the Django 1.9 branch) is also supported. 2.7.0 ----- Features ^^^^^^^^ * New fixtures: ``admin_user``, ``django_user_model`` and ``django_username_field`` (#109). * Automatic discovery of Django projects to make it easier for new users. This change is slightly backward incompatible, if you encounter problems with it, the old behaviour can be restored by adding this to ``pytest.ini``, ``setup.cfg`` or ``tox.ini``:: [pytest] django_find_project = false Please see the :ref:`managing_python_path` section for more information. Bugfixes ^^^^^^^^ * Fix interaction between ``db`` and ``transaction_db`` fixtures (#126). * Fix admin client with custom user models (#124). Big thanks to Benjamin Hedrich and Dmitry Dygalo for patch and tests. * Fix usage of South migrations, which were unconditionally disabled previously (#22). * Fixed #119, #134: Call ``django.setup()`` in Django >=1.7 directly after settings is loaded to ensure proper loading of Django applications. Thanks to Ionel Cristian Mărieș, Daniel Hahler, Tymur Maryokhin, Kirill SIbirev, Paul Collins, Aymeric Augustin, Jannis Leidel, Baptiste Mispelon and Anatoly Bubenkoff for report, discussion and feedback. * `The `live_server`` fixture can now serve static files also for Django>=1.7 if the ``django.contrib.staticfiles`` app is installed. (#140). * ``DJANGO_LIVE_TEST_SERVER_ADDRESS`` environment variable is read instead of ``DJANGO_TEST_LIVE_SERVER_ADDRESS``. (#140) 2.6.2 ----- * Fixed a bug that caused doctests to runs. Thanks to @jjmurre for the patch * Fixed issue #88 - make sure to use SQLite in memory database when running with pytest-xdist. 2.6.1 ----- This is a bugfix/support release with no new features: * Added support for Django 1.7 beta and Django master as of 2014-04-16. pytest-django is now automatically tested against the latest git master version of Django. * Support for MySQL with MyISAM tables. Thanks to Zach Kanzler and Julen Ruiz Aizpuru for fixing this. This fixes issue #8 #64. 2.6.0 ----- * Experimental support for Django 1.7 / Django master as of 2014-01-19. pytest-django is now automatically tested against the latest git version of Django. The support is experimental since Django 1.7 is not yet released, but the goal is to always be up to date with the latest Django master 2.5.1 ----- Invalid release accidentally pushed to PyPI (identical to 2.6.1). Should not be used - use 2.6.1 or newer to avoid confusion. 2.5.0 ----- * Python 2.5 compatibility dropped. py.test 2.5 dropped support for Python 2.5, therefore it will be hard to properly support in pytest-django. The same strategy as for pytest itself is used: No code will be changed to prevent Python 2.5 from working, but it will not be actively tested. * pytest-xdist support: it is now possible to run tests in parallel. Just use pytest-xdist as normal (pass -n to py.test). One database will be created for each subprocess so that tests run independent from each other. 2.4.0 ----- * Support for py.test 2.4 pytest_load_initial_conftests. This makes it possible to import Django models in project conftest.py files, since pytest-django will be initialized before the conftest.py is loaded. 2.3.1 ----- * Support for Django 1.5 custom user models, thanks to Leonardo Santagada. 2.3.0 ----- * Support for configuring settings via django-configurations. Big thanks to Donald Stufft for this feature! 2.2.1 ----- * Fixed an issue with the settings fixture when used in combination with django-appconf. It now uses pytest's monkeypatch internally and should be more robust. 2.2.0 ----- * Python 3 support. pytest-django now supports Python 3.2 and 3.3 in addition to 2.5-2.7. Big thanks to Rafal Stozek for making this happen! 2.1.0 ----- * Django 1.5 support. pytest-django is now tested against 1.5 for Python 2.6-2.7. This is the first step towards Python 3 support. 2.0.1 ----- * Fixed #24/#25: Make it possible to configure Django via ``django.conf.settings.configure()``. * Fixed #26: Don't set DEBUG_PROPAGATE_EXCEPTIONS = True for test runs. Django does not change this setting in the default test runner, so pytest-django should not do it either. 2.0.0 ----- This release is *backward incompatible*. The biggest change is the need to add the ``pytest.mark.django_db`` to tests which require database access. Finding such tests is generally very easy: just run your test suite, the tests which need database access will fail. Add ``pytestmark = pytest.mark.django_db`` to the module/class or decorate them with ``@pytest.mark.django_db``. Most of the internals have been rewritten, exploiting py.test's new fixtures API. This release would not be possible without Floris Bruynooghe who did the port to the new fixture API and fixed a number of bugs. The tests for pytest-django itself has been greatly improved, paving the way for easier additions of new and exciting features in the future! * Semantic version numbers will now be used for releases, see http://semver.org/. * Do not allow database access in tests by default. Introduce ``pytest.mark.django_db`` to enable database access. * Large parts re-written using py.test's 2.3 fixtures API (issue #9). - Fixes issue #17: Database changes made in fixtures or funcargs will now be reverted as well. - Fixes issue 21: Database teardown errors are no longer hidden. - Fixes issue 16: Database setup and teardown for non-TestCase classes works correctly. * ``pytest.urls()`` is replaced by the standard marking API and is now used as ``pytest.mark.urls()`` * Make the plugin behave gracefully without DJANGO_SETTINGS_MODULE specified. ``py.test`` will still work and tests needing django features will skip (issue #3). * Allow specifying of ``DJANGO_SETTINGS_MODULE`` on the command line (``--ds=settings``) and py.test ini configuration file as well as the environment variable (issue #3). * Deprecate the ``transaction_test_case`` decorator, this is now integrated with the ``django_db`` mark. 1.4 --- * Removed undocumented pytest.load_fixture: If you need this feature, just use ``django.management.call_command('loaddata', 'foo.json')`` instead. * Fixed issue with RequestFactory in Django 1.3. * Fixed issue with RequestFactory in Django 1.3. 1.3 --- * Added ``--reuse-db`` and ``--create-db`` to allow database re-use. Many thanks to `django-nose `_ for code and inspiration for this feature. 1.2.2 ----- * Fixed Django 1.3 compatibility. 1.2.1 ----- * Disable database access and raise errors when using --no-db and accessing the database by accident. 1.2 --- * Added the ``--no-db`` command line option. 1.1.1 ----- * Flush tables after each test run with transaction_test_case instead of before. 1.1 --- * The initial release of this fork from `Ben Firshman original project `_ * Added documentation * Uploaded to PyPI for easy installation * Added the ``transaction_test_case`` decorator for tests that needs real transactions * Added initial implementation for live server support via a funcarg (no docs yet, it might change!) pytest-django-2.9.1/docs/conf.py0000644000076500000240000001721612604703223017310 0ustar andreasstaff00000000000000# -*- coding: utf-8 -*- # # pytest-django documentation build configuration file, created by # sphinx-quickstart on Tue May 1 10:12:50 2012. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os, datetime # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.doctest'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'pytest-django' copyright = u'%d, Andreas Pelme and contributors' % datetime.date.today().year # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' html_style = 'rtd.css' RTD_NEW_THEME = True # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'pytest-djangodoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'pytest-django.tex', u'pytest-django Documentation', u'Andreas Pelme', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'pytest-django', u'pytest-django Documentation', [u'Andreas Pelme'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'pytest-django', u'pytest-django Documentation', u'Andreas Pelme', 'pytest-django', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' pytest-django-2.9.1/docs/configuring_django.rst0000644000076500000240000000357412604437221022403 0ustar andreasstaff00000000000000.. _configuring_django_settings: Configuring Django settings =========================== There are a couple of different ways Django settings can be provided for the tests. The environment variable ``DJANGO_SETTINGS_MODULE`` --------------------------------------------------- Running the tests with DJANGO_SETTINGS_MODULE defined will find the Django settings the same way Django does by default. Example:: $ export DJANGO_SETTINGS_MODULE=test_settings $ py.test or:: $ DJANGO_SETTINGS_MODULE=test_settings py.test Command line option ``--ds=SETTINGS`` ------------------------------------- Example:: $ py.test --ds=test_settings pytest.ini settings ------------------- Example contents of pytest.ini:: [pytest] DJANGO_SETTINGS_MODULE = test_settings Order of choosing settings -------------------------- If `--ds`, the environment variable and the pytest.ini configuration is used at the same time, pytest-django will first prefer using settings from the command line option `--ds`, then the environment variable and last the pytest.ini. Using django-configurations --------------------------- There is support for using `django-configurations `_. To do so configure the settings class using an environment variable, the --dc flag, or pytest.ini DJANGO_CONFIGURATION. Environment Variable:: $ export DJANGO_CONFIGURATION=MySettings $ py.test Command Line Option:: $ py.test --dc=MySettings INI File Contents:: [pytest] DJANGO_CONFIGURATION=MySettings Using ``django.conf.settings.configure()`` ------------------------------------------ Django settings can be set up by calling ``django.conf.settings.configure()``. This can be done from your project's ``conftest.py`` file:: from django.conf import settings def pytest_configure(): settings.configure(DATABASES=...) pytest-django-2.9.1/docs/contributing.rst0000644000076500000240000002160412555155111021250 0ustar andreasstaff00000000000000############################# Contributing to pytest-django ############################# Like every open-source project, pytest-django is always looking for motivated individuals to contribute to its source code. However, to ensure the highest code quality and keep the repository nice and tidy, everybody has to follow a few rules (nothing major, I promise :) ) ********* Community ********* The fastest way to get feedback on contributions/bugs is usually to open an issue in the `issue tracker`_. Discussions also happen via IRC in #pylib on irc.freenode.org. You may also be interested in following `@andreaspelme`_ on Twitter. ************* In a nutshell ************* Here's what the contribution process looks like, in a bullet-points fashion: #. pytest-django is hosted on `GitHub`_, at https://github.com/pytest-dev/pytest-django #. The best method to contribute back is to create an account there and fork the project. You can use this fork as if it was your own project, and should push your changes to it. #. When you feel your code is good enough for inclusion, "send us a `pull request`_", by using the nice GitHub web interface. ***************** Contributing Code ***************** Getting the source code ======================= - Code will be reviewed and tested by at least one core developer, preferably by several. Other community members are welcome to give feedback. - Code *must* be tested. Your pull request should include unit-tests (that cover the piece of code you're submitting, obviously). - Documentation should reflect your changes if relevant. There is nothing worse than invalid documentation. - Usually, if unit tests are written, pass, and your change is relevant, then your pull request will be merged. Since we're hosted on GitHub, pytest-django uses `git`_ as a version control system. The `GitHub help`_ is very well written and will get you started on using git and GitHub in a jiffy. It is an invaluable resource for newbies and oldtimers alike. Syntax and conventions ====================== We try to conform to `PEP8`_ as much as possible. A few highlights: - Indentation should be exactly 4 spaces. Not 2, not 6, not 8. **4**. Also, tabs are evil. - We try (loosely) to keep the line length at 79 characters. Generally the rule is "it should look good in a terminal-based editor" (eg vim), but we try not be [Godwin's law] about it. Process ======= This is how you fix a bug or add a feature: #. `fork`_ the repository on GitHub. #. Checkout your fork. #. Hack hack hack, test test test, commit commit commit, test again. #. Push to your fork. #. Open a pull request. Tests ===== Having a wide and comprehensive library of unit-tests and integration tests is of exceeding importance. Contributing tests is widely regarded as a very prestigious contribution (you're making everybody's future work much easier by doing so). Good karma for you. Cookie points. Maybe even a beer if we meet in person :) Generally tests should be: - Unitary (as much as possible). I.E. should test as much as possible only on one function/method/class. That's the very definition of unit tests. Integration tests are also interesting obviously, but require more time to maintain since they have a higher probability of breaking. - Short running. No hard numbers here, but if your one test doubles the time it takes for everybody to run them, it's probably an indication that you're doing it wrong. In a similar way to code, pull requests will be reviewed before pulling (obviously), and we encourage discussion via code review (everybody learns something this way) or in the IRC channel. Running the tests ----------------- There is a Makefile in the repository which aids in setting up a virtualenv and running the tests:: $ make test You can manually create the virtualenv using:: $ make testenv This will install a virtualenv with py.test and the latest stable version of Django. The virtualenv can then be activated with:: $ source bin/activate Then, simply invoke py.test to run the test suite:: $ py.test --ds=tests.settings_sqlite tox can be used to run the test suite under different configurations by invoking:: $ tox There is a huge number of unique test configurations (98 at the time of writing), running them all will take a long time. All valid configurations can be found in `tox.ini`. To test against a few of them, invoke tox with the `-e` flag:: $ tox -e python3.3-1.7-postgres,python2.7-1.5-sqlite This will run the tests on Python 3.3/Django 1.7/PostgeSQL and Python 2.7/Django 1.5/SQLite. The tox and Travis CI configuration is generated by the script `generate_configurations.py` in the root directory. To add tests for a new Python or Django version, simply update the script and run it to regenerate the configuration files. Measuring test coverage ----------------------- Some of the tests are executed in subprocesses. Because of that regular coverage measurements (using pytest-cov plugin) are not reliable. If you want to measure coverage you'll need to create .pth file as described in `subprocess section of coverage documentation`_. If you're using ``setup.py develop`` you should uninstall pytest_django (using pip) for the time of measuring coverage. You'll also need mysql and postgres databases. There are predefined settings for each database in the tests directory. You may want to modify these files but please don't include them in your pull requests. After this short initial setup you're ready to run tests:: $ COVERAGE_PROCESS_START=`pwd`/.coveragerc COVERAGE_FILE=`pwd`/.coverage PYTHONPATH=`pwd` py.test --ds=tests.postgres_settings You should repeat the above step for sqlite and mysql before the next step. This step will create a lot of ``.coverage`` files with additional suffixes for every process. The final step is to combine all the files created by different processes and generate the html coverage report:: $ coverage combine $ coverage html Your coverage report is now ready in the ``htmlcov`` directory. Continuous integration ---------------------- `Travis`_ is used to automatically run all tests against all supported versions of Python, Django and different database backends. The `pytest-django Travis`_ page shows the latest test run. Travis will automatically pick up pull requests, test them and report the result directly in the pull request. ************************** Contributing Documentation ************************** Perhaps considered "boring" by hard-core coders, documentation is sometimes even more important than code! This is what brings fresh blood to a project, and serves as a reference for oldtimers. On top of this, documentation is the one area where less technical people can help most - you just need to write a semi-decent English. People need to understand you. We don't care about style or correctness. Documentation should be: - We use `Sphinx`_/`restructuredText`_. So obviously this is the format you should use :) File extensions should be .rst. - Written in English. We can discuss how it would bring more people to the project to have a Klingon translation or anything, but that's a problem we will ask ourselves when we already have a good documentation in English. - Accessible. You should assume the reader to be moderately familiar with Python and Django, but not anything else. Link to documentation of libraries you use, for example, even if they are "obvious" to you (South is the first example that comes to mind - it's obvious to any Django programmer, but not to any newbie at all). A brief description of what it does is also welcome. Pulling of documentation is pretty fast and painless. Usually somebody goes over your text and merges it, since there are no "breaks" and that GitHub parses rst files automagically it's really convenient to work with. Also, contributing to the documentation will earn you great respect from the core developers. You get good karma just like a test contributor, but you get double cookie points. Seriously. You rock. .. note:: This very document is based on the contributing docs of the `django CMS`_ project. Many thanks for allowing us to steal it! .. _fork: https://github.com/pytest-dev/pytest-django .. _issue tracker: https://github.com/pytest-dev/pytest-django/issues .. _Sphinx: http://sphinx.pocoo.org/ .. _PEP8: http://www.python.org/dev/peps/pep-0008/ .. _GitHub : http://www.github.com .. _GitHub help : http://help.github.com .. _freenode : http://freenode.net/ .. _@andreaspelme : https://twitter.com/andreaspelme .. _pull request : http://help.github.com/send-pull-requests/ .. _git : http://git-scm.com/ .. _restructuredText: http://docutils.sourceforge.net/docs/ref/rst/introduction.html .. _django CMS: https://www.django-cms.org/ .. _Travis: https://travis-ci.org/ .. _pytest-django Travis: https://travis-ci.org/pytest-dev/pytest-django .. _`subprocess section of coverage documentation`: http://nedbatchelder.com/code/coverage/subprocess.html pytest-django-2.9.1/docs/database.rst0000644000076500000240000001166212555155111020310 0ustar andreasstaff00000000000000Database creation/re-use ======================== ``pytest-django`` takes a conservative approach to enabling database access. By default your tests will fail if they try to access the database. Only if you explicitly request database access will this be allowed. This encourages you to keep database-needing tests to a minimum which is a best practice since next-to-no business logic should be requiring the database. Moreover it makes it very clear what code uses the database and catches any mistakes. Enabling database access ------------------------ You can use `py.test marks `_ to tell ``pytest-django`` your test needs database access:: import pytest @pytest.mark.django_db def test_my_user(): me = User.objects.get(username='me') assert me.is_superuser It is also possible to mark all tests in a class or module at once. This demonstrates all the ways of marking, even though they overlap. Just one of these marks would have been sufficient. See the `py.test documentation `_ for detail:: import pytest pytestmark = pytest.mark.django_db @pytest.mark.django_db class TestUsers: pytestmark = pytest.mark.django_db def test_my_user(self): me = User.objects.get(username='me') assert me.is_superuser By default ``pytest-django`` will set up the Django databases the first time a test needs them. Once setup the database is cached for used for all subsequent tests and rolls back transactions to isolate tests from each other. This is the same way the standard Django `TestCase `_ uses the database. However ``pytest-django`` also caters for transaction test cases and allows you to keep the test databases configured across different test runs. Testing transactions -------------------- Django itself has the ``TransactionTestCase`` which allows you to test transactions and will flush the database between tests to isolate them. The downside of this is that these tests are much slower to set up due to the required flushing of the database. ``pytest-django`` also supports this style of tests, which you can select using an argument to the ``django_db`` mark:: @pytest.mark.django_db(transaction=True) def test_spam(): pass # test relying on transactions Tests requiring multiple databases ---------------------------------- Currently ``pytest-django`` does not specifically support Django's multi-database support. You can however use normal Django ``TestCase`` instances to use it's `multi_db `_ support. If you have any ideas about the best API to support multiple databases directly in ``pytest-django`` please get in touch, we are interested in eventually supporting this but unsure about simply following Django's approach. ``--reuse-db`` - reuse the testing database between test runs -------------------------------------------------------------- Using ``--reuse-db`` will create the test database in the same way as ``manage.py test`` usually does. However, after the test run, the test database will not be removed. The next time a test run is started with ``--reuse-db``, the database will instantly be re used. This will allow much faster startup time for tests. This can be especially useful when running a few tests, when there are a lot of database tables to set up. ``--reuse-db`` will not pick up schema changes between test runs. You must run the tests with ``--reuse-db --create-db`` to re-create the database according to the new schema. Running without ``--reuse-db`` is also possible, since the database will automatically be re-created. ``--create-db`` - force re creation of the test database -------------------------------------------------------- When used with ``--reuse-db``, this option will re-create the database, regardless of whether it exists or not. Example work flow with ``--reuse-db`` and ``--create-db``. ----------------------------------------------------------- A good way to use ``--reuse-db`` and ``--create-db`` can be: * Put ``--reuse-db`` in your default options (in your project's ``pytest.ini`` file):: [pytest] addopts = --reuse-db * Just run tests with ``py.test``, on the first run the test database will be created. The next test run it will be reused. * When you alter your database schema, run ``py.test --create-db``, to force re-creation of the test database. ``--nomigrations`` - Disable Django 1.7+ migrations -------------------------------------------------------------- Using ``--nomigrations`` will `disable Django 1.7+ migrations `_ and create the database inspecting all app models (the default behavior of Django until version 1.6). It may be faster when there are several migrations to run in the database setup. pytest-django-2.9.1/docs/faq.rst0000644000076500000240000000563312601473304017313 0ustar andreasstaff00000000000000FAQ === .. _faq-import-error: I see an error saying "could not import myproject.settings" ----------------------------------------------------------- pytest-django tries to automatically add your project to the Python path by looking for a ``manage.py`` file and adding its path to the Python path. If this for some reason fails for you, you have to manage your Python paths explicitly. See the documentation on :ref:`managing_the_python_path_explicitly` for more information. How can I make sure that all my tests run with a specific locale? ----------------------------------------------------------------- Create a `pytest fixture `_ that is automatically run before each test case. To run all tests with the english locale, put the following code in your project's `conftest.py `_ file:: from django.utils.translation import activate @pytest.fixture(autouse=True) def set_default_language(): activate('en') .. _faq-tests-not-being-picked-up: My tests are not being found. Why not? ------------------------------------------------------------------------------------- By default, py.test looks for tests in files named ``test_*.py`` (note that this is not the same as ``test*.py``). If you have your tests in files with other names, they will not be collected. It is common to put tests under ``app_directory/tests/views.py``. To find those tests, create a ``pytest.ini`` file in your project root with the contents:: [pytest] python_files=*.py When debugging test collection problems, the ``--collectonly`` flag and ``-rs`` (report skipped tests) can be helpful. How do South and pytest-django play together? --------------------------------------------- pytest-django detects South and applies its monkey-patch, which gets fixed to handle initial data properly (which South would skip otherwise, because of a bug). The ``SOUTH_TESTS_MIGRATE`` Django setting can be used to control whether migrations are used to construct the test database. Does pytest-django work with the pytest-xdist plugin? ----------------------------------------------------- Yes. pytest-django supports running tests in parallel with pytest-xdist. Each process created by xdist gets its own separate database that is used for the tests. This ensures that each test can run independently, regardless of wheter transactions are tested or not. .. _faq-getting-help: How/where can I get help with pytest/pytest-django? --------------------------------------------------- Usage questions can be asked on StackOverflow with the `pytest tag `_. If you think you've found a bug or something that is wrong in the documentation, feel free to `open an issue on the Github project for pytest-django `_. Direct help can be found in the #pylib IRC channel on irc.freenode.org. pytest-django-2.9.1/docs/helpers.rst0000644000076500000240000001524112555221714020206 0ustar andreasstaff00000000000000.. _helpers: Django helpers ============== Markers ------- ``pytest-django`` registers and uses markers. See the py.test documentation_ on what marks are and for notes on using_ them. .. _documentation: http://pytest.org/latest/mark.html .. _using: http://pytest.org/latest/example/markers.html#marking-whole-classes-or-modules ``pytest.mark.django_db`` - request database access ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. py:function:: pytest.mark.django_db([transaction=False]) This is used to mark a test function as requiring the database. It will ensure the database is setup correctly for the test. Each test will run in its own transaction which will be rolled back at the end of the test. This behavior is the same as Django's standard `django.test.TestCase`_ class. In order for a test to have access to the database it must either be marked using the ``django_db`` mark or request one of the ``db`` or ``transactional_db`` fixtures. Otherwise the test will fail when trying to access the database. :type transaction: bool :param transaction: The ``transaction`` argument will allow the test to use real transactions. With ``transaction=False`` (the default when not specified), transaction operations are noops during the test. This is the same behavior that `django.test.TestCase`_ uses. When ``transaction=True``, the behavior will be the same as `django.test.TransactionTestCase`_ .. note:: If you want access to the Django database *inside a fixture* this marker will not help even if the function requesting your fixture has this marker applied. To access the database in a fixture, the fixture itself will have to request the ``db`` or ``transactional_db`` fixture. See below for a description of them. .. note:: Automatic usage with ``django.test.TestCase``. Test classes that subclass `django.test.TestCase`_ will have access to the database always to make them compatible with existing Django tests. Test classes that subclass Python's ``unittest.TestCase`` need to have the marker applied in order to access the database. .. _django.test.TestCase: https://docs.djangoproject.com/en/dev/topics/testing/overview/#testcase .. _django.test.TransactionTestCase: https://docs.djangoproject.com/en/dev/topics/testing/overview/#transactiontestcase ``pytest.mark.urls`` - override the urlconf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. py:function:: pytest.mark.urls(urls) Specify a different ``settings.ROOT_URLCONF`` module for the marked tests. :type urls: string :param urls: The urlconf module to use for the test, e.g. ``myapp.test_urls``. This is similar to Django's ``TestCase.urls`` attribute. Example usage:: @pytest.mark.urls('myapp.test_urls') def test_something(client): assert 'Success!' in client.get('/some_url_defined_in_test_urls/') ``pytest.mark.ignore_template_errors`` - ignore invalid template variables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ..py:function:: pytest.mark.ignore_template_errors If you run py.test using the ``--fail-on-template-vars`` option, tests will fail should your templates contain any invalid variables. This marker will disable this feature by setting ``settings.TEMPLATE_STRING_IF_INVALID=None`` or the ``string_if_invalid`` template option in Django>=1.7 Example usage:: @pytest.mark.ignore_template_errors def test_something(client): client('some-url-with-invalid-template-vars') Fixtures -------- pytest-django provides some pytest fixtures to provide dependencies for tests. More information on fixtures is available in the `py.test documentation `_. ``rf`` - ``RequestFactory`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ An instance of a `django.test.RequestFactory`_ .. _django.test.RequestFactory: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#django.test.RequestFactory Example """"""" :: from myapp.views import my_view def test_details(rf): request = rf.get('/customer/details') response = my_view(request) assert response.status_code == 200 ``client`` - ``django.test.Client`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An instance of a `django.test.Client`_ .. _django.test.Client: https://docs.djangoproject.com/en/dev/topics/testing/tools/#the-test-client Example """"""" :: def test_with_client(client): response = client.get('/') assert response.content == 'Foobar' ``admin_client`` - ``django.test.Client`` logged in as admin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An instance of a `django.test.Client`_, that is logged in as an admin user. Example """"""" :: def test_an_admin_view(admin_client): response = admin_client.get('/admin/') assert response.status_code == 200 As an extra bonus this will automatically mark the database using the ``django_db`` mark. ``admin_user`` - a admin user (superuser) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An instance of a superuser, with username "admin" and password "password" (in case there is no "admin" user yet). As an extra bonus this will automatically mark the database using the ``django_db`` mark. ``django_user_model`` ~~~~~~~~~~~~~~~~~~~~~ The user model used by Django. This handles different versions of Django. ``django_username_field`` ~~~~~~~~~~~~~~~~~~~~~~~~~ The field name used for the username on the user model. ``db`` ~~~~~~~ This fixture will ensure the Django database is set up. This only required for fixtures which want to use the database themselves. A test function should normally use the :py:func:`~pytest.mark.django_db` mark to signal it needs the database. ``transactional_db`` ~~~~~~~~~~~~~~~~~~~~ This fixture can be used to request access to the database including transaction support. This is only required for fixtures which need database access themselves. A test function would normally use the :py:func:`~pytest.mark.django_db` mark to signal it needs the database. ``live_server`` ~~~~~~~~~~~~~~~ This fixture runs a live Django server in a background thread. The server's URL can be retrieved using the ``live_server.url`` attribute or by requesting it's string value: ``unicode(live_server)``. You can also directly concatenate a string to form a URL: ``live_server + '/foo``. ``settings`` ~~~~~~~~~~~~ This fixture will provide a handle on the django settings module, and automatically revert any changes made to the settings (modifications, additions and deletions). Example """"""" :: def test_with_specific_settings(settings): settings.USE_TZ = True assert settings.USE_TZ pytest-django-2.9.1/docs/index.rst0000644000076500000240000000351412555155111017650 0ustar andreasstaff00000000000000Welcome to pytest-django's documentation! ========================================= pytest-django is a plugin for `py.test `_ that provides a set of useful tools for testing `Django `_ applications and projects. .. toctree:: :maxdepth: 3 tutorial configuring_django managing_python_path usage database helpers faq contributing changelog Why would I use this instead of Django's manage.py test command? ================================================================ Running the test suite with py.test offers some features that are not present in Django's standard test mechanism: * Less boilerplate: no need to import unittest, create a subclass with methods. Just write tests as regular functions. * `Manage test dependencies with fixtures `_ * Database re-use: no need to re-create the test database for every test run. * Run tests in multiple processes for increased speed * There are a lot of other nice plugins available for pytest. * Easy switching: Existing unittest-style tests will still work without any modifications. See the `py.test documentation `_ for more information on py.test. Quick Start =========== 1. ``pip install pytest-django`` 2. Make sure ``DJANGO_SETTINGS_MODULE`` is defined and and run tests with the ``py.test`` command. 3. (Optionally) If you put your tests under a tests directory (the standard Django application layout), and your files are not named ``test_FOO.py``, see the FAQ :ref:`faq-tests-not-being-picked-up`. Bugs? Feature suggestions? ============================ Report issues and feature requests at the `github issue tracker `_. Indices and tables ================== * :ref:`genindex` * :ref:`modindex` pytest-django-2.9.1/docs/make.bat0000644000076500000240000001176611747715402017433 0ustar andreasstaff00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\pytest-django.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\pytest-django.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end pytest-django-2.9.1/docs/Makefile0000644000076500000240000001277012256056313017455 0ustar andreasstaff00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = ifndef SPHINXBUILD SPHINXBUILD = ../bin/sphinx-build endif PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pytest-django.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pytest-django.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/pytest-django" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pytest-django" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." pytest-django-2.9.1/docs/managing_python_path.rst0000644000076500000240000000557712555155111022752 0ustar andreasstaff00000000000000.. _managing_python_path: Managing the Python path ======================== pytest needs to be able to import the code in your project. Normally, when interacting with Django code, the interaction happens via ``manage.py``, which will implicilty add that directory to the Python path. However, when Python is started via the ``py.test`` command, some extra care is needed to have the Python path setup properly. There are two ways to handle this problem, described below. Automatic looking for of Django projects ---------------------------------------- By default, pytest-django tries to find Django projects by automatically looking for the project's ``manage.py`` file and adding its directory to the Python path. Looking for the ``manage.py`` file uses the same algorithm as pytest uses to find ``pytest.ini``, ``tox.ini`` and ``setup.cfg``: Each test root directories parents will be searched for ``manage.py`` files, and it will stop when the first file is found. If you have a custom project setup, have none or multiple ``manage.py`` files in your project, the automatic detection may not be correct. See :ref:`managing_the_python_path_explicilty` for more details on how to configure your environment in that case. .. _managing_the_python_path_explicitly: Managing the Python path explicitly ----------------------------------- First, disable the automatic Django project finder. Add this to ``pytest.ini``, ``setup.cfg`` or ``tox.ini``:: [pytest] django_find_project = false Next, you need to make sure that your project code is available on the Python path. There are multiple ways to achieve this: Managing your project with virtualenv, pip and editable mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The easiest way to have your code available on the Python path when using virtualenv and pip is to have a setup.py file and install your project in editable mode when developing. If you don't already have a setup.py file, creating a setup.py file with this content will get you started:: import setuptools setuptools.setup(name='myproj', version='1.0') This ``setup.py`` file is not sufficient to distribute your package to PyPI or more general packaging, but it should help you get started. Please refer to the `Python Packaging User Guide `_ for more information on packaing Python applications.` To install the project afterwards:: pip install --editable . Your code should then be importable from any Python application. You can also add this directly to your project's requirements.txt file like this:: # requirements.txt -e . django>=1.7 pytest-django Using pytest-pythonpath ~~~~~~~~~~~~~~~~~~~~~~~ You can also use the `pytest-pythonpath `_ plugin to explicitly add paths to the Python path. pytest-django-2.9.1/docs/tutorial.rst0000644000076500000240000000570712555155111020412 0ustar andreasstaff00000000000000Getting started with pytest and pytest-django ============================================= Introduction ------------ pytest and pytest-django are compatible with standard Django test suites and Nose test suites. They should be able to pick up and run existing tests without any or little configuration. This section describes how to get started quickly. Talks, articles and blog posts ------------------------------ * Talk from DjangoCon Europe 2014: `pytest: helps you write better Django apps, by Andreas Pelme `_ * Talk from EuroPython 2013: `Testing Django application with py.test, by Andreas Pelme `_ * Three part blog post tutorial (part 3 mentions Django integration): `pytest: no-boilerplate testing, by Daniel Greenfeld `_ * Blog post: `Django Projects to Django Apps: Converting the Unit Tests, by John Costa `_. For general information and tutorials on pytest, see the `pytest tutorial page `_. Step 1: Installation -------------------- pytest-django can be obtained directly from `PyPI `_, and can be installed with ``pip``:: pip install pytest-django Installing pytest-django will also automatically install the latest version of pytest. ``pytest-django`` uses ``pytest``'s plugin system and can be used right away after installation, there is nothing more to configure. Step 2: Point pytest to your Django settings -------------------------------------------- You need to tell pytest which Django settings that should be used for test runs. The easiest way to achieve this is to create a pytest configuration file with this information. Create a filed called ``pytest.ini`` in your project root directory that contains:: [pytest] DJANGO_SETTINGS_MODULE=yourproject.settings You can also specify your Django settings by setting the ``DJANGO_SETTINGS_MODULE`` environment variable or specifying the ``--ds=yourproject.settings`` command line flag when running the tests. See the full documentation on :ref:`configuring_django_settings`. Step 3: Run your test suite --------------------------- Tests are invoked directly with the ``py.test`` command, instead of ``manage.py test``, that you might be used to:: py.test Do you have problems with pytest not finding your code? See the FAQ :ref:`faq-import-error`. Next steps ---------- The :ref:`usage` section describes more ways to interact with your test suites. pytest-django also provides some :ref:`helpers` to make it easier to write Django tests. Consult the `pytest documentation `_ for more information in pytest itself. Stuck? Need help? ----------------- No problem, see the FAQ on :ref:`faq-getting-help` for information on how to get help. pytest-django-2.9.1/docs/usage.rst0000644000076500000240000000357012555221714017652 0ustar andreasstaff00000000000000.. _usage: Usage and invocations ===================== Basic usage ----------- When using pytest-django, django-admin.py or manage.py is not used to run tests. This makes it possible to invoke py.test and other plugins with all its different options directly. Running a test suite is done by invoking the py.test command directly:: py.test Specific test files or directories can be selected by specifying the test file names directly on the command line:: py.test test_something.py a_directory See the `py.test documentation on Usage and invocations `_ for more help on available parameters. Additional command line options ------------------------------- ``--fail-on-template-vars`` - fail for invalid variables in templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Fail tests that render templates which make use of invalid template variables. Running tests in parallel with pytest-xdist ------------------------------------------- pytest-django supports running tests on multiple processes to speed up test suite run time. This can lead to significant speed improvements on multi core/multi CPU machines. This requires the pytest-xdist plugin to be available, it can usually be installed with:: pip install pytest-xdist You can then run the tests by running:: py.test -n When tests are invoked with xdist, pytest-django will create a separate test database for each process. Each test database will be given a suffix (something like "gw0", "gw1") to map to a xdist process. If your database name is set to "foo", the test database with xdist will be "test_foo_gw0", "test_foo_gw1" etc. See the full documentation on `pytest-xdist `_ for more information. Among other features, pytest-xdist can distribute/coordinate test execution on remote machines. pytest-django-2.9.1/generate_configurations.py0000755000076500000240000002230412604233767022347 0ustar andreasstaff00000000000000#!/usr/bin/env python from __future__ import print_function import itertools from collections import namedtuple from textwrap import dedent # https://xkcd.com/1319/ # https://xkcd.com/1205/ TestEnvBase = namedtuple('TestEnvBase', ['python_version', 'pytest_version', 'django_version', 'settings']) class TestEnv(TestEnvBase): def is_py2(self): return self.python_version.startswith('python2') or self.python_version == 'pypy' def is_py3(self): return self.python_version.startswith('python3') or self.python_version == 'pypy3' def is_pypy(self): return self.python_version.startswith('pypy') # Python to run tox. RUN_PYTHON = '3.5' PYTHON_MAIN_VERSIONS = ['python2.7', 'python3.4'] PYTHON_VERSIONS = ['python2.6', 'python2.7', 'python3.2', 'python3.3', 'python3.4', 'python3.5', 'pypy', 'pypy3'] PYTEST_VERSIONS = ['2.7.3', '2.8.1'] DJANGO_VERSIONS = ['1.4', '1.5', '1.6', '1.7', '1.8', '1.9', 'master'] SETTINGS = ['sqlite', 'sqlite_file', 'mysql_myisam', 'mysql_innodb', 'postgres'] DJANGO_REQUIREMENTS = { '1.4': 'Django>=1.4,<1.5', '1.5': 'Django>=1.5,<1.6', '1.6': 'Django>=1.6,<1.7', '1.7': 'Django>=1.7,<1.8', '1.8': 'Django>=1.8,<1.9', '1.9': 'Django==1.9a1', 'master': 'https://github.com/django/django/archive/master.tar.gz', } TOX_TESTENV_TEMPLATE = dedent(""" [testenv:%(testenv_name)s] commands = %(commands)s basepython = %(python_version)s deps = %(deps)s setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = %(uid)s """) def is_valid_env(env): # Stable database adapters for PyPy+Postgres/MySQL are hard to come by.. if env.is_pypy() and env.settings in ('postgres', 'mysql_myisam', 'mysql_innodb'): return False if env.is_py3(): # Django <1.5 does not support Python 3 if env.django_version == '1.4': return False # MySQL on Python 3 is not supported by Django if env.settings in ('mysql_myisam', 'mysql_innodb'): return False # Django 1.7 dropped Python 2.6 support if env.python_version == 'python2.6' and env.django_version in ('1.7', '1.8', '1.9', 'master'): return False # Django 1.9 dropped Python 3.2 and Python 3.3 support if (env.python_version in ('python3.2', 'python3.3') and env.django_version in ('1.7', '1.8', '1.9', 'master')): return False # Python 3.5 is only supported by Django 1.8+ if env.python_version == 'python3.5': return env.django_version in ('1.8', '1.9', 'master') # pypy3 is compatible with Python 3.2, but Django 1.9 only supports Python 2.7, 3.4+. if env.python_version == 'pypy3' and env.django_version in ('1.9', 'master'): return False return True def requirements(env): yield 'pytest==%s' % (env.pytest_version) yield 'pytest-xdist==1.13.1' yield DJANGO_REQUIREMENTS[env.django_version] yield 'django-configurations==0.8' if env.is_py2(): yield 'south==1.0.2' if env.settings == 'postgres': yield 'psycopg2==2.6.1' if env.settings in ('mysql_myisam', 'mysql_innodb'): yield 'mysql-python==1.2.5' def commands(uid, env): # Django versions prior to 1.7 must have the production database available # https://code.djangoproject.com/ticket/16969 db_name = 'pytest_django_%s' % uid # The sh trickery always exits with 0 if env.settings in ('mysql_myisam', 'mysql_innodb'): yield 'sh -c "mysql -u root -e \'drop database if exists %(name)s;' \ ' create database %(name)s\'" || exit 0' % {'name': db_name} if env.settings == 'postgres': yield 'sh -c "dropdb %(name)s;' \ ' createdb %(name)s || exit 0"' % {'name': db_name} yield 'py.test --ds=pytest_django_test.settings_%s --strict -r fEsxXw {posargs:tests}' % env.settings def testenv_name(env): if len(PYTEST_VERSIONS) == 1: env = [getattr(env, x) for x in env._fields if x != 'pytest_version'] return '-'.join(env) def tox_testenv_config(uid, env): cmds = '\n'.join(' %s' % r for r in commands(uid, env)) deps = '\n'.join(' %s' % r for r in requirements(env)) return TOX_TESTENV_TEMPLATE % { 'testenv_name': testenv_name(env), 'python_version': env.python_version, 'django_version': env.django_version, 'settings': env.settings, 'commands': cmds, 'deps': deps, 'uid': uid, } def generate_all_envs(): products = itertools.product(PYTHON_VERSIONS, PYTEST_VERSIONS, DJANGO_VERSIONS, SETTINGS) for (python_version, pytest_version, django_version, settings) \ in products: env = TestEnv(python_version, pytest_version, django_version, settings) if is_valid_env(env): yield env def generate_default_envs(envs): """ Returns a list of testenvs that include all different Python versions, all Django versions and all database backends. """ result = set() def find_and_add(variations, env_getter): for variation in variations: for existing in result: if env_getter(existing) == variation: break else: for env in reversed(envs): if env_getter(env) == variation: result.add(env) break # Add all Django versions for each main python version (2.x and 3.x). find_and_add(itertools.product(PYTHON_MAIN_VERSIONS, DJANGO_VERSIONS), lambda env: (env.python_version, env.django_version)) find_and_add(PYTHON_VERSIONS, lambda env: env.python_version) find_and_add(PYTEST_VERSIONS, lambda env: env.pytest_version) find_and_add(DJANGO_VERSIONS, lambda env: env.django_version) find_and_add(SETTINGS, lambda env: env.settings) return result def make_tox_ini(envs, default_envs): default_env_names = ([testenv_name(env) for env in default_envs] + ['checkqa-%s' % python_version for python_version in PYTHON_MAIN_VERSIONS]) contents = [dedent(''' [tox] envlist = %(active_envs)s [testenv] whitelist_externals = sh ''' % {'active_envs': ','.join(default_env_names)}).lstrip()] # Add checkqa-testenvs for different PYTHON_VERSIONS. # flake8 is configured in setup.cfg. idx = 0 for python_version in PYTHON_VERSIONS: idx = idx + 1 contents.append(dedent(""" [testenv:checkqa-%(python_version)s] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = %(python_version)s deps = flake8 setenv = UID = %(uid)s""" % { 'python_version': python_version, 'uid': idx, })) for env in envs: idx = idx + 1 contents.append(tox_testenv_config(idx, env)) return '\n'.join(contents) def make_travis_yml(envs): contents = dedent(""" # Use container-based environment (faster startup, allows caches). sudo: false language: python python: - "%(RUN_PYTHON)s" env: %(testenvs)s %(checkenvs)s matrix: allow_failures: %(allow_failures)s install: # Create pip wrapper script, using travis_retry (a function) and # inject it into tox.ini. - mkdir -p bin - PATH=$PWD/bin:$PATH - printf '#!/bin/sh\\n' > bin/travis_retry_pip - declare -f travis_retry >> bin/travis_retry_pip - printf '\\necho "Using pip-wrapper.." >&2\\ntravis_retry pip "$@"' >> bin/travis_retry_pip - chmod +x bin/travis_retry_pip - sed -i.bak 's/^\[testenv\]/\\0\\ninstall_command = travis_retry_pip install {opts} {packages}/' tox.ini - diff tox.ini tox.ini.bak && return 1 || true - sed -i.bak 's/whitelist_externals =/\\0\\n travis_retry_pip/' tox.ini - diff tox.ini tox.ini.bak && return 1 || true - pip install tox script: tox -e $TESTENV """).strip("\n") testenvs = '\n'.join(' - TESTENV=%s' % testenv_name(env) for env in envs) checkenvs = '\n'.join(' - TESTENV=checkqa-%s' % python for python in PYTHON_MAIN_VERSIONS) allow_failures = '\n'.join(' - env: TESTENV=%s' % testenv_name(env) for env in envs if env.django_version == 'master') return contents % { 'testenvs': testenvs, 'checkenvs': checkenvs, 'allow_failures': allow_failures, 'RUN_PYTHON': RUN_PYTHON, } def main(): all_envs = sorted(generate_all_envs()) default_envs = sorted(generate_default_envs(all_envs)) with open('tox.ini', 'w+') as tox_ini_file: tox_ini_file.write(make_tox_ini(all_envs, default_envs)) with open('.travis.yml', 'w+') as travis_yml_file: travis_yml_file.write(make_travis_yml(default_envs)) print ('tox.ini and .travis.yml has been generated!') if __name__ == '__main__': main() pytest-django-2.9.1/LICENSE0000644000076500000240000000621612555221714016071 0ustar andreasstaff00000000000000pytest-django is released under the BSD (3-clause) license ---------------------------------------------------------- Copyright (c) 2015, pytest-django authors (see AUTHORS file) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This version of pytest-django is a fork of pytest_django created by Ben Firshman. --------------------------------------------------------------------------------- Copyright (c) 2009, Ben Firshman All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. pytest-django-2.9.1/Makefile0000644000076500000240000000113112604703302016504 0ustar andreasstaff00000000000000.PHONY: docs test clean isort export DJANGO_SETTINGS_MODULE?=pytest_django_test.settings_sqlite_file testenv: bin/py.test test: bin/py.test bin/pip install -e . bin/py.test bin/python bin/pip: virtualenv . bin/py.test: bin/python requirements.txt bin/pip install -Ur requirements.txt touch $@ bin/sphinx-build: bin/pip bin/pip install sphinx docs: bin/sphinx-build SPHINXBUILD=../bin/sphinx-build $(MAKE) -C docs html # See setup.cfg for configuration. isort: find pytest_django tests -name '*.py' -exec isort {} + clean: rm -rf bin include/ lib/ man/ pytest_django.egg-info/ build/ pytest-django-2.9.1/MANIFEST.in0000644000076500000240000000052512604230150016604 0ustar andreasstaff00000000000000include AUTHORS include README.rst include LICENSE recursive-exclude pytest_django_test * recursive-exclude tests * recursive-exclude .tox * recursive-exclude bin * recursive-exclude src * recursive-exclude .git * recursive-exclude bin * recursive-exclude include * recursive-exclude lib * recursive-exclude share * recursive-exclude src * pytest-django-2.9.1/PKG-INFO0000644000076500000240000000650412605027767016171 0ustar andreasstaff00000000000000Metadata-Version: 1.1 Name: pytest-django Version: 2.9.1 Summary: A Django plugin for py.test. Home-page: http://pytest-django.readthedocs.org/ Author: Andreas Pelme Author-email: andreas@pelme.se License: BSD-3-Clause Description: .. image:: https://secure.travis-ci.org/pytest-dev/pytest-django.png?branch=master :alt: Build Status :target: https://travis-ci.org/pytest-dev/pytest-django Welcome to pytest-django! ========================= pytest-django allows you to test your Django project/applications with the `pytest testing tool `_. * `Quick start / tutorial `_ * Full documentation: http://pytest-django.readthedocs.org/en/latest/ * `Contribution docs `_ * Version compatibility: * Django: 1.4-1.9 and latest master branch (compatible at the time of each release) * Python: CPython 2.6-2.7,3.2-3.4 or PyPy 2,3 * pytest: 2.7.x, 2.8.x * Licence: BSD * Project maintainers: Andreas Pelme, Floris Bruynooghe and Daniel Hahler * `All contributors `_ * Github repository: https://github.com/pytest-dev/pytest-django * `Issue tracker `_ * `Python Package Index (PyPI) `_ Install pytest-django --------------------- :: pip install pytest-django Why would I use this instead of Django's `manage.py test` command? ------------------------------------------------------------------ Running your test suite with pytest-django allows you to tap into the features that are already present in pytest. Here are some advantages: * `Manage test dependencies with pytest fixtures. `_ * Less boilerplate tests: no need to import unittest, create a subclass with methods. Write tests as regular functions. * Database re-use: no need to re-create the test database for every test run. * Run tests in multiple processes for increased speed (with the pytest-xdist plugin). * Make use of other `pytest plugins `_. * Works with both worlds: Existing unittest-style TestCase's still work without any modifications. See the `pytest documentation `_ for more information on pytest itself. Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Framework :: Django Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Testing Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 pytest-django-2.9.1/pytest_django/0000755000076500000240000000000012605027767017741 5ustar andreasstaff00000000000000pytest-django-2.9.1/pytest_django/__init__.py0000644000076500000240000000000012604227106022024 0ustar andreasstaff00000000000000pytest-django-2.9.1/pytest_django/compat.py0000644000076500000240000000155012555155111021564 0ustar andreasstaff00000000000000# In Django 1.6, the old test runner was deprecated, and the useful bits were # moved out of the test runner. import pytest try: from django.test.runner import DiscoverRunner as DjangoTestRunner except ImportError: from django.test.simple import DjangoTestSuiteRunner as DjangoTestRunner _runner = DjangoTestRunner(verbosity=pytest.config.option.verbose, interactive=False) try: from django.test.runner import setup_databases except ImportError: setup_databases = _runner.setup_databases teardown_databases = _runner.teardown_databases try: from django.test.utils import (setup_test_environment, teardown_test_environment) except ImportError: setup_test_environment = _runner.setup_test_environment teardown_test_environment = _runner.teardown_test_environment del _runner pytest-django-2.9.1/pytest_django/db_reuse.py0000644000076500000240000000762112601763440022100 0ustar andreasstaff00000000000000"""Functions to aid in preserving the test database between test runs. The code in this module is heavily inspired by django-nose: https://github.com/jbalogh/django-nose/ """ import os.path import sys import types def test_database_exists_from_previous_run(connection): # Try to open a cursor to the test database test_db_name = connection.creation._get_test_db_name() # When using a real SQLite backend (via TEST_NAME), check if the file # exists, because it gets created automatically. if connection.settings_dict['ENGINE'] == 'django.db.backends.sqlite3': if not os.path.exists(test_db_name): return False orig_db_name = connection.settings_dict['NAME'] connection.settings_dict['NAME'] = test_db_name # With SQLite memory databases the db never exists. if connection.settings_dict['NAME'] == ':memory:': return False try: connection.cursor() return True except Exception: # TODO: Be more discerning but still DB agnostic. return False finally: connection.close() connection.settings_dict['NAME'] = orig_db_name def _monkeypatch(obj, method_name, new_method): assert hasattr(obj, method_name) if sys.version_info < (3, 0): wrapped_method = types.MethodType(new_method, obj, obj.__class__) else: wrapped_method = types.MethodType(new_method, obj) setattr(obj, method_name, wrapped_method) def _get_db_name(db_settings, suffix): "This provides the default test db name that Django uses." from django import VERSION as DJANGO_VERSION name = None try: if DJANGO_VERSION > (1, 7): name = db_settings['TEST']['NAME'] elif DJANGO_VERSION < (1, 7): name = db_settings['TEST_NAME'] except KeyError: pass if not name: if db_settings['ENGINE'] == 'django.db.backends.sqlite3': return ':memory:' else: name = 'test_' + db_settings['NAME'] if suffix: name = '%s_%s' % (name, suffix) return name def monkey_patch_creation_for_db_suffix(suffix=None): from django.db import connections if suffix is not None: def _get_test_db_name(self): """Internal: return the name of the test DB that will be created. This is only useful when called from create_test_db() and _create_test_db() and when no external munging is done with the 'NAME' or 'TEST_NAME' settings. """ db_name = _get_db_name(self.connection.settings_dict, suffix) return db_name for connection in connections.all(): _monkeypatch(connection.creation, '_get_test_db_name', _get_test_db_name) def create_test_db_with_reuse(self, verbosity=1, autoclobber=False, keepdb=False, serialize=False): """ This method is a monkey patched version of create_test_db that will not actually create a new database, but just reuse the existing. """ test_database_name = self._get_test_db_name() self.connection.settings_dict['NAME'] = test_database_name if verbosity >= 1: test_db_repr = '' if verbosity >= 2: test_db_repr = " ('%s')" % test_database_name print("Re-using existing test database for alias '%s'%s..." % ( self.connection.alias, test_db_repr)) # confirm() is not needed/available in Django >= 1.5 # See https://code.djangoproject.com/ticket/17760 if hasattr(self.connection.features, 'confirm'): self.connection.features.confirm() return test_database_name def monkey_patch_creation_for_db_reuse(): from django.db import connections for connection in connections.all(): if test_database_exists_from_previous_run(connection): _monkeypatch(connection.creation, 'create_test_db', create_test_db_with_reuse) pytest-django-2.9.1/pytest_django/django_compat.py0000644000076500000240000000076512555155111023115 0ustar andreasstaff00000000000000# Note that all functions here assume django is available. So ensure # this is the case before you call them. def is_django_unittest(request_or_item): """Returns True if the request_or_item is a Django test case, otherwise False""" try: from django.test import SimpleTestCase as TestCase except ImportError: from django.test import TestCase cls = getattr(request_or_item, 'cls', None) if cls is None: return False return issubclass(cls, TestCase) pytest-django-2.9.1/pytest_django/fixtures.py0000644000076500000240000002735712601773665022203 0ustar andreasstaff00000000000000"""All pytest-django fixtures""" from __future__ import with_statement import os import warnings import pytest from . import live_server_helper from .db_reuse import (monkey_patch_creation_for_db_reuse, monkey_patch_creation_for_db_suffix) from .django_compat import is_django_unittest from .lazy_django import get_django_version, skip_if_no_django __all__ = ['_django_db_setup', 'db', 'transactional_db', 'admin_user', 'django_user_model', 'django_username_field', 'client', 'admin_client', 'rf', 'settings', 'live_server', '_live_server_helper'] # ############### Internal Fixtures ################ @pytest.fixture(scope='session') def _django_db_setup(request, _django_test_environment, _django_cursor_wrapper): """Session-wide database setup, internal to pytest-django""" skip_if_no_django() from .compat import setup_databases, teardown_databases # xdist if hasattr(request.config, 'slaveinput'): db_suffix = request.config.slaveinput['slaveid'] else: db_suffix = None monkey_patch_creation_for_db_suffix(db_suffix) _handle_south() if request.config.getvalue('nomigrations'): _disable_native_migrations() with _django_cursor_wrapper: # Monkey patch Django's setup code to support database re-use if request.config.getvalue('reuse_db'): if not request.config.getvalue('create_db'): monkey_patch_creation_for_db_reuse() # Create the database db_cfg = setup_databases(verbosity=pytest.config.option.verbose, interactive=False) def teardown_database(): with _django_cursor_wrapper: teardown_databases(db_cfg) if not request.config.getvalue('reuse_db'): request.addfinalizer(teardown_database) def _django_db_fixture_helper(transactional, request, _django_cursor_wrapper): if is_django_unittest(request): return if not transactional and 'live_server' in request.funcargnames: # Do nothing, we get called with transactional=True, too. return django_case = None _django_cursor_wrapper.enable() request.addfinalizer(_django_cursor_wrapper.disable) if transactional: from django import get_version if get_version() >= '1.5': from django.test import TransactionTestCase as django_case else: # Django before 1.5 flushed the DB during setUp. # Use pytest-django's old behavior with it. def flushdb(): """Flush the database and close database connections""" # Django does this by default *before* each test # instead of after. from django.db import connections from django.core.management import call_command for db in connections: call_command('flush', interactive=False, database=db, verbosity=pytest.config.option.verbose) for conn in connections.all(): conn.close() request.addfinalizer(flushdb) else: from django.test import TestCase as django_case if django_case: case = django_case(methodName='__init__') case._pre_setup() request.addfinalizer(case._post_teardown) def _handle_south(): from django.conf import settings # NOTE: Django 1.7 does not have `management._commands` anymore, which # is used by South's `patch_for_test_db_setup` and the code below. if 'south' not in settings.INSTALLED_APPS or get_django_version() > (1, 7): return from django.core import management try: # if `south` >= 0.7.1 we can use the test helper from south.management.commands import patch_for_test_db_setup except ImportError: # if `south` < 0.7.1 make sure its migrations are disabled management.get_commands() management._commands['syncdb'] = 'django.core' else: # Monkey-patch south.hacks.django_1_0.SkipFlushCommand to load # initial data. # Ref: http://south.aeracode.org/ticket/1395#comment:3 import south.hacks.django_1_0 from django.core.management.commands.flush import ( Command as FlushCommand) class SkipFlushCommand(FlushCommand): def handle_noargs(self, **options): # Reinstall the initial_data fixture. from django.core.management import call_command # `load_initial_data` got introduces with Django 1.5. load_initial_data = options.get('load_initial_data', None) if load_initial_data or load_initial_data is None: # Reinstall the initial_data fixture. call_command('loaddata', 'initial_data', **options) # no-op to avoid calling flush return south.hacks.django_1_0.SkipFlushCommand = SkipFlushCommand patch_for_test_db_setup() def _disable_native_migrations(): from django.conf import settings from .migrations import DisableMigrations settings.MIGRATION_MODULES = DisableMigrations() # ############### User visible fixtures ################ @pytest.fixture(scope='function') def db(request, _django_db_setup, _django_cursor_wrapper): """Require a django test database This database will be setup with the default fixtures and will have the transaction management disabled. At the end of the test the outer transaction that wraps the test itself will be rolled back to undo any changes to the database (in case the backend supports transactions). This is more limited than the ``transactional_db`` resource but faster. If both this and ``transactional_db`` are requested then the database setup will behave as only ``transactional_db`` was requested. """ if 'transactional_db' in request.funcargnames \ or 'live_server' in request.funcargnames: return request.getfuncargvalue('transactional_db') return _django_db_fixture_helper(False, request, _django_cursor_wrapper) @pytest.fixture(scope='function') def transactional_db(request, _django_db_setup, _django_cursor_wrapper): """Require a django test database with transaction support This will re-initialise the django database for each test and is thus slower than the normal ``db`` fixture. If you want to use the database with transactions you must request this resource. If both this and ``db`` are requested then the database setup will behave as only ``transactional_db`` was requested. """ return _django_db_fixture_helper(True, request, _django_cursor_wrapper) @pytest.fixture() def client(): """A Django test client instance.""" skip_if_no_django() from django.test.client import Client return Client() @pytest.fixture() def django_user_model(db): """The class of Django's user model.""" try: from django.contrib.auth import get_user_model except ImportError: assert get_django_version < (1, 5) from django.contrib.auth.models import User as UserModel else: UserModel = get_user_model() return UserModel @pytest.fixture() def django_username_field(django_user_model): """The fieldname for the username used with Django's user model.""" try: return django_user_model.USERNAME_FIELD except AttributeError: assert get_django_version < (1, 5) return 'username' @pytest.fixture() def admin_user(db, django_user_model, django_username_field): """A Django admin user. This uses an existing user with username "admin", or creates a new one with password "password". """ UserModel = django_user_model username_field = django_username_field try: user = UserModel._default_manager.get(**{username_field: 'admin'}) except UserModel.DoesNotExist: extra_fields = {} if username_field != 'username': extra_fields[username_field] = 'admin' user = UserModel._default_manager.create_superuser( 'admin', 'admin@example.com', 'password', **extra_fields) return user @pytest.fixture() def admin_client(db, admin_user): """A Django test client logged in as an admin user.""" from django.test.client import Client client = Client() client.login(username=admin_user.username, password='password') return client @pytest.fixture() def rf(): """RequestFactory instance""" skip_if_no_django() from django.test.client import RequestFactory return RequestFactory() class MonkeyPatchWrapper(object): def __init__(self, monkeypatch, wrapped_object): super(MonkeyPatchWrapper, self).__setattr__('monkeypatch', monkeypatch) super(MonkeyPatchWrapper, self).__setattr__('wrapped_object', wrapped_object) def __getattr__(self, attr): return getattr(self.wrapped_object, attr) def __setattr__(self, attr, value): self.monkeypatch.setattr(self.wrapped_object, attr, value, raising=False) def __delattr__(self, attr): self.monkeypatch.delattr(self.wrapped_object, attr) @pytest.fixture() def settings(monkeypatch): """A Django settings object which restores changes after the testrun""" skip_if_no_django() from django.conf import settings as django_settings return MonkeyPatchWrapper(monkeypatch, django_settings) @pytest.fixture(scope='session') def live_server(request): """Run a live Django server in the background during tests The address the server is started from is taken from the --liveserver command line option or if this is not provided from the DJANGO_LIVE_TEST_SERVER_ADDRESS environment variable. If neither is provided ``localhost:8081,8100-8200`` is used. See the Django documentation for it's full syntax. NOTE: If the live server needs database access to handle a request your test will have to request database access. Furthermore when the tests want to see data added by the live-server (or the other way around) transactional database access will be needed as data inside a transaction is not shared between the live server and test code. Static assets will be served for all versions of Django. Except for django >= 1.7, if ``django.contrib.staticfiles`` is not installed. """ skip_if_no_django() addr = request.config.getvalue('liveserver') if not addr: addr = os.getenv('DJANGO_LIVE_TEST_SERVER_ADDRESS') if not addr: addr = os.getenv('DJANGO_TEST_LIVE_SERVER_ADDRESS') if addr: warnings.warn('Please use DJANGO_LIVE_TEST_SERVER_ADDRESS' ' instead of DJANGO_TEST_LIVE_SERVER_ADDRESS.', DeprecationWarning) if not addr: addr = 'localhost:8081,8100-8200' server = live_server_helper.LiveServer(addr) request.addfinalizer(server.stop) return server @pytest.fixture(autouse=True, scope='function') def _live_server_helper(request): """Helper to make live_server work, internal to pytest-django. This helper will dynamically request the transactional_db fixture for a test which uses the live_server fixture. This allows the server and test to access the database without having to mark this explicitly which is handy since it is usually required and matches the Django behaviour. The separate helper is required since live_server can not request transactional_db directly since it is session scoped instead of function-scoped. """ if 'live_server' in request.funcargnames: request.getfuncargvalue('transactional_db') pytest-django-2.9.1/pytest_django/lazy_django.py0000644000076500000240000000135212555155111022602 0ustar andreasstaff00000000000000""" Helpers to load Django lazily when Django settings can't be configured. """ import os import sys import pytest def skip_if_no_django(): """Raises a skip exception when no Django settings are available""" if not django_settings_is_configured(): pytest.skip('Test skipped since no Django settings is present.') def django_settings_is_configured(): # Avoid importing Django if it has not yet been imported if not os.environ.get('DJANGO_SETTINGS_MODULE') \ and 'django.conf' not in sys.modules: return False # If DJANGO_SETTINGS_MODULE is defined at this point, Django is assumed to # always be loaded. return True def get_django_version(): return __import__('django').VERSION pytest-django-2.9.1/pytest_django/live_server_helper.py0000644000076500000240000000741012601734151024165 0ustar andreasstaff00000000000000import sys from .lazy_django import get_django_version class LiveServer(object): """The liveserver fixture This is the object which is returned to the actual user when they request the ``live_server`` fixture. The fixture handles creation and stopping however. """ def __init__(self, addr): from django.db import connections from django.test.testcases import LiveServerThread connections_override = {} for conn in connections.all(): # If using in-memory sqlite databases, pass the connections to # the server thread. if (conn.settings_dict['ENGINE'] == 'django.db.backends.sqlite3' and conn.settings_dict['NAME'] == ':memory:'): # Explicitly enable thread-shareability for this connection conn.allow_thread_sharing = True connections_override[conn.alias] = conn liveserver_kwargs = {'connections_override': connections_override} from django.conf import settings if ('django.contrib.staticfiles' in settings.INSTALLED_APPS and get_django_version() >= (1, 7)): from django.contrib.staticfiles.handlers import ( StaticFilesHandler) liveserver_kwargs['static_handler'] = StaticFilesHandler else: try: from django.test.testcases import _StaticFilesHandler except ImportError: pass else: liveserver_kwargs['static_handler'] = _StaticFilesHandler host, possible_ports = parse_addr(addr) self.thread = LiveServerThread(host, possible_ports, **liveserver_kwargs) self.thread.daemon = True self.thread.start() self.thread.is_ready.wait() if self.thread.error: raise self.thread.error def stop(self): """Stop the server""" # .terminate() was added in Django 1.7 terminate = getattr(self.thread, 'terminate', lambda: None) terminate() self.thread.join() @property def url(self): return 'http://%s:%s' % (self.thread.host, self.thread.port) if sys.version_info < (3, 0): def __unicode__(self): return self.url def __add__(self, other): return unicode(self) + other # noqa: pyflakes on python3 else: def __str__(self): return self.url def __add__(self, other): return str(self) + other def __repr__(self): return '' % self.url def parse_addr(specified_address): """Parse the --liveserver argument into a host/IP address and port range""" # This code is based on # django.test.testcases.LiveServerTestCase.setUpClass # The specified ports may be of the form '8000-8010,8080,9200-9300' # i.e. a comma-separated list of ports or ranges of ports, so we break # it down into a detailed list of all possible ports. possible_ports = [] try: host, port_ranges = specified_address.split(':') for port_range in port_ranges.split(','): # A port range can be of either form: '8000' or '8000-8010'. extremes = list(map(int, port_range.split('-'))) assert len(extremes) in (1, 2) if len(extremes) == 1: # Port range of the form '8000' possible_ports.append(extremes[0]) else: # Port range of the form '8000-8010' for port in range(extremes[0], extremes[1] + 1): possible_ports.append(port) except Exception: raise Exception( 'Invalid address ("%s") for live server.' % specified_address) return host, possible_ports pytest-django-2.9.1/pytest_django/migrations.py0000644000076500000240000000035112555155111022453 0ustar andreasstaff00000000000000# code snippet copied from https://gist.github.com/NotSqrt/5f3c76cd15e40ef62d09 class DisableMigrations(object): def __contains__(self, item): return True def __getitem__(self, item): return "notmigrations" pytest-django-2.9.1/pytest_django/plugin.py0000644000076500000240000004515712605027377021622 0ustar andreasstaff00000000000000"""A py.test plugin which helps testing Django applications This plugin handles creating and destroying the test environment and test database and provides some useful text fixtures. """ import contextlib import inspect from functools import reduce import os import sys import types import py import pytest from .django_compat import is_django_unittest from .fixtures import (_django_db_setup, _live_server_helper, admin_client, admin_user, client, db, django_user_model, django_username_field, live_server, rf, settings, transactional_db) from .lazy_django import django_settings_is_configured, skip_if_no_django # Silence linters for imported fixtures. (_django_db_setup, _live_server_helper, admin_client, admin_user, client, db, django_user_model, django_username_field, live_server, rf, settings, transactional_db) SETTINGS_MODULE_ENV = 'DJANGO_SETTINGS_MODULE' CONFIGURATION_ENV = 'DJANGO_CONFIGURATION' INVALID_TEMPLATE_VARS_ENV = 'FAIL_INVALID_TEMPLATE_VARS' # ############### pytest hooks ################ def pytest_addoption(parser): group = parser.getgroup('django') group._addoption('--reuse-db', action='store_true', dest='reuse_db', default=False, help='Re-use the testing database if it already exists, ' 'and do not remove it when the test finishes. This ' 'option will be ignored when --no-db is given.') group._addoption('--create-db', action='store_true', dest='create_db', default=False, help='Re-create the database, even if it exists. This ' 'option will be ignored if not --reuse-db is given.') group._addoption('--ds', action='store', type='string', dest='ds', default=None, help='Set DJANGO_SETTINGS_MODULE.') group._addoption('--dc', action='store', type='string', dest='dc', default=None, help='Set DJANGO_CONFIGURATION.') group._addoption('--nomigrations', action='store_true', dest='nomigrations', default=False, help='Disable Django 1.7 migrations on test setup') parser.addini(CONFIGURATION_ENV, 'django-configurations class to use by pytest-django.') group._addoption('--liveserver', default=None, help='Address and port for the live_server fixture.') parser.addini(SETTINGS_MODULE_ENV, 'Django settings module to use by pytest-django.') parser.addini('django_find_project', 'Automatically find and add a Django project to the ' 'Python path.', default=True) group._addoption('--fail-on-template-vars', action='store_true', dest='itv', default=False, help='Fail for invalid variables in templates.') parser.addini(INVALID_TEMPLATE_VARS_ENV, 'Fail for invalid variables in templates.', default=False) def _exists(path, ignore=EnvironmentError): try: return path.check() except ignore: return False PROJECT_FOUND = ('pytest-django found a Django project in %s ' '(it contains manage.py) and added it to the Python path.\n' 'If this is wrong, add "django_find_project = false" to ' 'pytest.ini and explicitly manage your Python path.') PROJECT_NOT_FOUND = ('pytest-django could not find a Django project ' '(no manage.py file could be found). You must ' 'explicitly add your Django project to the Python path ' 'to have it picked up.') PROJECT_SCAN_DISABLED = ('pytest-django did not search for Django ' 'projects since it is disabled in the configuration ' '("django_find_project = false")') @contextlib.contextmanager def _handle_import_error(extra_message): try: yield except ImportError as e: django_msg = (e.args[0] + '\n\n') if e.args else '' msg = django_msg + extra_message raise ImportError(msg) def _add_django_project_to_path(args): args = [x for x in args if not str(x).startswith("-")] if not args: args = [py.path.local()] for arg in args: arg = py.path.local(arg) for base in arg.parts(reverse=True): manage_py_try = base.join('manage.py') if _exists(manage_py_try): sys.path.insert(0, str(base)) return PROJECT_FOUND % base return PROJECT_NOT_FOUND def _setup_django(): if 'django' not in sys.modules: return import django if hasattr(django, 'setup'): django.setup() else: # Emulate Django 1.7 django.setup() with get_models from django.db.models import get_models get_models() def _parse_django_find_project_ini(x): if x in (True, False): return x x = x.lower() possible_values = {'true': True, 'false': False, '1': True, '0': False} try: return possible_values[x] except KeyError: raise ValueError('%s is not a valid value for django_find_project. ' 'It must be one of %s.' % (x, ', '.join(possible_values.keys()))) def pytest_load_initial_conftests(early_config, parser, args): # Register the marks early_config.addinivalue_line( 'markers', 'django_db(transaction=False): Mark the test as using ' 'the django test database. The *transaction* argument marks will ' "allow you to use real transactions in the test like Django's " 'TransactionTestCase.') early_config.addinivalue_line( 'markers', 'urls(modstr): Use a different URLconf for this test, similar to ' 'the `urls` attribute of Django `TestCase` objects. *modstr* is ' 'a string specifying the module of a URL config, e.g. ' '"my_app.test_urls".') options = parser.parse_known_args(args) if options.version or options.help: return django_find_project = _parse_django_find_project_ini( early_config.getini('django_find_project')) if django_find_project: _django_project_scan_outcome = _add_django_project_to_path(args) else: _django_project_scan_outcome = PROJECT_SCAN_DISABLED # Configure FAIL_INVALID_TEMPLATE_VARS itv = (options.itv or os.environ.get(INVALID_TEMPLATE_VARS_ENV) in ['true', 'True', '1'] or early_config.getini(INVALID_TEMPLATE_VARS_ENV)) if itv: os.environ[INVALID_TEMPLATE_VARS_ENV] = 'true' # Configure DJANGO_SETTINGS_MODULE if options.ds: ds_source = 'command line option' ds = options.ds elif SETTINGS_MODULE_ENV in os.environ: ds = os.environ[SETTINGS_MODULE_ENV] ds_source = 'environment variable' elif early_config.getini(SETTINGS_MODULE_ENV): ds = early_config.getini(SETTINGS_MODULE_ENV) ds_source = 'ini file' else: ds = None ds_source = None if ds: early_config._dsm_report_header = 'django settings: %s (from %s)' % (ds, ds_source) else: early_config._dsm_report_header = None # Configure DJANGO_CONFIGURATION dc = (options.dc or os.environ.get(CONFIGURATION_ENV) or early_config.getini(CONFIGURATION_ENV)) if ds: os.environ[SETTINGS_MODULE_ENV] = ds if dc: os.environ[CONFIGURATION_ENV] = dc # Install the django-configurations importer import configurations.importer configurations.importer.install() # Forcefully load django settings, throws ImportError or # ImproperlyConfigured if settings cannot be loaded. from django.conf import settings with _handle_import_error(_django_project_scan_outcome): settings.DATABASES _setup_django() def pytest_report_header(config): if config._dsm_report_header: return [config._dsm_report_header] @pytest.mark.trylast def pytest_configure(): # Allow Django settings to be configured in a user pytest_configure call, # but make sure we call django.setup() _setup_django() def _method_is_defined_at_leaf(cls, method_name): super_method = None for base_cls in cls.__bases__: if hasattr(base_cls, method_name): super_method = getattr(base_cls, method_name) assert super_method is not None, '%s could not be found in base class' % method_name return getattr(cls, method_name).__func__ is not super_method.__func__ _disabled_classmethods = {} def _disable_class_methods(cls): if cls in _disabled_classmethods: return _disabled_classmethods[cls] = ( cls.setUpClass, _method_is_defined_at_leaf(cls, 'setUpClass'), cls.tearDownClass, _method_is_defined_at_leaf(cls, 'tearDownClass'), ) cls.setUpClass = types.MethodType(lambda cls: None, cls) cls.tearDownClass = types.MethodType(lambda cls: None, cls) def _restore_class_methods(cls): (setUpClass, restore_setUpClass, tearDownClass, restore_tearDownClass) = _disabled_classmethods.pop(cls) try: del cls.setUpClass except AttributeError: raise try: del cls.tearDownClass except AttributeError: pass if restore_setUpClass: cls.setUpClass = setUpClass if restore_tearDownClass: cls.tearDownClass = tearDownClass def pytest_runtest_setup(item): if django_settings_is_configured() and is_django_unittest(item): cls = item.cls _disable_class_methods(cls) @pytest.fixture(autouse=True, scope='session') def _django_test_environment(request): """ Ensure that Django is loaded and has its testing environment setup. XXX It is a little dodgy that this is an autouse fixture. Perhaps an email fixture should be requested in order to be able to use the Django email machinery just like you need to request a db fixture for access to the Django database, etc. But without duplicating a lot more of Django's test support code we need to follow this model. """ if django_settings_is_configured(): _setup_django() from django.conf import settings from .compat import setup_test_environment, teardown_test_environment settings.DEBUG = False setup_test_environment() request.addfinalizer(teardown_test_environment) @pytest.fixture(autouse=True, scope='session') def _django_cursor_wrapper(request): """The django cursor wrapper, internal to pytest-django. This will globally disable all database access. The object returned has a .enable() and a .disable() method which can be used to temporarily enable database access. """ if not django_settings_is_configured(): return None # util -> utils rename in Django 1.7 try: import django.db.backends.utils utils_module = django.db.backends.utils except ImportError: import django.db.backends.util utils_module = django.db.backends.util manager = CursorManager(utils_module) manager.disable() request.addfinalizer(manager.restore) return manager @pytest.fixture(autouse=True) def _django_db_marker(request): """Implement the django_db marker, internal to pytest-django. This will dynamically request the ``db`` or ``transactional_db`` fixtures as required by the django_db marker. """ marker = request.keywords.get('django_db', None) if marker: validate_django_db(marker) if marker.transaction: request.getfuncargvalue('transactional_db') else: request.getfuncargvalue('db') @pytest.fixture(autouse=True, scope='class') def _django_setup_unittest(request, _django_cursor_wrapper): """Setup a django unittest, internal to pytest-django.""" if django_settings_is_configured() and is_django_unittest(request): request.getfuncargvalue('_django_test_environment') request.getfuncargvalue('_django_db_setup') _django_cursor_wrapper.enable() cls = request.node.cls _restore_class_methods(cls) cls.setUpClass() _disable_class_methods(cls) def teardown(): _restore_class_methods(cls) cls.tearDownClass() _django_cursor_wrapper.restore() request.addfinalizer(teardown) @pytest.fixture(autouse=True, scope='function') def _django_clear_outbox(): """Clear the django outbox, internal to pytest-django.""" if django_settings_is_configured(): from django.core import mail mail.outbox = [] @pytest.fixture(autouse=True, scope='function') def _django_set_urlconf(request): """Apply the @pytest.mark.urls marker, internal to pytest-django.""" marker = request.keywords.get('urls', None) if marker: skip_if_no_django() import django.conf from django.core.urlresolvers import clear_url_caches, set_urlconf validate_urls(marker) original_urlconf = django.conf.settings.ROOT_URLCONF django.conf.settings.ROOT_URLCONF = marker.urls clear_url_caches() set_urlconf(None) def restore(): django.conf.settings.ROOT_URLCONF = original_urlconf # Copy the pattern from # https://github.com/django/django/blob/master/django/test/signals.py#L152 clear_url_caches() set_urlconf(None) request.addfinalizer(restore) @pytest.fixture(autouse=True, scope='session') def _fail_for_invalid_template_variable(request): """Fixture that fails for invalid variables in templates. This fixture will fail each test that uses django template rendering should a template contain an invalid template variable. The fail message will include the name of the invalid variable and in most cases the template name. It does not raise an exception, but fails, as the stack trace doesn't offer any helpful information to debug. This behavior can be switched off using the marker: ``ignore_template_errors`` """ class InvalidVarException(object): """Custom handler for invalid strings in templates.""" def __init__(self): self.fail = True def __contains__(self, key): """There is a test for '%s' in TEMPLATE_STRING_IF_INVALID.""" return key == '%s' def _get_template(self): from django.template import Template stack = inspect.stack() # finding the ``render`` needle in the stack frame = reduce( lambda x, y: y[3] == 'render' and 'base.py' in y[1] and y or x, stack ) # assert 0, stack frame = frame[0] # finding only the frame locals in all frame members f_locals = reduce( lambda x, y: y[0] == 'f_locals' and y or x, inspect.getmembers(frame) )[1] # ``django.template.base.Template`` template = f_locals['self'] if isinstance(template, Template): return template def __mod__(self, var): """Handle TEMPLATE_STRING_IF_INVALID % var.""" template = self._get_template() if template: msg = "Undefined template variable '%s' in '%s'" % (var, template.name) else: msg = "Undefined template variable '%s'" % var if self.fail: pytest.fail(msg, pytrace=False) else: return msg if os.environ.get(INVALID_TEMPLATE_VARS_ENV, 'false') == 'true': if django_settings_is_configured(): import django from django.conf import settings if django.VERSION >= (1, 8) and settings.TEMPLATES: settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] = InvalidVarException() else: settings.TEMPLATE_STRING_IF_INVALID = InvalidVarException() @pytest.fixture(autouse=True) def _template_string_if_invalid_marker(request): """Apply the @pytest.mark.ignore_template_errors marker, internal to pytest-django.""" marker = request.keywords.get('ignore_template_errors', None) if os.environ.get(INVALID_TEMPLATE_VARS_ENV, 'false') == 'true': if marker and django_settings_is_configured(): import django from django.conf import settings if django.VERSION >= (1, 8) and settings.TEMPLATES: settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'].fail = False else: settings.TEMPLATE_STRING_IF_INVALID.fail = False # ############### Helper Functions ################ class CursorManager(object): """Manager for django.db.backends.util.CursorWrapper. This is the object returned by _django_cursor_wrapper. If created with None as django.db.backends.util the object is a no-op. """ def __init__(self, dbutil): self._dbutil = dbutil self._history = [] self._real_wrapper = dbutil.CursorWrapper def _save_active_wrapper(self): return self._history.append(self._dbutil.CursorWrapper) def _blocking_wrapper(*args, **kwargs): __tracebackhide__ = True __tracebackhide__ # Silence pyflakes pytest.fail('Database access not allowed, ' 'use the "django_db" mark to enable it.') def enable(self): """Enable access to the Django database.""" self._save_active_wrapper() self._dbutil.CursorWrapper = self._real_wrapper def disable(self): """Disable access to the Django database.""" self._save_active_wrapper() self._dbutil.CursorWrapper = self._blocking_wrapper def restore(self): self._dbutil.CursorWrapper = self._history.pop() def __enter__(self): self.enable() def __exit__(self, exc_type, exc_value, traceback): self.restore() def validate_django_db(marker): """Validate the django_db marker. It checks the signature and creates the `transaction` attribute on the marker which will have the correct value. """ def apifun(transaction=False): marker.transaction = transaction apifun(*marker.args, **marker.kwargs) def validate_urls(marker): """Validate the urls marker. It checks the signature and creates the `urls` attribute on the marker which will have the correct value. """ def apifun(urls): marker.urls = urls apifun(*marker.args, **marker.kwargs) pytest-django-2.9.1/pytest_django.egg-info/0000755000076500000240000000000012605027767021433 5ustar andreasstaff00000000000000pytest-django-2.9.1/pytest_django.egg-info/dependency_links.txt0000644000076500000240000000000112605027742025472 0ustar andreasstaff00000000000000 pytest-django-2.9.1/pytest_django.egg-info/entry_points.txt0000644000076500000240000000005212605027742024717 0ustar andreasstaff00000000000000[pytest11] django = pytest_django.plugin pytest-django-2.9.1/pytest_django.egg-info/PKG-INFO0000644000076500000240000000650412605027742022526 0ustar andreasstaff00000000000000Metadata-Version: 1.1 Name: pytest-django Version: 2.9.1 Summary: A Django plugin for py.test. Home-page: http://pytest-django.readthedocs.org/ Author: Andreas Pelme Author-email: andreas@pelme.se License: BSD-3-Clause Description: .. image:: https://secure.travis-ci.org/pytest-dev/pytest-django.png?branch=master :alt: Build Status :target: https://travis-ci.org/pytest-dev/pytest-django Welcome to pytest-django! ========================= pytest-django allows you to test your Django project/applications with the `pytest testing tool `_. * `Quick start / tutorial `_ * Full documentation: http://pytest-django.readthedocs.org/en/latest/ * `Contribution docs `_ * Version compatibility: * Django: 1.4-1.9 and latest master branch (compatible at the time of each release) * Python: CPython 2.6-2.7,3.2-3.4 or PyPy 2,3 * pytest: 2.7.x, 2.8.x * Licence: BSD * Project maintainers: Andreas Pelme, Floris Bruynooghe and Daniel Hahler * `All contributors `_ * Github repository: https://github.com/pytest-dev/pytest-django * `Issue tracker `_ * `Python Package Index (PyPI) `_ Install pytest-django --------------------- :: pip install pytest-django Why would I use this instead of Django's `manage.py test` command? ------------------------------------------------------------------ Running your test suite with pytest-django allows you to tap into the features that are already present in pytest. Here are some advantages: * `Manage test dependencies with pytest fixtures. `_ * Less boilerplate tests: no need to import unittest, create a subclass with methods. Write tests as regular functions. * Database re-use: no need to re-create the test database for every test run. * Run tests in multiple processes for increased speed (with the pytest-xdist plugin). * Make use of other `pytest plugins `_. * Works with both worlds: Existing unittest-style TestCase's still work without any modifications. See the `pytest documentation `_ for more information on pytest itself. Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Framework :: Django Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Testing Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 pytest-django-2.9.1/pytest_django.egg-info/requires.txt0000644000076500000240000000001412605027742024017 0ustar andreasstaff00000000000000pytest>=2.5 pytest-django-2.9.1/pytest_django.egg-info/SOURCES.txt0000644000076500000240000000161312605027767023320 0ustar andreasstaff00000000000000.coveragerc .gitignore .travis.yml AUTHORS LICENSE MANIFEST.in Makefile README.rst generate_configurations.py requirements.txt setup.cfg setup.py tox.ini docs/Makefile docs/changelog.rst docs/conf.py docs/configuring_django.rst docs/contributing.rst docs/database.rst docs/faq.rst docs/helpers.rst docs/index.rst docs/make.bat docs/managing_python_path.rst docs/tutorial.rst docs/usage.rst docs/_static/basic.css docs/_static/rtd.css pytest_django/__init__.py pytest_django/compat.py pytest_django/db_reuse.py pytest_django/django_compat.py pytest_django/fixtures.py pytest_django/lazy_django.py pytest_django/live_server_helper.py pytest_django/migrations.py pytest_django/plugin.py pytest_django.egg-info/PKG-INFO pytest_django.egg-info/SOURCES.txt pytest_django.egg-info/dependency_links.txt pytest_django.egg-info/entry_points.txt pytest_django.egg-info/requires.txt pytest_django.egg-info/top_level.txtpytest-django-2.9.1/pytest_django.egg-info/top_level.txt0000644000076500000240000000001612605027742024153 0ustar andreasstaff00000000000000pytest_django pytest-django-2.9.1/README.rst0000644000076500000240000000420112604703754016547 0ustar andreasstaff00000000000000.. image:: https://secure.travis-ci.org/pytest-dev/pytest-django.png?branch=master :alt: Build Status :target: https://travis-ci.org/pytest-dev/pytest-django Welcome to pytest-django! ========================= pytest-django allows you to test your Django project/applications with the `pytest testing tool `_. * `Quick start / tutorial `_ * Full documentation: http://pytest-django.readthedocs.org/en/latest/ * `Contribution docs `_ * Version compatibility: * Django: 1.4-1.9 and latest master branch (compatible at the time of each release) * Python: CPython 2.6-2.7,3.2-3.4 or PyPy 2,3 * pytest: 2.7.x, 2.8.x * Licence: BSD * Project maintainers: Andreas Pelme, Floris Bruynooghe and Daniel Hahler * `All contributors `_ * Github repository: https://github.com/pytest-dev/pytest-django * `Issue tracker `_ * `Python Package Index (PyPI) `_ Install pytest-django --------------------- :: pip install pytest-django Why would I use this instead of Django's `manage.py test` command? ------------------------------------------------------------------ Running your test suite with pytest-django allows you to tap into the features that are already present in pytest. Here are some advantages: * `Manage test dependencies with pytest fixtures. `_ * Less boilerplate tests: no need to import unittest, create a subclass with methods. Write tests as regular functions. * Database re-use: no need to re-create the test database for every test run. * Run tests in multiple processes for increased speed (with the pytest-xdist plugin). * Make use of other `pytest plugins `_. * Works with both worlds: Existing unittest-style TestCase's still work without any modifications. See the `pytest documentation `_ for more information on pytest itself. pytest-django-2.9.1/requirements.txt0000644000076500000240000000010512604703302020330 0ustar andreasstaff00000000000000-e . django django-configurations pytest-xdist tox wheel twine south pytest-django-2.9.1/setup.cfg0000644000076500000240000000056712605027767016720 0ustar andreasstaff00000000000000[pytest] addopts = --ignore lib/ --ignore build/ --ignore include/ --ignore local/ --ignore src/ --strict -r fEsxXw django_settings_module = pytest_django_test.settings_sqlite_file [wheel] universal = 1 [flake8] ignore = NONE max-line-length = 99 [isort] forced_separate = tests,pytest_django,pytest_django_test [egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 pytest-django-2.9.1/setup.py0000755000076500000240000000334012604227423016572 0ustar andreasstaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import codecs import os from setuptools import setup # Utility function to read the README file. # Used for the long_description. It's nice, because now 1) we have a top level # README file and 2) it's easier to type in the README file than to put a raw # string in below ... def read(fname): file_path = os.path.join(os.path.dirname(__file__), fname) return codecs.open(file_path, encoding='utf-8').read() setup( name='pytest-django', use_scm_version=True, description='A Django plugin for py.test.', author='Andreas Pelme', author_email='andreas@pelme.se', maintainer="Andreas Pelme", maintainer_email="andreas@pelme.se", url='http://pytest-django.readthedocs.org/', license='BSD-3-Clause', packages=['pytest_django'], long_description=read('README.rst'), setup_requires=['setuptools_scm==1.8.0'], install_requires=['pytest>=2.5'], classifiers=['Development Status :: 5 - Production/Stable', 'Framework :: Django', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Topic :: Software Development :: Testing', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', ], # the following makes a plugin available to py.test entry_points={'pytest11': ['django = pytest_django.plugin']}) pytest-django-2.9.1/tox.ini0000644000076500000240000026052212604233767016407 0ustar andreasstaff00000000000000[tox] envlist = pypy-2.8.1-master-sqlite_file,pypy3-2.8.1-1.8-sqlite_file,python2.6-2.8.1-1.6-sqlite_file,python2.7-2.8.1-1.4-sqlite_file,python2.7-2.8.1-1.5-sqlite_file,python2.7-2.8.1-1.6-sqlite_file,python2.7-2.8.1-1.7-sqlite_file,python2.7-2.8.1-1.8-sqlite_file,python2.7-2.8.1-1.9-sqlite_file,python2.7-2.8.1-master-mysql_innodb,python2.7-2.8.1-master-mysql_myisam,python2.7-2.8.1-master-sqlite_file,python3.2-2.8.1-1.6-sqlite_file,python3.3-2.8.1-1.6-sqlite_file,python3.4-2.8.1-1.5-sqlite_file,python3.4-2.8.1-1.6-sqlite_file,python3.4-2.8.1-1.7-sqlite_file,python3.4-2.8.1-1.8-sqlite_file,python3.4-2.8.1-1.9-sqlite_file,python3.4-2.8.1-master-sqlite_file,python3.5-2.7.3-master-sqlite_file,python3.5-2.8.1-master-postgres,python3.5-2.8.1-master-sqlite,python3.5-2.8.1-master-sqlite_file,checkqa-python2.7,checkqa-python3.4 [testenv] whitelist_externals = sh [testenv:checkqa-python2.6] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = python2.6 deps = flake8 setenv = UID = 1 [testenv:checkqa-python2.7] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = python2.7 deps = flake8 setenv = UID = 2 [testenv:checkqa-python3.2] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = python3.2 deps = flake8 setenv = UID = 3 [testenv:checkqa-python3.3] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = python3.3 deps = flake8 setenv = UID = 4 [testenv:checkqa-python3.4] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = python3.4 deps = flake8 setenv = UID = 5 [testenv:checkqa-python3.5] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = python3.5 deps = flake8 setenv = UID = 6 [testenv:checkqa-pypy] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = pypy deps = flake8 setenv = UID = 7 [testenv:checkqa-pypy3] commands = flake8 --version flake8 --show-source --statistics pytest_django tests basepython = pypy3 deps = flake8 setenv = UID = 8 [testenv:pypy-2.7.3-1.4-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 9 [testenv:pypy-2.7.3-1.4-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 10 [testenv:pypy-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 11 [testenv:pypy-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 12 [testenv:pypy-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 13 [testenv:pypy-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 14 [testenv:pypy-2.7.3-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 15 [testenv:pypy-2.7.3-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 16 [testenv:pypy-2.7.3-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 17 [testenv:pypy-2.7.3-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 18 [testenv:pypy-2.7.3-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 19 [testenv:pypy-2.7.3-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 20 [testenv:pypy-2.7.3-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 21 [testenv:pypy-2.7.3-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 22 [testenv:pypy-2.8.1-1.4-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 23 [testenv:pypy-2.8.1-1.4-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 24 [testenv:pypy-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 25 [testenv:pypy-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 26 [testenv:pypy-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 27 [testenv:pypy-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 28 [testenv:pypy-2.8.1-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 29 [testenv:pypy-2.8.1-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 30 [testenv:pypy-2.8.1-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 31 [testenv:pypy-2.8.1-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 32 [testenv:pypy-2.8.1-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 33 [testenv:pypy-2.8.1-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 34 [testenv:pypy-2.8.1-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 35 [testenv:pypy-2.8.1-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 36 [testenv:pypy3-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 37 [testenv:pypy3-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 38 [testenv:pypy3-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 39 [testenv:pypy3-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 40 [testenv:pypy3-2.7.3-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 41 [testenv:pypy3-2.7.3-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 42 [testenv:pypy3-2.7.3-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 43 [testenv:pypy3-2.7.3-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 44 [testenv:pypy3-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 45 [testenv:pypy3-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 46 [testenv:pypy3-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 47 [testenv:pypy3-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 48 [testenv:pypy3-2.8.1-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 49 [testenv:pypy3-2.8.1-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 50 [testenv:pypy3-2.8.1-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 51 [testenv:pypy3-2.8.1-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = pypy3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 52 [testenv:python2.6-2.7.3-1.4-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_53; create database pytest_django_53'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 53 [testenv:python2.6-2.7.3-1.4-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_54; create database pytest_django_54'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 54 [testenv:python2.6-2.7.3-1.4-postgres] commands = sh -c "dropdb pytest_django_55; createdb pytest_django_55 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 55 [testenv:python2.6-2.7.3-1.4-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 56 [testenv:python2.6-2.7.3-1.4-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 57 [testenv:python2.6-2.7.3-1.5-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_58; create database pytest_django_58'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 58 [testenv:python2.6-2.7.3-1.5-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_59; create database pytest_django_59'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 59 [testenv:python2.6-2.7.3-1.5-postgres] commands = sh -c "dropdb pytest_django_60; createdb pytest_django_60 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 60 [testenv:python2.6-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 61 [testenv:python2.6-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 62 [testenv:python2.6-2.7.3-1.6-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_63; create database pytest_django_63'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 63 [testenv:python2.6-2.7.3-1.6-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_64; create database pytest_django_64'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 64 [testenv:python2.6-2.7.3-1.6-postgres] commands = sh -c "dropdb pytest_django_65; createdb pytest_django_65 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 65 [testenv:python2.6-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 66 [testenv:python2.6-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 67 [testenv:python2.6-2.8.1-1.4-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_68; create database pytest_django_68'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 68 [testenv:python2.6-2.8.1-1.4-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_69; create database pytest_django_69'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 69 [testenv:python2.6-2.8.1-1.4-postgres] commands = sh -c "dropdb pytest_django_70; createdb pytest_django_70 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 70 [testenv:python2.6-2.8.1-1.4-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 71 [testenv:python2.6-2.8.1-1.4-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 72 [testenv:python2.6-2.8.1-1.5-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_73; create database pytest_django_73'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 73 [testenv:python2.6-2.8.1-1.5-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_74; create database pytest_django_74'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 74 [testenv:python2.6-2.8.1-1.5-postgres] commands = sh -c "dropdb pytest_django_75; createdb pytest_django_75 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 75 [testenv:python2.6-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 76 [testenv:python2.6-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 77 [testenv:python2.6-2.8.1-1.6-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_78; create database pytest_django_78'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 78 [testenv:python2.6-2.8.1-1.6-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_79; create database pytest_django_79'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 79 [testenv:python2.6-2.8.1-1.6-postgres] commands = sh -c "dropdb pytest_django_80; createdb pytest_django_80 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 80 [testenv:python2.6-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 81 [testenv:python2.6-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.6 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 82 [testenv:python2.7-2.7.3-1.4-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_83; create database pytest_django_83'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 83 [testenv:python2.7-2.7.3-1.4-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_84; create database pytest_django_84'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 84 [testenv:python2.7-2.7.3-1.4-postgres] commands = sh -c "dropdb pytest_django_85; createdb pytest_django_85 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 85 [testenv:python2.7-2.7.3-1.4-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 86 [testenv:python2.7-2.7.3-1.4-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 87 [testenv:python2.7-2.7.3-1.5-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_88; create database pytest_django_88'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 88 [testenv:python2.7-2.7.3-1.5-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_89; create database pytest_django_89'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 89 [testenv:python2.7-2.7.3-1.5-postgres] commands = sh -c "dropdb pytest_django_90; createdb pytest_django_90 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 90 [testenv:python2.7-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 91 [testenv:python2.7-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 92 [testenv:python2.7-2.7.3-1.6-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_93; create database pytest_django_93'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 93 [testenv:python2.7-2.7.3-1.6-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_94; create database pytest_django_94'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 94 [testenv:python2.7-2.7.3-1.6-postgres] commands = sh -c "dropdb pytest_django_95; createdb pytest_django_95 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 95 [testenv:python2.7-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 96 [testenv:python2.7-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 97 [testenv:python2.7-2.7.3-1.7-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_98; create database pytest_django_98'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 98 [testenv:python2.7-2.7.3-1.7-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_99; create database pytest_django_99'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 99 [testenv:python2.7-2.7.3-1.7-postgres] commands = sh -c "dropdb pytest_django_100; createdb pytest_django_100 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 100 [testenv:python2.7-2.7.3-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 101 [testenv:python2.7-2.7.3-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 102 [testenv:python2.7-2.7.3-1.8-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_103; create database pytest_django_103'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 103 [testenv:python2.7-2.7.3-1.8-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_104; create database pytest_django_104'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 104 [testenv:python2.7-2.7.3-1.8-postgres] commands = sh -c "dropdb pytest_django_105; createdb pytest_django_105 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 105 [testenv:python2.7-2.7.3-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 106 [testenv:python2.7-2.7.3-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 107 [testenv:python2.7-2.7.3-1.9-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_108; create database pytest_django_108'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 108 [testenv:python2.7-2.7.3-1.9-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_109; create database pytest_django_109'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 109 [testenv:python2.7-2.7.3-1.9-postgres] commands = sh -c "dropdb pytest_django_110; createdb pytest_django_110 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 110 [testenv:python2.7-2.7.3-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 111 [testenv:python2.7-2.7.3-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 112 [testenv:python2.7-2.7.3-master-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_113; create database pytest_django_113'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 113 [testenv:python2.7-2.7.3-master-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_114; create database pytest_django_114'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 114 [testenv:python2.7-2.7.3-master-postgres] commands = sh -c "dropdb pytest_django_115; createdb pytest_django_115 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 115 [testenv:python2.7-2.7.3-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 116 [testenv:python2.7-2.7.3-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 117 [testenv:python2.7-2.8.1-1.4-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_118; create database pytest_django_118'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 118 [testenv:python2.7-2.8.1-1.4-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_119; create database pytest_django_119'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 119 [testenv:python2.7-2.8.1-1.4-postgres] commands = sh -c "dropdb pytest_django_120; createdb pytest_django_120 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 120 [testenv:python2.7-2.8.1-1.4-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 121 [testenv:python2.7-2.8.1-1.4-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.4,<1.5 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 122 [testenv:python2.7-2.8.1-1.5-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_123; create database pytest_django_123'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 123 [testenv:python2.7-2.8.1-1.5-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_124; create database pytest_django_124'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 124 [testenv:python2.7-2.8.1-1.5-postgres] commands = sh -c "dropdb pytest_django_125; createdb pytest_django_125 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 125 [testenv:python2.7-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 126 [testenv:python2.7-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 127 [testenv:python2.7-2.8.1-1.6-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_128; create database pytest_django_128'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 128 [testenv:python2.7-2.8.1-1.6-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_129; create database pytest_django_129'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 129 [testenv:python2.7-2.8.1-1.6-postgres] commands = sh -c "dropdb pytest_django_130; createdb pytest_django_130 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 130 [testenv:python2.7-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 131 [testenv:python2.7-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 132 [testenv:python2.7-2.8.1-1.7-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_133; create database pytest_django_133'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 133 [testenv:python2.7-2.8.1-1.7-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_134; create database pytest_django_134'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 134 [testenv:python2.7-2.8.1-1.7-postgres] commands = sh -c "dropdb pytest_django_135; createdb pytest_django_135 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 135 [testenv:python2.7-2.8.1-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 136 [testenv:python2.7-2.8.1-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 137 [testenv:python2.7-2.8.1-1.8-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_138; create database pytest_django_138'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 138 [testenv:python2.7-2.8.1-1.8-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_139; create database pytest_django_139'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 139 [testenv:python2.7-2.8.1-1.8-postgres] commands = sh -c "dropdb pytest_django_140; createdb pytest_django_140 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 140 [testenv:python2.7-2.8.1-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 141 [testenv:python2.7-2.8.1-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 142 [testenv:python2.7-2.8.1-1.9-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_143; create database pytest_django_143'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 143 [testenv:python2.7-2.8.1-1.9-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_144; create database pytest_django_144'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 144 [testenv:python2.7-2.8.1-1.9-postgres] commands = sh -c "dropdb pytest_django_145; createdb pytest_django_145 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 145 [testenv:python2.7-2.8.1-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 146 [testenv:python2.7-2.8.1-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 147 [testenv:python2.7-2.8.1-master-mysql_innodb] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_148; create database pytest_django_148'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_innodb --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 148 [testenv:python2.7-2.8.1-master-mysql_myisam] commands = sh -c "mysql -u root -e 'drop database if exists pytest_django_149; create database pytest_django_149'" || exit 0 py.test --ds=pytest_django_test.settings_mysql_myisam --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 mysql-python==1.2.5 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 149 [testenv:python2.7-2.8.1-master-postgres] commands = sh -c "dropdb pytest_django_150; createdb pytest_django_150 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 150 [testenv:python2.7-2.8.1-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 151 [testenv:python2.7-2.8.1-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python2.7 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 south==1.0.2 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 152 [testenv:python3.2-2.7.3-1.5-postgres] commands = sh -c "dropdb pytest_django_153; createdb pytest_django_153 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 153 [testenv:python3.2-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 154 [testenv:python3.2-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 155 [testenv:python3.2-2.7.3-1.6-postgres] commands = sh -c "dropdb pytest_django_156; createdb pytest_django_156 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 156 [testenv:python3.2-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 157 [testenv:python3.2-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 158 [testenv:python3.2-2.8.1-1.5-postgres] commands = sh -c "dropdb pytest_django_159; createdb pytest_django_159 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 159 [testenv:python3.2-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 160 [testenv:python3.2-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 161 [testenv:python3.2-2.8.1-1.6-postgres] commands = sh -c "dropdb pytest_django_162; createdb pytest_django_162 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 162 [testenv:python3.2-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 163 [testenv:python3.2-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.2 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 164 [testenv:python3.3-2.7.3-1.5-postgres] commands = sh -c "dropdb pytest_django_165; createdb pytest_django_165 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 165 [testenv:python3.3-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 166 [testenv:python3.3-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 167 [testenv:python3.3-2.7.3-1.6-postgres] commands = sh -c "dropdb pytest_django_168; createdb pytest_django_168 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 168 [testenv:python3.3-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 169 [testenv:python3.3-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 170 [testenv:python3.3-2.8.1-1.5-postgres] commands = sh -c "dropdb pytest_django_171; createdb pytest_django_171 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 171 [testenv:python3.3-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 172 [testenv:python3.3-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 173 [testenv:python3.3-2.8.1-1.6-postgres] commands = sh -c "dropdb pytest_django_174; createdb pytest_django_174 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 174 [testenv:python3.3-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 175 [testenv:python3.3-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.3 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 176 [testenv:python3.4-2.7.3-1.5-postgres] commands = sh -c "dropdb pytest_django_177; createdb pytest_django_177 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 177 [testenv:python3.4-2.7.3-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 178 [testenv:python3.4-2.7.3-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 179 [testenv:python3.4-2.7.3-1.6-postgres] commands = sh -c "dropdb pytest_django_180; createdb pytest_django_180 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 180 [testenv:python3.4-2.7.3-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 181 [testenv:python3.4-2.7.3-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 182 [testenv:python3.4-2.7.3-1.7-postgres] commands = sh -c "dropdb pytest_django_183; createdb pytest_django_183 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 183 [testenv:python3.4-2.7.3-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 184 [testenv:python3.4-2.7.3-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 185 [testenv:python3.4-2.7.3-1.8-postgres] commands = sh -c "dropdb pytest_django_186; createdb pytest_django_186 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 186 [testenv:python3.4-2.7.3-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 187 [testenv:python3.4-2.7.3-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 188 [testenv:python3.4-2.7.3-1.9-postgres] commands = sh -c "dropdb pytest_django_189; createdb pytest_django_189 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 189 [testenv:python3.4-2.7.3-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 190 [testenv:python3.4-2.7.3-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 191 [testenv:python3.4-2.7.3-master-postgres] commands = sh -c "dropdb pytest_django_192; createdb pytest_django_192 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 192 [testenv:python3.4-2.7.3-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 193 [testenv:python3.4-2.7.3-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 194 [testenv:python3.4-2.8.1-1.5-postgres] commands = sh -c "dropdb pytest_django_195; createdb pytest_django_195 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 195 [testenv:python3.4-2.8.1-1.5-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 196 [testenv:python3.4-2.8.1-1.5-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.5,<1.6 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 197 [testenv:python3.4-2.8.1-1.6-postgres] commands = sh -c "dropdb pytest_django_198; createdb pytest_django_198 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 198 [testenv:python3.4-2.8.1-1.6-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 199 [testenv:python3.4-2.8.1-1.6-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.6,<1.7 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 200 [testenv:python3.4-2.8.1-1.7-postgres] commands = sh -c "dropdb pytest_django_201; createdb pytest_django_201 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 201 [testenv:python3.4-2.8.1-1.7-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 202 [testenv:python3.4-2.8.1-1.7-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.7,<1.8 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 203 [testenv:python3.4-2.8.1-1.8-postgres] commands = sh -c "dropdb pytest_django_204; createdb pytest_django_204 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 204 [testenv:python3.4-2.8.1-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 205 [testenv:python3.4-2.8.1-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 206 [testenv:python3.4-2.8.1-1.9-postgres] commands = sh -c "dropdb pytest_django_207; createdb pytest_django_207 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 207 [testenv:python3.4-2.8.1-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 208 [testenv:python3.4-2.8.1-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 209 [testenv:python3.4-2.8.1-master-postgres] commands = sh -c "dropdb pytest_django_210; createdb pytest_django_210 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 210 [testenv:python3.4-2.8.1-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 211 [testenv:python3.4-2.8.1-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.4 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 212 [testenv:python3.5-2.7.3-1.8-postgres] commands = sh -c "dropdb pytest_django_213; createdb pytest_django_213 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 213 [testenv:python3.5-2.7.3-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 214 [testenv:python3.5-2.7.3-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 215 [testenv:python3.5-2.7.3-1.9-postgres] commands = sh -c "dropdb pytest_django_216; createdb pytest_django_216 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 216 [testenv:python3.5-2.7.3-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 217 [testenv:python3.5-2.7.3-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 218 [testenv:python3.5-2.7.3-master-postgres] commands = sh -c "dropdb pytest_django_219; createdb pytest_django_219 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 219 [testenv:python3.5-2.7.3-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 220 [testenv:python3.5-2.7.3-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.7.3 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 221 [testenv:python3.5-2.8.1-1.8-postgres] commands = sh -c "dropdb pytest_django_222; createdb pytest_django_222 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 222 [testenv:python3.5-2.8.1-1.8-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 223 [testenv:python3.5-2.8.1-1.8-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django>=1.8,<1.9 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 224 [testenv:python3.5-2.8.1-1.9-postgres] commands = sh -c "dropdb pytest_django_225; createdb pytest_django_225 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 225 [testenv:python3.5-2.8.1-1.9-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 226 [testenv:python3.5-2.8.1-1.9-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 Django==1.9a1 django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 227 [testenv:python3.5-2.8.1-master-postgres] commands = sh -c "dropdb pytest_django_228; createdb pytest_django_228 || exit 0" py.test --ds=pytest_django_test.settings_postgres --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 psycopg2==2.6.1 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 228 [testenv:python3.5-2.8.1-master-sqlite] commands = py.test --ds=pytest_django_test.settings_sqlite --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 229 [testenv:python3.5-2.8.1-master-sqlite_file] commands = py.test --ds=pytest_django_test.settings_sqlite_file --strict -r fEsxXw {posargs:tests} basepython = python3.5 deps = pytest==2.8.1 pytest-xdist==1.13.1 https://github.com/django/django/archive/master.tar.gz django-configurations==0.8 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:} UID = 230