]> granicus.if.org Git - clang/commitdiff
Don't let test/Driver/no-canonical-prefixes.c form a symlink cycle the second time...
authorNico Weber <nicolasweber@gmx.de>
Mon, 18 Jun 2018 18:50:35 +0000 (18:50 +0000)
committerNico Weber <nicolasweber@gmx.de>
Mon, 18 Jun 2018 18:50:35 +0000 (18:50 +0000)
The test makes %t.fake a symlink to %t.real by running `ln -sf %t.real
%t.fake`. If %t.fake already is a symlink to %t.real when this runs (e.g. if
the test has run before), then this effectively becomes `ln -sf %t.real %t.real`,
symlinking the directory to itself. At least on my mac, this leads to the
directory containing itself.

As fix, just remove %t.fake before creating the symlink. To clean up build dirs
on bots, also remove %t.real for a while.

https://reviews.llvm.org/D48224

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@334972 91177308-0d34-0410-b5e6-96231b3b80d8

test/Driver/no-canonical-prefixes.c

index 7bc76be22d7503bd10c1d18286b1ef0c71df2682..8b9e04410ed22f902b4d16a92bce667745690c5b 100644 (file)
@@ -1,9 +1,14 @@
 // Due to ln -sf:
 // REQUIRES: shell
+// RUN: rm -rf %t.real
 // RUN: mkdir -p %t.real
 // RUN: cd %t.real
 // RUN: ln -sf %clang test-clang
 // RUN: cd ..
+// Important to remove %t.fake: If it already is a symlink to %t.real when
+// `ln -sf %t.real %t.fake` runs, then that would symlink %t.real to itself,
+// forming a cycle.
+// RUN: rm -rf %t.fake
 // RUN: ln -sf %t.real %t.fake
 // RUN: cd %t.fake
 // RUN: ./test-clang -v -S %s 2>&1 | FileCheck --check-prefix=CANONICAL %s