Files
ArchiveBox/tests/test_cli_config.py
Claude a5654e877f rename media plugin to ytdlp with backwards-compatible aliases
- Rename archivebox/plugins/media/ → archivebox/plugins/ytdlp/
- Rename hook script on_Snapshot__63_media.bg.py → on_Snapshot__63_ytdlp.bg.py
- Update config.json: YTDLP_* as primary keys, MEDIA_* as x-aliases
- Update templates CSS classes: media-* → ytdlp-*
- Fix gallerydl bug: remove incorrect dependency on media plugin output
- Update all codebase references to use YTDLP_* and SAVE_YTDLP
- Add backwards compatibility test for MEDIA_ENABLED alias
2025-12-29 19:09:05 +00:00

204 lines
5.2 KiB
Python

#!/usr/bin/env python3
"""
Comprehensive tests for archivebox config command.
Verify config reads/writes ArchiveBox.conf file correctly.
"""
import os
import subprocess
from pathlib import Path
from .fixtures import *
def test_config_displays_all_config(tmp_path, process):
"""Test that config without args displays all configuration."""
os.chdir(tmp_path)
result = subprocess.run(['archivebox', 'config'], capture_output=True, text=True)
assert result.returncode == 0
output = result.stdout
# Should show config sections
assert len(output) > 100
# Should show at least some standard config keys
assert 'TIMEOUT' in output or 'OUTPUT_PERMISSIONS' in output
def test_config_get_specific_key(tmp_path, process):
"""Test that config --get KEY retrieves specific value."""
os.chdir(tmp_path)
result = subprocess.run(
['archivebox', 'config', '--get', 'TIMEOUT'],
capture_output=True,
text=True,
)
assert result.returncode == 0
assert 'TIMEOUT' in result.stdout
def test_config_set_writes_to_file(tmp_path, process):
"""Test that config --set KEY=VALUE writes to ArchiveBox.conf."""
os.chdir(tmp_path)
result = subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=120'],
capture_output=True,
text=True,
)
assert result.returncode == 0
# Verify config file was updated
config_file = tmp_path / 'ArchiveBox.conf'
assert config_file.exists()
content = config_file.read_text()
assert 'TIMEOUT' in content or '120' in content
def test_config_set_and_get_roundtrip(tmp_path, process):
"""Test that set value can be retrieved with get."""
os.chdir(tmp_path)
# Set a unique value
subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=987'],
capture_output=True,
text=True,
)
# Get the value back
result = subprocess.run(
['archivebox', 'config', '--get', 'TIMEOUT'],
capture_output=True,
text=True,
)
assert '987' in result.stdout
def test_config_set_multiple_values(tmp_path, process):
"""Test setting multiple config values at once."""
os.chdir(tmp_path)
result = subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=111', 'YTDLP_TIMEOUT=222'],
capture_output=True,
text=True,
)
assert result.returncode == 0
# Verify both were written
config_file = tmp_path / 'ArchiveBox.conf'
content = config_file.read_text()
assert '111' in content
assert '222' in content
def test_config_set_invalid_key_fails(tmp_path, process):
"""Test that setting invalid config key fails."""
os.chdir(tmp_path)
result = subprocess.run(
['archivebox', 'config', '--set', 'TOTALLY_INVALID_KEY_XYZ=value'],
capture_output=True,
text=True,
)
assert result.returncode != 0
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,
)
assert result.returncode != 0
def test_config_search_finds_keys(tmp_path, process):
"""Test that config --search finds matching keys."""
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
def test_config_preserves_existing_values(tmp_path, process):
"""Test that setting new values preserves existing ones."""
os.chdir(tmp_path)
# Set first value
subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=100'],
capture_output=True,
)
# Set second value
subprocess.run(
['archivebox', 'config', '--set', 'YTDLP_TIMEOUT=200'],
capture_output=True,
)
# Verify both are in config file
config_file = tmp_path / 'ArchiveBox.conf'
content = config_file.read_text()
assert 'TIMEOUT' in content
assert 'YTDLP_TIMEOUT' in content
def test_config_file_is_valid_toml(tmp_path, process):
"""Test that config file remains valid TOML after set."""
os.chdir(tmp_path)
subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=150'],
capture_output=True,
)
config_file = tmp_path / 'ArchiveBox.conf'
content = config_file.read_text()
# Basic TOML validation - should have sections and key=value pairs
assert '[' in content or '=' in content
def test_config_updates_existing_value(tmp_path, process):
"""Test that setting same key twice updates the value."""
os.chdir(tmp_path)
# Set initial value
subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=100'],
capture_output=True,
)
# Update to new value
subprocess.run(
['archivebox', 'config', '--set', 'TIMEOUT=200'],
capture_output=True,
)
# Get current value
result = subprocess.run(
['archivebox', 'config', '--get', 'TIMEOUT'],
capture_output=True,
text=True,
)
# Should show updated value
assert '200' in result.stdout