Skip to content

Commit 8069fa5

Browse files
authored
internal: make release to chdir before looking for version markers (#3342)
The release tool wasn't determining the next version correctly because it was in the wrong directory when that logic ran. To fix, chdir before that logic kicks off.
1 parent f3e83e7 commit 8069fa5

File tree

2 files changed

+61
-4
lines changed

2 files changed

+61
-4
lines changed

tests/tools/private/release/release_test.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,5 +210,62 @@ def test_get_latest_version_only_rc_tags(self, mock_get_tags):
210210
releaser.get_latest_version()
211211

212212

213+
class DetermineNextVersionTest(unittest.TestCase):
214+
def setUp(self):
215+
self.tmpdir = pathlib.Path(tempfile.mkdtemp())
216+
self.original_cwd = os.getcwd()
217+
self.addCleanup(shutil.rmtree, self.tmpdir)
218+
219+
os.chdir(self.tmpdir)
220+
# NOTE: On windows, this must be done before files are deleted.
221+
self.addCleanup(os.chdir, self.original_cwd)
222+
223+
self.mock_get_latest_version = patch(
224+
"tools.private.release.release.get_latest_version"
225+
).start()
226+
self.addCleanup(patch.stopall)
227+
228+
def test_no_markers(self):
229+
(self.tmpdir / "mock_file.bzl").write_text("no markers here")
230+
self.mock_get_latest_version.return_value = "1.2.3"
231+
232+
next_version = releaser.determine_next_version()
233+
234+
self.assertEqual(next_version, "1.2.4")
235+
236+
def test_only_patch(self):
237+
(self.tmpdir / "mock_file.bzl").write_text(
238+
":::{versionchanged} VERSION_NEXT_PATCH"
239+
)
240+
self.mock_get_latest_version.return_value = "1.2.3"
241+
242+
next_version = releaser.determine_next_version()
243+
244+
self.assertEqual(next_version, "1.2.4")
245+
246+
def test_only_feature(self):
247+
(self.tmpdir / "mock_file.bzl").write_text(
248+
":::{versionadded} VERSION_NEXT_FEATURE"
249+
)
250+
self.mock_get_latest_version.return_value = "1.2.3"
251+
252+
next_version = releaser.determine_next_version()
253+
254+
self.assertEqual(next_version, "1.3.0")
255+
256+
def test_both_markers(self):
257+
(self.tmpdir / "mock_file_patch.bzl").write_text(
258+
":::{versionchanged} VERSION_NEXT_PATCH"
259+
)
260+
(self.tmpdir / "mock_file_feature.bzl").write_text(
261+
":::{versionadded} VERSION_NEXT_FEATURE"
262+
)
263+
self.mock_get_latest_version.return_value = "1.2.3"
264+
265+
next_version = releaser.determine_next_version()
266+
267+
self.assertEqual(next_version, "1.3.0")
268+
269+
213270
if __name__ == "__main__":
214271
unittest.main()

tools/private/release/release.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ def create_parser():
170170

171171

172172
def main():
173+
# Change to the workspace root so the script can be run using `bazel run`
174+
if "BUILD_WORKSPACE_DIRECTORY" in os.environ:
175+
os.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"])
176+
173177
parser = create_parser()
174178
args = parser.parse_args()
175179

@@ -179,10 +183,6 @@ def main():
179183
version = determine_next_version()
180184
print(f"Determined next version: {version}")
181185

182-
# Change to the workspace root so the script can be run using `bazel run`
183-
if "BUILD_WORKSPACE_DIRECTORY" in os.environ:
184-
os.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"])
185-
186186
print("Updating changelog ...")
187187
release_date = datetime.date.today().strftime("%Y-%m-%d")
188188
update_changelog(version, release_date)

0 commit comments

Comments
 (0)