<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - 9 clang-move tests failing after r332717 on Windows when run through a directory junction"
   href="https://bugs.llvm.org/show_bug.cgi?id=41042">41042</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>9 clang-move tests failing after r332717 on Windows when run through a directory junction
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>douglas_yung@playstation.sony.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>After upstream commit r332717, 9 clang-move tests started to fail when run on
Windows in a directory that is under an NTFS junction point.

The specific tests that fail are the following:

      Clang Tools :: clang-move/move-class.cpp
      Clang Tools :: clang-move/move-enum-decl.cpp
      Clang Tools :: clang-move/move-function.cpp
      Clang Tools :: clang-move/move-multiple-classes.cpp
      Clang Tools :: clang-move/move-template-class.cpp
      Clang Tools :: clang-move/move-type-alias.cpp
      Clang Tools :: clang-move/move-used-helper-decls.cpp
      Clang Tools :: clang-move/move-var.cpp
      Clang Tools :: clang-move/no-move-macro-helpers.cpp

In each of these test failures, what happens is the clang-move command is run,
and it is expected to produce a new file that FileCheck tries to inspect.
FileCheck fails because the newly generated file is empty.

To reproduce this, you need a Windows system, and the sources in a directory
that is accessed through an NTFS junction point. Here is my setup:

Source location: D:\src\upstream\llvm_clean
Junction point is located at C:\src\upstream which points to D:\src\upstream.

Here is what the Windows dir command returns when run in C:\src:

C:\src>dir
 Volume in drive C is Windows
 Volume Serial Number is 1C54-5FD7

 Directory of C:\src

10/31/2018  16:36    <DIR>          .
10/31/2018  16:36    <DIR>          ..
10/31/2018  16:35    <JUNCTION>     upstream [D:\src\upstream]

To create a junction point in Windows, the underlying filesystem must be NTFS.
You can create a junction point using the "mklink" command like this:

mklink /J <junction name> <target directory>

So for example, running "mklink /J C:\src\foo C:\src\bar" would create a
junction point named "foo" in C:\src that points to C:\src\bar.

The simplest way to reproduce this if you already have a Windows setup with
your sources in C:\src\llvm for example would be to create a junction point
that points to the existing location, and then run the test from under the
junction point.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>