feat: add chrome path picker

This commit is contained in:
chengma
2026-07-08 14:07:42 +08:00
parent 967047f876
commit 40322f747e
3 changed files with 91 additions and 3 deletions
+53 -1
View File
@@ -733,9 +733,61 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertFalse(hidden_widget.isEnabled())
self.assertEqual(-1, tab.infrastructure_form_layout.indexOf(hidden_widget))
self.assertGreaterEqual(
tab.infrastructure_form_layout.indexOf(tab.chrome_path_edit),
tab.infrastructure_form_layout.indexOf(tab.chrome_path_widget),
0,
)
self.assertEqual("选择...", tab.chrome_path_browse_button.text())
self.assertEqual("chromePathBrowseButton", tab.chrome_path_browse_button.objectName())
self.assertIs(
tab.chrome_path_widget.layout().itemAt(0).widget(),
tab.chrome_path_edit,
)
self.assertIs(
tab.chrome_path_widget.layout().itemAt(1).widget(),
tab.chrome_path_browse_button,
)
self.assert_removed(temp_dir)
def test_settings_tab_browses_chrome_path(self):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)
statuses = []
tab = SettingsTab(config=cfg, status_callback=statuses.append)
self.addCleanup(tab.close)
selected_path = os.path.join(temp_dir, "Chrome", "chrome.exe")
os.makedirs(os.path.dirname(selected_path), exist_ok=True)
self.assertFalse(tab.is_dirty())
with mock.patch(
"app.gui.tabs.settings.QFileDialog.getOpenFileName",
return_value=(selected_path, "Chrome 程序 (chrome.exe)"),
) as browse:
tab.chrome_path_browse_button.click()
browse.assert_called_once()
self.assertEqual("选择 Chrome 程序", browse.call_args[0][1])
self.assertEqual(selected_path, tab.chrome_path_edit.text())
self.assertTrue(tab.is_dirty())
self.assertFalse(tab.unsaved_changes_label.isHidden())
with mock.patch("app.gui.QMessageBox.information") as info:
self.assertTrue(tab.save_app_settings())
info.assert_called_once_with(tab, "保存设置", "设置已保存")
saved = appconfig.load_config(cfg["config_path"])
self.assertEqual(selected_path, saved["chrome_path"])
self.assertFalse(tab.is_dirty())
tab._set_dirty(False)
previous_path = tab.chrome_path_edit.text()
with mock.patch(
"app.gui.tabs.settings.QFileDialog.getOpenFileName",
return_value=("", ""),
):
tab.chrome_path_browse_button.click()
self.assertEqual(previous_path, tab.chrome_path_edit.text())
self.assertFalse(tab.is_dirty())
self.assert_removed(temp_dir)