diff --git a/flake8_html/plugin.py b/flake8_html/plugin.py index b4f0b1c..80a6a87 100644 --- a/flake8_html/plugin.py +++ b/flake8_html/plugin.py @@ -17,6 +17,7 @@ from operator import attrgetter from collections import namedtuple, Counter +import flake8 from pygments import highlight from collections import defaultdict from pygments.lexers import PythonLexer @@ -278,7 +279,7 @@ def write_index(self): key=lambda e: (e.highest_sev, -e.error_count) ), now=datetime.datetime.now(), - versions=self.option_manager.generate_versions(), + versions=self._get_plugin_version_summary(), highest_sev=highest_sev, title=self.options.htmltitle, ) @@ -286,6 +287,15 @@ def write_index(self): with codecs.open(indexfile, 'w', encoding='utf8') as f: f.write(rendered) + def _get_plugin_version_summary(self): + option_manager = self.option_manager + if flake8.__version_info__ < (5, 0, 0): + return option_manager.generate_versions() + else: + # Below return info prefixed with "Installed with:". This is different from + # option_manager.generate_versions() but using this as it is a cleaner way + return option_manager.parser.epilog + @classmethod def add_options(cls, options): """Add a --htmldir option to the OptionsManager.""" diff --git a/tests/test_flake8_html.py b/tests/test_flake8_html.py index b544758..fdac39a 100644 --- a/tests/test_flake8_html.py +++ b/tests/test_flake8_html.py @@ -7,6 +7,7 @@ import shutil import contextlib +import flake8 import pytest from flake8.main.cli import main @@ -50,7 +51,10 @@ def chdir(dest): def test_report(bad_sourcedir, tmpdir): """Test that a report on a bad file creates the expected files.""" with chdir(bad_sourcedir), pytest.raises(SystemExit) as excinfo: - main(['--exit-zero', '--format=html', '--htmldir=%s' % tmpdir, '.']) + code = main(['--exit-zero', '--format=html', '--htmldir=%s' % tmpdir, '.']) + # earlier flake8 version were raising the SystemExit, now raise it explicitly to cover recent versions too + if flake8.__version_info__ >= (5, 0, 0): + raise SystemExit(code) assert excinfo.value.code == 0 names = ('index.html', 'styles.css', 'bad.report.html', 'bad.source.html') written = os.listdir(str(tmpdir))