22
22
23
23
24
24
@pytest .fixture
25
- def poetry_sample_project (set_project_context : SetProjectContext ) -> Iterator [Poetry ]:
26
- with set_project_context ("sample_project " , in_place = False ) as cwd :
25
+ def poetry_simple_project (set_project_context : SetProjectContext ) -> Iterator [Poetry ]:
26
+ with set_project_context ("simple_project " , in_place = False ) as cwd :
27
27
yield Factory ().create_poetry (cwd )
28
28
29
29
@@ -45,9 +45,9 @@ def poetry_with_up_to_date_lockfile(
45
45
46
46
@pytest .fixture ()
47
47
def tester (
48
- command_tester_factory : CommandTesterFactory , poetry_sample_project : Poetry
48
+ command_tester_factory : CommandTesterFactory , poetry_simple_project : Poetry
49
49
) -> CommandTester :
50
- return command_tester_factory ("check" , poetry = poetry_sample_project )
50
+ return command_tester_factory ("check" , poetry = poetry_simple_project )
51
51
52
52
53
53
def test_check_valid (tester : CommandTester ) -> None :
@@ -60,6 +60,57 @@ def test_check_valid(tester: CommandTester) -> None:
60
60
assert tester .io .fetch_output () == expected
61
61
62
62
63
+ def test_check_valid_legacy (
64
+ mocker : MockerFixture , tester : CommandTester , fixture_dir : FixtureDirGetter
65
+ ) -> None :
66
+ mocker .patch (
67
+ "poetry.poetry.Poetry.file" ,
68
+ return_value = TOMLFile (fixture_dir ("simple_project_legacy" ) / "pyproject.toml" ),
69
+ new_callable = mocker .PropertyMock ,
70
+ )
71
+ tester .execute ()
72
+
73
+ expected = (
74
+ "Warning: [tool.poetry.name] is deprecated. Use [project.name] instead.\n "
75
+ "Warning: [tool.poetry.version] is set but 'version' is not in "
76
+ "[project.dynamic]. If it is static use [project.version]. If it is dynamic, "
77
+ "add 'version' to [project.dynamic].\n "
78
+ "If you want to set the version dynamically via `poetry build "
79
+ "--local-version` or you are using a plugin, which sets the version "
80
+ "dynamically, you should define the version in [tool.poetry] and add "
81
+ "'version' to [project.dynamic].\n "
82
+ "Warning: [tool.poetry.description] is deprecated. Use [project.description] "
83
+ "instead.\n "
84
+ "Warning: [tool.poetry.readme] is set but 'readme' is not in "
85
+ "[project.dynamic]. If it is static use [project.readme]. If it is dynamic, "
86
+ "add 'readme' to [project.dynamic].\n "
87
+ "If you want to define multiple readmes, you should define them in "
88
+ "[tool.poetry] and add 'readme' to [project.dynamic].\n "
89
+ "Warning: [tool.poetry.license] is deprecated. Use [project.license] instead.\n "
90
+ "Warning: [tool.poetry.authors] is deprecated. Use [project.authors] instead.\n "
91
+ "Warning: [tool.poetry.keywords] is deprecated. Use [project.keywords] "
92
+ "instead.\n "
93
+ "Warning: [tool.poetry.classifiers] is set but 'classifiers' is not in "
94
+ "[project.dynamic]. If it is static use [project.classifiers]. If it is "
95
+ "dynamic, add 'classifiers' to [project.dynamic].\n "
96
+ "ATTENTION: Per default Poetry determines classifiers for supported Python "
97
+ "versions and license automatically. If you define classifiers in [project], "
98
+ "you disable the automatic enrichment. In other words, you have to define all "
99
+ "classifiers manually. If you want to use Poetry's automatic enrichment of "
100
+ "classifiers, you should define them in [tool.poetry] and add 'classifiers' "
101
+ "to [project.dynamic].\n "
102
+ "Warning: [tool.poetry.homepage] is deprecated. Use [project.urls] instead.\n "
103
+ "Warning: [tool.poetry.repository] is deprecated. Use [project.urls] instead.\n "
104
+ "Warning: [tool.poetry.documentation] is deprecated. Use [project.urls] "
105
+ "instead.\n "
106
+ "Warning: Defining console scripts in [tool.poetry.scripts] is deprecated. "
107
+ "Use [project.scripts] instead. ([tool.poetry.scripts] should only be used "
108
+ "for scripts of type 'file').\n "
109
+ )
110
+
111
+ assert tester .io .fetch_error () == expected
112
+
113
+
63
114
def test_check_invalid (
64
115
mocker : MockerFixture , tester : CommandTester , fixture_dir : FixtureDirGetter
65
116
) -> None :
@@ -71,10 +122,7 @@ def test_check_invalid(
71
122
72
123
tester .execute ("--lock" )
73
124
74
- fastjsonschema_error = "data must contain ['description'] properties"
75
- custom_error = "The fields ['description'] are required in package mode."
76
- expected_template = """\
77
- Error: {schema_error}
125
+ expected = """\
78
126
Error: Project name (invalid) is same as one of its dependencies
79
127
Error: Unrecognized classifiers: ['Intended Audience :: Clowns'].
80
128
Error: Declared README file does not exist: never/exists.md
@@ -91,12 +139,8 @@ def test_check_invalid(
91
139
'Topic :: Communications :: Chat :: AOL Instant Messenger'.\
92
140
Must be removed.
93
141
"""
94
- expected = {
95
- expected_template .format (schema_error = schema_error )
96
- for schema_error in (fastjsonschema_error , custom_error )
97
- }
98
142
99
- assert tester .io .fetch_error () in expected
143
+ assert tester .io .fetch_error () == expected
100
144
101
145
102
146
def test_check_private (
0 commit comments