@@ -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