aboutsummaryrefslogtreecommitdiff
path: root/gcc/input.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2016-06-13 21:20:10 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2016-06-13 21:20:10 +0000
commit85ecd05c26d107921b166374dd77c40a393312c8 (patch)
treeec6ac4583e4ad411cd6740d0f46ca084d3289c30 /gcc/input.c
parent2fe00b1fba78d3e9fb26754e9cbf3d05ab7e1506 (diff)
downloadgcc-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.c31
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. */