Skip to content

Commit 11a78a5

Browse files
committed
Reduce cyclomatic complexity of test function
The code added to the test in the previous commit caused it to exceed the flake8 CI check's maximum cyclomatic complexity value of 10.
1 parent 68365ab commit 11a78a5

File tree

1 file changed

+121
-68
lines changed

1 file changed

+121
-68
lines changed

compilesketches/tests/test_compilesketches.py

Lines changed: 121 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -79,103 +79,156 @@ def test_directories_are_same():
7979
) is False
8080

8181

82-
@pytest.mark.parametrize("use_size_report_sketch", [True, False])
83-
@pytest.mark.parametrize("use_enable_size_deltas_report, expected_enable_deltas_report",
84-
[(True, "FooEnableSizeDeltasReport"),
85-
(False, "FooEnableDeltasReport")])
86-
@pytest.mark.parametrize("use_size_deltas_report_folder_name, expected_sketches_report_path",
87-
[(True, "FooSizeDeltasReportFolderName"),
88-
(False, "FooSketchesReportPath")])
89-
@pytest.mark.parametrize("use_enable_size_trends_report", [True, False])
90-
def test_main(capsys,
91-
monkeypatch,
92-
mocker,
93-
use_size_report_sketch,
94-
use_enable_size_deltas_report,
95-
expected_enable_deltas_report,
96-
use_size_deltas_report_folder_name,
97-
expected_sketches_report_path,
98-
use_enable_size_trends_report):
99-
cli_version = "1.0.0"
100-
fqbn_arg = "foo:bar:baz"
101-
platforms = "- name: FooVendor:BarArchitecture"
102-
libraries = "foo libraries"
103-
sketch_paths = "foo/Sketch bar/OtherSketch"
104-
verbose = "true"
105-
github_token = "FooGitHubToken"
106-
enable_size_deltas_report = "FooEnableSizeDeltasReport"
107-
enable_deltas_report = "FooEnableDeltasReport"
108-
sketches_report_path = "FooSketchesReportPath"
109-
size_deltas_report_folder_name = "FooSizeDeltasReportFolderName"
110-
82+
@pytest.fixture
83+
def setup_action_inputs(monkeypatch):
84+
class ActionInputs:
85+
cli_version = "1.0.0"
86+
fqbn_arg = "foo:bar:baz"
87+
platforms = "- name: FooVendor:BarArchitecture"
88+
libraries = "foo libraries"
89+
sketch_paths = "foo/Sketch bar/OtherSketch"
90+
verbose = "true"
91+
github_token = "FooGitHubToken"
92+
enable_size_deltas_report = "FooEnableSizeDeltasReport"
93+
enable_deltas_report = "FooEnableDeltasReport"
94+
sketches_report_path = "FooSketchesReportPath"
95+
size_deltas_report_folder_name = "FooSizeDeltasReportFolderName"
96+
97+
monkeypatch.setenv("INPUT_CLI-VERSION", ActionInputs.cli_version)
98+
monkeypatch.setenv("INPUT_FQBN", ActionInputs.fqbn_arg)
99+
monkeypatch.setenv("INPUT_PLATFORMS", ActionInputs.platforms)
100+
monkeypatch.setenv("INPUT_LIBRARIES", ActionInputs.libraries)
101+
monkeypatch.setenv("INPUT_SKETCH-PATHS", ActionInputs.sketch_paths)
102+
monkeypatch.setenv("INPUT_VERBOSE", ActionInputs.verbose)
103+
monkeypatch.setenv("INPUT_GITHUB-TOKEN", ActionInputs.github_token)
104+
monkeypatch.setenv("INPUT_ENABLE-DELTAS-REPORT", ActionInputs.enable_deltas_report)
105+
monkeypatch.setenv("INPUT_SKETCHES-REPORT-PATH", ActionInputs.sketches_report_path)
106+
107+
return ActionInputs()
108+
109+
110+
@pytest.fixture
111+
def stub_compilesketches_object(mocker):
111112
class CompileSketches:
112113
def compile_sketches(self):
113114
pass # pragma: no cover
114115

