59 lines
2.3 KiB
Python
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()
|