| Index: utils/tests/testrunner/testrunner_test.dart
|
| diff --git a/utils/tests/testrunner/testrunner_test.dart b/utils/tests/testrunner/testrunner_test.dart
|
| deleted file mode 100755
|
| index 795532226055da1d0278c86ba4f84946ed194174..0000000000000000000000000000000000000000
|
| --- a/utils/tests/testrunner/testrunner_test.dart
|
| +++ /dev/null
|
| @@ -1,574 +0,0 @@
|
| -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -library testrunner_test;
|
| -
|
| -import 'dart:async';
|
| -import 'dart:io';
|
| -import 'package:unittest/unittest.dart';
|
| -
|
| -var dart;
|
| -var debug = false;
|
| -
|
| -Future runTestrunner(
|
| - command, List<String> args, List<String> stdout, List<String> stderr) {
|
| - if (debug) {
|
| - print("Running $command ${args.join(' ')}");
|
| - }
|
| - return Process.run(command, args).then((ProcessResult result) {
|
| - var lineEndings = new RegExp("\r\n|\n");
|
| - stdout.addAll(result.stdout.trim().split(lineEndings));
|
| - stderr.addAll(result.stderr.trim().split(lineEndings));
|
| - }).catchError((e) {
|
| - stderr.add("Error starting process:");
|
| - stderr.add(" Command: $command");
|
| - stderr.add(" Error: ${e}");
|
| - completer.complete(-1);
|
| - });
|
| -}
|
| -
|
| -// Useful utility for debugging test failures.
|
| -void dump(label, list) {
|
| - if (!debug) return;
|
| - print('\n@=[ $label ]=============================\n');
|
| - for (var i = 0; i < list.length; i++) {
|
| - print('@ ${list[i]}\n');
|
| - }
|
| - print('------------------------------------------\n');
|
| -}
|
| -
|
| -int stringCompare(String s1, String s2) => s1.compareTo(s2);
|
| -
|
| -Future runTest(List<String> args, List<String> expected_stdout,
|
| - {List<String> expected_stderr, sort: false}) {
|
| - var stdout = new List<String>();
|
| - var stderr = new List<String>();
|
| - for (var i = 0; i < expected_stdout.length; i++) {
|
| - expected_stdout[i] =
|
| - expected_stdout[i].replaceAll('/', Platform.pathSeparator);
|
| - }
|
| - if (debug) {
|
| - args.insert(1, "--log=stderr");
|
| - }
|
| - var rtn = runTestrunner(dart, args, stdout, stderr);
|
| - rtn.then((_) {
|
| - dump('stderr', stderr);
|
| - dump('stdout', stdout);
|
| -
|
| - if (expected_stderr != null) {
|
| - expect(stderr.length, orderedEquals(expected_stderr));
|
| - }
|
| - var i, l = 0, matched = 0;
|
| - if (sort) {
|
| - stdout.sort(stringCompare);
|
| - expected_stdout.sort(stringCompare);
|
| - }
|
| - for (i = 0; i < stdout.length; i++) {
|
| - if (!stdout[i].startsWith('@')) {
|
| - if (expected_stdout.length <= l) {
|
| - fail("Extra text in output: ${stdout[i]}");
|
| - return;
|
| - }
|
| - var actual = stdout[i].trim();
|
| - if (debug) {
|
| - print("Compare <$actual> and <${expected_stdout[l]}>");
|
| - }
|
| - if (expected_stdout[l].startsWith('*')) {
|
| - expect(actual, endsWith(expected_stdout[l].substring(1)));
|
| - } else if (expected_stdout[l].startsWith('?')) {
|
| - var pat = expected_stdout[l].substring(1);
|
| - if (Platform.operatingSystem == 'windows') {
|
| - // The joys of Windows...
|
| - pat = pat.replaceAll('\\', '\\\\');
|
| - }
|
| - expect(actual, matches(pat));
|
| - } else {
|
| - expect(actual, expected_stdout[l]);
|
| - }
|
| - ++l;
|
| - }
|
| - }
|
| - if (l < expected_stdout.length) {
|
| - fail("Only matched $l of ${expected_stdout.length} lines");
|
| - }
|
| - });
|
| - return rtn;
|
| -}
|
| -
|
| -// A useful function to quickly disable a group of tests; just
|
| -// replace group() with skip_group().
|
| -skip_group(_1, _2) {}
|
| -
|
| -main() {
|
| - dart = Platform.executable;
|
| - var idx = dart.indexOf('dart-sdk');
|
| - if (idx < 0) {
|
| - print("Please run using the dart executable from the Dart SDK");
|
| - exit(-1);
|
| - }
|
| - var _ = Platform.pathSeparator;
|
| - var testrunner = '../../testrunner/testrunner.dart'
|
| - .replaceAll('/', Platform.pathSeparator);
|
| -
|
| - group("list tests", () {
|
| - test('list file', () {
|
| - return runTest([testrunner, '--list-files', 'non_browser_tests'],
|
| - ['?.*/non_browser_tests/non_browser_test.dart']);
|
| - });
|
| - test('list files', () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--sort',
|
| - '--list-files',
|
| - '--test-file-pattern=.dart\$'
|
| - ], [
|
| - '*browser_tests/web/browser_test.dart',
|
| - '*http_client_tests/http_client_test.dart',
|
| - '*layout_tests/web/layout_test.dart',
|
| - '*non_browser_tests/non_browser_test.dart',
|
| - '*non_browser_tests/non_browser_toast.dart',
|
| - '*/testrunner_test.dart'
|
| - ]);
|
| - });
|
| - test('list files', () {
|
| - return runTest([
|
| - testrunner,
|
| - '--list-files',
|
| - '--test-file-pattern=.dart\$',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '*non_browser_tests/non_browser_test.dart',
|
| - '*non_browser_tests/non_browser_toast.dart'
|
| - ], sort: true);
|
| - });
|
| - test('list groups', () {
|
| - return runTest([
|
| - testrunner,
|
| - '--list-groups',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '*non_browser_tests/non_browser_test.dart group1',
|
| - '*non_browser_tests/non_browser_test.dart group2'
|
| - ]);
|
| - });
|
| - test('list tests', () {
|
| - return runTest([
|
| - testrunner,
|
| - '--list-tests',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '*non_browser_tests/non_browser_test.dart group1 test1',
|
| - '*non_browser_tests/non_browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - group("vm", () {
|
| - test("vm without timing info", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1'
|
| - ' Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| -
|
| - test("vm with timing info", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--time',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL [0-9.]+s .*/non_browser_tests/non_browser_test.dart group1'
|
| - ' test1 Expected: false',
|
| - '?PASS [0-9.]+s .*/non_browser_tests/non_browser_test.dart group2'
|
| - ' test2'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - group("selection", () {
|
| - test("--include", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--include=group1',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1 '
|
| - 'Expected: false'
|
| - ]);
|
| - });
|
| -
|
| - test("--exclude", () {
|
| - return runTest(
|
| - [testrunner, '--recurse', '--exclude=group1', 'non_browser_tests'],
|
| - ['?PASS .*/non_browser_tests/non_browser_test.dart group2 test2']);
|
| - });
|
| -
|
| - test("test file pattern", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--test-file-pattern=toast',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?PASS .*/non_browser_tests/non_browser_toast.dart foo bar'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - group("stop on failure tests", () {
|
| - test("without stop", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--sort',
|
| - '--tasks=1',
|
| - '--test-file-pattern=.dart\$',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2',
|
| - '?PASS .*/non_browser_tests/non_browser_toast.dart foo bar'
|
| - ]);
|
| - });
|
| - test("with stop", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--sort',
|
| - '--tasks=1',
|
| - '--test-file-pattern=.dart\$',
|
| - '--stop-on-failure',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - group("output control", () {
|
| - test("summary test", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--summary',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2',
|
| - '',
|
| - '?.*/non_browser_tests/non_browser_test.dart: '
|
| - '1 PASSED, 1 FAILED, 0 ERRORS'
|
| - ]);
|
| - });
|
| -
|
| - test('list tests with custom format', () {
|
| - return runTest([
|
| - testrunner,
|
| - '--list-tests',
|
| - '--list-format="<FILENAME><TESTNAME>"',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?.*/non_browser_tests/non_browser_test.dart test1',
|
| - '?.*/non_browser_tests/non_browser_test.dart test2'
|
| - ]);
|
| - });
|
| -
|
| - test("custom message formatting", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--pass-format=YIPPEE! <GROUPNAME><TESTNAME>',
|
| - '--fail-format=EPIC FAIL! <GROUPNAME><TESTNAME>',
|
| - 'non_browser_tests'
|
| - ], [
|
| - 'EPIC FAIL! group1 test1',
|
| - 'YIPPEE! group2 test2'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - test("checked mode test", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--checked',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - "?FAIL .*/non_browser_tests/non_browser_test.dart group2 test2 "
|
| - "Caught type 'int' is not a subtype of type 'bool' of 'x'."
|
| - ]);
|
| - });
|
| -
|
| - group("browser", () {
|
| - test("native test", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--runtime=drt-dart',
|
| - 'browser_tests'
|
| - ], [
|
| - '?FAIL .*/browser_tests/web/browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - '?PASS .*/browser_tests/web/browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| -
|
| - test("compiled test", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--runtime=drt-js',
|
| - 'browser_tests'
|
| - ], [
|
| - '?FAIL .*/browser_tests/web/browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - '?PASS .*/browser_tests/web/browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - group("textual layout tests", () {
|
| - group("drt-dart", () {
|
| - test("no baseline", () {
|
| - var f = new File("layout_tests/web/layout_test/layout.txt");
|
| - if (f.existsSync()) {
|
| - f.deleteSync();
|
| - }
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--layout-text',
|
| - 'layout_tests'
|
| - ], [
|
| - '?FAIL .*/layout_tests/web/layout_test.dart layout '
|
| - 'No expectation file'
|
| - ]);
|
| - });
|
| - test("create baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--layout-text',
|
| - '--regenerate',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - test("test baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--layout-text',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - });
|
| - group("drt-js", () {
|
| - test("no baseline", () {
|
| - var f = new File("layout_tests/web/layout_test/layout.txt");
|
| - if (f.existsSync()) {
|
| - f.deleteSync();
|
| - }
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--layout-text',
|
| - 'layout_tests'
|
| - ], [
|
| - '?FAIL .*/layout_tests/web/layout_test.dart layout '
|
| - 'No expectation file'
|
| - ]);
|
| - });
|
| - test("create baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--layout-text',
|
| - '--regenerate',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - test("test baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--layout-text',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - });
|
| - });
|
| -
|
| - group("pixel layout tests", () {
|
| - group("drt-dart", () {
|
| - test("no baseline", () {
|
| - var f = new File("layout_tests/web/layout_test/layout.png");
|
| - if (f.existsSync()) {
|
| - f.deleteSync();
|
| - }
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--layout-pixel',
|
| - 'layout_tests'
|
| - ], [
|
| - '?FAIL .*/layout_tests/web/layout_test.dart layout '
|
| - 'No expectation file'
|
| - ]);
|
| - });
|
| - test("create baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--layout-pixel',
|
| - '--regenerate',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - test("test baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--layout-pixel',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - // TODO(gram): Should add a test that changes a byte of the
|
| - // expectation .png.
|
| - });
|
| - group("drt-js", () {
|
| - test("no baseline", () {
|
| - var f = new File("layout_tests/web/layout_test/layout.png");
|
| - if (f.existsSync()) {
|
| - f.deleteSync();
|
| - }
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--layout-pixel',
|
| - 'layout_tests'
|
| - ], [
|
| - '?FAIL .*/layout_tests/web/layout_test.dart layout '
|
| - 'No expectation file'
|
| - ]);
|
| - });
|
| - test("create baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--layout-pixel',
|
| - '--regenerate',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - test("test baseline", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--layout-pixel',
|
| - 'layout_tests'
|
| - ], [
|
| - '?PASS .*/layout_tests/web/layout_test.dart layout'
|
| - ]);
|
| - });
|
| - });
|
| - });
|
| -
|
| - group("run in isolate", () {
|
| - test("vm", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=vm',
|
| - '--recurse',
|
| - '--isolate',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1'
|
| - ' Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| - test("drt-dart", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-dart',
|
| - '--recurse',
|
| - '--isolate',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1'
|
| - ' Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| - test("drt-js", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--runtime=drt-js',
|
| - '--recurse',
|
| - '--isolate',
|
| - 'non_browser_tests'
|
| - ], [
|
| - '?FAIL .*/non_browser_tests/non_browser_test.dart group1 test1 '
|
| - 'Expected: false',
|
| - '?PASS .*/non_browser_tests/non_browser_test.dart group2 test2'
|
| - ]);
|
| - });
|
| - });
|
| -
|
| - group("embedded server", () {
|
| - test("get test", () {
|
| - return runTest([
|
| - testrunner,
|
| - '--recurse',
|
| - '--server',
|
| - '--port=3456',
|
| - '--root=${Directory.current.path}',
|
| - 'http_client_tests'
|
| - ], [
|
| - '?PASS .*/http_client_tests/http_client_test.dart test1',
|
| - '?PASS .*/http_client_tests/http_client_test.dart test2'
|
| - ]);
|
| - });
|
| - });
|
| -}
|
|
|