1from pathlib import Path
2
3from qbpm.config import (
4 DEFAULT_CONFIG_FILE,
5 Config,
6 find_config,
7 find_qutebrowser_config_dir,
8)
9
10from . import no_homedir_fixture # noqa: F401
11
12
13def test_no_config():
14 assert find_config(None) == Config.load(DEFAULT_CONFIG_FILE)
15
16
17def test_empty_config(tmp_path: Path):
18 file = tmp_path / "config.toml"
19 file.touch()
20 assert find_config(file) == Config()
21
22
23def test_default_config_location(tmp_path: Path):
24 (tmp_path / "qbpm").mkdir()
25 (tmp_path / "qbpm" / "config.toml").touch()
26 assert find_config(None) == Config()
27
28
29def test_minimal_config(tmp_path: Path):
30 file = tmp_path / "config.toml"
31 file.write_text("""config_py_template = 'template'""")
32 assert find_config(file) == Config(config_py_template="template")
33
34
35def test_full_config(tmp_path: Path):
36 file = tmp_path / "config.toml"
37 file.write_text("""
38config_py_template = \"""
39config.load_autoconfig()
40\"""
41symlink_autoconfig = true
42qutebrowser_config_directory = "~/.config/qutebrowser"
43profile_directory = "profile"
44generate_desktop_file = false
45desktop_file_directory = "desktop"
46menu = "~/bin/my-dmenu"
47menu_prompt = "qbpm"
48 """)
49 assert find_config(file) == Config(
50 config_py_template="config.load_autoconfig()\n",
51 symlink_autoconfig=True,
52 qutebrowser_config_directory=Path("~/.config/qutebrowser").expanduser(),
53 profile_directory=Path("profile"),
54 desktop_file_directory=Path("desktop"),
55 generate_desktop_file=False,
56 menu="~/bin/my-dmenu",
57 menu_prompt="qbpm",
58 )
59
60
61def test_find_qb_config(tmp_path: Path):
62 qb_dir = tmp_path / "qb"
63 qb_conf_dir = qb_dir / "config"
64 qb_conf_dir.mkdir(parents=True)
65 (qb_conf_dir / "config.py").touch()
66 assert find_qutebrowser_config_dir(qb_dir) == qb_conf_dir
67 assert find_qutebrowser_config_dir(qb_dir / "config") == qb_conf_dir
68
69
70def test_find_autoconfig(tmp_path: Path):
71 qb_dir = tmp_path / "qb"
72 qb_conf_dir = qb_dir / "config"
73 qb_conf_dir.mkdir(parents=True)
74 (qb_conf_dir / "autoconfig.yml").touch()
75 assert find_qutebrowser_config_dir(qb_dir, autoconfig=True) == qb_conf_dir
76
77
78def test_find_qb_config_default(tmp_path: Path):
79 (tmp_path / "config.py").touch()
80 assert find_qutebrowser_config_dir(None) == tmp_path
81
82
83def test_find_qutebrowser_none(tmp_path: Path):
84 assert find_qutebrowser_config_dir(None) is None
85 assert find_qutebrowser_config_dir(tmp_path / "config") is None