| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #!/usr/bin/env python3
- """Integration tests for archivebox config command."""
- import os
- import subprocess
- import pytest
- from .fixtures import process, disable_extractors_dict
- 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,
- )
- # 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'])
|