@@ -266,3 +266,94 @@ def test_init_command_shows_description_when_use_help_option(
266
266
267
267
out , _ = capsys .readouterr ()
268
268
file_regression .check (out , extension = ".txt" )
269
+
270
+
271
+ def test_init_with_confirmed_tag_format (config , mocker : MockFixture , tmpdir ):
272
+ mocker .patch (
273
+ "commitizen.commands.init.get_tag_names" , return_value = ["v0.0.2" , "v0.0.1" ]
274
+ )
275
+ mocker .patch ("commitizen.commands.init.get_latest_tag_name" , return_value = "v0.0.2" )
276
+ mocker .patch (
277
+ "questionary.select" ,
278
+ side_effect = [
279
+ FakeQuestion ("pyproject.toml" ),
280
+ FakeQuestion ("cz_conventional_commits" ),
281
+ FakeQuestion ("commitizen" ),
282
+ FakeQuestion ("semver" ),
283
+ ],
284
+ )
285
+ mocker .patch ("questionary.confirm" , return_value = FakeQuestion (True ))
286
+ mocker .patch ("questionary.text" , return_value = FakeQuestion ("$version" ))
287
+ mocker .patch ("questionary.checkbox" , return_value = FakeQuestion (None ))
288
+
289
+ with tmpdir .as_cwd ():
290
+ commands .Init (config )()
291
+ with open ("pyproject.toml" , encoding = "utf-8" ) as toml_file :
292
+ assert 'tag_format = "v$version"' in toml_file .read ()
293
+
294
+
295
+ def test_init_with_no_existing_tags (config , mocker : MockFixture , tmpdir ):
296
+ mocker .patch ("commitizen.commands.init.get_tag_names" , return_value = [])
297
+ mocker .patch ("commitizen.commands.init.get_latest_tag_name" , return_value = "v1.0.0" )
298
+ mocker .patch (
299
+ "questionary.select" ,
300
+ side_effect = [
301
+ FakeQuestion ("pyproject.toml" ),
302
+ FakeQuestion ("cz_conventional_commits" ),
303
+ FakeQuestion ("commitizen" ),
304
+ FakeQuestion ("semver" ),
305
+ ],
306
+ )
307
+ mocker .patch ("questionary.confirm" , return_value = FakeQuestion (False ))
308
+ mocker .patch ("questionary.text" , return_value = FakeQuestion ("$version" ))
309
+ mocker .patch ("questionary.checkbox" , return_value = FakeQuestion (None ))
310
+
311
+ with tmpdir .as_cwd ():
312
+ commands .Init (config )()
313
+ with open ("pyproject.toml" , encoding = "utf-8" ) as toml_file :
314
+ assert 'version = "0.0.1"' in toml_file .read ()
315
+
316
+
317
+ def test_init_with_no_existing_latest_tag (config , mocker : MockFixture , tmpdir ):
318
+ mocker .patch ("commitizen.commands.init.get_latest_tag_name" , return_value = None )
319
+ mocker .patch (
320
+ "questionary.select" ,
321
+ side_effect = [
322
+ FakeQuestion ("pyproject.toml" ),
323
+ FakeQuestion ("cz_conventional_commits" ),
324
+ FakeQuestion ("commitizen" ),
325
+ FakeQuestion ("semver" ),
326
+ ],
327
+ )
328
+ mocker .patch ("questionary.confirm" , return_value = FakeQuestion (True ))
329
+ mocker .patch ("questionary.text" , return_value = FakeQuestion ("$version" ))
330
+ mocker .patch ("questionary.checkbox" , return_value = FakeQuestion (None ))
331
+
332
+ with tmpdir .as_cwd ():
333
+ commands .Init (config )()
334
+ with open ("pyproject.toml" , encoding = "utf-8" ) as toml_file :
335
+ assert 'version = "0.0.1"' in toml_file .read ()
336
+
337
+
338
+ def test_init_with_existing_tags (config , mocker : MockFixture , tmpdir ):
339
+ expected_tags = ["v1.0.0" , "v0.9.0" , "v0.8.0" ]
340
+ mocker .patch ("commitizen.commands.init.get_tag_names" , return_value = expected_tags )
341
+ mocker .patch ("commitizen.commands.init.get_latest_tag_name" , return_value = "v1.0.0" )
342
+ mocker .patch (
343
+ "questionary.select" ,
344
+ side_effect = [
345
+ FakeQuestion ("pyproject.toml" ),
346
+ FakeQuestion ("cz_conventional_commits" ),
347
+ FakeQuestion ("commitizen" ),
348
+ FakeQuestion ("semver" ), # Select version scheme first
349
+ FakeQuestion ("v1.0.0" ), # Then select the latest tag
350
+ ],
351
+ )
352
+ mocker .patch ("questionary.confirm" , return_value = FakeQuestion (True ))
353
+ mocker .patch ("questionary.text" , return_value = FakeQuestion ("$version" ))
354
+ mocker .patch ("questionary.checkbox" , return_value = FakeQuestion (None ))
355
+
356
+ with tmpdir .as_cwd ():
357
+ commands .Init (config )()
358
+ with open ("pyproject.toml" , encoding = "utf-8" ) as toml_file :
359
+ assert 'version = "1.0.0"' in toml_file .read ()
0 commit comments