From 8452d21f41d630b6ac173f6ce1139f1eb96a4dcb Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Sat, 1 Oct 2011 15:34:27 +0000 Subject: [PATCH] Updated testit to run on Windows and fresh Windows results by Ruben Van Boxem git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@140950 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/testit | 21 ++- www/results.Windows.html | 306 +++------------------------------------ 2 files changed, 33 insertions(+), 294 deletions(-) diff --git a/test/testit b/test/testit index a68bea77..d30e78c6 100755 --- a/test/testit +++ b/test/testit @@ -18,6 +18,15 @@ then OPTIONS="-std=c++0x -stdlib=libc++" fi +case $TRIPLE in + *-*-mingw* | *-*-cygwin* | *-*-win*) + TEST_EXE=test.exe + ;; + *) + TEST_EXE=a.out + ;; +esac + FAIL=0 PASS=0 UNIMPLEMENTED=0 @@ -31,9 +40,9 @@ function afunc if (ls *.fail.cpp &> /dev/null) then for FILE in $(ls *.fail.cpp); do - if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE &> /dev/null + if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null then - rm ./a.out + rm ./$TEST_EXE echo "$FILE should not compile" let "fail+=1" else @@ -45,16 +54,16 @@ function afunc if (ls *.pass.cpp &> /dev/null) then for FILE in $(ls *.pass.cpp); do - if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE + if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE then - if ./a.out + if ./$TEST_EXE then - rm ./a.out + rm ./$TEST_EXE let "pass+=1" else echo "$FILE failed at run time" let "fail+=1" - rm ./a.out + rm ./$TEST_EXE fi else echo "$FILE failed to compile" diff --git a/www/results.Windows.html b/www/results.Windows.html index fdf18d69..0569abcd 100644 --- a/www/results.Windows.html +++ b/www/results.Windows.html @@ -10,17 +10,18 @@ All failures in the libc++ test suite will be documented here. Last run was with Clang (pre-3.0) and GCC 4.6.2 (prerelease) and mingw-w64 on x86_64-w64-mingw32. +The commands to build and test were (-nodefaultlibs does not work, lots of MinGW related stuff gets left resulting in linker failures): +TRIPLE=x86_64-w64-mingw32 ./buildit +TRIPLE=x86_64-w64-mingw32 HEADER_INCLUDE="-I/home/Ruben/libc++/include" LIBS="-L/home/ruben/libc++/lib -lc++ -lsupc++ -lmsvcr100 -Wl,--allow-multiple-definition" PATH=/home/Ruben/libc++/lib:$PATH ./testit > test.log 2>&1 + Note: Exception catching seems broken in Clang, so any test catching exceptions is currently broken. Result will be compared to GCC's result. Failing tests only on GCC will be ignored: Clang is the standard in this part of the world, and GCC fails on many C++11 constructs in libc++. -Note: GCC has issues always inlining vararg functions: __asprintf_l - Some locale tests may "Need investigating", but I think most problems are +Note: Some locale tests may "Need investigating", but I think most problems are caused by wrong/unportable locale naming in the tests. - Fixing the inlining will wait until refactoring is done, - hopefully the refactoring alone will alleviate the problem. -Note: Thread tests mostly (if not all) failed to compile with GCC. These may - well all/mostly pass but fail due to Clang failing to catch exceptions. +Note: Thread test results are very different from the last run: failures now + pass and passes now fail. These results are not to be trusted. atomics/*: unimplemented. containers/ @@ -44,43 +45,20 @@ containers/ depr/ depr.c.headers/ inttypes_h.pass.cpp: mingw-w64 does not define these for C++. Patch sent. - math_h.pass.cpp: + math_h.pass.cpp: Needs investigation. stdint_h.pass.cpp: mingw-w64 does not define these for C++. Patch sent. uchar_h.pass.cpp: mingw-w64 does not have this header. Patch sent. wchar_h.pass.cpp: Windows does not have swprintf, should use _snwprintf. Suggest #define swprintf as _snwprintf for _WIN32. - depr.str.strstreams/ - depr.istrstream/ - depr.istrstream.cons/ - ccp.pass.cpp: needs investigation. - ccp_size.pass.cpp: idem. - cp.pass.cpp: idem. - cp_size.pass.cpp: idem. - depr.ostrstream/ - depr.ostrstream.cons/ - cp_size_mode.pass.cpp: needs investigation. - default.pass.cpp: idem. - depr.ostrstream.members/ - pcount.pass.cpp: needs investigation. - str.pass.cpp: idem. - depr.strstream/ - depr.strstream.cons/ - cp_size_mode.pass.cpp: needs investigation. - default.pass.cpp: idem. - depr.strstream.oper/ - pcount.pass.cpp: needs investigation. - str.pass.cpp: idem. exception.unexpected/ set.unexpected/ get_unexpected.pass.cpp: Needs investigation. + set_unexpected.pass.cpp: idem. diagnostics/ syserr/ syserr.errcat/ syserr.errcat.objects/ system_category.pass.cpp: Needs investigation. - syserr.errcode/ - syserr.errcode.nonmembers/ - stream_inserter.pass.cpp: Needs investigation. input.output/ file.streams/ c.files/ @@ -139,53 +117,11 @@ input.output/ get_time.pass.cpp: idem. put_money.pass.cpp: idem. put_time.pass.cpp: idem. - input.streams/ - istream/ - istream_sentry/ - ctor.pass.cpp: Needs investigation. - istream.formatted/ - istream.formatted.arithmetic/ - bool.pass.cpp: Needs investigation. - double.pass.cpp: idem. - float.pass.cpp: idem. - int.pass.cpp: idem. - long.pass.cpp: idem. - long_double.pass.cpp: idem. - long_long.pass.cpp: idem. - pointer.pass.cpp: idem. - short.pass.cpp: idem. - unsigned_int.pass.cpp: idem. - unsigned_long.pass.cpp: idem. - unsigned_long_long.pass.cpp: idem. - unsigned_short.pass.cpp: idem. - istream_extractors/ - chart.pass.cpp: Needs investigation. - signed_char.pass.cpp: idem. - signed_char_pointer.pass.cpp: idem. - unsigned_char.pass.cpp: idem. - unsigned_char_pointer.pass.cpp: idem. - wchar_t_pointer.pass.cpp: idem. - istream.manip/ - ws.pass.cpp: Investigation needed. - istream.rvalue/ - rvalue.pass.cpp: Investigation needed. - input.streams/ output.streams/ ostream.formatted/ ostream.inserters.arithmetic/ - bool.pass.cpp: Needs investigation. - double.pass.cpp: idem. - float.pass.cpp: idem. - int.pass.cpp: idem. - long.pass.cpp: idem. - long_double.pass.cpp: idem. - long_long.pass.cpp: idem. + long_double.pass.cpp: Needs investigation. pointer.pass.cpp: idem. - short.pass.cpp: idem. - unsigned_int.pass.cpp: idem. - unsigned_long.pass.cpp: idem. - unsigned_long_long.pass.cpp: idem. - unsigned_short.pass.cpp: idem. ostream_sentry/ destruct.pass.cpp: exception uncaught with Clang, passes for GCC. iostream.objects/ @@ -204,7 +140,7 @@ input.output/ set_rdbuf.pass.cpp: Passes for GCC. swap.pass.cpp: Windows locale names don't follow UNIX convention. iostate.flags/ - clear.pass.cpp: exception uncaught with Clang, passes for GCC. + clear.pass.cpp: exception uncaught with Clang, passes for GCC. exceptions_iostate.pass.cpp:idem. setstate.pass.cpp: idem. ios.base/ @@ -226,63 +162,16 @@ input.output/ streambuf.assign/ assign.pass.cpp: Windows locale names don't follow UNIX convention. swap.pass.cpp: idem. - string.streams/ - istringstream/ - istringstream.assign/ - member_swap.pass.cpp: Needs investigation. - move.pass.cpp: idem. - nonmember_swap.pass.cpp: idem. - istringstream.cons/ - move.pass.cpp: Needs investigation. - string.pass.cpp: idem. - istringstream.members/ - str.pass.cpp: Needs investigation. - ostringstream/ - ostringstream.assign/ - member_swap.pass.cpp: Needs investigation. - move.pass.cpp: idem. - nonmember_swap.pass.cpp: idem. - ostringstream.cons/ - move.pass.cpp: Needs investigation. - string.pass.cpp: idem. - ostringstream.members/ - str.pass.cpp: Needs investigation. - stringstream/ - stringstream.cons/ - move.pass.cpp: Needs investigation. - string.pass.cpp: idem. - stringstream.assign/ - member_swap.pass.cpp: Needs investigation. - move.pass.cpp: idem. - nonmember_swap.pass.cpp: idem. - stringstream.members/ - str.pass.cpp: Needs investigation. iterators/ predef.iterators/ insert.iterators/ insert.iterator/ types.pass.cpp: Clang warns about equality comparison result unused. (line:column 41:20) - stream.iterators/ - istream.iterator.cons/ - copy.pass.cpp: Needs investigation. - istream.pass.cpp: idem. - istream.iterator.ops/ - arrow.pass.cpp: Needs investigation. - dereference.pass.cpp: idem. - equal.pass.cpp: idem. - post_increment.pass.cpp: idem. - pre_increment.pass.cpp: idem. - ostream.iterator/ - ostream.iterator.ops/ - assign_t.pass.cpp: Needs investigation. language.support/ cstdint/ cstdint.pass.cpp: see above. support.dynamic/ - alloc.errors/ - set.new.handler/ - get_new_handler.pass.cpp: Needs investigation. new.delete/ new.delete.array/ new_array.pass.cpp: exception uncaught with Clang, passes for GCC. @@ -291,16 +180,13 @@ language.support/ new.pass.cpp: exception uncaught with Clang, passes for GCC. new_nothrow_replace.pass.cpp: Needs investigation. support.exception/ - except.nested: + except.nested/ assign.pass.cpp: Needs investigation. ctor_copy.pass.cpp: idem. ctor_default.pass.cpp: idem. rethrow_if_nested.pass.cpp: idem. rethrow_nested.pass.cpp: idem. throw_with_nested.pass.cpp: idem. - exception.terminate/ - set.terminate/ - get_terminate.pass.cpp: Needs investigation. propagation/ current_exception.pass.cpp: Needs investigation. exception_ptr.pass.cpp: idem. @@ -320,7 +206,6 @@ language.support/ quick_exit.pass.cpp: Not declared in libc++ headers. Is it from the ABI lib? localization/ locale.categories/ - __scan_keyword.pass.cpp: Needs investigation. category.collate/ locale.collate.byname/ compare.pass.cpp: Windows locale names don't follow UNIX convention. @@ -330,37 +215,15 @@ localization/ types.pass.cpp: Windows locale names don't follow UNIX convention. locale.categories/ category.ctype/ - facet.ctype.special/ - facet.ctype.char.members/ - is_1.pass.cpp: Needs investigation. - is_many.pass.cpp: idem. - scan_is.pass.cpp: idem. - scan_not.pass.cpp: idem. - tolower_1.pass.cpp: idem. - tolower_many.pass.cpp: idem. - toupper_1.pass.cpp: idem. - toupper_many.pass.cpp: idem. - facet.ctype.char.statics/ - classic_table.pass.cpp: Needs investigation. locale.codecvt/ locale.codecvt.members/ - wchar_t_encoding.pass.cpp: Most likely wchar_t is assumed 4 bytes. - wchar_t_in.pass.cpp: idem. + wchar_t_in.pass.cpp: Most likely wchar_t is assumed 4 bytes. wchar_t_length.pass.cpp: idem. wchar_t_out.pass.cpp: idem. wchar_t_unshift.pass.cpp: idem. locale.codecvt.byname/ ctor_wchar_t.pass.cpp: Windows locale names don't follow UNIX convention. locale.ctype/ - locale.ctype.members/ - is_1.pass.cpp: Needs investigation. - is_many.pass.cpp: idem. - scan_is.pass.cpp: idem. - scan_not.pass.cpp: idem. - tolower_1.pass.cpp: idem. - tolower_many.pass.cpp: idem. - toupper_1.pass.cpp: idem. - toupper_many.pass.cpp: idem. locale.ctype.byname/ is_1.pass.cpp: Windows locale names don't follow UNIX convention. is_many.pass.cpp: idem. @@ -403,35 +266,17 @@ localization/ category.numeric/ locale.nm.put/ facet.num.put.members/ - put_bool.pass.cpp: Needs investigating. - put_double.pass.cpp: idem. - put_long.pass.cpp: idem. + put_double.pass.cpp: idem. (different floating point format?) put_long_double.pass.cpp: idem. - put_long_long.pass.cpp: idem. put_pointer.pass.cpp: idem. - put_unsigned_long.pass.cpp: idem. - put_unsigned_long_long.pass.cpp: idem. locale.num.get/ facet.num.get.members/ get_double.pass.cpp: Needs investigating. get_float.pass.cpp: idem. get_long_double.pass.cpp: idem. get_pointer.pass.cpp: idem. - test_min_max.pass.cpp: idem. category.time/ locale.time.get/ - locale.time.get.members/ - get_date.pass.cpp: Needs investigating. - get_date_wide.pass.cpp: idem. - get_many.pass.cpp: idem. - get_monthname.pass.cpp: idem. - get_monthname_wide.pass.cpp: idem. - get_one.pass.cpp: idem. - get_time.pass.cpp: idem. - get_time_wide.pass.cpp: idem. - get_weekday.pass.cpp: idem. - get_weekday_wide.pass.cpp: idem. - get_year.pass.cpp: idem. locale.time.get.byname/ date_order.pass.cpp: Windows locale names don't follow UNIX convention. date_order_wide.pass.cpp: idem. @@ -464,7 +309,6 @@ localization/ codecvt_utf16_out.pass.cpp: idem. codecvt_utf8_in.pass.cpp: idem. codecvt_utf8_out.pass.cpp: idem. - codecvt_utf8_out.pass.cpp: idem. codecvt_utf8_utf16_in.pass: idem. codecvt_utf8_utf16_out.pass.cpp: idem. locales/ @@ -488,18 +332,6 @@ localization/ classic.pass.cpp: Failed constructing from C locale. Needs investigation. global.pass.cpp: Windows locale names don't follow UNIX convention. locale.convenience/ - classification/ - isalnum.pass.cpp: Needs investigation. - isalpha.pass.cpp: idem. - iscntrl.pass.cpp: idem. - isdigit.pass.cpp: idem. - isgraph.pass.cpp: idem. - islower.pass.cpp: idem. - isprint.pass.cpp: idem. - ispunct.pass.cpp: idem. - isspace.pass.cpp: idem. - isupper.pass.cpp: idem. - isxdigit.pass.cpp: idem. conversions/ conversions.buffer/ overflow.pass.cpp: Needs investigation. @@ -507,16 +339,11 @@ localization/ seekoff.pass.cpp: idem. test.pass.cpp: idem. underflow.pass.cpp: idem. - conversions.character/ - tolower.pass.cpp: Needs investigation. - toupper.pass.cpp: idem. conversions.string/ converted.pass.cpp: out of range hex sequence due to 2-byte wchar_t. ctor_err_string.pass.cpp: Passed for GCC, not for Clang... from_bytes.pass.cpp: idem. This test passed while it probably shouldn't!! to_bytes.pass.cpp: idem. - locale.global.templates/ - use_facet.pass.cpp: exception uncaught with Clang, passes for GCC. numerics/ c.math/ cmath.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) @@ -529,8 +356,6 @@ numerics/ complex.ops/ complex_divide_complex.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) scalar_divide_complex.pass.cpp: idem. - stream_input.pass.cpp: Needs investigation. - stream_output.pass.cpp: idem. complex.transcendentals/ acos.pass.cpp: error with Clang, passes for GCC. (uncaught exception? Bad codegen?) acosh.pass.cpp: idem. @@ -553,42 +378,7 @@ numerics/ abs.pass.cpp: error with Clang, passes for GCC. (uncaught exception? Bad codegen?) arg.pass.cpp: idem. polar.pass.cpp: idem. - numarray/ - valarray.nonmembers/ - valarray.transcend/ - acos_valarray.pass.cpp: Needs investigation. - asin_valarray.pass.cpp: idem. - atan2_valarray_valarray.pass.cpp: idem. - atan2_valarray_value.pass.cpp: idem. - atan2_value_valarray.pass.cpp: idem. - atan_valarray.pass.cpp: idem. - cos_valarray.pass.cpp: idem. - cosh_valarray.pass.cpp: idem. - exp_valarray.pass.cpp: idem. - log10_valarray.pass.cpp: idem. - log_valarray.pass.cpp: idem. - pow_valarray_valarray.pass.cpp: idem. - pow_valarray_value.pass.cpp: idem. - pow_value_valarray.pass.cpp: idem. - sin_valarray.pass.cpp: idem. - sinh_valarray.pass.cpp: idem. - sqrt_valarray.pass.cpp: idem. - tan_valarray.pass.cpp: idem. - tanh_valarray.pass.cpp: idem. rand/ - rand.adapt/ - rand.adapt.disc/ - ctor_result_type.pass.cpp: Needs investigation. - ctor_sseq.pass.cpp: idem. - io.pass.cpp: idem. - rand.adapt.ibits/ - ctor_result_type.pass.cpp: Needs investigation. - ctor_sseq.pass.cpp: idem. - io.pass.cpp: idem. - rand.adapt.shuf/ - ctor_result_type.pass.cpp: Needs investigation. - ctor_sseq.pass.cpp: idem. - io.pass.cpp: idem. rand.device/ ctor.pass.cpp: No such thing as /dev/urandom on Windows. Need alternative. entropy.pass.cpp: idem. @@ -635,21 +425,8 @@ numerics/ io.pass.cpp: Needs investigation. (different output double format?) rand.dist.samp.plinear/ io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.samp.int/ - io.pass.cpp: Needs investigation. (different output double format?) - rand.dist.samp.real/ - io.pass.cpp: Needs investigation. (different output double format?) - rand.eng/ - rand.eng.lcong/ - ctor_result_type.pass.cpp: Needs investigation. - io.pass.cpp: Needs investigation. (different output double format?) - rand.eng.mersenne/ - ctor_result_type.pass.cpp: Needs investigation. - ctor_sseq.pass.cpp: idem. - io.pass.cpp: Needs investigation. (different output double format?) - rand.eng.sub/ - ctor_result_type.pass.cpp: Needs investigation. - ctor_sseq.pass.cpp: idem. + rand.dist.uni/ + rand.dist.uni.real/ io.pass.cpp: Needs investigation. (different output double format?) re/ re.alg/ @@ -658,47 +435,12 @@ re/ basic.pass.cpp: idem. ecma.pass.cpp: idem. extended.pass.cpp: idem. - re.alg.replace/ - test1.pass.cpp: Needs investigation - test2.pass.cpp: idem. - test3.pass.cpp: idem. - test4.pass.cpp: idem. - test5.pass.cpp: idem. - test6.pass.cpp: idem. re.alg.search/ awk.pass.cpp: Needs investigation. basic.pass.cpp: idem. ecma.pass.cpp: idem. extended.pass.cpp: idem. - re.iter/ - re.regiter/ - re.regiter.cnstr/ - cnstr.pass.cpp: Needs investigation. - re.regiter.deref/ - deref.pass.cpp: Needs investigation. - re.regiter.inc/ - post.pass.cpp: Needs investigation. - re.tokiter/ - re.tokiter.cnstr/ - array.pass.cpp: Needs investigation. - int.pass.cpp: idem. - vector.pass.cpp: idem. - re.tokiter.comp/ - equal.pass.cpp: Needs investigation. - re.tokiter.deref/ - deref.pass.cpp: Needs investigation. - re.tokiter.incr/ - post.pass.cpp: Needs investigation. re.regex/ - re.regex.construct/ - il_flg.pass.cpp: Passes for Clang, fails with GCC. - iter_iter.pass.cpp: Needs investigation. - iter_iter_flg.pass.cpp: idem. - ptr.pass.cpp: idem. - ptr_flg.pass.cpp: idem. - ptr_size_flg.pass.cpp: idem. - string.pass.cpp: idem. - string_flg.pass.cpp: idem. re.regex.locale/ imbue.pass.cpp: Windows locale names don't follow UNIX convention. re.traits/ @@ -742,9 +484,6 @@ strings/ size_size_size_char.pass.cpp: idem. size_size_string.pass.cpp: idem. size_size_string_size_size.pass.cpp: idem. - string.nonmembers/ - string.io/ - stream_extract.pass.cpp: Needs investigation. string.ops/ string_compare/ size_size_pointer.pass.cpp: error with Clang, passes for GCC. (uncaught exception?) @@ -873,14 +612,8 @@ thread/ call_once: Needs investigation. (uncaught exception?) thread.threads/ thread.thread.class/ - thread.thread.assign/ - move.pass.cpp: Test passed, Assertion failed on Line 42. thread.thread.constr/ F.pass.cpp: Needs investigation. - thread.thread.id/ - stream.pass.cpp: Needs investigation. - thread.thread.member/ - join.pass.cpp: exception uncaught with Clang, passes for GCC. thread.thread.static/ hardware_concurrency.pass.cpp: Needs investigation. (winpthreads problem?) thread.thread.this/ @@ -906,8 +639,6 @@ utilities/ pointer_throw.pass.cpp: idem. unique_ptr.pass.cpp: idem. weak_ptr.pass.cpp: idem. - util.smartptr.shared.io/ - io.pass.cpp: Needs investigation. meta/ meta.rel/ is_convertible.pass.cpp: passed with Clang, failed with GCC. @@ -915,7 +646,8 @@ utilities/ meta.trans.other/ aligned_storage.pass.cpp: Probably due to sizeof(long) != 8. meta.trans.sign/ - make_unsigned.pass.cpp: Probably due to sizeof(wchar_t) != 4. + make_signed.pass.cpp: Probably due to sizeof(wchar_t) != 4. + make_unsigned.pass.cpp: idem. meta.unary/ meta.unary.prop/ is_trivially_assignable.pass.cpp: Needs investigation. @@ -933,8 +665,6 @@ utilities/ set_one.pass.cpp: idem. test.pass.cpp: idem. to_ulong.pass.cpp: Assert fails with Clang, passes with GCC - bitset.operators/ - stream_in.pass.cpp: Needs investigation.