| Index: lib/src/runner/version.dart
|
| diff --git a/lib/src/runner/version.dart b/lib/src/runner/version.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..261764b664cb6fb4648600200c297dde971e2747
|
| --- /dev/null
|
| +++ b/lib/src/runner/version.dart
|
| @@ -0,0 +1,61 @@
|
| +// Copyright (c) 2015, 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.
|
| +
|
| +import 'dart:io';
|
| +
|
| +import 'package:yaml/yaml.dart';
|
| +
|
| +/// The version number of the test runner, or `null` if it couldn't be loaded.
|
| +///
|
| +/// This is a semantic version, optionally followed by a space and additional
|
| +/// data about its source.
|
| +final String testVersion = (() {
|
| + var lockfile;
|
| + try {
|
| + lockfile = loadYaml(new File("pubspec.lock").readAsStringSync());
|
| + } on FormatException catch (_) {
|
| + return null;
|
| + } on IOException catch (_) {
|
| + return null;
|
| + }
|
| +
|
| + if (lockfile is! Map) return null;
|
| + var packages = lockfile["packages"];
|
| + if (packages is! Map) return null;
|
| + var package = packages["test"];
|
| + if (package is! Map) return null;
|
| +
|
| + var source = package["source"];
|
| + if (source is! String) return null;
|
| +
|
| + switch (source) {
|
| + case "hosted":
|
| + var version = package["version"];
|
| + if (version is! String) return null;
|
| +
|
| + return version;
|
| +
|
| + case "git":
|
| + var version = package["version"];
|
| + if (version is! String) return null;
|
| + var description = package["description"];
|
| + if (description is! Map) return null;
|
| + var ref = description["resolved-ref"];
|
| + if (ref is! String) return null;
|
| +
|
| + return "$version (${ref.substring(0, 7)})";
|
| +
|
| + case "path":
|
| + var version = package["version"];
|
| + if (version is! String) return null;
|
| + var description = package["description"];
|
| + if (description is! Map) return null;
|
| + var path = description["path"];
|
| + if (path is! String) return null;
|
| +
|
| + return "$version (from $path)";
|
| +
|
| + default: return null;
|
| + }
|
| +})();
|
|
|