@@ -43,6 +43,22 @@ def poetry_with_up_to_date_lockfile(
43
43
yield Factory ().create_poetry (cwd )
44
44
45
45
46
+ @pytest .fixture
47
+ def poetry_with_pypi_reference (
48
+ set_project_context : SetProjectContext ,
49
+ ) -> Iterator [Poetry ]:
50
+ with set_project_context ("pypi_reference" , in_place = False ) as cwd :
51
+ yield Factory ().create_poetry (cwd )
52
+
53
+
54
+ @pytest .fixture
55
+ def poetry_with_invalid_pyproject (
56
+ set_project_context : SetProjectContext ,
57
+ ) -> Iterator [Poetry ]:
58
+ with set_project_context ("invalid_pyproject" , in_place = False ) as cwd :
59
+ yield Factory ().create_poetry (cwd )
60
+
61
+
46
62
@pytest .fixture ()
47
63
def tester (
48
64
command_tester_factory : CommandTesterFactory , poetry_simple_project : Poetry
@@ -111,19 +127,55 @@ def test_check_valid_legacy(
111
127
assert tester .io .fetch_error () == expected
112
128
113
129
114
- def test_check_invalid (
130
+ def test_check_invalid_dep_name_same_as_project_name (
115
131
mocker : MockerFixture , tester : CommandTester , fixture_dir : FixtureDirGetter
116
132
) -> None :
117
133
mocker .patch (
118
134
"poetry.poetry.Poetry.file" ,
119
- return_value = TOMLFile (fixture_dir ("invalid_pyproject" ) / "pyproject.toml" ),
135
+ return_value = TOMLFile (
136
+ fixture_dir ("invalid_pyproject_dep_name" ) / "pyproject.toml"
137
+ ),
120
138
new_callable = mocker .PropertyMock ,
121
139
)
140
+ tester .execute ("--lock" )
141
+ fastjsonschema_error = "data must contain ['description'] properties"
142
+ custom_error = "The fields ['description'] are required in package mode."
143
+ expected_template = """\
144
+ Error: Project name (invalid) is same as one of its dependencies
145
+ Error: Unrecognized classifiers: ['Intended Audience :: Clowns'].
146
+ Error: Declared README file does not exist: never/exists.md
147
+ Error: Invalid source "exists" referenced in dependencies.
148
+ Error: Invalid source "not-exists" referenced in dependencies.
149
+ Error: Invalid source "not-exists2" referenced in dependencies.
150
+ Error: poetry.lock was not found.
151
+ Warning: A wildcard Python dependency is ambiguous.\
152
+ Consider specifying a more explicit one.
153
+ Warning: The "pendulum" dependency specifies the "allows-prereleases" property,\
154
+ which is deprecated. Use "allow-prereleases" instead.
155
+ Warning: Deprecated classifier 'Natural Language :: Ukranian'.\
156
+ Must be replaced by ['Natural Language :: Ukrainian'].
157
+ Warning: Deprecated classifier\
158
+ 'Topic :: Communications :: Chat :: AOL Instant Messenger'.\
159
+ Must be removed.
160
+ """
161
+ expected = {
162
+ expected_template .format (schema_error = schema_error )
163
+ for schema_error in (fastjsonschema_error , custom_error )
164
+ }
165
+
166
+ assert tester .io .fetch_error () in expected
122
167
168
+
169
+ def test_check_invalid (
170
+ tester : CommandTester ,
171
+ fixture_dir : FixtureDirGetter ,
172
+ command_tester_factory : CommandTesterFactory ,
173
+ poetry_with_invalid_pyproject : Poetry ,
174
+ ) -> None :
175
+ tester = command_tester_factory ("check" , poetry = poetry_with_invalid_pyproject )
123
176
tester .execute ("--lock" )
124
177
125
178
expected = """\
126
- Error: Project name (invalid) is same as one of its dependencies
127
179
Error: Unrecognized classifiers: ['Intended Audience :: Clowns'].
128
180
Error: Declared README file does not exist: never/exists.md
129
181
Error: Invalid source "not-exists" referenced in dependencies.
@@ -254,3 +306,14 @@ def test_check_lock_up_to_date(
254
306
255
307
# exit with an error
256
308
assert status_code == 0
309
+
310
+
311
+ def test_check_does_not_error_on_pypi_reference (
312
+ command_tester_factory : CommandTesterFactory ,
313
+ poetry_with_pypi_reference : Poetry ,
314
+ ) -> None :
315
+ tester = command_tester_factory ("check" , poetry = poetry_with_pypi_reference )
316
+ status_code = tester .execute ("" )
317
+
318
+ assert tester .io .fetch_output () == "All set!\n "
319
+ assert status_code == 0
0 commit comments