@@ -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