Files
ArchiveBox/archivebox/tests/test_config.py
Nick Sweeting b749b26c5d wip
2026-03-23 03:58:32 -07:00

143 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""Integration tests for archivebox config command."""
import os
import subprocess
import pytest
def test_config_shows_all_config_values(tmp_path, process):
"""Test that config without args shows all config values."""
os.chdir(tmp_path)
result = subprocess.run(
["archivebox", "config"],
capture_output=True,
text=True,
)
# Should show various config sections
assert "TIMEOUT" in result.stdout or "timeout" in result.stdout.lower()
# Config should show some output
assert len(result.stdout) > 100
def test_config_get_specific_key(tmp_path, process):
"""Test that --get retrieves a specific config value."""
os.chdir(tmp_path)
result = subprocess.run(
["archivebox", "config", "--get", "TIMEOUT"],
capture_output=True,
text=True,
)
# Should show the TIMEOUT value
assert "TIMEOUT" in result.stdout or result.returncode == 0
def test_config_set_value_writes_to_config_file(tmp_path, process):
"""Test that --set writes config value to ArchiveBox.conf file."""
os.chdir(tmp_path)
# Set a config value
result = subprocess.run(
["archivebox", "config", "--set", "TIMEOUT=120"],
capture_output=True,
text=True,
)
assert result.returncode == 0, result.stderr
# Read the config file directly to verify it was written
config_file = tmp_path / "ArchiveBox.conf"
if config_file.exists():
config_content = config_file.read_text()
# Config should contain the set value
assert "TIMEOUT" in config_content or "timeout" in config_content.lower()
def test_config_set_and_get_roundtrip(tmp_path, process):
"""Test that a value set with --set can be retrieved with --get."""
os.chdir(tmp_path)
# Set a value
set_result = subprocess.run(
["archivebox", "config", "--set", "TIMEOUT=999"],
capture_output=True,
text=True,
)
# Verify set was successful
assert set_result.returncode == 0 or "999" in set_result.stdout
# Read the config file directly to verify
config_file = tmp_path / "ArchiveBox.conf"
if config_file.exists():
config_content = config_file.read_text()
assert "999" in config_content or "TIMEOUT" in config_content
def test_config_search_finds_matching_keys(tmp_path, process):
"""Test that --search finds config keys matching a pattern."""
os.chdir(tmp_path)
result = subprocess.run(
["archivebox", "config", "--search", "TIMEOUT"],
capture_output=True,
text=True,
)
# Should find TIMEOUT-related config
assert "TIMEOUT" in result.stdout or result.returncode == 0
def test_config_invalid_key_fails(tmp_path, process):
"""Test that setting an invalid config key fails."""
os.chdir(tmp_path)
result = subprocess.run(
["archivebox", "config", "--set", "INVALID_KEY_THAT_DOES_NOT_EXIST=value"],
capture_output=True,
text=True,
)
# Should fail
assert result.returncode != 0 or "failed" in result.stdout.lower()
def test_config_set_requires_equals_sign(tmp_path, process):
"""Test that --set requires KEY=VALUE format."""
os.chdir(tmp_path)
result = subprocess.run(
["archivebox", "config", "--set", "TIMEOUT"],
capture_output=True,
text=True,
)
# Should fail because there's no = sign
assert result.returncode != 0
class TestConfigCLI:
"""Test the CLI interface for config command."""
def test_cli_help(self, tmp_path, process):
"""Test that --help works for config command."""
os.chdir(tmp_path)
result = subprocess.run(
["archivebox", "config", "--help"],
capture_output=True,
text=True,
)
assert result.returncode == 0
assert "--get" in result.stdout
assert "--set" in result.stdout
if __name__ == "__main__":
pytest.main([__file__, "-v"])