| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- #!/usr/bin/env python3
- """Integration tests for archivebox status command."""
- import os
- import subprocess
- import sqlite3
- import pytest
- from .fixtures import process, disable_extractors_dict
- def test_status_shows_index_info(tmp_path, process):
- """Test that status shows index information."""
- os.chdir(tmp_path)
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show index scanning info
- assert 'index' in result.stdout.lower() or 'Index' in result.stdout
- def test_status_shows_snapshot_count(tmp_path, process, disable_extractors_dict):
- """Test that status shows snapshot count."""
- os.chdir(tmp_path)
- # Add some snapshots
- subprocess.run(
- ['archivebox', 'add', '--index-only', 'https://example.com'],
- capture_output=True,
- env=disable_extractors_dict,
- )
- subprocess.run(
- ['archivebox', 'add', '--index-only', 'https://iana.org'],
- capture_output=True,
- env=disable_extractors_dict,
- )
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show link/snapshot count
- assert '2' in result.stdout or 'links' in result.stdout.lower()
- def test_status_shows_archive_size(tmp_path, process, disable_extractors_dict):
- """Test that status shows archive size information."""
- os.chdir(tmp_path)
- subprocess.run(
- ['archivebox', 'add', '--index-only', 'https://example.com'],
- capture_output=True,
- env=disable_extractors_dict,
- )
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show size info (bytes, KB, MB, etc)
- assert 'Size' in result.stdout or 'size' in result.stdout or 'B' in result.stdout
- def test_status_shows_indexed_count(tmp_path, process, disable_extractors_dict):
- """Test that status shows indexed folder count."""
- os.chdir(tmp_path)
- subprocess.run(
- ['archivebox', 'add', '--index-only', 'https://example.com'],
- capture_output=True,
- env=disable_extractors_dict,
- )
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show indexed count
- assert 'indexed' in result.stdout.lower()
- def test_status_shows_archived_vs_unarchived(tmp_path, process, disable_extractors_dict):
- """Test that status shows archived vs unarchived counts."""
- os.chdir(tmp_path)
- # Add index-only snapshot (unarchived)
- subprocess.run(
- ['archivebox', 'add', '--index-only', 'https://example.com'],
- capture_output=True,
- env=disable_extractors_dict,
- )
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show archived/unarchived categories
- assert 'archived' in result.stdout.lower() or 'unarchived' in result.stdout.lower()
- def test_status_shows_data_directory_info(tmp_path, process):
- """Test that status shows data directory path."""
- os.chdir(tmp_path)
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show data directory or archive path
- assert 'archive' in result.stdout.lower() or str(tmp_path) in result.stdout
- def test_status_shows_user_info(tmp_path, process):
- """Test that status shows user information."""
- os.chdir(tmp_path)
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show user info section
- assert 'user' in result.stdout.lower() or 'login' in result.stdout.lower()
- def test_status_empty_archive(tmp_path, process):
- """Test status on empty archive shows zero counts."""
- os.chdir(tmp_path)
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should still run successfully
- assert result.returncode == 0 or 'index' in result.stdout.lower()
- # Should show 0 links
- assert '0' in result.stdout or 'links' in result.stdout.lower()
- def test_status_shows_valid_vs_invalid(tmp_path, process, disable_extractors_dict):
- """Test that status shows valid vs invalid folder counts."""
- os.chdir(tmp_path)
- subprocess.run(
- ['archivebox', 'add', '--index-only', 'https://example.com'],
- capture_output=True,
- env=disable_extractors_dict,
- )
- result = subprocess.run(
- ['archivebox', 'status'],
- capture_output=True,
- text=True,
- )
- # Should show valid/invalid categories
- assert 'valid' in result.stdout.lower() or 'present' in result.stdout.lower()
- class TestStatusCLI:
- """Test the CLI interface for status command."""
- def test_cli_help(self, tmp_path, process):
- """Test that --help works for status command."""
- os.chdir(tmp_path)
- result = subprocess.run(
- ['archivebox', 'status', '--help'],
- capture_output=True,
- text=True,
- )
- assert result.returncode == 0
- # Help should show some info about the command
- assert 'status' in result.stdout.lower() or 'statistic' in result.stdout.lower()
- if __name__ == '__main__':
- pytest.main([__file__, '-v'])
|