Add semantic-index service, deployment assets, and tests
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user