blob: 2432a55733c6f186df379a1082522b17ffe8ef71 [file] [log] [blame]
// Copyright (c) 2011, 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.
/**
* A unit test library for running groups of tests in a browser, instead of the
* entire test file. This is especially used for large tests files that have
* many subtests, so we can mark groups as failing at a finer granularity than
* the entire test file.
*
* To use, import this file, and call [useHtmlIndividualConfiguration] at the
* start of your set sequence. Important constraint: your group descriptions
* MUST NOT contain spaces.
*/
library unittest_html_individual_config;
import 'dart:html';
import 'unittest.dart' as unittest;
import 'html_config.dart' as htmlconfig;
class HtmlIndividualConfiguration extends htmlconfig.HtmlConfiguration {
String _noSuchTest = '';
HtmlIndividualConfiguration(isLayoutTest): super(isLayoutTest);
void onStart() {
var search = window.location.search;
if (search != '') {
try {
for (var parameter in search.substring(1).split('&')) {
if (parameter.startsWith('group=')) {
var testGroupName = parameter.split('=')[1];
unittest.filterTests('^$testGroupName${unittest.groupSep}');
}
}
} catch (e) {
print('tried to match "$testGroupName"');
print('NO_SUCH_TEST');
}
}
super.onStart();
}
}
void useHtmlIndividualConfiguration([bool isLayoutTest = false]) {
if (unittest.config != null) return;
unittest.configure(new HtmlIndividualConfiguration(isLayoutTest));
}