mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-12-27 22:26:00 +00:00
161 lines
4.5 KiB
Python
161 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Integration tests for archivebox version command."""
|
|
|
|
import os
|
|
import subprocess
|
|
import json
|
|
|
|
import pytest
|
|
|
|
from .fixtures import process, disable_extractors_dict
|
|
|
|
|
|
class TestVersionQuiet:
|
|
"""Test the quiet/minimal version output."""
|
|
|
|
def test_version_prints_version_number(self, tmp_path):
|
|
"""Test that version prints the version number."""
|
|
os.chdir(tmp_path)
|
|
|
|
result = subprocess.run(
|
|
['archivebox', 'version', '--quiet'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
assert result.returncode == 0
|
|
# Should contain a version string like "0.8.0" or similar
|
|
version = result.stdout.strip()
|
|
assert version
|
|
# Version should be a valid semver-ish format
|
|
parts = version.split('.')
|
|
assert len(parts) >= 2 # At least major.minor
|
|
|
|
def test_version_flag_prints_version_number(self, tmp_path):
|
|
"""Test that --version flag prints the version number."""
|
|
os.chdir(tmp_path)
|
|
|
|
result = subprocess.run(
|
|
['archivebox', '--version'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
assert result.returncode == 0
|
|
version = result.stdout.strip()
|
|
assert version
|
|
parts = version.split('.')
|
|
assert len(parts) >= 2
|
|
|
|
|
|
class TestVersionFull:
|
|
"""Test the full version output."""
|
|
|
|
def test_version_shows_system_info(self, tmp_path, process):
|
|
"""Test that version shows system information."""
|
|
os.chdir(tmp_path)
|
|
|
|
result = subprocess.run(
|
|
['archivebox', 'version'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
output = result.stdout
|
|
|
|
# Should show basic system info (exit code may be 1 if binaries missing)
|
|
assert 'ArchiveBox' in output
|
|
|
|
def test_version_shows_binary_section(self, tmp_path, process):
|
|
"""Test that version shows binary dependencies section."""
|
|
os.chdir(tmp_path)
|
|
|
|
result = subprocess.run(
|
|
['archivebox', 'version'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
output = result.stdout
|
|
|
|
# Should show binary dependencies section
|
|
assert 'Binary' in output or 'Dependenc' in output
|
|
|
|
def test_version_shows_data_locations(self, tmp_path, process):
|
|
"""Test that version shows data locations."""
|
|
os.chdir(tmp_path)
|
|
|
|
result = subprocess.run(
|
|
['archivebox', 'version'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
output = result.stdout
|
|
|
|
# Should show data/code locations
|
|
assert 'Data' in output or 'location' in output.lower() or 'DIR' in output or 'Code' in output
|
|
|
|
|
|
class TestVersionWithInstalledBinaries:
|
|
"""Test version output after running install."""
|
|
|
|
def test_version_shows_binary_status(self, tmp_path, process, disable_extractors_dict):
|
|
"""Test that version shows binary status (installed or not)."""
|
|
os.chdir(tmp_path)
|
|
|
|
# First run install (with dry-run to speed up)
|
|
subprocess.run(
|
|
['archivebox', 'install', '--dry-run'],
|
|
capture_output=True,
|
|
text=True,
|
|
env=disable_extractors_dict,
|
|
)
|
|
|
|
# Now check version
|
|
result = subprocess.run(
|
|
['archivebox', 'version'],
|
|
capture_output=True,
|
|
text=True,
|
|
env=disable_extractors_dict,
|
|
)
|
|
|
|
output = result.stdout
|
|
|
|
# Should show binary status (either installed or not installed)
|
|
assert 'installed' in output.lower() or 'Binary' in output
|
|
|
|
|
|
class TestVersionCLI:
|
|
"""Test the CLI interface for version command."""
|
|
|
|
def test_cli_help(self, tmp_path):
|
|
"""Test that --help works for version command."""
|
|
os.chdir(tmp_path)
|
|
|
|
result = subprocess.run(
|
|
['archivebox', 'version', '--help'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
assert result.returncode == 0
|
|
assert '--quiet' in result.stdout or '-q' 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', 'version', '--invalid-option'],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
# Should fail with non-zero exit code
|
|
assert result.returncode != 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pytest.main([__file__, '-v'])
|