| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- #!/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 TestVersionWithBinaries:
- """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'])
|