mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-04-04 23:07:56 +10:00
wip major changes
This commit is contained in:
129
tests/test_install.py
Normal file
129
tests/test_install.py
Normal file
@@ -0,0 +1,129 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Integration tests for archivebox install command."""
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sqlite3
|
||||
|
||||
import pytest
|
||||
|
||||
from .fixtures import process, disable_extractors_dict
|
||||
|
||||
|
||||
class TestInstallDryRun:
|
||||
"""Test the dry-run mode of install command."""
|
||||
|
||||
def test_dry_run_prints_message(self, tmp_path, process):
|
||||
"""Test that dry-run mode prints appropriate message."""
|
||||
os.chdir(tmp_path)
|
||||
|
||||
result = subprocess.run(
|
||||
['archivebox', 'install', '--dry-run'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
|
||||
assert result.returncode == 0
|
||||
assert 'Dry run' in result.stdout
|
||||
|
||||
def test_dry_run_does_not_create_crawl(self, tmp_path, process):
|
||||
"""Test that dry-run mode doesn't create a crawl."""
|
||||
os.chdir(tmp_path)
|
||||
|
||||
# Get initial crawl count
|
||||
conn = sqlite3.connect('index.sqlite3')
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT COUNT(*) FROM crawls_crawl")
|
||||
initial_count = c.fetchone()[0]
|
||||
conn.close()
|
||||
|
||||
# Run install with dry-run
|
||||
result = subprocess.run(
|
||||
['archivebox', 'install', '--dry-run'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
|
||||
assert result.returncode == 0
|
||||
|
||||
# Check crawl count unchanged
|
||||
conn = sqlite3.connect('index.sqlite3')
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT COUNT(*) FROM crawls_crawl")
|
||||
final_count = c.fetchone()[0]
|
||||
conn.close()
|
||||
|
||||
assert final_count == initial_count
|
||||
|
||||
|
||||
class TestInstallOutput:
|
||||
"""Test the output/messages from install command."""
|
||||
|
||||
def test_install_prints_detecting_message(self, tmp_path, process, disable_extractors_dict):
|
||||
"""Test that install prints detecting dependencies message."""
|
||||
os.chdir(tmp_path)
|
||||
|
||||
result = subprocess.run(
|
||||
['archivebox', 'install', '--dry-run'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
env=disable_extractors_dict,
|
||||
)
|
||||
|
||||
assert result.returncode == 0
|
||||
# Should mention detecting or dependencies
|
||||
output = result.stdout.lower()
|
||||
assert 'detect' in output or 'dependenc' in output or 'dry run' in output
|
||||
|
||||
|
||||
class TestInstallCLI:
|
||||
"""Test the CLI interface for install command."""
|
||||
|
||||
def test_cli_help(self, tmp_path):
|
||||
"""Test that --help works for install command."""
|
||||
os.chdir(tmp_path)
|
||||
|
||||
result = subprocess.run(
|
||||
['archivebox', 'install', '--help'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
|
||||
assert result.returncode == 0
|
||||
assert '--dry-run' in result.stdout or '-d' in result.stdout
|
||||
|
||||
def test_cli_invalid_option(self, tmp_path):
|
||||
"""Test that invalid options are handled."""
|
||||
os.chdir(tmp_path)
|
||||
|
||||
result = subprocess.run(
|
||||
['archivebox', 'install', '--invalid-option'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
|
||||
# Should fail with non-zero exit code
|
||||
assert result.returncode != 0
|
||||
|
||||
|
||||
class TestInstallInitialization:
|
||||
"""Test that install initializes the data directory if needed."""
|
||||
|
||||
def test_install_from_empty_dir(self, tmp_path):
|
||||
"""Test that install from empty dir initializes first."""
|
||||
os.chdir(tmp_path)
|
||||
|
||||
# Don't use process fixture - start from empty dir
|
||||
result = subprocess.run(
|
||||
['archivebox', 'install', '--dry-run'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
|
||||
# Should either initialize or show dry run message
|
||||
output = result.stdout
|
||||
assert 'Initializing' in output or 'Dry run' in output or 'init' in output.lower()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main([__file__, '-v'])
|
||||
Reference in New Issue
Block a user