From 6b745913cf2bf37034ef222d1c4e612663fd6760 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 20:17:20 +0000 Subject: [PATCH 1/2] Update whats_new.rst for upcoming draft release changes Co-authored-by: swainn <5123221+swainn@users.noreply.github.com> --- docs/whats_new.rst | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/docs/whats_new.rst b/docs/whats_new.rst index 59618d22f..0eda0317d 100644 --- a/docs/whats_new.rst +++ b/docs/whats_new.rst @@ -32,12 +32,27 @@ Job Status Update Throttling See: :ref:`jobs_api` -Buy Me a Soda -------------- -* Tethys Platform has added a "Buy Me a Soda" button to the documentation, allowing users to support the project financially. -* This is a way for users to contribute to the ongoing development and maintenance of Tethys +Time Picker Gizmo +----------------- -See: :ref:`contribute_documentation` +* Added a new ``TimePicker`` gizmo for time-entry form inputs. + +See: :doc:`tethys_sdk/gizmos/time_picker` + +Bug Fixes +--------- + +* Login and register form fixes: `PR 1293 `_ +* Static file discovery fix for ``STATICFILES_USE_NPM``: `PR 1291 `_ +* Django 5 app initialization warning fix: `PR 1288 `_ +* Component fixes: `PR 1285 `_ +* App install fix for service settings: `PR 1284 `_ + +Documentation and CI +-------------------- + +* Added new recipes documentation: `PR 1282 `_ +* Fixed Read the Docs builds for the Ubuntu 26.04 image: `PR 1289 `_ Prior Release Notes =================== From 51a4407799e3cefcd1f486b023758da114e3ee1c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 20:39:46 +0000 Subject: [PATCH 2/2] Add test coverage for non-Python post install scripts Co-authored-by: swainn <5123221+swainn@users.noreply.github.com> --- .../test_tethys_cli/test_install_commands.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/unit_tests/test_tethys_cli/test_install_commands.py b/tests/unit_tests/test_tethys_cli/test_install_commands.py index 1a3e24ddb..e195b3760 100644 --- a/tests/unit_tests/test_tethys_cli/test_install_commands.py +++ b/tests/unit_tests/test_tethys_cli/test_install_commands.py @@ -892,6 +892,50 @@ def test_input_file_with_post(self, mock_pretty_output, _, __): po_call_args[8][0][0], ) + @mock.patch("tethys_cli.install_commands.run_services") + @mock.patch("tethys_cli.install_commands.call", return_value=0) + @mock.patch("tethys_cli.install_commands.Popen") + @mock.patch("tethys_cli.cli_colors.pretty_output") + def test_input_file_with_non_py_post(self, mock_pretty_output, mock_popen, _, __): + file_path = self.root_app_path / "install-with-post-non-py.yml" + file_path.write_text( + "version: 1.0\n" + "name: test_app\n" + "\n" + "requirements:\n" + " skip: True\n" + "post:\n" + " - ./test.sh\n" + ) + args = mock.MagicMock( + file=file_path, + verbose=False, + no_db_sync=False, + only_dependencies=False, + without_dependencies=False, + ) + mock_popen.return_value.communicate.return_value = (b"test", b"") + + try: + install_commands.install_command(args) + finally: + file_path.unlink(missing_ok=True) + + expected_command = f'"{self.root_app_path / "test.sh"}"' + mock_popen.assert_called_once_with( + expected_command, + shell=True, + stdout=install_commands.PIPE, + stderr=install_commands.PIPE, + ) + po_call_args = mock_pretty_output().__enter__().write.call_args_list + self.assertIn("Running post installation tasks...", po_call_args[6][0][0]) + self.assertIn("Post Script Result: b'test", po_call_args[7][0][0]) + self.assertIn( + "Successfully installed test_app into the active Tethys Portal.", + po_call_args[8][0][0], + ) + @mock.patch("tethys_cli.install_commands.run_services") @mock.patch("tethys_cli.install_commands.run_sync_stores") @mock.patch("tethys_cli.install_commands.run_interactive_services")