test_cli_version.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/usr/bin/env python3
  2. """
  3. Tests for archivebox version command.
  4. Verify version output and system information reporting.
  5. """
  6. import os
  7. import subprocess
  8. import sqlite3
  9. from .fixtures import *
  10. def test_version_quiet_outputs_version_number(tmp_path):
  11. """Test that version --quiet outputs just the version number."""
  12. os.chdir(tmp_path)
  13. result = subprocess.run(['archivebox', 'version', '--quiet'], capture_output=True, text=True)
  14. assert result.returncode == 0
  15. version = result.stdout.strip()
  16. assert version
  17. # Version should be semver-ish format (e.g., 0.8.0)
  18. parts = version.split('.')
  19. assert len(parts) >= 2
  20. def test_version_shows_system_info_in_initialized_dir(tmp_path, process):
  21. """Test that version shows system metadata in initialized directory."""
  22. os.chdir(tmp_path)
  23. result = subprocess.run(['archivebox', 'version'], capture_output=True, text=True)
  24. output = result.stdout
  25. assert 'ArchiveBox' in output
  26. # Should show system info
  27. assert any(x in output for x in ['ARCH=', 'OS=', 'PYTHON='])
  28. def test_version_shows_binaries_after_init(tmp_path, process):
  29. """Test that version shows binary dependencies in initialized directory."""
  30. os.chdir(tmp_path)
  31. result = subprocess.run(['archivebox', 'version'], capture_output=True, text=True)
  32. output = result.stdout
  33. # Should show binary section
  34. assert 'Binary' in output or 'Dependencies' in output
  35. def test_version_shows_data_locations(tmp_path, process):
  36. """Test that version shows data directory locations."""
  37. os.chdir(tmp_path)
  38. result = subprocess.run(['archivebox', 'version'], capture_output=True, text=True)
  39. output = result.stdout
  40. # Should show paths
  41. assert any(x in output for x in ['Data', 'Code', 'location'])
  42. def test_version_in_uninitialized_dir_still_works(tmp_path):
  43. """Test that version command works even without initialized data dir."""
  44. empty_dir = tmp_path / "empty"
  45. empty_dir.mkdir()
  46. os.chdir(empty_dir)
  47. result = subprocess.run(['archivebox', 'version', '--quiet'], capture_output=True, text=True)
  48. # Should still output version
  49. assert result.returncode == 0
  50. assert len(result.stdout.strip()) > 0