5050python = "~2.7 || ^3.6"
5151foo = "^1.0"
5252bar = { version = "^1.1", optional = true }
53+ qux = { version = "^1.2", optional = true }
5354
5455[tool.poetry.group.dev.dependencies]
5556baz = "^2.0"
6364
6465[tool.poetry.extras]
6566feature_bar = ["bar"]
67+ feature_qux = ["qux"]
6668"""
6769
6870
@@ -72,6 +74,7 @@ def setup(repo: Repository) -> None:
7274 repo .add_package (Package ("bar" , "1.1.0" ))
7375 repo .add_package (Package ("baz" , "2.0.0" ))
7476 repo .add_package (Package ("opt" , "2.2.0" ))
77+ repo .add_package (Package ("qux" , "1.2.0" ))
7578
7679
7780@pytest .fixture
@@ -174,15 +177,40 @@ def test_export_groups(
174177 assert tester .io .fetch_output () == expected
175178
176179
177- def test_export_includes_extras_by_flag (tester : CommandTester , do_lock : None ) -> None :
178- tester .execute ("--format requirements.txt --extras feature_bar" )
179- expected = f"""\
180+ @pytest .mark .parametrize (
181+ "extras, expected" ,
182+ [
183+ (
184+ "feature_bar" ,
185+ f"""\
180186 bar==1.1.0 ; { MARKER_PY }
181187foo==1.0.0 ; { MARKER_PY }
182- """
188+ """ ,
189+ ),
190+ (
191+ "feature_bar feature_qux" ,
192+ f"""\
193+ bar==1.1.0 ; { MARKER_PY }
194+ foo==1.0.0 ; { MARKER_PY }
195+ qux==1.2.0 ; { MARKER_PY }
196+ """ ,
197+ ),
198+ ],
199+ )
200+ def test_export_includes_extras_by_flag (
201+ tester : CommandTester , do_lock : None , extras : str , expected : str
202+ ) -> None :
203+ tester .execute (f"--format requirements.txt --extras '{ extras } '" )
183204 assert tester .io .fetch_output () == expected
184205
185206
207+ def test_export_reports_invalid_extras (tester : CommandTester , do_lock : None ) -> None :
208+ with pytest .raises (ValueError ) as error :
209+ tester .execute ("--format requirements.txt --extras 'SUS AMONGUS'" )
210+ expected = "Extra [AMONGUS, SUS] is not specified."
211+ assert str (error .value ) == expected
212+
213+
186214def test_export_with_urls (
187215 monkeypatch : MonkeyPatch , tester : CommandTester , poetry : Poetry
188216) -> None :
0 commit comments