diff options
author | David Malcolm <dmalcolm@redhat.com> | 2016-06-13 21:20:10 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2016-06-13 21:20:10 +0000 |
commit | 85ecd05c26d107921b166374dd77c40a393312c8 (patch) | |
tree | ec6ac4583e4ad411cd6740d0f46ca084d3289c30 /gcc/input.c | |
parent | 2fe00b1fba78d3e9fb26754e9cbf3d05ab7e1506 (diff) | |
download | gcc-85ecd05c26d107921b166374dd77c40a393312c8.zip gcc-85ecd05c26d107921b166374dd77c40a393312c8.tar.gz gcc-85ecd05c26d107921b166374dd77c40a393312c8.tar.bz2 |
PR bootstrap/71481: fix input.c selftest
gcc/ChangeLog:
PR bootstrap/71481
* input.c (selftest::test_reading_source_line): Avoid reading from
__FILE__ by creating a tempfile with known content and reading
from that instead.
From-SVN: r237414
Diffstat (limited to 'gcc/input.c')
-rw-r--r-- | gcc/input.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/gcc/input.c b/gcc/input.c index 1d004f8..3fb4a25 100644 --- a/gcc/input.c +++ b/gcc/input.c @@ -1219,23 +1219,34 @@ test_builtins () static void test_reading_source_line () { - /* We will read *this* source file, using __FILE__. - Here is some specific text to read and test for: - The quick brown fox jumps over the lazy dog. */ - const int linenum_after_test_message = __LINE__; - const int linenum = linenum_after_test_message - 1; - + /* Create a tempfile and write some text to it. */ + char *filename = make_temp_file (".txt"); + ASSERT_NE (filename, NULL); + FILE *out = fopen (filename, "w"); + if (!out) + ::selftest::fail_formatted (SELFTEST_LOCATION, + "unable to open tempfile: %s", filename); + fprintf (out, + "01234567890123456789\n" + "This is the test text\n" + "This is the 3rd line\n"); + fclose (out); + + /* Read back a specific line from the tempfile. */ int line_size; - const char *source_line = location_get_source_line (__FILE__, linenum, &line_size); + const char *source_line = location_get_source_line (filename, 2, &line_size); ASSERT_TRUE (source_line != NULL); - ASSERT_EQ (53, line_size); - if (!strncmp (" The quick brown fox jumps over the lazy dog. */", - source_line, line_size)) + ASSERT_EQ (21, line_size); + if (!strncmp ("This is the test text", + source_line, line_size)) ::selftest::pass (SELFTEST_LOCATION, "source_line matched expected value"); else ::selftest::fail (SELFTEST_LOCATION, "source_line did not match expected value"); + + unlink (filename); + free (filename); } /* Run all of the selftests within this file. */ |