-
Notifications
You must be signed in to change notification settings - Fork 122
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add --keep option to allow to generate newsfile, but keep newsfragmen… (
#453) * Add --keep option to allow to generate newsfile, but keep newsfragments - closes #129 * Apply suggestions from code review Co-authored-by: Adi Roiban <[email protected]> * Additional post-PR enhancements * Update build --keep comment to be more relevant Co-authored-by: Adi Roiban <[email protected]> * More compact remove_files and use with_isolated_runner for new tests * Refactored _git.remove_files Code making decision to remove prompt or keep news fragments is being kept in new intermediate function _remover.remove_news_fragment_files * Update src/towncrier/newsfragments/129.feature Co-authored-by: Hynek Schlawack <[email protected]> * Make a decision and return it instead of calling _git.remove underneath * Move should_remove_fragment_files into build module Co-authored-by: Adi Roiban <[email protected]> Co-authored-by: Hynek Schlawack <[email protected]>
- Loading branch information
1 parent
9554985
commit 24f65a0
Showing
5 changed files
with
130 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Added ``--keep`` option to the ``build`` command that allows to generate a newsfile, but keeps the newsfragments in place. | ||
This option can not be used together with ``--yes``. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -407,6 +407,66 @@ def test_no_confirmation(self): | |
self.assertFalse(os.path.isfile(fragment_path1)) | ||
self.assertFalse(os.path.isfile(fragment_path2)) | ||
|
||
@with_isolated_runner | ||
def test_keep_fragments(self, runner): | ||
""" | ||
The `--keep` option will build the full final news file | ||
without deleting the fragment files and without | ||
any extra CLI interaction or confirmation. | ||
""" | ||
setup_simple_project() | ||
fragment_path1 = "foo/newsfragments/123.feature" | ||
fragment_path2 = "foo/newsfragments/124.feature.rst" | ||
with open(fragment_path1, "w") as f: | ||
f.write("Adds levitation") | ||
with open(fragment_path2, "w") as f: | ||
f.write("Extends levitation") | ||
|
||
call(["git", "init"]) | ||
call(["git", "config", "user.name", "user"]) | ||
call(["git", "config", "user.email", "[email protected]"]) | ||
call(["git", "add", "."]) | ||
call(["git", "commit", "-m", "Initial Commit"]) | ||
|
||
result = runner.invoke(_main, ["--date", "01-01-2001", "--keep"]) | ||
|
||
self.assertEqual(0, result.exit_code) | ||
# The NEWS file is created. | ||
# So this is not just `--draft`. | ||
self.assertTrue(os.path.isfile("NEWS.rst")) | ||
self.assertTrue(os.path.isfile(fragment_path1)) | ||
self.assertTrue(os.path.isfile(fragment_path2)) | ||
|
||
@with_isolated_runner | ||
def test_yes_keep_error(self, runner): | ||
""" | ||
It will fail to perform any action when the | ||
conflicting --keep and --yes options are provided. | ||
Called twice with the different order of --keep and --yes options | ||
to make sure both orders are validated since click triggers the validator | ||
in the order it parses the command line. | ||
""" | ||
setup_simple_project() | ||
fragment_path1 = "foo/newsfragments/123.feature" | ||
fragment_path2 = "foo/newsfragments/124.feature.rst" | ||
with open(fragment_path1, "w") as f: | ||
f.write("Adds levitation") | ||
with open(fragment_path2, "w") as f: | ||
f.write("Extends levitation") | ||
|
||
call(["git", "init"]) | ||
call(["git", "config", "user.name", "user"]) | ||
call(["git", "config", "user.email", "[email protected]"]) | ||
call(["git", "add", "."]) | ||
call(["git", "commit", "-m", "Initial Commit"]) | ||
|
||
result = runner.invoke(_main, ["--date", "01-01-2001", "--yes", "--keep"]) | ||
self.assertEqual(1, result.exit_code) | ||
|
||
result = runner.invoke(_main, ["--date", "01-01-2001", "--keep", "--yes"]) | ||
self.assertEqual(1, result.exit_code) | ||
|
||
def test_confirmation_says_no(self): | ||
""" | ||
If the user says "no" to removing the newsfragements, we end up with | ||
|
@@ -429,7 +489,7 @@ def test_confirmation_says_no(self): | |
call(["git", "add", "."]) | ||
call(["git", "commit", "-m", "Initial Commit"]) | ||
|
||
with patch("towncrier._git.click.confirm") as m: | ||
with patch("towncrier.build.click.confirm") as m: | ||
m.return_value = False | ||
result = runner.invoke(_main, []) | ||
|
||
|