@@ -35,14 +35,16 @@ def __test_relative_header_create_source(dir, include1, include2, is_include1_sy
3535
3636@pytest .mark .parametrize ("with_pragma_once" , (False , True ))
3737@pytest .mark .parametrize ("is_sys" , (False , True ))
38- def test_relative_header_1 (tmpdir , with_pragma_once , is_sys ):
38+ def test_relative_header_1 (record_property , tmpdir , with_pragma_once , is_sys ):
3939 _ , double_include_error = __test_relative_header_create_header (tmpdir , with_pragma_once = with_pragma_once )
4040
4141 test_file = __test_relative_header_create_source (tmpdir , "test.h" , "test.h" , is_include1_sys = is_sys , is_include2_sys = is_sys )
4242
4343 args = ([format_include_path_arg (tmpdir )] if is_sys else []) + [test_file ]
4444
45- _ , _ , stderr = simplecpp (args , cwd = tmpdir )
45+ _ , stdout , stderr = simplecpp (args , cwd = tmpdir )
46+ record_property ("stdout" , stdout )
47+ record_property ("stderr" , stderr )
4648
4749 if with_pragma_once :
4850 assert stderr == ''
@@ -51,14 +53,16 @@ def test_relative_header_1(tmpdir, with_pragma_once, is_sys):
5153
5254@pytest .mark .parametrize ("inv" , (False , True ))
5355@pytest .mark .parametrize ("source_relative" , (False , True ))
54- def test_relative_header_2 (tmpdir , inv , source_relative ):
56+ def test_relative_header_2 (record_property , tmpdir , inv , source_relative ):
5557 header_file , _ = __test_relative_header_create_header (tmpdir )
5658
5759 test_file = __test_relative_header_create_source (tmpdir , "test.h" , header_file , inv = inv )
5860
5961 args = ["test.c" if source_relative else test_file ]
6062
6163 _ , stdout , stderr = simplecpp (args , cwd = tmpdir )
64+ record_property ("stdout" , stdout )
65+ record_property ("stderr" , stderr )
6266 assert stderr == ''
6367 if source_relative and not inv :
6468 assert '#line 8 "test.h"' in stdout
@@ -68,7 +72,7 @@ def test_relative_header_2(tmpdir, inv, source_relative):
6872@pytest .mark .parametrize ("is_sys" , (False , True ))
6973@pytest .mark .parametrize ("inv" , (False , True ))
7074@pytest .mark .parametrize ("source_relative" , (False , True ))
71- def test_relative_header_3 (tmpdir , is_sys , inv , source_relative ):
75+ def test_relative_header_3 (record_property , tmpdir , is_sys , inv , source_relative ):
7276 test_subdir = os .path .join (tmpdir , "test_subdir" )
7377 os .mkdir (test_subdir )
7478 header_file , _ = __test_relative_header_create_header (test_subdir )
@@ -78,6 +82,8 @@ def test_relative_header_3(tmpdir, is_sys, inv, source_relative):
7882 args = ["test.c" if source_relative else test_file ]
7983
8084 _ , stdout , stderr = simplecpp (args , cwd = tmpdir )
85+ record_property ("stdout" , stdout )
86+ record_property ("stderr" , stderr )
8187
8288 if is_sys :
8389 assert "missing header: Header not found" in stderr
@@ -91,7 +97,7 @@ def test_relative_header_3(tmpdir, is_sys, inv, source_relative):
9197@pytest .mark .parametrize ("use_short_path" , (False , True ))
9298@pytest .mark .parametrize ("is_sys" , (False , True ))
9399@pytest .mark .parametrize ("inv" , (False , True ))
94- def test_relative_header_4 (tmpdir , use_short_path , is_sys , inv ):
100+ def test_relative_header_4 (record_property , tmpdir , use_short_path , is_sys , inv ):
95101 test_subdir = os .path .join (tmpdir , "test_subdir" )
96102 os .mkdir (test_subdir )
97103 header_file , _ = __test_relative_header_create_header (test_subdir )
@@ -102,5 +108,36 @@ def test_relative_header_4(tmpdir, use_short_path, is_sys, inv):
102108
103109 args = [format_include_path_arg (test_subdir ), test_file ]
104110
105- _ , _ , stderr = simplecpp (args , cwd = tmpdir )
111+ _ , stdout , stderr = simplecpp (args , cwd = tmpdir )
112+ record_property ("stdout" , stdout )
113+ record_property ("stderr" , stderr )
106114 assert stderr == ''
115+
116+ @pytest .mark .parametrize ("with_pragma_once" , (False , True ))
117+ @pytest .mark .parametrize ("is_sys" , (False , True ))
118+ @pytest .mark .parametrize ("inv" , (False , True ))
119+ def test_relative_header_5 (record_property , tmpdir , with_pragma_once , is_sys , inv ): # test relative paths with ..
120+ ## in this test, the subdir role is the opposite then the previous - it contains the test.c file, while the parent tmpdir contains the header file
121+ header_file , double_include_error = __test_relative_header_create_header (tmpdir , with_pragma_once = with_pragma_once )
122+ if is_sys :
123+ header_file_second_path = "test.h"
124+ else :
125+ header_file_second_path = "../test.h"
126+
127+ test_subdir = os .path .join (tmpdir , "test_subdir" )
128+ os .mkdir (test_subdir )
129+ test_file = __test_relative_header_create_source (test_subdir , header_file , header_file_second_path , is_include2_sys = is_sys , inv = inv )
130+
131+ args = ([format_include_path_arg (tmpdir )] if is_sys else []) + ["test.c" ]
132+
133+ _ , stdout , stderr = simplecpp (args , cwd = test_subdir )
134+ record_property ("stdout" , stdout )
135+ record_property ("stderr" , stderr )
136+ if with_pragma_once :
137+ assert stderr == ''
138+ if inv :
139+ assert '#line 8 "../test.h"' in stdout
140+ else :
141+ assert f'#line 8 "{ pathlib .PurePath (tmpdir ).as_posix ()} /test.h"' in stdout
142+ else :
143+ assert double_include_error in stderr
0 commit comments