| 
									
										
										
										
											2016-05-10 00:31:43 -07:00
										 |  |  | # -*- conf -*- | 
					
						
							| 
									
										
										
										
											2016-01-19 18:29:39 +01:00
										 |  |  | # .coveragerc to control coverage.py | 
					
						
							|  |  |  | [run] | 
					
						
							| 
									
										
											  
											
												unit tests: replace nose with pytest  (#2502)
* Porting: substitute nose with ytest
This huge commit substitutes nose with pytest as a testing system. Things done here:
* deleted external/nose as it is no longer used
* moved mock resources in their own directory 'test/mock/'
* ported two tests (cmd/find, build_system) to pytest native syntax as an example
* build_environment, log: used monkeypatch instead of try/catch
* moved global mocking of fetch_cache to an auto-used fixture
* moved global mocking from test/__init__.py to conftest.py
* made `spack test` a wrapper around pytest
* run-unit-tests: avoid running python 2.6 tests under coverage to speed them up
* use `pytest --cov` instead of coverage run to cut down testing time
* mock/packages_test: moved mock yaml configuration to files instead of leaving it in the code as string literals
* concretize.py: ported tests to native pytest, reverted multiprocessing in pytest.ini as it was creating the wrong report for coveralls
* conftest.py, fixtures: added docstrings
* concretize_preferences.py: uses fixtures instead of subclassing MockPackagesTest
* directory_layout.py: uses fixtures instead of subclassing MockPackagesTest
* install.py: uses fixtures instead of subclassing MockPackagesTest
* optional_deps.py: uses fixtures instead of subclassing MockPackagesTest
optional_deps.py: uses fixtures instead of subclassing MockPackagesTest
* packages.py: uses fixtures instead of subclassing MockPackagesTest
* provider_index.py: uses fixtures instead of subclassing MockPackagesTest
* spec_yaml.py: uses fixtures instead of subclassing MockPackagesTest
* multimethod.py: uses fixtures instead of subclassing MockPackagesTest
* install.py: now uses mock_archive_url
* git_fetch.py: uses fixtures instead of subclassing MockPackagesTest
* hg_fetch.py: uses fixtures instead of subclassing MockPackagesTest
* svn_fetch.py, mirror.py: uses fixtures instead of subclassing MockPackagesTest
repo.py: deleted
* test_compiler_cmd.py: uses fixtures instead of subclassing MockPackagesTest
* cmd/module.py, cmd/uninstall.py: uses fixtures instead of subclassing MockDatabase
* database.py: uses fixtures instead of subclassing MockDatabase, removed mock/database
* pytest: uncluttering fixture implementations
* database: changing the scope to 'module'
* config.py: uses fixtures instead of subclassing MockPackagesTest
* spec_dag.py, spec_semantics.py: uses fixtures instead of subclassing MockPackagesTest
* stage.py: uses fixtures instead of subclassing MockPackagesTest. Removed mock directory
* pytest: added docstrings to all the fixtures
* pytest: final cleanup
* build_system_guess.py: fixed naming and docstrings as suggested by @scheibelp
* spec_syntax.py: added expected failure on parsing multiple specs closes #1976
* Add pytest and pytest-cov to Spack externals.
* Make `spack flake8` ignore externals.
* run-unit-tests runs spack test and not pytest.
* Remove all the special stuff for `spack test`
- Remove `conftest.py` magic and all the special case stuff in `bin/spack`
- Spack commands can optionally take unknown arguments, if they want to
  handle them.
- `spack test` is now a command like the others.
- `spack test` now just delegates its arguments to `pytest`, but it does
  it by receiving unknown arguments and NOT taking an explicit
  help argument.
* Fix error in fixtures.
* Improve `spack test` command a bit.
- Now supports an approximation of the old simple interface
- Also supports full pytest options if you want them.
* Use external coverage instead of pytest-cov
* Make coverage use parallel-mode.
* change __init__.py docs to include pytest
											
										 
											2016-12-29 16:48:48 +01:00
										 |  |  | parallel = True | 
					
						
							| 
									
										
										
										
											2018-01-20 16:10:25 +01:00
										 |  |  | concurrency = multiprocessing | 
					
						
							| 
									
										
										
										
											2016-01-19 18:29:39 +01:00
										 |  |  | branch = True | 
					
						
							| 
									
										
										
										
											2020-10-26 16:23:22 -07:00
										 |  |  | source = | 
					
						
							|  |  |  |      bin | 
					
						
							|  |  |  |      lib | 
					
						
							| 
									
										
										
										
											2016-05-10 00:31:43 -07:00
										 |  |  | omit = | 
					
						
							|  |  |  |      lib/spack/spack/test/* | 
					
						
							|  |  |  |      lib/spack/docs/* | 
					
						
							|  |  |  |      lib/spack/external/* | 
					
						
							| 
									
										
										
										
											2020-01-05 23:35:23 -08:00
										 |  |  |      share/spack/qa/* | 
					
						
							| 
									
										
										
										
											2016-01-19 18:29:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | [report] | 
					
						
							|  |  |  | # Regexes for lines to exclude from consideration | 
					
						
							|  |  |  | exclude_lines = | 
					
						
							|  |  |  |     # Have to re-enable the standard pragma | 
					
						
							|  |  |  |     pragma: no cover | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Don't complain about missing debug-only code: | 
					
						
							|  |  |  |     def __repr__ | 
					
						
							|  |  |  |     if self\.debug | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Don't complain if tests don't hit defensive assertion code: | 
					
						
							|  |  |  |     raise AssertionError | 
					
						
							|  |  |  |     raise NotImplementedError | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Don't complain if non-runnable code isn't run: | 
					
						
							|  |  |  |     if 0: | 
					
						
							|  |  |  |     if False: | 
					
						
							|  |  |  |     if __name__ == .__main__.: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ignore_errors = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [html] | 
					
						
							|  |  |  | directory = htmlcov |