summaryrefslogblamecommitdiff
path: root/lib/spack/spack/test/cmd/unit_test.py
blob: 86fe6dee612a2fbc11d2a1c913ce331e3e6c531e (plain) (tree)
1
2
3
4
5
6
7
8
9
                                                                         



                                                                         

         

                                   

                                                                                  


                
                                 





                                        
                                              



                                        


                                                                 
                                                       




                                        
                                          









                                                      

                                          



                                           
                                                       










                                                      

                                              


                      
                                       








                                                                      
                                                       


                                      
                                                    








                                                                      
                                                           


                       
                                        


                                       
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

import os

from spack.main import SpackCommand

spack_test = SpackCommand("unit-test")
cmd_test_py = os.path.join("lib", "spack", "spack", "test", "cmd", "unit_test.py")


def test_list():
    output = spack_test("--list")
    assert "unit_test.py" in output
    assert "spec_semantics.py" in output
    assert "test_list" not in output


def test_list_with_pytest_arg():
    output = spack_test("--list", cmd_test_py)
    assert output.strip() == cmd_test_py


def test_list_with_keywords():
    # Here we removed querying with a "/" to separate directories
    # since the behavior is inconsistent across different pytest
    # versions, see https://stackoverflow.com/a/48814787/771663
    output = spack_test("--list", "-k", "unit_test.py")
    assert output.strip() == cmd_test_py


def test_list_long(capsys):
    with capsys.disabled():
        output = spack_test("--list-long")
    assert "unit_test.py::\n" in output
    assert "test_list" in output
    assert "test_list_with_pytest_arg" in output
    assert "test_list_with_keywords" in output
    assert "test_list_long" in output
    assert "test_list_long_with_pytest_arg" in output
    assert "test_list_names" in output
    assert "test_list_names_with_pytest_arg" in output

    assert "spec_dag.py::\n" in output
    assert "test_installed_deps" in output
    assert "test_test_deptype" in output


def test_list_long_with_pytest_arg(capsys):
    with capsys.disabled():
        output = spack_test("--list-long", cmd_test_py)
    print(output)
    assert "unit_test.py::\n" in output
    assert "test_list" in output
    assert "test_list_with_pytest_arg" in output
    assert "test_list_with_keywords" in output
    assert "test_list_long" in output
    assert "test_list_long_with_pytest_arg" in output
    assert "test_list_names" in output
    assert "test_list_names_with_pytest_arg" in output

    assert "spec_dag.py::\n" not in output
    assert "test_installed_deps" not in output
    assert "test_test_deptype" not in output


def test_list_names():
    output = spack_test("--list-names")
    assert "unit_test.py::test_list\n" in output
    assert "unit_test.py::test_list_with_pytest_arg\n" in output
    assert "unit_test.py::test_list_with_keywords\n" in output
    assert "unit_test.py::test_list_long\n" in output
    assert "unit_test.py::test_list_long_with_pytest_arg\n" in output
    assert "unit_test.py::test_list_names\n" in output
    assert "unit_test.py::test_list_names_with_pytest_arg\n" in output

    assert "spec_dag.py::test_installed_deps\n" in output
    assert "spec_dag.py::test_test_deptype\n" in output


def test_list_names_with_pytest_arg():
    output = spack_test("--list-names", cmd_test_py)
    assert "unit_test.py::test_list\n" in output
    assert "unit_test.py::test_list_with_pytest_arg\n" in output
    assert "unit_test.py::test_list_with_keywords\n" in output
    assert "unit_test.py::test_list_long\n" in output
    assert "unit_test.py::test_list_long_with_pytest_arg\n" in output
    assert "unit_test.py::test_list_names\n" in output
    assert "unit_test.py::test_list_names_with_pytest_arg\n" in output

    assert "spec_dag.py::test_installed_deps\n" not in output
    assert "spec_dag.py::test_test_deptype\n" not in output


def test_pytest_help():
    output = spack_test("--pytest-help")
    assert "-k EXPRESSION" in output
    assert "pytest-warnings:" in output
    assert "--collect-only" in output