1import logging 2 3import pytest 4 5 6setup_py = """\ 7from setuptools import setup 8 9setup( 10 name="test_logging", 11 version="0.0" 12) 13""" 14 15 16@pytest.mark.parametrize( 17 "flag, expected_level", [("--dry-run", "INFO"), ("--verbose", "DEBUG")] 18) 19def test_verbosity_level(tmp_path, monkeypatch, flag, expected_level): 20 """Make sure the correct verbosity level is set (issue #3038)""" 21 import setuptools # noqa: Import setuptools to monkeypatch distutils 22 import distutils # <- load distutils after all the patches take place 23 24 logger = logging.Logger(__name__) 25 monkeypatch.setattr(logging, "root", logger) 26 unset_log_level = logger.getEffectiveLevel() 27 assert logging.getLevelName(unset_log_level) == "NOTSET" 28 29 setup_script = tmp_path / "setup.py" 30 setup_script.write_text(setup_py) 31 dist = distutils.core.run_setup(setup_script, stop_after="init") 32 dist.script_args = [flag, "sdist"] 33 dist.parse_command_line() # <- where the log level is set 34 log_level = logger.getEffectiveLevel() 35 log_level_name = logging.getLevelName(log_level) 36 assert log_level_name == expected_level 37