@@ -14,6 +14,7 @@ def __test_relative_header_create_header(dir, with_pragma_once=True):
1414 #else
1515 #error header_was_already_included
1616 #endif
17+ const int dummy = 1;
1718 """ )
1819 return header_file , "error: #error header_was_already_included"
1920
@@ -48,33 +49,43 @@ def test_relative_header_1(tmpdir, with_pragma_once, is_sys):
4849 assert double_include_error in stderr
4950
5051@pytest .mark .parametrize ("inv" , (False , True ))
51- def test_relative_header_2 (tmpdir , inv ):
52+ @pytest .mark .parametrize ("source_relative" , (False , True ))
53+ def test_relative_header_2 (tmpdir , inv , source_relative ):
5254 header_file , _ = __test_relative_header_create_header (tmpdir )
5355
5456 test_file = __test_relative_header_create_source (tmpdir , "test.h" , header_file , inv = inv )
5557
56- args = [test_file ]
58+ args = ["test.c" if source_relative else test_file ]
5759
58- _ , _ , stderr = simplecpp (args , cwd = tmpdir )
60+ _ , stdout , stderr = simplecpp (args , cwd = tmpdir )
5961 assert stderr == ''
62+ if source_relative and not inv :
63+ assert '#line 8 "test.h"' in stdout
64+ else :
65+ assert f'#line 8 "{ tmpdir } /test.h"' in stdout
6066
6167@pytest .mark .parametrize ("is_sys" , (False , True ))
6268@pytest .mark .parametrize ("inv" , (False , True ))
63- def test_relative_header_3 (tmpdir , is_sys , inv ):
69+ @pytest .mark .parametrize ("source_relative" , (False , True ))
70+ def test_relative_header_3 (tmpdir , is_sys , inv , source_relative ):
6471 test_subdir = os .path .join (tmpdir , "test_subdir" )
6572 os .mkdir (test_subdir )
6673 header_file , _ = __test_relative_header_create_header (test_subdir )
6774
6875 test_file = __test_relative_header_create_source (tmpdir , "test_subdir/test.h" , header_file , is_include1_sys = is_sys , inv = inv )
6976
70- args = [test_file ]
77+ args = ["test.c" if source_relative else test_file ]
7178
72- _ , _ , stderr = simplecpp (args , cwd = tmpdir )
79+ _ , stdout , stderr = simplecpp (args , cwd = tmpdir )
7380
7481 if is_sys :
7582 assert "missing header: Header not found" in stderr
7683 else :
7784 assert stderr == ''
85+ if source_relative and not inv :
86+ assert '#line 8 "test_subdir/test.h"' in stdout
87+ else :
88+ assert f'#line 8 "{ test_subdir } /test.h"' in stdout
7889
7990@pytest .mark .parametrize ("use_short_path" , (False , True ))
8091@pytest .mark .parametrize ("is_sys" , (False , True ))
0 commit comments