Updated testit to run on Windows and fresh Windows results by Ruben Van Boxem

llvm-svn: 140950
This commit is contained in:
Howard Hinnant 2011-10-01 15:34:27 +00:00
parent d072b73d78
commit 20dde1e8fb
2 changed files with 33 additions and 294 deletions

View File

@ -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"

View File

@ -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 <locale> 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.
</pre>
</body>
</html>