111 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			INI
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			INI
		
	
	
	
	
	
| # tox (https://tox.readthedocs.io/) is a tool for running tests
 | |
| # in multiple virtualenvs. This configuration file will run the
 | |
| # test suite on all supported python versions. To use it, "pip install tox"
 | |
| # and then run "tox" from this directory.
 | |
| 
 | |
| [tox]
 | |
| envlist = begin,py38,py39,py310,coverage,security,lint,bundle
 | |
| 
 | |
| [testenv]
 | |
| # build a wheel and test it
 | |
| wheel = true
 | |
| wheel_build_env = build
 | |
| 
 | |
| # whitelist commands we need
 | |
| whitelist_externals = cp
 | |
| 
 | |
| # install everything via requirements-dev.txt, so that developer environment
 | |
| # is the same as the tox environment (for ease of use/no weird gotchas in
 | |
| # local dev results vs. tox results) and also to avoid ticky-tacky maintenance
 | |
| # of "oh this particular env has weird results unless I install foo" --- just
 | |
| # shotgun blast install everything everywhere
 | |
| deps =
 | |
|     -rrequirements/requirements-dev.txt
 | |
| 
 | |
| [testenv:build]
 | |
| # require setuptools when building
 | |
| deps = setuptools
 | |
| 
 | |
| [testenv:begin]
 | |
| # clean up potential previous coverage runs
 | |
| skip_install = true
 | |
| commands = coverage erase
 | |
| 
 | |
| [testenv:py38]
 | |
| # run pytest with coverage
 | |
| commands =
 | |
|     pytest --cov-append --cov={envsitepackagesdir}/incorporealcms/ --cov-branch
 | |
| 
 | |
| [testenv:py39]
 | |
| # run pytest with coverage
 | |
| commands =
 | |
|     pytest --cov-append --cov={envsitepackagesdir}/incorporealcms/ --cov-branch
 | |
| 
 | |
| [testenv:py310]
 | |
| # run pytest with coverage
 | |
| commands =
 | |
|     pytest --cov-append --cov={envsitepackagesdir}/incorporealcms/ --cov-branch
 | |
| 
 | |
| [testenv:coverage]
 | |
| # report on coverage runs from above
 | |
| skip_install = true
 | |
| commands =
 | |
|     coverage report --fail-under=95 --show-missing
 | |
| 
 | |
| [testenv:security]
 | |
| # run security checks
 | |
| #
 | |
| # again it seems the most valuable here to run against the packaged code
 | |
| commands =
 | |
|     bandit {envsitepackagesdir}/incorporealcms/ -r
 | |
|     safety check -r requirements/requirements-dev.txt
 | |
| 
 | |
| [testenv:lint]
 | |
| # run style checks
 | |
| commands =
 | |
|     flake8
 | |
|     - flake8 --disable-noqa --ignore= --select=E,W,F,C,D,A,G,B,I,T,M,DUO
 | |
| 
 | |
| [testenv:bundle]
 | |
| # take extra actions (build sdist, sphinx, whatever) to completely package the app
 | |
| commands =
 | |
|     cp -r {distdir} .
 | |
|     python setup.py sdist
 | |
| 
 | |
| [coverage:paths]
 | |
| source =
 | |
|     ./
 | |
|     .tox/**/site-packages/
 | |
| 
 | |
| [coverage:run]
 | |
| branch = True
 | |
| 
 | |
| # redundant with pytest --cov above, but this tricks the coverage.xml report into
 | |
| # using the full path, otherwise files with the same name in different paths
 | |
| # get clobbered. maybe appends would fix this, IDK
 | |
| include =
 | |
|     .tox/**/incorporealcms/
 | |
| 
 | |
| omit =
 | |
|     **/_version.py
 | |
| 
 | |
| [flake8]
 | |
| enable-extensions = G,M
 | |
| exclude =
 | |
|     .tox/
 | |
|     versioneer.py
 | |
|     _version.py
 | |
|     instance/
 | |
| extend-ignore = T101
 | |
| max-complexity = 10
 | |
| max-line-length = 120
 | |
| 
 | |
| [isort]
 | |
| line_length = 120
 | |
| 
 | |
| [pytest]
 | |
| python_files =
 | |
|     *_tests.py
 | |
|     tests.py
 | |
|     test_*.py
 |