fix unsound cast failures in tests

the "whitelist" option to ignore cast failures is no longer used by most tests (I'm investigating what to do about package:unittest)

R=rnystrom@google.com, vsm@google.com

Review-Url: https://codereview.chromium.org/2989993002 .
This commit is contained in:
Jennifer Messerly 2017-07-31 14:30:34 -07:00
parent 925295d7af
commit bba4b68d51
17 changed files with 89 additions and 115 deletions

View file

@ -26,7 +26,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
// 'fail' - test fails
// 'timeout' - test times out
// 'slow' - use 5s timeout instead of default 2s.
// 'whitelist' - run with whitelisted type errors allowed
//
// Common combinations:
const pass = 'pass';
@ -40,7 +39,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
// These are typically tests with asynchronous exceptions that our
// test framework doesn't always catch.
const flaky = 'skip';
const whitelist = 'whitelist';
// Tests marked with this are still using the deprecated unittest package
// because they rely on its support for futures and asynchronous tests, which
@ -77,8 +75,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'async_star_test_05_multi': async_unittest,
'async_switch_test': fail,
'async_test': whitelist,
'async_this_bound_test': whitelist,
'asyncstar_throw_in_catch_test': ['skip', 'fail'],
'await_future_test': skip_timeout,
'await_for_test': 'slow',
@ -161,7 +157,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'list_literal3_test': fail,
'main_test_03_multi': fail,
'many_generic_instanceof_test': fail,
'many_named_arguments_test': whitelist,
'map_literal10_test': fail,
'map_literal7_test': fail,
'memory_swap_test': skip_timeout,
@ -174,7 +169,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'number_identifier_test_05_multi': fail,
'number_identity2_test': fail,
'numbers_test': fail,
'reg_exp_test': whitelist,
'regress_16640_test': fail,
'regress_22445_test': fail,
'regress_22777_test': flaky,
@ -257,12 +251,9 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'int_parse_with_limited_ints_test': fail,
'integer_to_radix_string_test': fail,
'integer_to_string_test_01_multi': fail,
'iterable_empty_test': whitelist,
'iterable_join_test': whitelist,
'iterable_return_type_test_02_multi': fail,
'json_map_test': fail,
'list_fill_range_test': fail,
'list_insert_all_test': whitelist,
'list_replace_range_test': fail,
'list_set_all_test': fail,
'list_test_01_multi': fail,
@ -272,15 +263,11 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'map_from_iterable_test': is.firefox('<=50') ? fail : pass,
'nan_infinity_test_01_multi': fail,
'null_nosuchmethod_test': fail,
'reg_exp_all_matches_test': whitelist,
'reg_exp_start_end_test': whitelist,
'regress_r21715_test': fail,
'sort_test': whitelist,
'splay_tree_from_iterable_test': is.firefox('<=50') ? fail : pass,
'string_case_test_01_multi': firefox_fail,
'string_fromcharcodes_test': skip_timeout,
'string_operations_with_null_test': fail,
'string_split_test': whitelist,
'string_trimlr_test_01_multi': is.chrome('<=58') ? fail : pass,
'string_trimlr_test_none_multi': is.chrome('<=58') ? fail : pass,
'symbol_operator_test_03_multi': fail,
@ -356,33 +343,23 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'zone_run_unary_test': fail,
},
'lib/collection': {
'linked_list_test': whitelist,
},
'lib/collection': {},
'lib/convert': {
'base64_test_01_multi': 'slow',
'chunked_conversion_utf82_test': whitelist,
'chunked_conversion_utf83_test': whitelist,
'chunked_conversion_utf85_test': ['whitelist', 'slow'],
'chunked_conversion_utf86_test': whitelist,
'chunked_conversion_utf87_test': whitelist,
'chunked_conversion_utf85_test': 'slow',
'encoding_test': skip_timeout,
'json_utf8_chunk_test': skip_timeout,
'latin1_test': skip_timeout,
'streamed_conversion_json_decode1_test': whitelist,
'streamed_conversion_json_encode1_test': skip_timeout,
'streamed_conversion_json_utf8_decode_test': skip_timeout,
'streamed_conversion_json_utf8_encode_test': skip_timeout,
'streamed_conversion_utf8_decode_test': skip_timeout,
'streamed_conversion_utf8_encode_test': skip_timeout,
'utf82_test': whitelist,
'utf85_test': skip_timeout,
'utf8_encode_test': whitelist,
'utf8_test': whitelist,
},
'lib/html': {
@ -519,7 +496,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
'int64_list_load_store_test': fail,
'typed_data_hierarchy_int64_test': fail,
'typed_data_list_test': fail,
'typed_list_iterable_test': whitelist,
},
'lib/mirrors': {
@ -756,9 +732,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
mainLibrary._expectRuntimeError;
let fail = has('fail');
let whitelist = has('whitelist');
dart_sdk.dart.ignoreWhitelistedErrors(whitelist);
function finish(error) {
// If the test left any lingering detritus in the DOM, blow it away
// so it doesn't interfere with later tests.
@ -785,7 +758,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
document.body.innerHTML = '';
console.log("cleared");
if (error && !(error instanceof Error)) error = new Error(error);
dart_sdk.dart.ignoreWhitelistedErrors(false);
done(error);
}

View file

@ -6,10 +6,8 @@ library sort_helper;
import "package:expect/expect.dart";
typedef Sorter
= void Function(List<num>);
typedef Comparer
= int Function(num, num);
typedef Sorter = void Function(List<num>);
typedef Comparer = int Function(num, num);
class SortHelper {
SortHelper(this.sortFunction, this.compareFunction) {}

View file

@ -5,7 +5,7 @@
import "package:expect/expect.dart";
main() {
testEmpty(name, it, [depth = 2]) {
testEmpty(name, Iterable<int> it, [depth = 2]) {
Expect.isTrue(it.isEmpty, name);
Expect.isFalse(it.isNotEmpty, name);
Expect.equals(0, it.length, name);

View file

@ -51,7 +51,7 @@ testCollections() {
var setString = set.join();
Expect.isTrue(perm.contains(setString), "set: $setString");
void testArray(array) {
void testArray(List<int> array) {
testJoin("1,3,5,7,9", array.where((i) => i.isOdd), ",");
testJoin("0,2,4,6,8,10,12,14,16,18", array.map((i) => i * 2), ",");
testJoin("5,6,7,8,9", array.skip(5), ",");
@ -61,7 +61,7 @@ testCollections() {
}
testArray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
var fixedArray = new List(10);
var fixedArray = new List<int>(10);
for (int i = 0; i < 10; i++) {
fixedArray[i] = i;
}

View file

@ -5,7 +5,7 @@
import "package:expect/expect.dart";
import "dart:collection";
test(List list, int index, Iterable iterable) {
test(List<int> list, int index, Iterable<int> iterable) {
List copy = list.toList();
list.insertAll(index, iterable);
List iterableList = iterable.toList();
@ -21,8 +21,8 @@ test(List list, int index, Iterable iterable) {
}
}
class MyList extends ListBase {
List list;
class MyList<T> extends ListBase<T> {
List<T> list;
MyList(this.list);
get length => list.length;
set length(value) {

View file

@ -6,6 +6,9 @@ library sort_helper;
import "package:expect/expect.dart";
typedef Sorter = void Function(List<num>);
typedef Comparer = int Function(num, num);
class SortHelper {
SortHelper(this.sortFunction, this.compareFunction) {}
@ -14,7 +17,7 @@ class SortHelper {
testSortDoubleLists();
}
bool isSorted(List a) {
bool isSorted(List<num> a) {
for (int i = 1; i < a.length; i++) {
if (compareFunction(a[i - 1], a[i]) > 0) {
return false;
@ -115,7 +118,7 @@ class SortHelper {
testInsertionSort(3, 2, 0, 1);
}
void testSort(List a) {
void testSort(List<num> a) {
sortFunction(a);
Expect.isTrue(isSorted(a));
}
@ -147,6 +150,6 @@ class SortHelper {
testSort(a);
}
Function sortFunction;
Function compareFunction;
Sorter sortFunction;
Comparer compareFunction;
}

View file

@ -45,7 +45,7 @@ class B {
}
main() {
var asyncReturn;
Future asyncReturn;
asyncReturn = topLevelFunction();
Expect.isTrue(asyncReturn is Future);
@ -94,7 +94,7 @@ main() {
};
asyncReturn = moreNesting(1, "ignore", 2);
Expect.isTrue(asyncReturn is Future);
asyncReturn.then((int result) => Expect.equals(result, 28));
asyncReturn.then((num result) => Expect.equals(result, 28));
var checkAsync = (var someFunc) {
var toTest = someFunc();

View file

@ -63,7 +63,7 @@ class Fisk {
main() {
var method = new Fisk().method;
var namedArguments = new Map();
var namedArguments = new Map<Symbol, dynamic>();
namedArguments[const Symbol('a')] = 'a';
Expect.stringEquals(
EXPECTED_RESULT, Function.apply(method, [], namedArguments));

View file

@ -124,7 +124,7 @@ testBadAdd() {
}
testConcurrentModificationError() {
test(function(LinkedList ll)) {
test(function(LinkedList<MyEntry> ll)) {
var ll = new LinkedList<MyEntry>();
for (int i = 0; i < 10; i++) {
ll.add(new MyEntry(i));

View file

@ -13,7 +13,7 @@ String decode(List<int> bytes, int chunkSize) {
var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
int i = 0;
while (i < bytes.length) {
List nextChunk = [];
var nextChunk = <int>[];
for (int j = 0; j < chunkSize; j++) {
if (i < bytes.length) {
nextChunk.add(bytes[i]);
@ -33,7 +33,7 @@ String decodeAllowMalformed(List<int> bytes, int chunkSize) {
var byteSink = decoder.startChunkedConversion(stringSink);
int i = 0;
while (i < bytes.length) {
List nextChunk = [];
var nextChunk = <int>[];
for (int j = 0; j < chunkSize; j++) {
if (i < bytes.length) {
nextChunk.add(bytes[i]);
@ -226,37 +226,37 @@ main() {
return [
[test, "\u{FFFD}"],
[
new List.from([0x61])..addAll(test),
new List<int>.from([0x61])..addAll(test),
"a\u{FFFD}"
],
[
new List.from([0x61])
new List<int>.from([0x61])
..addAll(test)
..add(0x61),
"a\u{FFFD}a"
],
[new List.from(test)..add(0x61), "\u{FFFD}a"],
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[
new List.from(test)
new List<int>.from(test)
..add(0x61)
..addAll(test),
"\u{FFFD}a\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test),
new List<int>.from([0xc3, 0xa5])..addAll(test),
"å\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
"å\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5]),
new List<int>.from(test)..addAll([0xc3, 0xa5]),
"\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
"\u{FFFD}å\u{FFFD}"
]
];

View file

@ -15,7 +15,7 @@ String decode(List<int> bytes, int chunkSize) {
var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
int i = 0;
while (i < bytes.length) {
List nextChunk = [];
var nextChunk = <int>[];
for (int j = 0; j < chunkSize; j++) {
if (i < bytes.length) {
nextChunk.add(bytes[i]);
@ -35,7 +35,7 @@ String decodeAllowMalformed(List<int> bytes, int chunkSize) {
var byteSink = decoder.startChunkedConversion(stringSink);
int i = 0;
while (i < bytes.length) {
List nextChunk = [];
var nextChunk = <int>[];
for (int j = 0; j < chunkSize; j++) {
if (i < bytes.length) {
nextChunk.add(bytes[i]);

View file

@ -208,37 +208,37 @@ main() {
return [
[test, "\u{FFFD}"],
[
new List.from([0x61])..addAll(test),
new List<int>.from([0x61])..addAll(test),
"a\u{FFFD}"
],
[
new List.from([0x61])
new List<int>.from([0x61])
..addAll(test)
..add(0x61),
"a\u{FFFD}a"
],
[new List.from(test)..add(0x61), "\u{FFFD}a"],
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[
new List.from(test)
new List<int>.from(test)
..add(0x61)
..addAll(test),
"\u{FFFD}a\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test),
new List<int>.from([0xc3, 0xa5])..addAll(test),
"å\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
"å\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5]),
new List<int>.from(test)..addAll([0xc3, 0xa5]),
"\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
"\u{FFFD}å\u{FFFD}"
]
];

View file

@ -229,37 +229,37 @@ main() {
return [
[test, "\u{FFFD}"],
[
new List.from([0x61])..addAll(test),
new List<int>.from([0x61])..addAll(test),
"a\u{FFFD}"
],
[
new List.from([0x61])
new List<int>.from([0x61])
..addAll(test)
..add(0x61),
"a\u{FFFD}a"
],
[new List.from(test)..add(0x61), "\u{FFFD}a"],
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[
new List.from(test)
new List<int>.from(test)
..add(0x61)
..addAll(test),
"\u{FFFD}a\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test),
new List<int>.from([0xc3, 0xa5])..addAll(test),
"å\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
"å\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5]),
new List<int>.from(test)..addAll([0xc3, 0xa5]),
"\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
"\u{FFFD}å\u{FFFD}"
]
];

View file

@ -83,7 +83,7 @@ bool isJsonEqual(o1, o2) {
Stream<Object> createStream(List<String> chunks) {
var decoder = new JsonDecoder(null);
var controller;
controller = new StreamController(onListen: () {
controller = new StreamController<String>(onListen: () {
chunks.forEach(controller.add);
controller.close();
});

View file

@ -205,7 +205,7 @@ const BIGGEST_4_UTF8_UNIT_BYTES = const [0xF4, 0x8F, 0xBF, 0xBF];
const BIGGEST_4_UTF8_UNIT_STRING = "\u{10FFFF}";
const _TEST_PAIRS = const [
const [const [], ""],
const [const <int>[], ""],
const [INTER_BYTES, INTER_STRING],
const [BLUEBERRY_BYTES, BLUEBERRY_STRING],
const [SIVA_BYTES1, SIVA_STRING1],
@ -224,12 +224,12 @@ const _TEST_PAIRS = const [
List<List> _expandTestPairs() {
assert(2 == BEE_STRING.length);
var tests = [];
var tests = <List>[];
tests.addAll(_TEST_PAIRS);
tests.addAll(_TEST_PAIRS.map((test) {
var bytes = test[0];
var string = test[1];
var longBytes = [];
var longBytes = <int>[];
var longString = "";
for (int i = 0; i < 100; i++) {
longBytes.addAll(bytes);

View file

@ -213,37 +213,37 @@ main() {
return [
[test, "\u{FFFD}"],
[
new List.from([0x61])..addAll(test),
new List<int>.from([0x61])..addAll(test),
"a\u{FFFD}"
],
[
new List.from([0x61])
new List<int>.from([0x61])
..addAll(test)
..add(0x61),
"a\u{FFFD}a"
],
[new List.from(test)..add(0x61), "\u{FFFD}a"],
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
[
new List.from(test)
new List<int>.from(test)
..add(0x61)
..addAll(test),
"\u{FFFD}a\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test),
new List<int>.from([0xc3, 0xa5])..addAll(test),
"å\u{FFFD}"
],
[
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
"å\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5]),
new List<int>.from(test)..addAll([0xc3, 0xa5]),
"\u{FFFD}å"
],
[
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
"\u{FFFD}å\u{FFFD}"
]
];

View file

@ -5,7 +5,8 @@
import 'dart:typed_data';
import 'package:expect/expect.dart';
void testIterableFunctions(list, first, last) {
void testIterableFunctions<T extends num>(
List<T> list, T first, T last, T zero) {
assert(list.length > 0);
Expect.equals(first, list.first);
@ -75,8 +76,8 @@ void testIterableFunctions(list, first, last) {
Expect.equals(list.length, whereCount);
if (list.length > 1) {
int reduceResult = 1;
Expect.equals(list.length, list.reduce((x, y) => ++reduceResult));
var reduceResult = zero + 1;
Expect.equals(list.length, list.reduce((x, y) => ++reduceResult as T));
} else {
Expect.equals(first, list.reduce((x, y) {
throw "should not be called";
@ -99,7 +100,7 @@ void testIterableFunctions(list, first, last) {
Expect.throws(() => l3.add(last), (e) => e is UnsupportedError);
}
void emptyChecks(list) {
void emptyChecks<T extends num>(List<T> list, T zero) {
assert(list.length == 0);
Expect.isTrue(list.isEmpty);
@ -158,28 +159,28 @@ void emptyChecks(list) {
Expect.isTrue(list.takeWhile((x) => true).isEmpty);
Expect.isTrue(list.toList().isEmpty);
var l2 = list.toList();
l2.add(0);
Expect.equals(0, l2.last);
l2.add(zero);
Expect.equals(zero, l2.last);
var l3 = list.toList(growable: false);
Expect.throws(() => l3.add(0), (e) => e is UnsupportedError);
Expect.throws(() => l3.add(zero), (e) => e is UnsupportedError);
}
main() {
testIterableFunctions(new Float32List.fromList([1.5, 9.5]), 1.5, 9.5);
testIterableFunctions(new Float64List.fromList([1.5, 9.5]), 1.5, 9.5);
testIterableFunctions(new Int8List.fromList([3, 9]), 3, 9);
testIterableFunctions(new Int16List.fromList([3, 9]), 3, 9);
testIterableFunctions(new Int32List.fromList([3, 9]), 3, 9);
testIterableFunctions(new Uint8List.fromList([3, 9]), 3, 9);
testIterableFunctions(new Uint16List.fromList([3, 9]), 3, 9);
testIterableFunctions(new Uint32List.fromList([3, 9]), 3, 9);
testIterableFunctions(new Float32List.fromList([1.5, 9.5]), 1.5, 9.5, 0.0);
testIterableFunctions(new Float64List.fromList([1.5, 9.5]), 1.5, 9.5, 0.0);
testIterableFunctions(new Int8List.fromList([3, 9]), 3, 9, 0);
testIterableFunctions(new Int16List.fromList([3, 9]), 3, 9, 0);
testIterableFunctions(new Int32List.fromList([3, 9]), 3, 9, 0);
testIterableFunctions(new Uint8List.fromList([3, 9]), 3, 9, 0);
testIterableFunctions(new Uint16List.fromList([3, 9]), 3, 9, 0);
testIterableFunctions(new Uint32List.fromList([3, 9]), 3, 9, 0);
emptyChecks(new Float32List(0));
emptyChecks(new Float64List(0));
emptyChecks(new Int8List(0));
emptyChecks(new Int16List(0));
emptyChecks(new Int32List(0));
emptyChecks(new Uint8List(0));
emptyChecks(new Uint16List(0));
emptyChecks(new Uint32List(0));
emptyChecks(new Float32List(0), 0.0);
emptyChecks(new Float64List(0), 0.0);
emptyChecks(new Int8List(0), 0);
emptyChecks(new Int16List(0), 0);
emptyChecks(new Int32List(0), 0);
emptyChecks(new Uint8List(0), 0);
emptyChecks(new Uint16List(0), 0);
emptyChecks(new Uint32List(0), 0);
}