[cfe-dev] [Unit Tests] BasicTests filesystem test failures
Sam McCall via cfe-dev
cfe-dev at lists.llvm.org
Tue Oct 2 00:28:16 PDT 2018
Hi David,
I believe this was rather caused by r343460 and then fixed in r343488
(sorry about the delay between the two!)
The change in symlink behavior was deliberate but I didn't expect the clang
tests to depend on it.
Please let me know if this is still broken after r343488.
Cheers, Sam
On Tue, Oct 2, 2018 at 4:32 AM David Greene <dag at cray.com> wrote:
> These tests are broken on X86-64 and AArch64 SLES 12:
>
> [ FAILED ] 2 tests, listed below:
> [ FAILED ] VirtualFileSystemTest.BrokenSymlinkRealFSIteration
> [ FAILED ] VirtualFileSystemTest.BrokenSymlinkRealFSRecursiveIteration
>
> /clang/unittests/Basic/VirtualFileSystemTest.cpp:443: Failure
> Value of: I->path() == _b
> Actual: false
> Expected: true
> /clang/unittests/Basic/VirtualFileSystemTest.cpp:443: Failure
> Value of: I->path() == _b
> Actual: false
> Expected: true
> [ FAILED ] VirtualFileSystemTest.BrokenSymlinkRealFSIteration (1 ms)
> [ RUN ] VirtualFileSystemTest.BasicRealFSRecursiveIteration
> [ OK ] VirtualFileSystemTest.BasicRealFSRecursiveIteration (0 ms)
> [ RUN ] VirtualFileSystemTest.BrokenSymlinkRealFSRecursiveIteration
> /clang/unittests/Basic/VirtualFileSystemTest.cpp:534: Failure
> Expected: ExpectedBrokenSymlinks.size()
> Which is: 5
> To be equal to: VisitedBrokenSymlinks.size()
> Which is: 0
> /clang/unittests/Basic/VirtualFileSystemTest.cpp:538: Failure
> Expected: ExpectedNonBrokenSymlinks.size()
> Which is: 5
> To be equal to: VisitedNonBrokenSymlinks.size()
> Which is: 10
> /clang/unittests/Basic/VirtualFileSystemTest.cpp:541: Failure
> Value of: std::equal(VisitedNonBrokenSymlinks.begin(),
> VisitedNonBrokenSymlinks.end(), ExpectedNonBrokenSymlinks.begin())
>
> Actual: false
> Expected: true
> [ FAILED ] VirtualFileSystemTest.BrokenSymlinkRealFSRecursiveIteration
> (1 ms)
>
> The first failures (path inequality) are caused by the directory iterators
> not
> skipping broken symlinks. I did not dive deeply into the other failures
> as I
> assume they show the same issue.
>
> This commit appears to have caused the regression:
>
> commit 446fa15e649709fc8bde40ed422d1e4794ac9559
> Author: Sam McCall <sam.mccall at gmail.com>
> Date: Fri Sep 14 12:47:38 2018 +0000
>
> [VFS] vfs::directory_iterator yields path and file type instead of
> full Status
>
> Summary:
> Most callers I can find are using only `getName()`. Type is used by the
> recursive iterator.
>
> Now we don't have to call stat() on every listed file (on most
> platforms).
> Exceptions are e.g. Solaris where readdir() doesn't include type
> information.
> On those platforms we'll still stat() - see D51918.
>
> The result is significantly faster (stat() can be slow).
> My motivation: this may allow us to improve clang IO on large TUs with
> long
> include search paths. Caching readdir() results may allow us to skip
> many stat()
> and open() operations on nonexistent files.
>
> Reviewers: bkramer
>
> Subscribers: fedor.sergeev, cfe-commits
>
> Differential Revision: https://reviews.llvm.org/D51921
>
> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@342232
> 91177308-0d34-0410-b5e6-96231b3b80d8
>
>
> I am not well versed enough in the VFS layer to propose a fix, but I am
> happy to help test patches.
>
> -David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181002/106d743e/attachment.html>
More information about the cfe-dev
mailing list