2025-02-09 19:58:08 +01:00
|
|
|
import io
|
2025-02-09 19:48:22 +01:00
|
|
|
import os
|
|
|
|
import stat
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
2025-02-09 19:58:08 +01:00
|
|
|
from pgcli.config import ensure_dir_exists, skip_initial_comment
|
2025-02-09 19:48:22 +01:00
|
|
|
|
|
|
|
|
|
|
|
def test_ensure_file_parent(tmpdir):
|
|
|
|
subdir = tmpdir.join("subdir")
|
|
|
|
rcfile = subdir.join("rcfile")
|
|
|
|
ensure_dir_exists(str(rcfile))
|
|
|
|
|
|
|
|
|
|
|
|
def test_ensure_existing_dir(tmpdir):
|
|
|
|
rcfile = str(tmpdir.mkdir("subdir").join("rcfile"))
|
|
|
|
|
|
|
|
# should just not raise
|
|
|
|
ensure_dir_exists(rcfile)
|
|
|
|
|
|
|
|
|
|
|
|
def test_ensure_other_create_error(tmpdir):
|
2025-02-09 19:58:08 +01:00
|
|
|
subdir = tmpdir.join('subdir"')
|
2025-02-09 19:48:22 +01:00
|
|
|
rcfile = subdir.join("rcfile")
|
|
|
|
|
2025-02-09 19:58:08 +01:00
|
|
|
# trigger an oserror that isn't "directory already exists"
|
2025-02-09 19:48:22 +01:00
|
|
|
os.chmod(str(tmpdir), stat.S_IREAD)
|
|
|
|
|
|
|
|
with pytest.raises(OSError):
|
|
|
|
ensure_dir_exists(str(rcfile))
|
2025-02-09 19:58:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
"text, skipped_lines",
|
|
|
|
(
|
|
|
|
("abc\n", 1),
|
|
|
|
("#[section]\ndef\n[section]", 2),
|
|
|
|
("[section]", 0),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
def test_skip_initial_comment(text, skipped_lines):
|
|
|
|
assert skip_initial_comment(io.StringIO(text)) == skipped_lines
|