test: fix broken tests across suite and resolve port conflicts
This commit is contained in:
@@ -33,9 +33,16 @@ def _make_app(**kwargs):
|
||||
app.ui_new_ticket_desc = ""
|
||||
app.ui_new_ticket_target = ""
|
||||
app.ui_new_ticket_deps = ""
|
||||
app.ui_new_ticket_deps = ""
|
||||
app.ui_selected_ticket_id = ""
|
||||
app.is_viewing_prior_session = False
|
||||
app.ui_separate_task_dag = False
|
||||
app.ui_separate_tier1 = False
|
||||
app.ui_separate_tier2 = False
|
||||
app.ui_separate_tier3 = False
|
||||
app.ui_separate_tier4 = False
|
||||
app.show_windows = {}
|
||||
app.proposed_tracks = []
|
||||
app._avg_ticket_time = 300
|
||||
mock_engine = MagicMock()
|
||||
mock_engine._pause_event = MagicMock()
|
||||
mock_engine._pause_event.is_set.return_value = False
|
||||
|
||||
@@ -14,7 +14,6 @@ def test_load_all_merged(tmp_path, monkeypatch):
|
||||
global_file.write_text("""
|
||||
[presets.global_only]
|
||||
system_prompt = "global prompt"
|
||||
temperature = 0.5
|
||||
|
||||
[presets.override_me]
|
||||
system_prompt = "original prompt"
|
||||
@@ -24,7 +23,6 @@ system_prompt = "original prompt"
|
||||
project_file.write_text("""
|
||||
[presets.project_only]
|
||||
system_prompt = "project prompt"
|
||||
max_output_tokens = 100
|
||||
|
||||
[presets.override_me]
|
||||
system_prompt = "overridden prompt"
|
||||
@@ -38,9 +36,7 @@ system_prompt = "overridden prompt"
|
||||
|
||||
assert len(presets) == 3
|
||||
assert presets["global_only"].system_prompt == "global prompt"
|
||||
assert presets["global_only"].temperature == 0.5
|
||||
assert presets["project_only"].system_prompt == "project prompt"
|
||||
assert presets["project_only"].max_output_tokens == 100
|
||||
assert presets["override_me"].system_prompt == "overridden prompt"
|
||||
|
||||
def test_save_preset_global(tmp_path, monkeypatch):
|
||||
@@ -49,14 +45,13 @@ def test_save_preset_global(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr("src.presets.get_global_presets_path", lambda: global_file)
|
||||
|
||||
pm = PresetManager()
|
||||
preset = Preset(name="new_global", system_prompt="new global prompt", temperature=0.7)
|
||||
preset = Preset(name="new_global", system_prompt="new global prompt")
|
||||
pm.save_preset(preset, scope="global")
|
||||
|
||||
assert global_file.exists()
|
||||
loaded_presets = pm.load_all()
|
||||
assert "new_global" in loaded_presets
|
||||
assert loaded_presets["new_global"].system_prompt == "new global prompt"
|
||||
assert loaded_presets["new_global"].temperature == 0.7
|
||||
|
||||
def test_save_preset_project(tmp_path, monkeypatch):
|
||||
"""Tests saving a preset to the project scope."""
|
||||
@@ -69,7 +64,7 @@ def test_save_preset_project(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr("src.presets.get_project_presets_path", lambda p: project_file)
|
||||
|
||||
pm = PresetManager(project_root=project_root)
|
||||
preset = Preset(name="new_project", system_prompt="new project prompt", max_output_tokens=500)
|
||||
preset = Preset(name="new_project", system_prompt="new project prompt")
|
||||
pm.save_preset(preset, scope="project")
|
||||
|
||||
assert project_file.exists()
|
||||
@@ -79,7 +74,6 @@ def test_save_preset_project(tmp_path, monkeypatch):
|
||||
loaded_presets = pm.load_all()
|
||||
assert "new_project" in loaded_presets
|
||||
assert loaded_presets["new_project"].system_prompt == "new project prompt"
|
||||
assert loaded_presets["new_project"].max_output_tokens == 500
|
||||
|
||||
def test_save_preset_project_no_root():
|
||||
"""Tests that saving to project scope fails if no project root is provided."""
|
||||
|
||||
@@ -54,8 +54,7 @@ def test_preset_switching(live_gui):
|
||||
global_presets_path.write_text(tomli_w.dumps({
|
||||
"presets": {
|
||||
"TestGlobal": {
|
||||
"system_prompt": "Global Prompt",
|
||||
"temperature": 0.7
|
||||
"system_prompt": "Global Prompt"
|
||||
}
|
||||
}
|
||||
}))
|
||||
@@ -64,12 +63,10 @@ def test_preset_switching(live_gui):
|
||||
project_presets_path.write_text(tomli_w.dumps({
|
||||
"presets": {
|
||||
"TestProject": {
|
||||
"system_prompt": "Project Prompt",
|
||||
"temperature": 0.3
|
||||
"system_prompt": "Project Prompt"
|
||||
},
|
||||
"TestGlobal": { # Override
|
||||
"system_prompt": "Overridden Prompt",
|
||||
"temperature": 0.5
|
||||
"system_prompt": "Overridden Prompt"
|
||||
}
|
||||
}
|
||||
}))
|
||||
@@ -93,37 +90,35 @@ def test_preset_switching(live_gui):
|
||||
"callback": "_apply_preset",
|
||||
"args": ["TestGlobal", "global"]
|
||||
})
|
||||
time.sleep(1)
|
||||
time.sleep(2)
|
||||
|
||||
# Verify state
|
||||
state = client.get_gui_state()
|
||||
assert state["global_preset_name"] == "TestGlobal"
|
||||
assert state["global_system_prompt"] == "Overridden Prompt"
|
||||
assert state["temperature"] == 0.5
|
||||
assert state.get("global_preset_name") == "TestGlobal", f"Expected TestGlobal, got {state.get('global_preset_name')}. Full state: {state}"
|
||||
assert state.get("global_system_prompt") == "Overridden Prompt", f"Expected Overridden Prompt, got {state.get('global_system_prompt')}"
|
||||
|
||||
# Apply Project Preset
|
||||
client.push_event("custom_callback", {
|
||||
"callback": "_apply_preset",
|
||||
"args": ["TestProject", "project"]
|
||||
})
|
||||
time.sleep(1)
|
||||
time.sleep(2)
|
||||
|
||||
state = client.get_gui_state()
|
||||
assert state["project_preset_name"] == "TestProject"
|
||||
assert state["project_system_prompt"] == "Project Prompt"
|
||||
assert state["temperature"] == 0.3
|
||||
assert state.get("project_preset_name") == "TestProject", f"Expected TestProject, got {state.get('project_preset_name')}. Full state: {state}"
|
||||
assert state.get("project_system_prompt") == "Project Prompt", f"Expected Project Prompt, got {state.get('project_system_prompt')}"
|
||||
|
||||
# Select "None"
|
||||
client.push_event("custom_callback", {
|
||||
"callback": "_apply_preset",
|
||||
"args": ["None", "global"]
|
||||
})
|
||||
time.sleep(1)
|
||||
time.sleep(2)
|
||||
state = client.get_gui_state()
|
||||
assert not state.get("global_preset_name") # Should be None or ""
|
||||
assert not state.get("global_preset_name"), f"Expected global_preset_name to be empty, got {state.get('global_preset_name')}" # Should be None or ""
|
||||
|
||||
# Prompt remains from previous application
|
||||
assert state["global_system_prompt"] == "Overridden Prompt"
|
||||
assert state.get("global_system_prompt") == "Overridden Prompt"
|
||||
|
||||
finally:
|
||||
# Cleanup
|
||||
@@ -138,22 +133,26 @@ def test_preset_manager_modal(live_gui):
|
||||
|
||||
# Open Modal
|
||||
client.set_value("show_preset_manager_modal", True)
|
||||
time.sleep(1)
|
||||
time.sleep(2)
|
||||
|
||||
# Create New Preset via Modal Logic (triggering the callback directly for reliability in headless)
|
||||
client.push_event("custom_callback", {
|
||||
"callback": "_cb_save_preset",
|
||||
"args": ["ModalPreset", "Modal Content", 0.9, 1.0, 4096, "global"]
|
||||
"args": ["ModalPreset", "Modal Content", "global"]
|
||||
})
|
||||
time.sleep(2)
|
||||
time.sleep(3)
|
||||
|
||||
# Verify file exists
|
||||
assert global_presets_path.exists()
|
||||
if not global_presets_path.exists():
|
||||
state = client.get_gui_state()
|
||||
assert global_presets_path.exists(), f"Global presets file not found at {global_presets_path}. Full state: {state}"
|
||||
|
||||
with open(global_presets_path, "rb") as f:
|
||||
import tomllib
|
||||
data = tomllib.load(f)
|
||||
assert "ModalPreset" in data["presets"]
|
||||
assert data["presets"]["ModalPreset"]["temperature"] == 0.9
|
||||
assert data["presets"]["ModalPreset"]["system_prompt"] == "Modal Content"
|
||||
|
||||
|
||||
# Delete Preset via Modal Logic
|
||||
client.push_event("custom_callback", {
|
||||
|
||||
@@ -20,15 +20,17 @@ class TestThemeNervFx(unittest.TestCase):
|
||||
# Assert
|
||||
mock_imgui.get_foreground_draw_list.assert_called_once()
|
||||
# height is 600, range(0, 600, 2) is 300 calls
|
||||
self.assertEqual(mock_draw_list.add_line.call_count, 300)
|
||||
# Vignette: v_steps = 15. height=600 is plenty for all insets.
|
||||
self.assertEqual(mock_draw_list.add_rect.call_count, 15)
|
||||
# Noise: 30 calls to add_rect_filled
|
||||
self.assertEqual(mock_draw_list.add_rect_filled.call_count, 30)
|
||||
# width is 800, range(0, 800, 3) is 267 calls
|
||||
# total = 300 + 267 = 567 calls
|
||||
self.assertEqual(mock_draw_list.add_line.call_count, 567)
|
||||
# Vignette: v_steps = 20. height=600 is plenty for all insets.
|
||||
self.assertEqual(mock_draw_list.add_rect.call_count, 20)
|
||||
# Noise: 40 calls to add_rect_filled
|
||||
self.assertEqual(mock_draw_list.add_rect_filled.call_count, 40)
|
||||
|
||||
# Verify some calls
|
||||
mock_draw_list.add_line.assert_any_call((0.0, 0.0), (800.0, 0.0), 0x12345678, 1.0)
|
||||
mock_draw_list.add_line.assert_any_call((0.0, 598.0), (800.0, 598.0), 0x12345678, 1.0)
|
||||
mock_draw_list.add_line.assert_any_call((0.0, 0.0), (800.0, 0.0), 0x12345678, 1.2)
|
||||
mock_draw_list.add_line.assert_any_call((0.0, 598.0), (800.0, 598.0), 0x12345678, 0.8)
|
||||
|
||||
@patch("src.theme_nerv_fx.imgui")
|
||||
def test_crt_filter_disabled(self, mock_imgui):
|
||||
|
||||
Reference in New Issue
Block a user