refactor(ui): cull unused UI helpers and redundant modules
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
import pytest
|
||||
import pytest
|
||||
import tempfile
|
||||
import os
|
||||
from pathlib import Path
|
||||
from src.diff_viewer import (
|
||||
parse_diff, DiffFile, DiffHunk, parse_hunk_header,
|
||||
get_line_color, render_diff_text_immediate,
|
||||
create_backup, apply_patch_to_file, restore_from_backup, cleanup_backup
|
||||
get_line_color, apply_patch_to_file
|
||||
)
|
||||
|
||||
def test_parse_diff_empty() -> None:
|
||||
@@ -95,35 +94,6 @@ def test_get_line_color() -> None:
|
||||
assert get_line_color("@@ -1,3 +1,4 @@") == "cyan"
|
||||
assert get_line_color(" context") == None
|
||||
|
||||
def test_render_diff_text_immediate() -> None:
|
||||
diff_text = """--- a/test.py
|
||||
+++ b/test.py
|
||||
@@ -1 +1 @@
|
||||
-old
|
||||
+new"""
|
||||
diff_files = parse_diff(diff_text)
|
||||
output = render_diff_text_immediate(diff_files)
|
||||
|
||||
assert len(output) > 0
|
||||
assert ("File: test.py", "white") in output
|
||||
assert ("@@ -1 +1 @@", "cyan") in output
|
||||
assert ("-old", "red") in output
|
||||
assert ("+new", "green") in output
|
||||
|
||||
def test_create_backup() -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
test_file = Path(tmpdir) / "test.py"
|
||||
test_file.write_text("original content\n")
|
||||
|
||||
backup_path = create_backup(str(test_file))
|
||||
assert backup_path is not None
|
||||
assert Path(backup_path).exists()
|
||||
assert Path(backup_path).read_text() == "original content\n"
|
||||
|
||||
def test_create_backup_nonexistent() -> None:
|
||||
result = create_backup("/nonexistent/file.py")
|
||||
assert result is None
|
||||
|
||||
def test_apply_patch_simple() -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
test_file = Path(tmpdir) / "test.py"
|
||||
@@ -158,24 +128,3 @@ def test_apply_patch_with_context() -> None:
|
||||
content = test_file.read_text()
|
||||
assert "line one" in content
|
||||
assert "line two" in content
|
||||
|
||||
def test_restore_from_backup() -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
test_file = Path(tmpdir) / "test.py"
|
||||
test_file.write_text("modified\n")
|
||||
backup_file = test_file.with_suffix(".py.backup")
|
||||
backup_file.write_text("original\n")
|
||||
|
||||
success = restore_from_backup(str(test_file))
|
||||
assert success
|
||||
assert test_file.read_text() == "original\n"
|
||||
|
||||
def test_cleanup_backup() -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
test_file = Path(tmpdir) / "test.py"
|
||||
test_file.write_text("content\n")
|
||||
backup_file = test_file.with_suffix(".py.backup")
|
||||
backup_file.write_text("backup\n")
|
||||
|
||||
cleanup_backup(str(test_file))
|
||||
assert not backup_file.exists()
|
||||
@@ -1,33 +0,0 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
def test_dynamic_background_rendering():
|
||||
# Mock OpenGL before importing
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
from src.shader_manager import ShaderManager
|
||||
|
||||
# Setup mock return values
|
||||
mock_gl.glCreateProgram.return_value = 1
|
||||
mock_gl.glCreateShader.return_value = 2
|
||||
mock_gl.glGetShaderiv.return_value = 1 # GL_TRUE
|
||||
mock_gl.glGetProgramiv.return_value = 1 # GL_TRUE
|
||||
mock_gl.glGetUniformLocation.return_value = 10
|
||||
|
||||
manager = ShaderManager()
|
||||
manager.setup_background_shader()
|
||||
|
||||
# Verify background program was created
|
||||
assert manager.bg_program == 1
|
||||
assert mock_gl.glCreateProgram.called
|
||||
|
||||
# Render background
|
||||
manager.render_background(800, 600, 1.0)
|
||||
|
||||
# Verify OpenGL calls
|
||||
mock_gl.glUseProgram.assert_any_call(1)
|
||||
mock_gl.glDrawArrays.assert_called_with(mock_gl.GL_TRIANGLE_STRIP, 0, 4)
|
||||
mock_gl.glUseProgram.assert_any_call(0)
|
||||
|
||||
# Verify uniforms were updated
|
||||
mock_gl.glUniform1f.assert_called()
|
||||
mock_gl.glUniform2f.assert_called()
|
||||
@@ -1,75 +0,0 @@
|
||||
import pytest
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
from src import native_orchestrator
|
||||
|
||||
def test_read_plan_nonexistent():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
result = native_orchestrator.read_plan("nonexistent_track", tmpdir)
|
||||
assert result == ""
|
||||
|
||||
def test_write_and_read_plan():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
content = "# Test Plan\n- [x] Task 1\n- [ ] Task 2"
|
||||
native_orchestrator.write_plan("test_track", content, tmpdir)
|
||||
result = native_orchestrator.read_plan("test_track", tmpdir)
|
||||
assert result == content
|
||||
|
||||
def test_parse_plan_tasks():
|
||||
content = """# Plan
|
||||
- [x] Completed task
|
||||
- [ ] Pending task
|
||||
- [x] Another done"""
|
||||
tasks = native_orchestrator.parse_plan_tasks(content)
|
||||
assert len(tasks) == 3
|
||||
assert tasks[0]["completed"] == True
|
||||
assert tasks[1]["completed"] == False
|
||||
assert tasks[2]["completed"] == True
|
||||
|
||||
def test_read_metadata_nonexistent():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
result = native_orchestrator.read_metadata("nonexistent_track", tmpdir)
|
||||
assert result == {}
|
||||
|
||||
def test_write_and_read_metadata():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
data = {"name": "Test Track", "status": "active"}
|
||||
native_orchestrator.write_metadata("test_track", data, tmpdir)
|
||||
result = native_orchestrator.read_metadata("test_track", tmpdir)
|
||||
assert result["name"] == "Test Track"
|
||||
assert result["status"] == "active"
|
||||
|
||||
def test_get_track_dir():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
track_dir = native_orchestrator.get_track_dir("my_track", tmpdir)
|
||||
expected = Path(tmpdir) / "conductor" / "tracks" / "my_track"
|
||||
assert track_dir == expected
|
||||
|
||||
def test_get_archive_dir():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
archive_dir = native_orchestrator.get_archive_dir(tmpdir)
|
||||
expected = Path(tmpdir) / "conductor" / "archive"
|
||||
assert archive_dir == expected
|
||||
|
||||
def test_native_orchestrator_class():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
orch = native_orchestrator.NativeOrchestrator(tmpdir)
|
||||
assert orch.base_dir == Path(tmpdir)
|
||||
|
||||
data = {"name": "Test"}
|
||||
orch.save_track("track1", data)
|
||||
loaded = orch.load_track("track1")
|
||||
assert loaded["name"] == "Test"
|
||||
|
||||
plan_content = "# Plan\n- [x] Done"
|
||||
orch.save_plan("track1", plan_content)
|
||||
loaded_plan = orch.load_plan("track1")
|
||||
assert loaded_plan == plan_content
|
||||
|
||||
tasks = orch.get_track_tasks("track1")
|
||||
assert len(tasks) == 1
|
||||
@@ -1,53 +0,0 @@
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
import sys
|
||||
|
||||
# Mock OpenGL.GL before importing ShaderManager
|
||||
gl_mock = MagicMock()
|
||||
# Setup some constants
|
||||
gl_mock.GL_VERTEX_SHADER = 0x8B31
|
||||
gl_mock.GL_FRAGMENT_SHADER = 0x8B30
|
||||
gl_mock.GL_COMPILE_STATUS = 0x8B81
|
||||
gl_mock.GL_LINK_STATUS = 0x8B82
|
||||
gl_mock.GL_TEXTURE0 = 0x84C0
|
||||
gl_mock.GL_TEXTURE_2D = 0x0DE1
|
||||
gl_mock.GL_TRIANGLE_STRIP = 0x0005
|
||||
|
||||
opengl_mock = MagicMock()
|
||||
sys.modules['OpenGL'] = opengl_mock
|
||||
sys.modules['OpenGL.GL'] = gl_mock
|
||||
opengl_mock.GL = gl_mock
|
||||
|
||||
from src.shader_manager import ShaderManager
|
||||
|
||||
class TestPostProcess(unittest.TestCase):
|
||||
def setUp(self):
|
||||
gl_mock.reset_mock()
|
||||
# Mock return values for shader compilation
|
||||
gl_mock.glCreateProgram.return_value = 1
|
||||
gl_mock.glCreateShader.return_value = 2
|
||||
gl_mock.glGetShaderiv.return_value = 1 # GL_TRUE
|
||||
gl_mock.glGetProgramiv.return_value = 1 # GL_TRUE
|
||||
gl_mock.glGetUniformLocation.return_value = 10
|
||||
|
||||
def test_setup_post_process_shader(self):
|
||||
sm = ShaderManager()
|
||||
sm.setup_post_process_shader()
|
||||
self.assertEqual(sm.pp_program, 1)
|
||||
gl_mock.glCreateProgram.assert_called()
|
||||
gl_mock.glLinkProgram.assert_called_with(1)
|
||||
|
||||
def test_render_post_process(self):
|
||||
sm = ShaderManager()
|
||||
sm.pp_program = 1
|
||||
sm.render_post_process(texture_id=5, width=800, height=600, time=1.0)
|
||||
|
||||
gl_mock.glUseProgram.assert_any_call(1)
|
||||
gl_mock.glActiveTexture.assert_called_with(gl_mock.GL_TEXTURE0)
|
||||
gl_mock.glBindTexture.assert_any_call(gl_mock.GL_TEXTURE_2D, 5)
|
||||
gl_mock.glUniform1f.assert_called()
|
||||
gl_mock.glDrawArrays.assert_called_with(gl_mock.GL_TRIANGLE_STRIP, 0, 4)
|
||||
gl_mock.glUseProgram.assert_any_call(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
@@ -1,23 +0,0 @@
|
||||
import pytest
|
||||
from unittest.mock import patch
|
||||
from src import theme
|
||||
|
||||
def test_shader_config_parsing():
|
||||
config = {
|
||||
"theme": {
|
||||
"shader_crt": True,
|
||||
"shader_bloom": False,
|
||||
"shader_bg": "noise",
|
||||
"custom_window_frame": True
|
||||
}
|
||||
}
|
||||
|
||||
with patch("src.theme.apply"), \
|
||||
patch("src.theme.apply_font"), \
|
||||
patch("src.theme.set_scale"):
|
||||
theme.load_from_config(config)
|
||||
|
||||
assert theme.get_shader_config("crt") is True
|
||||
assert theme.get_shader_config("bloom") is False
|
||||
assert theme.get_shader_config("bg") == "noise"
|
||||
assert theme.get_window_frame_config() is True
|
||||
@@ -1,51 +0,0 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
def test_shader_manager_initialization_and_compilation():
|
||||
# Import inside test to allow patching OpenGL before import if needed
|
||||
# In this case, we patch the OpenGL.GL functions used by ShaderManager
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
mock_gl.glCreateProgram.return_value = 1
|
||||
mock_gl.glCreateShader.return_value = 2
|
||||
mock_gl.glGetShaderiv.return_value = mock_gl.GL_TRUE
|
||||
mock_gl.glGetProgramiv.return_value = mock_gl.GL_TRUE
|
||||
|
||||
from src.shader_manager import ShaderManager
|
||||
|
||||
manager = ShaderManager()
|
||||
|
||||
# Basic vertex and fragment shader source
|
||||
vert_src = "void main() {}"
|
||||
frag_src = "void main() {}"
|
||||
|
||||
program_id = manager.compile_shader(vert_src, frag_src)
|
||||
|
||||
assert program_id == 1
|
||||
assert mock_gl.glCreateProgram.called
|
||||
assert mock_gl.glCreateShader.called
|
||||
|
||||
def test_shader_manager_uniform_update():
|
||||
# Mock OpenGL.GL functions
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
from src.shader_manager import ShaderManager
|
||||
manager = ShaderManager()
|
||||
# Set a mock program ID
|
||||
manager.program = 1
|
||||
|
||||
# Mock glGetUniformLocation to return some valid locations
|
||||
# u_time -> 10, u_resolution -> 20
|
||||
def mock_get_loc(prog, name):
|
||||
if name == "u_time": return 10
|
||||
if name == "u_resolution": return 20
|
||||
return -1
|
||||
|
||||
mock_gl.glGetUniformLocation.side_effect = mock_get_loc
|
||||
|
||||
# Call the method
|
||||
manager.update_uniforms({"u_time": 1.5, "u_resolution": (800, 600)})
|
||||
|
||||
# Assert calls
|
||||
mock_gl.glGetUniformLocation.assert_any_call(1, "u_time")
|
||||
mock_gl.glGetUniformLocation.assert_any_call(1, "u_resolution")
|
||||
mock_gl.glUniform1f.assert_called_once_with(10, 1.5)
|
||||
mock_gl.glUniform2f.assert_called_once_with(20, 800, 600)
|
||||
Reference in New Issue
Block a user