The two libclang crash-recovery tests that involve precompiled

preambles end up leaving the precompiled preambles around. This is by
design, since we do minimal cleanup during crash recovery. However,
it's unfortunate for testing, so introduce a hook that allows these
two tests to put the precompiled preamble somewhere where we can
delete them after testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113698 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Douglas Gregor 2010-09-11 18:05:19 +00:00
Родитель 2cd4fd4b75
Коммит 424668cc90
3 изменённых файлов: 11 добавлений и 2 удалений

Просмотреть файл

@ -803,6 +803,13 @@ static std::string GetPreamblePCHPath() {
// FIXME: This is lame; sys::Path should provide this function (in particular, // FIXME: This is lame; sys::Path should provide this function (in particular,
// it should know how to find the temporary files dir). // it should know how to find the temporary files dir).
// FIXME: This is really lame. I copied this code from the Driver! // FIXME: This is really lame. I copied this code from the Driver!
// FIXME: This is a hack so that we can override the preamble file during
// crash-recovery testing, which is the only case where the preamble files
// are not necessarily cleaned up.
const char *TmpFile = ::getenv("CINDEXTEST_PREAMBLE_FILE");
if (TmpFile)
return TmpFile;
std::string Error; std::string Error;
const char *TmpDir = ::getenv("TMPDIR"); const char *TmpDir = ::getenv("TMPDIR");
if (!TmpDir) if (!TmpDir)

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: env CINDEXTEST_EDITING=1 \ // RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_PREAMBLE_FILE=%t-preamble.pch \
// RUN: not c-index-test -code-completion-at=%s:20:1 \ // RUN: not c-index-test -code-completion-at=%s:20:1 \
// RUN: "-remap-file=%s;%S/Inputs/crash-recovery-code-complete-remap.c" \ // RUN: "-remap-file=%s;%S/Inputs/crash-recovery-code-complete-remap.c" \
// RUN: %s 2> %t.err // RUN: %s 2> %t.err
// RUN: FileCheck < %t.err -check-prefix=CHECK-CODE-COMPLETE-CRASH %s // RUN: FileCheck < %t.err -check-prefix=CHECK-CODE-COMPLETE-CRASH %s
// RUN: rm %t-preamble.pch
// CHECK-CODE-COMPLETE-CRASH: Unable to perform code completion! // CHECK-CODE-COMPLETE-CRASH: Unable to perform code completion!
// //
// REQUIRES: crash-recovery // REQUIRES: crash-recovery

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: env CINDEXTEST_EDITING=1 \ // RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_PREAMBLE_FILE=%t-preamble.pch \
// RUN: not c-index-test -test-load-source-reparse 1 local \ // RUN: not c-index-test -test-load-source-reparse 1 local \
// RUN: -remap-file="%s;%S/Inputs/crash-recovery-reparse-remap.c" \ // RUN: -remap-file="%s;%S/Inputs/crash-recovery-reparse-remap.c" \
// RUN: %s 2> %t.err // RUN: %s 2> %t.err
// RUN: FileCheck < %t.err -check-prefix=CHECK-REPARSE-SOURCE-CRASH %s // RUN: FileCheck < %t.err -check-prefix=CHECK-REPARSE-SOURCE-CRASH %s
// RUN: rm %t-preamble.pch
// CHECK-REPARSE-SOURCE-CRASH: Unable to reparse translation unit // CHECK-REPARSE-SOURCE-CRASH: Unable to reparse translation unit
// //
// REQUIRES: crash-recovery // REQUIRES: crash-recovery