[llvm] r182715 - Fixed bug when tests in executable partially used absolute paths.

Alexey Samsonov samsonov at google.com
Wed May 29 01:23:34 PDT 2013


Hi Galina,

I use cmake for an out-of-tree build (cmake -DCMAKE_BUILD_TYPE=Release ...
/path/to/llvm). I think you may try to reproduce the problem by configuring
cmake build tree,
applying the change (breaking the unit test):

$ svn diff unittests/ADT/APFloatTest.cpp
Index: unittests/ADT/APFloatTest.cpp
===================================================================
--- unittests/ADT/APFloatTest.cpp (revision 182753)
+++ unittests/ADT/APFloatTest.cpp (working copy)
@@ -52,7 +52,7 @@
     f2.divide(Val2, rdmd);
     APFloat f3(12.0f);
     f1.fusedMultiplyAdd(f2, f3, APFloat::rmNearestTiesToEven);
-    EXPECT_EQ(12.0f, f1.convertToFloat());
+    EXPECT_EQ(13.0f, f1.convertToFloat());
   }
 }

then in the build tree:
$ make check-llvm -j12
Testing Time: 28.15s
  Expected Passes    : 8091
  Expected Failures  : 50
  Unsupported Tests  : 18

OTOH:
$ unittests/ADT/ADTTests --gtest_filter=APFloatTest.FMA
Note: Google Test filter = APFloatTest.FMA
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from APFloatTest
[ RUN      ] APFloatTest.FMA
/usr/local/google/llvm/unittests/ADT/APFloatTest.cpp:55: Failure
Value of: f1.convertToFloat()
  Actual: 12
Expected: 13.0f
Which is: 13
[  FAILED  ] APFloatTest.FMA (1 ms)
[----------] 1 test from APFloatTest (1 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] APFloatTest.FMA

 1 FAILED TEST



On Tue, May 28, 2013 at 11:48 PM, Galina Kistanova <gkistanova at gmail.com>wrote:

> Hi Alexey,
>
> Can you provide more details please? Do you build in tree or out of tree?
>
> Thanks
>
> Galina
>
>
>
> On Tue, May 28, 2013 at 3:09 AM, Alexey Samsonov <samsonov at google.com>wrote:
>
>> Hm the buildbots are going red :(
>> Reverting this change with my fix altogether.
>>
>>
>> On Tue, May 28, 2013 at 1:44 PM, Alexey Samsonov <samsonov at google.com>wrote:
>>
>>> Hi Galina!
>>>
>>> On Sun, May 26, 2013 at 7:58 AM, Galina Kistanova <gkistanova at gmail.com>wrote:
>>>
>>>> Author: gkistanova
>>>> Date: Sat May 25 22:58:41 2013
>>>> New Revision: 182715
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=182715&view=rev
>>>> Log:
>>>> Fixed bug when tests in executable partially used absolute paths.
>>>>
>>>> Modified:
>>>>     llvm/trunk/utils/lit/lit/TestFormats.py
>>>>
>>>> Modified: llvm/trunk/utils/lit/lit/TestFormats.py
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestFormats.py?rev=182715&r1=182714&r2=182715&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/utils/lit/lit/TestFormats.py (original)
>>>> +++ llvm/trunk/utils/lit/lit/TestFormats.py Sat May 25 22:58:41 2013
>>>> @@ -61,9 +61,9 @@ class GoogleTest(object):
>>>>          (dirname, basename) = os.path.split(execpath)
>>>>          # Discover the tests in this executable.
>>>>          for testname in self.getGTestTests(execpath, litConfig,
>>>> localConfig):
>>>> -            testPath = path_in_suite + (dirname, basename, testname)
>>>> -            yield Test.Test(testSuite, testPath, localConfig)
>>>> -
>>>> +            testPath_in_suite = path_in_suite + (basename, testname)
>>>> +            yield Test.Test(testSuite, testPath_in_suite, localConfig)
>>>>
>>>
>>> I think this is wrong. When I run unittests locally, file
>>> /some/gtest/executable is called as:
>>> /some/gtest/executable --gtest_filter="executable/test.case"
>>> instead of:
>>> /some/gtest/executable --gtest_filter="test.case"
>>>
>>> As a result, *all the unit tests silently pass*.
>>> I think r182758 deals with it, but double-checking would be nice.
>>>
>>>
>>>
>>>> +
>>>>      def getTestsInDirectory(self, testSuite, path_in_suite,
>>>>                              litConfig, localConfig):
>>>>          source_path = testSuite.getSourcePath(path_in_suite)
>>>> @@ -73,15 +73,17 @@ class GoogleTest(object):
>>>>                  # Iterate over executables in a directory.
>>>>                  if not os.path.normcase(filename) in self.test_sub_dir:
>>>>                      continue
>>>> +                filepath_in_suite = path_in_suite + (filename, )
>>>>                  for subfilename in os.listdir(filepath):
>>>>                      execpath = os.path.join(filepath, subfilename)
>>>>                      for test in self.getTestsInExecutable(
>>>> -                            testSuite, path_in_suite, execpath,
>>>> +                            testSuite, filepath_in_suite, execpath,
>>>>                              litConfig, localConfig):
>>>>                        yield test
>>>>              elif ('.' in self.test_sub_dir):
>>>> +                filepath_in_suite = path_in_suite + (filename, )
>>>>                  for test in self.getTestsInExecutable(
>>>> -                        testSuite, path_in_suite, filepath,
>>>> +                        testSuite, filepath_in_suite, filepath,
>>>>                          litConfig, localConfig):
>>>>                      yield test
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>
>>>
>>>
>>>
>>> --
>>> Alexey Samsonov, MSK
>>>
>>
>>
>>
>> --
>> Alexey Samsonov, MSK
>>
>
>


-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130529/8be40b39/attachment.html>


More information about the llvm-commits mailing list