| Index: packages/intl/test/data_directory.dart
|
| diff --git a/packages/intl/test/data_directory.dart b/packages/intl/test/data_directory.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..70aa385cfbb7c3518b1bdcba4be4dd76d3882435
|
| --- /dev/null
|
| +++ b/packages/intl/test/data_directory.dart
|
| @@ -0,0 +1,43 @@
|
| +// Copyright (c) 2012, 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 utility function for test and tools that compensates (at least for very
|
| + * simple cases) for file-dependent programs being run from different
|
| + * directories. The important cases are
|
| + * - running in the directory that contains the test itself, i.e.
|
| + * test/ or a sub-directory.
|
| + * - running in root of this package, which is where the editor and bots will
|
| + * run things by default
|
| + */
|
| +library data_directory;
|
| +
|
| +import "dart:io";
|
| +import "package:path/path.dart" as path;
|
| +
|
| +String get dataDirectory {
|
| + return path.join(intlDirectory, datesRelativeToIntl);
|
| +}
|
| +
|
| +/// Returns whether [dir] is the root of the `intl` package. We validate that it
|
| +/// is by looking for a pubspec file with the entry `name: intl`.
|
| +bool _isIntlRoot(String dir) {
|
| + var file = new File(path.join(dir, 'pubspec.yaml'));
|
| + if (!file.existsSync()) return false;
|
| + return file.readAsStringSync().contains('name: intl\n');
|
| +}
|
| +
|
| +String get intlDirectory {
|
| + var dir = path.fromUri(Platform.script);
|
| + var root = path.rootPrefix(dir);
|
| +
|
| + while (dir != root) {
|
| + if (_isIntlRoot(dir)) return dir;
|
| + dir = path.dirname(dir);
|
| + }
|
| + throw new UnsupportedError(
|
| + 'Cannot find the root directory of the `intl` package.');
|
| +}
|
| +
|
| +String get datesRelativeToIntl => path.join('lib', 'src', 'data', 'dates');
|
|
|