Skip to content

Commit a22afe0

Browse files
committed
test(kdvi,kpdf,evince): use @pytest.mark.bashcomp(temp_cwd=True)
1 parent 8a0334d commit a22afe0

File tree

4 files changed

+42
-61
lines changed

4 files changed

+42
-61
lines changed

test/t/conftest.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -674,21 +674,41 @@ def prepare_fixture_dir(
674674
tempdir = Path(tempfile.mkdtemp(prefix="bash-completion-fixture-dir"))
675675
request.addfinalizer(lambda: shutil.rmtree(str(tempdir)))
676676

677+
old_cwd = os.getcwd()
678+
try:
679+
os.chdir(tempdir)
680+
new_files, new_dirs = create_dummy_filedirs(files, dirs)
681+
finally:
682+
os.chdir(old_cwd)
683+
684+
return tempdir, new_files, new_dirs
685+
686+
687+
def create_dummy_filedirs(
688+
files: Iterable[str], dirs: Iterable[str]
689+
) -> Tuple[List[str], List[str]]:
690+
"""
691+
Create dummy files and directories on the fly in the current directory.
692+
693+
Tests that contain filenames differing only by case should use this to
694+
prepare a dir on the fly rather than including their fixtures in git and
695+
the tarball. This is to work better with case insensitive file systems.
696+
"""
677697
new_files = []
678698
new_dirs = []
679699

680-
for file_ in files:
681-
path = tempdir / file_
682-
if not path.exists():
683-
path.touch()
684-
new_files.append(file_)
685700
for dir_ in dirs:
686-
path = tempdir / dir_
701+
path = Path(dir_)
687702
if not path.exists():
688703
path.mkdir()
689704
new_dirs.append(dir_)
705+
for file_ in files:
706+
path = Path(file_)
707+
if not path.exists():
708+
path.touch()
709+
new_files.append(file_)
690710

691-
return tempdir, sorted(new_files), sorted(new_dirs)
711+
return sorted(new_files), sorted(new_dirs)
692712

693713

694714
class TestUnitBase:

test/t/test_evince.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
1-
import shlex
2-
from pathlib import Path
3-
from typing import List, Tuple
4-
51
import pytest
62

7-
from conftest import assert_bash_exec, assert_complete, prepare_fixture_dir
3+
from conftest import assert_complete, create_dummy_filedirs
84

95

6+
@pytest.mark.bashcomp(temp_cwd=True)
107
class TestEvince:
11-
@pytest.fixture(scope="class")
12-
def setup_fixture(self, request) -> Tuple[Path, List[str], List[str]]:
13-
return prepare_fixture_dir(
14-
request,
8+
def test_1(self, bash):
9+
files, dirs = create_dummy_filedirs(
1510
(
1611
".bmp .BMP .cbr .CBR .cbz .CBZ .djv .DJV .djvu .DJVU .dvi "
1712
".DVI .dvi.bz2 .dvi.BZ2 .DVI.bz2 .DVI.BZ2 .dvi.gz .dvi.GZ "
@@ -27,15 +22,7 @@ def setup_fixture(self, request) -> Tuple[Path, List[str], List[str]]:
2722
"foo".split(),
2823
)
2924

30-
def test_1(self, bash, setup_fixture):
31-
fixture_dir, files, dirs = setup_fixture
32-
33-
assert_bash_exec(bash, "cd %s" % shlex.quote(str(fixture_dir)))
34-
try:
35-
completion = assert_complete(bash, "evince ")
36-
finally:
37-
assert_bash_exec(bash, "cd -", want_output=None)
38-
25+
completion = assert_complete(bash, "evince ")
3926
assert completion == [
4027
x
4128
for x in sorted(files + ["%s/" % d for d in dirs])

test/t/test_kdvi.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,20 @@
1-
import shlex
2-
from pathlib import Path
3-
from typing import List, Tuple
4-
51
import pytest
62

7-
from conftest import assert_bash_exec, assert_complete, prepare_fixture_dir
3+
from conftest import assert_complete, create_dummy_filedirs
84

95

6+
@pytest.mark.bashcomp(temp_cwd=True)
107
class TestKdvi:
11-
@pytest.fixture(scope="class")
12-
def setup_fixture(self, request) -> Tuple[Path, List[str], List[str]]:
13-
return prepare_fixture_dir(
14-
request,
8+
def test_1(self, bash):
9+
files, dirs = create_dummy_filedirs(
1510
(
1611
".dvi .DVI .dvi.bz2 .DVI.bz2 .dvi.gz .DVI.gz .dvi.Z .DVI.Z "
1712
".txt"
1813
).split(),
1914
"foo".split(),
2015
)
2116

22-
def test_1(self, bash, setup_fixture):
23-
fixture_dir, files, dirs = setup_fixture
24-
25-
assert_bash_exec(bash, "cd %s" % shlex.quote(str(fixture_dir)))
26-
try:
27-
completion = assert_complete(bash, "kdvi ")
28-
finally:
29-
assert_bash_exec(bash, "cd -", want_output=None)
30-
17+
completion = assert_complete(bash, "kdvi ")
3118
assert completion == [
3219
x
3320
for x in sorted(files + ["%s/" % d for d in dirs])

test/t/test_kpdf.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,17 @@
1-
import shlex
2-
from pathlib import Path
3-
from typing import List, Tuple
4-
51
import pytest
62

7-
from conftest import assert_bash_exec, assert_complete, prepare_fixture_dir
3+
from conftest import assert_complete, create_dummy_filedirs
84

95

6+
@pytest.mark.bashcomp(temp_cwd=True)
107
class TestKpdf:
11-
@pytest.fixture(scope="class")
12-
def setup_fixture(self, request) -> Tuple[Path, List[str], List[str]]:
13-
return prepare_fixture_dir(
14-
request,
8+
def test_1(self, bash):
9+
files, dirs = create_dummy_filedirs(
1510
".eps .EPS .pdf .PDF .ps .PS .txt".split(),
1611
"foo".split(),
1712
)
1813

19-
def test_1(self, bash, setup_fixture):
20-
fixture_dir, files, dirs = setup_fixture
21-
22-
assert_bash_exec(bash, "cd %s" % shlex.quote(str(fixture_dir)))
23-
try:
24-
completion = assert_complete(bash, "kpdf ")
25-
finally:
26-
assert_bash_exec(bash, "cd -", want_output=None)
27-
14+
completion = assert_complete(bash, "kpdf ")
2815
assert completion == [
2916
x
3017
for x in sorted(files + ["%s/" % d for d in dirs])

0 commit comments

Comments
 (0)