115-
monkeypatch.setenv("INPUT_CLI-VERSION", cli_version)
116-
monkeypatch.setenv("INPUT_FQBN", fqbn_arg)
117-
monkeypatch.setenv("INPUT_PLATFORMS", platforms)
118-
monkeypatch.setenv("INPUT_LIBRARIES", libraries)
119-
monkeypatch.setenv("INPUT_SKETCH-PATHS", sketch_paths)
120-
monkeypatch.setenv("INPUT_GITHUB-TOKEN", github_token)
121-
monkeypatch.setenv("INPUT_VERBOSE", verbose)
116+
mocker.patch("compilesketches.CompileSketches", autospec=True, return_value=CompileSketches())
117+
mocker.patch.object(CompileSketches, "compile_sketches")
118+
119+
120+
@pytest.mark.parametrize("use_size_report_sketch", [True, False])
121+
def test_main_size_report_sketch_deprecation_warning(capsys, monkeypatch, setup_action_inputs,
122+
stub_compilesketches_object, use_size_report_sketch):
122123
if use_size_report_sketch:
123124
monkeypatch.setenv("INPUT_SIZE-REPORT-SKETCH", "foo")
124-
if use_enable_size_deltas_report:
125-
monkeypatch.setenv("INPUT_ENABLE-SIZE-DELTAS-REPORT", enable_size_deltas_report)
126-
monkeypatch.setenv("INPUT_ENABLE-DELTAS-REPORT", enable_deltas_report)
127-
monkeypatch.setenv("INPUT_SKETCHES-REPORT-PATH", sketches_report_path)
128-
if use_size_deltas_report_folder_name:
129-
monkeypatch.setenv("INPUT_SIZE-DELTAS-REPORT-FOLDER-NAME", size_deltas_report_folder_name)
125+
126+
compilesketches.main()
127+
128+
expected_output = ""
129+
if use_size_report_sketch:
130+
expected_output = "::warning::The size-report-sketch input is no longer used"
131+
132+
assert capsys.readouterr().out.strip() == expected_output
133+
134+
135+
@pytest.mark.parametrize("use_enable_size_trends_report", [True, False])
136+
def test_main_enable_size_trends_report_deprecation_warning(capsys, monkeypatch, setup_action_inputs,
137+
stub_compilesketches_object, use_enable_size_trends_report):
130138
if use_enable_size_trends_report:
131139
monkeypatch.setenv("INPUT_ENABLE-SIZE-TRENDS-REPORT", "true")
132140

133-
mocker.patch("compilesketches.CompileSketches", autospec=True, return_value=CompileSketches())
134-
mocker.patch.object(CompileSketches, "compile_sketches")
141+
compilesketches.main()
142+
143+
expected_output = ""
144+
if use_enable_size_trends_report:
145+
expected_output = (
146+
expected_output
147+
+ "::warning::The size trends report feature has been moved to a dedicated action. See the "
148+
"documentation at "
149+
"https://github.com/arduino/actions/tree/report-size-trends-action/libraries/report-size-trends"
150+
)
151+
152+
assert capsys.readouterr().out.strip() == expected_output
153+
154+
155+
@pytest.mark.parametrize("use_size_deltas_report_folder_name", [True, False])
156+
def test_main_size_deltas_report_folder_name_deprecation(capsys, monkeypatch, setup_action_inputs,
157+
stub_compilesketches_object,
158+
use_size_deltas_report_folder_name):
159+
size_deltas_report_folder_name = "foo-size-deltas-report-folder-name"
160+
if use_size_deltas_report_folder_name:
161+
monkeypatch.setenv("INPUT_SIZE-DELTAS-REPORT-FOLDER-NAME", size_deltas_report_folder_name)
135162

136163
compilesketches.main()
137164

