3
3
import pytest
4
4
from micropy .app import stubs as stubs_app
5
5
from micropy .app .stubs import stubs_app as app
6
+ from micropy .exceptions import StubError , StubNotFound
6
7
from micropy .pyd import PyDevice
7
8
from micropy .stubs .source import StubSource
8
9
from pytest_mock import MockerFixture
@@ -73,9 +74,7 @@ def test_stubs_create__script_error(pyb_mock, micropy_obj, runner):
73
74
74
75
@pytest .mark .parametrize ("force" , [True , False ])
75
76
@pytest .mark .parametrize ("micropy_obj" , [MicroPyScenario (impl_add = False )], indirect = True )
76
- def test_stubs_add_success (
77
- mocker : MockerFixture , micropy_obj , runner , stubs_locator_mock , mock_repo , force
78
- ):
77
+ def test_stubs_add_success (micropy_obj , runner , stubs_locator_mock , mock_repo , force ):
79
78
stubs_locator_mock .ready .return_value .__enter__ .return_value = "test-stub"
80
79
args = ["add" , "test-stub" ]
81
80
if force :
@@ -88,6 +87,24 @@ def test_stubs_add_success(
88
87
micropy_obj .stubs .add .assert_called_once_with ("test-stub" , force = force )
89
88
90
89
90
+ @pytest .mark .parametrize ("micropy_obj" , [MicroPyScenario (impl_add = False )], indirect = True )
91
+ def test_stubs_add__not_found (micropy_obj , runner , stubs_locator_mock , mock_repo ):
92
+ micropy_obj .stubs .add .side_effect = StubNotFound ()
93
+ result = runner .invoke (app , ["add" , "nonexistent-stub" ], obj = micropy_obj )
94
+ assert result .exit_code == 1
95
+ assert "could not be found" in result .stdout
96
+ stubs_locator_mock .ready .assert_called_once_with ("nonexistent-stub" )
97
+
98
+
99
+ @pytest .mark .parametrize ("micropy_obj" , [MicroPyScenario (impl_add = False )], indirect = True )
100
+ def test_stubs_add__invalid (micropy_obj , runner , stubs_locator_mock , mock_repo ):
101
+ micropy_obj .stubs .add .side_effect = StubError ()
102
+ result = runner .invoke (app , ["add" , "invalid-stub" ], obj = micropy_obj )
103
+ assert result .exit_code == 1
104
+ assert "is not a valid stub!" in result .stdout
105
+ stubs_locator_mock .ready .assert_called_once_with ("invalid-stub" )
106
+
107
+
91
108
@pytest .mark .parametrize (
92
109
"micropy_obj" , [MicroPyScenario (), MicroPyScenario (project_exists = False )], indirect = True
93
110
)
0 commit comments