Skip to content
  • Massimiliano Culpo's avatar
    unit tests: replace nose with pytest (#2502) · 7ea10e76
    Massimiliano Culpo authored
    * 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
    7ea10e76