Files
redmine/tests/semantic_index/test_installer.py
T
2026-05-04 09:50:03 -04:00

59 lines
2.3 KiB
Python

import subprocess
import tempfile
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
INSTALLER = ROOT / "deploy" / "semantic-index" / "install.sh"
class SemanticIndexInstallerTest(unittest.TestCase):
def run_installer(self, *args, env=None):
return subprocess.run(
[str(INSTALLER), *args],
cwd=ROOT,
text=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=False,
env=env,
)
def test_default_mode_is_dry_run(self):
result = self.run_installer()
self.assertEqual(0, result.returncode, result.stderr)
self.assertIn("mode=dry-run", result.stdout)
self.assertIn("would run: sudo mkdir -p /opt/semantic-index", result.stdout)
self.assertIn("would run: sudo rsync", result.stdout)
self.assertNotIn("Semantic Index installed, but deployment is not complete.", result.stdout)
def test_apply_prints_manual_next_step_warning(self):
with tempfile.TemporaryDirectory() as tmp:
tmp_path = Path(tmp)
env = {
"PATH": "/usr/bin:/bin",
"SEMANTIC_INDEX_INSTALL_DIR": str(tmp_path / "opt" / "semantic-index"),
"SEMANTIC_INDEX_ENV_FILE": str(tmp_path / "etc" / "semantic-index.env"),
"SEMANTIC_INDEX_STATE_DIR": str(tmp_path / "var" / "lib" / "semantic-index"),
"SEMANTIC_INDEX_LOG_DIR": str(tmp_path / "var" / "log" / "semantic-index"),
"SEMANTIC_INDEX_SYSTEMD_DIR": str(tmp_path / "etc" / "systemd" / "system"),
}
result = self.run_installer("--apply", "--no-system", "--skip-deps", env=env)
self.assertEqual(0, result.returncode, result.stderr)
self.assertIn("Semantic Index installed, but deployment is not complete.", result.stdout)
self.assertIn("The refresh timer was NOT enabled automatically.", result.stdout)
self.assertIn("Do not use --force-rebuild", result.stdout)
def test_invalid_argument_fails_with_usage(self):
result = self.run_installer("--force-rebuild")
self.assertEqual(2, result.returncode)
self.assertIn("Usage:", result.stderr)
if __name__ == "__main__":
unittest.main()