aboutsummaryrefslogtreecommitdiff
path: root/tests/waybar-touchpad
diff options
context:
space:
mode:
Diffstat (limited to 'tests/waybar-touchpad')
-rw-r--r--tests/waybar-touchpad/test_waybar_touchpad.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/tests/waybar-touchpad/test_waybar_touchpad.py b/tests/waybar-touchpad/test_waybar_touchpad.py
deleted file mode 100644
index 3133bb4..0000000
--- a/tests/waybar-touchpad/test_waybar_touchpad.py
+++ /dev/null
@@ -1,104 +0,0 @@
-"""Tests for dotfiles/hyprland/.local/bin/waybar-touchpad.
-
-The script emits one JSON line for waybar's custom/touchpad module, derived
-from the touchpad state file that toggle-touchpad / touchpad-auto maintain
-at $XDG_RUNTIME_DIR/touchpad-state. Tests point XDG_RUNTIME_DIR at a temp
-dir and assert on the emitted JSON for each state — enabled, disabled, and
-the missing-file default. No mocking: the real script runs against a real
-state file.
-
-Run from repo root:
- python3 -m unittest tests.waybar-touchpad.test_waybar_touchpad
-"""
-
-import json
-import os
-import shutil
-import subprocess
-import tempfile
-import unittest
-
-
-REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
-SCRIPT = os.path.join(REPO_ROOT, "dotfiles/hyprland/.local/bin/waybar-touchpad")
-
-
-class WaybarTouchpadHarness(unittest.TestCase):
-
- def setUp(self):
- self.tmp = tempfile.mkdtemp(prefix="waybar-touchpad-test-")
- self.state_file = os.path.join(self.tmp, "touchpad-state")
-
- def tearDown(self):
- shutil.rmtree(self.tmp, ignore_errors=True)
-
- def set_state(self, value):
- with open(self.state_file, "w") as f:
- f.write(value)
-
- def run_script(self):
- env = os.environ.copy()
- env["XDG_RUNTIME_DIR"] = self.tmp
- return subprocess.run(
- [SCRIPT], env=env, capture_output=True, text=True, timeout=10,
- )
-
- def emitted_json(self):
- result = self.run_script()
- self.assertEqual(result.returncode, 0, msg=result.stderr)
- return json.loads(result.stdout)
-
-
-# -----------------------------------------------------------------------------
-# Normal cases
-# -----------------------------------------------------------------------------
-
-class TestWaybarTouchpadNormal(WaybarTouchpadHarness):
-
- def test_enabled_state_emits_enabled_class_and_mouse_icon(self):
- self.set_state("enabled")
- data = self.emitted_json()
- self.assertEqual(data["class"], "enabled")
- self.assertIn("\U000f037d", data["text"]) # 󰍽 mouse
- self.assertIn("enabled", data["tooltip"].lower())
-
- def test_disabled_state_emits_disabled_class_and_mouse_off_icon(self):
- self.set_state("disabled")
- data = self.emitted_json()
- self.assertEqual(data["class"], "disabled")
- self.assertIn("\U000f037e", data["text"]) # 󰍾 mouse-off
- self.assertIn("disabled", data["tooltip"].lower())
-
-
-# -----------------------------------------------------------------------------
-# Boundary cases
-# -----------------------------------------------------------------------------
-
-class TestWaybarTouchpadBoundary(WaybarTouchpadHarness):
-
- def test_missing_state_file_defaults_to_enabled(self):
- # No state file written → script should treat the touchpad as enabled.
- data = self.emitted_json()
- self.assertEqual(data["class"], "enabled")
-
- def test_state_with_trailing_newline_is_handled(self):
- self.set_state("disabled\n")
- data = self.emitted_json()
- self.assertEqual(data["class"], "disabled")
-
- def test_unknown_state_value_treated_as_enabled(self):
- # Anything that isn't "disabled" reads as enabled (fail-safe: the
- # pointer is usable rather than hidden).
- self.set_state("garbage")
- data = self.emitted_json()
- self.assertEqual(data["class"], "enabled")
-
- def test_output_is_a_single_json_object(self):
- self.set_state("enabled")
- result = self.run_script()
- lines = [ln for ln in result.stdout.splitlines() if ln.strip()]
- self.assertEqual(len(lines), 1, msg=f"expected one line, got {lines!r}")
-
-
-if __name__ == "__main__":
- unittest.main()