@@ -1543,3 +1543,104 @@ def test_bump_get_next__no_eligible_commits_raises(mocker: MockFixture):
1543
1543
1544
1544
with pytest .raises (NoneIncrementExit ):
1545
1545
cli .main ()
1546
+
1547
+
1548
+ def test_bump_allow_no_commit_with_no_commit (mocker , tmp_commitizen_project , capsys ):
1549
+ with tmp_commitizen_project .as_cwd ():
1550
+ # Create the first commit and bump to 1.0.0
1551
+ create_file_and_commit ("feat(user)!: new file" )
1552
+ testargs = ["cz" , "bump" , "--yes" ]
1553
+ mocker .patch .object (sys , "argv" , testargs )
1554
+ cli .main ()
1555
+
1556
+ # Verify NoCommitsFoundError should be raised
1557
+ # when there's no new commit and "--allow-no-commit" is not set
1558
+ with pytest .raises (NoCommitsFoundError ):
1559
+ testargs = ["cz" , "bump" ]
1560
+ mocker .patch .object (sys , "argv" , testargs )
1561
+ cli .main ()
1562
+
1563
+ # bump to 1.0.1 with new commit when "--allow-no-commit" is set
1564
+ testargs = ["cz" , "bump" , "--allow-no-commit" ]
1565
+ mocker .patch .object (sys , "argv" , testargs )
1566
+ cli .main ()
1567
+ out , _ = capsys .readouterr ()
1568
+ assert "bump: version 1.0.0 → 1.0.1" in out
1569
+
1570
+
1571
+ def test_bump_allow_no_commit_with_no_eligible_commit (
1572
+ mocker , tmp_commitizen_project , capsys
1573
+ ):
1574
+ with tmp_commitizen_project .as_cwd ():
1575
+ # Create the first commit and bump to 1.0.0
1576
+ create_file_and_commit ("feat(user)!: new file" )
1577
+ testargs = ["cz" , "bump" , "--yes" ]
1578
+ mocker .patch .object (sys , "argv" , testargs )
1579
+ cli .main ()
1580
+
1581
+ # Create a commit that is ineligible to bump
1582
+ create_file_and_commit ("docs(bump): add description for allow no commit" )
1583
+
1584
+ # Verify NoneIncrementExit should be raised
1585
+ # when there's no eligible bumping commit and "--allow-no-commit" is not set
1586
+ with pytest .raises (NoneIncrementExit ):
1587
+ testargs = ["cz" , "bump" , "--yes" ]
1588
+ mocker .patch .object (sys , "argv" , testargs )
1589
+ cli .main ()
1590
+
1591
+ # bump to 1.0.1 with ineligible commit when "--allow-no-commit" is set
1592
+ testargs = ["cz" , "bump" , "--allow-no-commit" ]
1593
+ mocker .patch .object (sys , "argv" , testargs )
1594
+ cli .main ()
1595
+ out , _ = capsys .readouterr ()
1596
+ assert "bump: version 1.0.0 → 1.0.1" in out
1597
+
1598
+
1599
+ def test_bump_allow_no_commit_with_increment (mocker , tmp_commitizen_project , capsys ):
1600
+ with tmp_commitizen_project .as_cwd ():
1601
+ # # Create the first commit and bump to 1.0.0
1602
+ create_file_and_commit ("feat(user)!: new file" )
1603
+ testargs = ["cz" , "bump" , "--yes" ]
1604
+ mocker .patch .object (sys , "argv" , testargs )
1605
+ cli .main ()
1606
+
1607
+ # Verify NoCommitsFoundError should be raised
1608
+ # when there's no new commit and "--allow-no-commit" is not set
1609
+ with pytest .raises (NoCommitsFoundError ):
1610
+ testargs = ["cz" , "bump" , "--yes" ]
1611
+ mocker .patch .object (sys , "argv" , testargs )
1612
+ cli .main ()
1613
+
1614
+ # bump to 1.1.0 with no new commit when "--allow-no-commit" is set
1615
+ # and increment is specified
1616
+ testargs = ["cz" , "bump" , "--yes" , "--allow-no-commit" , "--increment" , "MINOR" ]
1617
+ mocker .patch .object (sys , "argv" , testargs )
1618
+ cli .main ()
1619
+ out , _ = capsys .readouterr ()
1620
+ assert "bump: version 1.0.0 → 1.1.0" in out
1621
+
1622
+
1623
+ def test_bump_allow_no_commit_with_manual_version (
1624
+ mocker , tmp_commitizen_project , capsys
1625
+ ):
1626
+ with tmp_commitizen_project .as_cwd ():
1627
+ # # Create the first commit and bump to 1.0.0
1628
+ create_file_and_commit ("feat(user)!: new file" )
1629
+ testargs = ["cz" , "bump" , "--yes" ]
1630
+ mocker .patch .object (sys , "argv" , testargs )
1631
+ cli .main ()
1632
+
1633
+ # Verify NoCommitsFoundError should be raised
1634
+ # when there's no new commit and "--allow-no-commit" is not set
1635
+ with pytest .raises (NoCommitsFoundError ):
1636
+ testargs = ["cz" , "bump" , "--yes" ]
1637
+ mocker .patch .object (sys , "argv" , testargs )
1638
+ cli .main ()
1639
+
1640
+ # bump to 1.1.0 with no new commit when "--allow-no-commit" is set
1641
+ # and increment is specified
1642
+ testargs = ["cz" , "bump" , "--yes" , "--allow-no-commit" , "2.0.0" ]
1643
+ mocker .patch .object (sys , "argv" , testargs )
1644
+ cli .main ()
1645
+ out , _ = capsys .readouterr ()
1646
+ assert "bump: version 1.0.0 → 2.0.0" in out
0 commit comments