|
20 | 20 | import subprocess |
21 | 21 | import yaml |
22 | 22 | import unittest.mock |
23 | | -from datetime import datetime |
| 23 | +from datetime import date, datetime |
24 | 24 | from pathlib import Path |
25 | 25 | from unittest.mock import MagicMock, mock_open |
26 | 26 |
|
@@ -1105,6 +1105,44 @@ def test_update_version_for_library_success_proto_only_setup_py(mocker): |
1105 | 1105 | ) |
1106 | 1106 |
|
1107 | 1107 |
|
| 1108 | +def test_update_version_for_library_success_with_date_string(mocker): |
| 1109 | + m = mock_open() |
| 1110 | + |
| 1111 | + mock_rglob = mocker.patch("pathlib.Path.rglob") |
| 1112 | + mock_rglob.side_effect = [ |
| 1113 | + [], |
| 1114 | + [pathlib.Path("repo/setup.py")], |
| 1115 | + [pathlib.Path("repo/samples/snippet_metadata.json")], |
| 1116 | + ] |
| 1117 | + mock_shutil_copy = mocker.patch("shutil.copy") |
| 1118 | + mock_content = 'version = "1.2.2"\n__release_date__ = "2025-11-03"' |
| 1119 | + mock_json_metadata = {"clientLibrary": {"version": "0.1.0"}} |
| 1120 | + today_iso = date.today().isoformat() |
| 1121 | + |
| 1122 | + with unittest.mock.patch("cli.open", m): |
| 1123 | + mocker.patch("cli._read_text_file", return_value=mock_content) |
| 1124 | + mocker.patch("cli._read_json_file", return_value=mock_json_metadata) |
| 1125 | + _update_version_for_library( |
| 1126 | + "repo", "output", "packages/google-cloud-language", "1.2.3" |
| 1127 | + ) |
| 1128 | + |
| 1129 | + handle = m() |
| 1130 | + assert ( |
| 1131 | + handle.write.call_args_list[0].args[0] |
| 1132 | + == f'version = "1.2.3"\n__release_date__ = "{today_iso}"' |
| 1133 | + ) |
| 1134 | + # Get all the arguments passed to the mock's write method |
| 1135 | + # and join them into a single string. |
| 1136 | + written_content = "".join( |
| 1137 | + [call.args[0] for call in handle.write.call_args_list[1:]] |
| 1138 | + ) |
| 1139 | + # Create the expected output string with the correct formatting. |
| 1140 | + assert ( |
| 1141 | + written_content |
| 1142 | + == '{\n "clientLibrary": {\n "version": "1.2.3"\n }\n}\n' |
| 1143 | + ) |
| 1144 | + |
| 1145 | + |
1108 | 1146 | def test_update_version_for_library_success_proto_only_pyproject_toml(mocker): |
1109 | 1147 | m = mock_open() |
1110 | 1148 |
|
|
0 commit comments