Skip to content

Commit 25f0b98

Browse files
committed
test_resolve_paths: Use a fixture to reduce repetition.
1 parent 903c675 commit 25f0b98

1 file changed

Lines changed: 20 additions & 40 deletions

File tree

tests/rimport/test_resolve_paths.py

Lines changed: 20 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from importlib.machinery import SourceFileLoader
99
from pathlib import Path
1010

11+
import pytest
12+
1113
# Import rimport module from file without .py extension
1214
rimport_path = os.path.join(
1315
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
@@ -22,24 +24,26 @@
2224
loader.exec_module(rimport)
2325

2426

27+
@pytest.fixture(name="root")
28+
def fixture_root(tmp_path):
29+
"""Create and return a root directory for testing."""
30+
root_dir = tmp_path / "root"
31+
root_dir.mkdir()
32+
return root_dir
33+
34+
2535
class TestResolvePaths:
2636
"""Test suite for resolve_paths() function."""
2737

28-
def test_single_relative_path(self, tmp_path):
38+
def test_single_relative_path(self, root):
2939
"""Test resolving a single relative path."""
30-
root = tmp_path / "root"
31-
root.mkdir()
32-
3340
result = rimport.resolve_paths(root, ["file1.nc"])
3441

3542
assert len(result) == 1
3643
assert result[0] == (root / "file1.nc").resolve()
3744

38-
def test_multiple_relative_paths(self, tmp_path):
45+
def test_multiple_relative_paths(self, root):
3946
"""Test resolving multiple relative paths."""
40-
root = tmp_path / "root"
41-
root.mkdir()
42-
4347
relnames = ["file1.nc", "file2.nc", "file3.nc"]
4448
result = rimport.resolve_paths(root, relnames)
4549

@@ -48,23 +52,17 @@ def test_multiple_relative_paths(self, tmp_path):
4852
assert result[1] == (root / "file2.nc").resolve()
4953
assert result[2] == (root / "file3.nc").resolve()
5054

51-
def test_nested_relative_paths(self, tmp_path):
55+
def test_nested_relative_paths(self, root):
5256
"""Test resolving nested relative paths."""
53-
root = tmp_path / "root"
54-
root.mkdir()
55-
5657
relnames = ["dir1/file1.nc", "dir2/subdir/file2.nc"]
5758
result = rimport.resolve_paths(root, relnames)
5859

5960
assert len(result) == 2
6061
assert result[0] == (root / "dir1" / "file1.nc").resolve()
6162
assert result[1] == (root / "dir2" / "subdir" / "file2.nc").resolve()
6263

63-
def test_absolute_path(self, tmp_path):
64+
def test_absolute_path(self, tmp_path, root):
6465
"""Test that absolute paths are preserved."""
65-
root = tmp_path / "root"
66-
root.mkdir()
67-
6866
abs_path = tmp_path / "other" / "file.nc"
6967
relnames = [str(abs_path)]
7068

@@ -73,11 +71,8 @@ def test_absolute_path(self, tmp_path):
7371
assert len(result) == 1
7472
assert result[0] == abs_path.resolve()
7573

76-
def test_mixed_relative_and_absolute(self, tmp_path):
74+
def test_mixed_relative_and_absolute(self, tmp_path, root):
7775
"""Test mixing relative and absolute paths."""
78-
root = tmp_path / "root"
79-
root.mkdir()
80-
8176
abs_path = tmp_path / "other" / "file.nc"
8277
relnames = ["file1.nc", str(abs_path), "dir/file2.nc"]
8378

@@ -88,55 +83,40 @@ def test_mixed_relative_and_absolute(self, tmp_path):
8883
assert result[1] == abs_path.resolve()
8984
assert result[2] == (root / "dir" / "file2.nc").resolve()
9085

91-
def test_empty_list(self, tmp_path):
86+
def test_empty_list(self, root):
9287
"""Test with empty list of names."""
93-
root = tmp_path / "root"
94-
root.mkdir()
95-
9688
result = rimport.resolve_paths(root, [])
9789

9890
assert len(result) == 0
9991
assert result == []
10092

101-
def test_paths_with_spaces(self, tmp_path):
93+
def test_paths_with_spaces(self, root):
10294
"""Test paths with spaces in names."""
103-
root = tmp_path / "root"
104-
root.mkdir()
105-
10695
relnames = ["file with spaces.nc", "dir with spaces/file.nc"]
10796
result = rimport.resolve_paths(root, relnames)
10897

10998
assert len(result) == 2
11099
assert result[0] == (root / "file with spaces.nc").resolve()
111100
assert result[1] == (root / "dir with spaces" / "file.nc").resolve()
112101

113-
def test_paths_with_special_characters(self, tmp_path):
102+
def test_paths_with_special_characters(self, root):
114103
"""Test paths with special characters."""
115-
root = tmp_path / "root"
116-
root.mkdir()
117-
118104
relnames = ["file-name_123.nc", "dir@test/file.nc"]
119105
result = rimport.resolve_paths(root, relnames)
120106

121107
assert len(result) == 2
122108
assert result[0] == (root / "file-name_123.nc").resolve()
123109
assert result[1] == (root / "dir@test" / "file.nc").resolve()
124110

125-
def test_returns_path_objects(self, tmp_path):
111+
def test_returns_path_objects(self, root):
126112
"""Test that result contains Path objects."""
127-
root = tmp_path / "root"
128-
root.mkdir()
129-
130113
result = rimport.resolve_paths(root, ["file.nc"])
131114

132115
assert len(result) == 1
133116
assert isinstance(result[0], Path)
134117

135-
def test_resolves_dot_and_dotdot(self, tmp_path):
118+
def test_resolves_dot_and_dotdot(self, root):
136119
"""Test that . and .. are resolved."""
137-
root = tmp_path / "root"
138-
root.mkdir()
139-
140120
relnames = ["./file1.nc", "dir/../file2.nc", "dir/./file3.nc"]
141121
result = rimport.resolve_paths(root, relnames)
142122

0 commit comments

Comments
 (0)