[libcxx-commits] [libcxxabi] cc69d21 - [libc++/abi] Clean up uses of <iostream> in the test suite

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Mon Oct 19 05:53:04 PDT 2020



> On Oct 19, 2020, at 04:27, Martin Storsjö <martin at martin.st> wrote:
> 
> On Tue, 13 Oct 2020, Louis Dionne via libcxx-commits wrote:
> 
>> 
>> Author: Louis Dionne
>> Date: 2020-10-13T20:25:33-04:00
>> New Revision: cc69d211d0d65d7bf0335fecbc323f784ac3afcc
>> 
>> URL: https://github.com/llvm/llvm-project/commit/cc69d211d0d65d7bf0335fecbc323f784ac3afcc
>> DIFF: https://github.com/llvm/llvm-project/commit/cc69d211d0d65d7bf0335fecbc323f784ac3afcc.diff
>> 
>> LOG: [libc++/abi] Clean up uses of <iostream> in the test suite
>> 
>> We used <iostream> in several places where we don't actually need the
>> full power of <iostream>, and where using basic `std::printf` is enough.
>> This is better, since `std::printf` can be supported on systems that don't
>> have a notion of locales, while <iostream> can't.
>> 
> 
>> diff  --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp
>> index bb0ad1da30c7..c8753b02f7f3 100644
>> --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp
>> +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp
>> @@ -130,11 +127,11 @@ int main(int, char**) {
>>    const fs::path output = p.lexically_normal();
>>    if (!PathEq(output, TC.expect)) {
>>      Failed = true;
>> -      std::cerr << "TEST CASE #" << ID << " FAILED: \n";
>> -      std::cerr << "  Input: '" << TC.input << "'\n";
>> -      std::cerr << "  Expected: '" << TC.expect << "'\n";
>> -      std::cerr << "  Output: '" << output.native() << "'";
>> -      std::cerr << std::endl;
>> +      std::printf("TEST CASE #%d FAILED:\n"
>> +                  "  Input: '%s'\n"
>> +                  "  Expected: '%s'\n"
>> +                  "  Output: '%s'\n",
>> +        ID, TC.input.c_str(), TC.expect.c_str(), output.native().c_str());
>>    }
>>  }
>>  return Failed;
>> 
> 
> This change, and a few other of the hunks in this commit, changed the tests to print to stdout, where they previously printed to stderr. Would you be ok with a patch that changes them back to stderr?
> 
> For the cases where a test fails, llvm-lit currently prints the stdout output above the stderr output, making it more work to find the relevant output of the failing test.

As I alluded to in one of your reviews, I originally used `std::printf` instead of `std::fprintf(stderr` because of platforms who support `printf` without providing a proper stderr. But I agree it makes more sense to print to stderr, and at least for the filesystem tests, we should be good to assume that we have stderr.

Louis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201019/e18509d3/attachment-0001.html>


More information about the libcxx-commits mailing list