138165
expected_output = ""
139-
if use_size_report_sketch:
140-
expected_output = "::warning::The size-report-sketch input is no longer used"
141166
if use_size_deltas_report_folder_name:
142-
if expected_output != "":
143-
expected_output = expected_output + "\n"
144167
expected_output = (
145168
expected_output
146169
+ "::warning::The size-deltas-report-folder-name input is deprecated. Use the equivalent input: "
147170
"sketches-report-path instead."
148171
)
172+
173+
assert capsys.readouterr().out.strip() == expected_output
174+
175+
if use_size_deltas_report_folder_name:
176+
expected_sketches_report_path = size_deltas_report_folder_name
177+
else:
178+
expected_sketches_report_path = setup_action_inputs.sketches_report_path
179+
180+
assert os.environ["INPUT_SKETCHES-REPORT-PATH"] == expected_sketches_report_path
181+
182+
183+
@pytest.mark.parametrize("use_enable_size_deltas_report", [True, False])
184+
def test_main_enable_size_deltas_report_deprecation(capsys, monkeypatch, setup_action_inputs,
185+
stub_compilesketches_object, use_enable_size_deltas_report):
186+
enable_size_deltas_report = "foo-enable-size-deltas-report"
187+
if use_enable_size_deltas_report:
188+
monkeypatch.setenv("INPUT_ENABLE-SIZE-DELTAS-REPORT", enable_size_deltas_report)
189+
190+
compilesketches.main()
191+
192+
expected_output = ""
149193
if use_enable_size_deltas_report:
150-
if expected_output != "":
151-
expected_output = expected_output + "\n"
152194
expected_output = (
153195
expected_output
154196
+ "::warning::The enable-size-deltas-report input is deprecated. Use the equivalent input: "
155197
"enable-deltas-report instead."
156198
)
157-
if use_enable_size_trends_report:
158-
if expected_output != "":
159-
expected_output = expected_output + "\n"
160-
expected_output = (
161-
expected_output
162-
+ "::warning::The size trends report feature has been moved to a dedicated action. See the "
163-
"documentation at "
164-
"https://github.com/arduino/actions/tree/report-size-trends-action/libraries/report-size-trends"
165-
)
199+
166200
assert capsys.readouterr().out.strip() == expected_output
167201

202+
if use_enable_size_deltas_report:
203+
expected_enable_deltas_report = enable_size_deltas_report
204+
else:
205+
expected_enable_deltas_report = setup_action_inputs.enable_deltas_report
206+
207+
assert os.environ["INPUT_ENABLE-DELTAS-REPORT"] == expected_enable_deltas_report
208+
209+
210+
def test_main(mocker, setup_action_inputs):
211+
class CompileSketches:
212+
def compile_sketches(self):
213+
pass # pragma: no cover
214+
215+
mocker.patch("compilesketches.CompileSketches", autospec=True, return_value=CompileSketches())
216+
mocker.patch.object(CompileSketches, "compile_sketches")
217+
218+
compilesketches.main()
219+
168220
compilesketches.CompileSketches.assert_called_once_with(
169-
cli_version=cli_version,
170-
fqbn_arg=fqbn_arg,
171-
platforms=platforms,
172-
libraries=libraries,
173-
sketch_paths=sketch_paths,
174-
verbose=verbose,
175-
github_token=github_token,
176-
enable_deltas_report=expected_enable_deltas_report,
177-
sketches_report_path=expected_sketches_report_path
221+
cli_version=setup_action_inputs.cli_version,
222+
fqbn_arg=setup_action_inputs.fqbn_arg,
223+
platforms=setup_action_inputs.platforms,
224+
libraries=setup_action_inputs.libraries,
225+
sketch_paths=setup_action_inputs.sketch_paths,
226+
verbose=setup_action_inputs.verbose,
227+
github_token=setup_action_inputs.github_token,
228+
enable_deltas_report=setup_action_inputs.enable_deltas_report,
229+
sketches_report_path=setup_action_inputs.sketches_report_path
178230
)
231+
179232
CompileSketches.compile_sketches.assert_called_once()
180233

181234

0 commit comments

Comments
 (0)