@@ -27,7 +27,7 @@ def fakeboard(serialport="COM99"):
2727 return fake
2828
2929
30- def fake_ask_missing_params (params : DownloadParams , action : str = "flash" ) -> DownloadParams :
30+ def fake_ask_missing_params (params : DownloadParams , action : str ) -> DownloadParams :
3131 # no input during tests
3232 return params
3333
@@ -136,3 +136,110 @@ def test_mpflash_connected_boards(
136136 assert result .exit_code == 0
137137 else :
138138 assert result .exit_code == 1
139+
140+
141+ ## if no boards are connected , but there are serial port , then set serial --> ? and board to ? if not set
142+ @pytest .mark .parametrize (
143+ "id, serialports, ports, boards" ,
144+ [
145+ ("One" , ["COM99" ], [], []),
146+ ("None" , [], [], []),
147+ ],
148+ )
149+ def test_mpflash_no_detected_boards (
150+ id ,
151+ serialports : List [str ],
152+ ports : List [str ],
153+ boards : List [str ],
154+ mocker : MockerFixture ,
155+ ):
156+ # no boards specified - detect connected boards
157+ args = ["flash" ]
158+
159+ # fakes = [fakeboard(port) for port in serialports]
160+
161+ m_connected_ports_boards = mocker .patch (
162+ "mpflash.cli_flash.connected_ports_boards" ,
163+ return_value = (ports , boards ),
164+ autospec = True ,
165+ )
166+ m_flash_list = mocker .patch ("mpflash.cli_flash.flash_list" , return_value = None , autospec = True )
167+ m_ask_missing_params = mocker .patch (
168+ "mpflash.cli_flash.ask_missing_params" ,
169+ Mock (side_effect = fake_ask_missing_params ),
170+ )
171+
172+ m_full_auto_worklist = mocker .patch ("mpflash.cli_flash.full_auto_worklist" , return_value = [])
173+ m_manual_worklist = mocker .patch ("mpflash.cli_flash.manual_worklist" , return_value = [])
174+ m_single_auto_worklist = mocker .patch ("mpflash.cli_flash.single_auto_worklist" , return_value = [])
175+
176+ runner = CliRunner ()
177+ result = runner .invoke (cli_main .cli , args )
178+
179+ m_connected_ports_boards .assert_called_once ()
180+ m_ask_missing_params .assert_called_once ()
181+
182+ if serialports :
183+ ## if no boards are responding , but there are serial port , then set serial --> ? and board to ? if not set
184+ assert m_ask_missing_params .call_args .args [0 ].serial == "?"
185+ assert m_ask_missing_params .call_args .args [0 ].boards == ["?" ]
186+
187+
188+ # Flash a interactive version
189+
190+ # TEST DOES NOT REALLY ADD ANY VALUE
191+ # @pytest.mark.parametrize(
192+ # "version, serialports, ports, boards",
193+ # [
194+ # ("preview", ["COM99"], ["esp32"], ["ESP32_GENERIC"]),
195+ # ("v1.22.0", ["COM99"], ["esp32"], ["ESP32_GENERIC"]),
196+ # ("1.22.0", ["COM99"], ["esp32"], ["ESP32_GENERIC"]),
197+ # ],
198+ # )
199+ # def test_mpflash_version_interactive(
200+ # version: str,
201+ # serialports: List[str],
202+ # ports: List[str],
203+ # boards: List[str],
204+ # mocker: MockerFixture,
205+ # ):
206+ # # no boards specified - detect connected boards
207+ # def fake_ask_missing_version(params: DownloadParams, action: str) -> DownloadParams:
208+ # # no input during tests
209+ # params.versions = [version]
210+ # return params
211+
212+ # args = ["flash"]
213+
214+ # fakes = [fakeboard(port) for port in serialports]
215+
216+ # m_connected_ports_boards = mocker.patch(
217+ # "mpflash.cli_flash.connected_ports_boards",
218+ # return_value=(ports, boards),
219+ # autospec=True,
220+ # )
221+ # m_flash_list = mocker.patch("mpflash.cli_flash.flash_list", return_value=None, autospec=True)
222+ # m_ask_missing_params = mocker.patch(
223+ # "mpflash.cli_flash.ask_missing_params",
224+ # Mock(side_effect=fake_ask_missing_version),
225+ # )
226+
227+ # # m_full_auto_worklist = mocker.patch("mpflash.cli_flash.full_auto_worklist", return_value=[])
228+ # m_manual_worklist = mocker.patch("mpflash.cli_flash.manual_worklist", return_value=[])
229+ # m_single_auto_worklist = mocker.patch("mpflash.cli_flash.single_auto_worklist", return_value=[])
230+
231+ # runner = CliRunner()
232+ # result = runner.invoke(cli_main.cli, args)
233+
234+ # if serialports:
235+ # # m_full_auto_worklist.assert_called_once()
236+ # m_manual_worklist.assert_not_called()
237+ # m_single_auto_worklist.assert_not_called()
238+
239+ # m_connected_ports_boards.assert_called_once()
240+ # m_ask_missing_params.assert_called_once()
241+
242+ # if serialports:
243+ # assert result.exit_code == 0
244+ # else:
245+ # assert result.exit_code == 1
0 commit comments