diff --git a/pytest_html/plugin.py b/pytest_html/plugin.py index 7e14df5d..bd9ecb6f 100644 --- a/pytest_html/plugin.py +++ b/pytest_html/plugin.py @@ -68,7 +68,8 @@ def pytest_configure(config): htmlpath = config.getoption("htmlpath") if htmlpath: for csspath in config.getoption("css"): - open(csspath) + if not os.path.exists(csspath): + raise IOError(f"No such file or directory: '{csspath}'") if not hasattr(config, "slaveinput"): # prevent opening htmlpath on slave nodes (xdist) config._html = HTMLReport(htmlpath, config) diff --git a/testing/test_pytest_html.py b/testing/test_pytest_html.py index 1fe847e6..c05b0615 100644 --- a/testing/test_pytest_html.py +++ b/testing/test_pytest_html.py @@ -759,7 +759,7 @@ def test_pass(): pass assert re.search(regex_error, html) is not None @pytest.mark.parametrize("colors", [(["red"]), (["green", "blue"])]) - def test_css(self, testdir, colors): + def test_css(self, testdir, recwarn, colors): testdir.makepyfile("def test_pass(): pass") css = {} cssargs = [] @@ -770,14 +770,16 @@ def test_css(self, testdir, colors): cssargs.extend(["--css", path]) result, html = run(testdir, "report.html", "--self-contained-html", *cssargs) assert result.ret == 0 + assert len(recwarn) == 0 for k, v in css.items(): assert str(v["path"]) in html assert v["style"] in html - def test_css_invalid(self, testdir): + def test_css_invalid(self, testdir, recwarn): testdir.makepyfile("def test_pass(): pass") result = testdir.runpytest("--html", "report.html", "--css", "style.css") assert result.ret + assert len(recwarn) == 0 assert "No such file or directory: 'style.css'" in result.stderr.str() def test_css_invalid_no_html(self, testdir):