"""Tests for the Application class.""" from __future__ import annotations import argparse import pytest from flake8.main import application as app def options(**kwargs): """Generate argparse.Namespace for our Application.""" kwargs.setdefault("verbose", 0) kwargs.setdefault("output_file", None) kwargs.setdefault("count", False) kwargs.setdefault("exit_zero", False) return argparse.Namespace(**kwargs) @pytest.fixture def application(): """Create an application.""" return app.Application() @pytest.mark.parametrize( "result_count, catastrophic, exit_zero, value", [ (0, False, False, 0), (0, True, False, 1), (2, False, False, 1), (2, True, False, 1), (0, True, True, 1), (2, False, True, 0), (2, True, True, 1), ], ) def test_application_exit_code( result_count, catastrophic, exit_zero, value, application, ): """Verify Application.exit_code returns the correct value.""" application.result_count = result_count application.catastrophic_failure = catastrophic application.options = options(exit_zero=exit_zero) assert application.exit_code() == value