blob: e37cf7298a6b39378993ab5b39883ec086f7db65 [file] [log] [blame]
// 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.
/**
* A simple unit test library for running tests on the VM.
*/
library unittest_vm_config;
import 'dart:async';
import 'dart:io';
import 'unittest.dart';
class VMConfiguration extends SimpleConfiguration {
// Color constants used for generating messages.
final String GREEN_COLOR = '\u001b[32m';
final String RED_COLOR = '\u001b[31m';
final String MAGENTA_COLOR = '\u001b[35m';
final String NO_COLOR = '\u001b[0m';
// We make this public so the user can turn it off if they want.
bool useColor;
VMConfiguration()
: super(),
useColor = stdioType(stdout) == StdioType.TERMINAL;
String formatResult(TestCase testCase) {
String result = super.formatResult(testCase);
if (useColor) {
if (testCase.result == PASS) {
return "${GREEN_COLOR}${result}${NO_COLOR}";
} else if (testCase.result == FAIL) {
return "${RED_COLOR}${result}${NO_COLOR}";
} else if (testCase.result == ERROR) {
return "${MAGENTA_COLOR}${result}${NO_COLOR}";
}
}
return result;
}
void onInit() {
super.onInit();
filterStacks = formatStacks = true;
}
void onDone(bool success) {
int status;
try {
super.onDone(success);
status = 0;
} catch (ex) {
// A non-zero exit code is used by the test infrastructure to detect
// failure.
status = 1;
}
Future.wait([stdout.close(), stderr.close()]).then((_) {
exit(status);
});
}
}
void useVMConfiguration() {
unittestConfiguration = _singleton;
}
final _singleton = new VMConfiguration();