blob: 355a0e918317fe3a73e4a18b922a2c76c591883d [file] [log] [blame]
// Copyright (c) 2014, 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.=> defineTests();
/// This tests the benchmarks in benchmark/benchmark.test, and ensures that our
/// benchmarks can run.
import 'dart:convert';
import 'dart:io';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
void main() => defineTests();
String get _serverSourcePath {
String script = Platform.script.toFilePath(windows: Platform.isWindows);
String pkgPath = path.normalize(path.join(path.dirname(script), '..', '..'));
return path.join(pkgPath, 'analysis_server');
}
void defineTests() {
group('benchmarks', () {
final List<String> benchmarks = _listBenchmarks();
test('can list', () {
expect(benchmarks, isNotEmpty);
});
for (String benchmarkId in benchmarks) {
if (benchmarkId == 'analysis-flutter-analyze') {
continue;
}
test(benchmarkId, () {
ProcessResult r = Process.runSync(
Platform.resolvedExecutable,
[
path.join('benchmark', 'benchmarks.dart'),
'run',
'--repeat=1',
'--quick',
benchmarkId
],
workingDirectory: _serverSourcePath,
);
expect(r.exitCode, 0,
reason: 'exit: ${r.exitCode}\n${r.stdout}\n${r.stderr}');
});
// TODO(scheglov): Restore similar test coverage when the front-end API
// allows it. See https://github.com/dart-lang/sdk/issues/33520.
// test('$benchmarkId-use-cfe', () {
// ProcessResult r = Process.runSync(
// Platform.resolvedExecutable,
// [
// path.join('benchmark', 'benchmarks.dart'),
// 'run',
// '--repeat=1',
// '--quick',
// '--use-cfe',
// benchmarkId
// ],
// workingDirectory: _serverSourcePath,
// );
// expect(r.exitCode, 0,
// reason: 'exit: ${r.exitCode}\n${r.stdout}\n${r.stderr}');
// });
}
});
}
List<String> _listBenchmarks() {
ProcessResult result = Process.runSync(
Platform.resolvedExecutable,
[path.join('benchmark', 'benchmarks.dart'), 'list', '--machine'],
workingDirectory: _serverSourcePath,
);
Map m = json.decode(result.stdout);
List benchmarks = m['benchmarks'];
return benchmarks.map((b) => b['id']).cast<String>().toList();
}