diff --git a/tests/tools/private/release/release_test.py b/tests/tools/private/release/release_test.py index 72a9a05cd6..676a898440 100644 --- a/tests/tools/private/release/release_test.py +++ b/tests/tools/private/release/release_test.py @@ -210,5 +210,62 @@ def test_get_latest_version_only_rc_tags(self, mock_get_tags): releaser.get_latest_version() +class DetermineNextVersionTest(unittest.TestCase): + def setUp(self): + self.tmpdir = pathlib.Path(tempfile.mkdtemp()) + self.original_cwd = os.getcwd() + self.addCleanup(shutil.rmtree, self.tmpdir) + + os.chdir(self.tmpdir) + # NOTE: On windows, this must be done before files are deleted. + self.addCleanup(os.chdir, self.original_cwd) + + self.mock_get_latest_version = patch( + "tools.private.release.release.get_latest_version" + ).start() + self.addCleanup(patch.stopall) + + def test_no_markers(self): + (self.tmpdir / "mock_file.bzl").write_text("no markers here") + self.mock_get_latest_version.return_value = "1.2.3" + + next_version = releaser.determine_next_version() + + self.assertEqual(next_version, "1.2.4") + + def test_only_patch(self): + (self.tmpdir / "mock_file.bzl").write_text( + ":::{versionchanged} VERSION_NEXT_PATCH" + ) + self.mock_get_latest_version.return_value = "1.2.3" + + next_version = releaser.determine_next_version() + + self.assertEqual(next_version, "1.2.4") + + def test_only_feature(self): + (self.tmpdir / "mock_file.bzl").write_text( + ":::{versionadded} VERSION_NEXT_FEATURE" + ) + self.mock_get_latest_version.return_value = "1.2.3" + + next_version = releaser.determine_next_version() + + self.assertEqual(next_version, "1.3.0") + + def test_both_markers(self): + (self.tmpdir / "mock_file_patch.bzl").write_text( + ":::{versionchanged} VERSION_NEXT_PATCH" + ) + (self.tmpdir / "mock_file_feature.bzl").write_text( + ":::{versionadded} VERSION_NEXT_FEATURE" + ) + self.mock_get_latest_version.return_value = "1.2.3" + + next_version = releaser.determine_next_version() + + self.assertEqual(next_version, "1.3.0") + + if __name__ == "__main__": unittest.main() diff --git a/tools/private/release/release.py b/tools/private/release/release.py index def6754347..6fce0ff3b0 100644 --- a/tools/private/release/release.py +++ b/tools/private/release/release.py @@ -170,6 +170,10 @@ def create_parser(): def main(): + # Change to the workspace root so the script can be run using `bazel run` + if "BUILD_WORKSPACE_DIRECTORY" in os.environ: + os.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"]) + parser = create_parser() args = parser.parse_args() @@ -179,10 +183,6 @@ def main(): version = determine_next_version() print(f"Determined next version: {version}") - # Change to the workspace root so the script can be run using `bazel run` - if "BUILD_WORKSPACE_DIRECTORY" in os.environ: - os.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"]) - print("Updating changelog ...") release_date = datetime.date.today().strftime("%Y-%m-%d") update_changelog(version, release_date)