88from importlib .machinery import SourceFileLoader
99from pathlib import Path
1010
11+ import pytest
12+
1113# Import rimport module from file without .py extension
1214rimport_path = os .path .join (
1315 os .path .dirname (os .path .dirname (os .path .dirname (os .path .abspath (__file__ )))),
2224loader .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+
2535class 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