Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: tools/migration/lib/src/test_directories.dart

Issue 2989033002: Migrate status file entries when migrating files. Yay! (Closed)
Patch Set: Remove old TODO. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/migration/lib/src/migrate_statuses.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/migration/lib/src/test_directories.dart
diff --git a/tools/migration/lib/src/test_directories.dart b/tools/migration/lib/src/test_directories.dart
new file mode 100644
index 0000000000000000000000000000000000000000..40f311d9380f41668e1b3515a2b9a76f101e8f2c
--- /dev/null
+++ b/tools/migration/lib/src/test_directories.dart
@@ -0,0 +1,103 @@
+// Copyright (c) 2017, 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.
+
+/// Manages the directories where tests can appear and the relationships
+/// between them.
+
+import 'package:path/path.dart' as p;
+
+const oneRootDirs = const [
+ "corelib",
+ "html",
+ "isolate",
+ "language",
+ "lib",
+];
+
+const strongRootDirs = const [
+ "corelib_strong",
+ "language_strong",
+ "lib_strong",
+];
+
+const twoRootDirs = const [
+ "corelib_2",
+ "language_2",
+ "lib_2",
+];
+
+final fromRootDirs = oneRootDirs.toList()..addAll(strongRootDirs);
+
+// Note: The order is significant. "html" and "isolate" need to come first so
+// that they don't get handled by the general "lib" directory.
+final _directories = [
+ new _Directory("corelib", "corelib_strong", "corelib_2"),
+ new _Directory("html", p.join("lib_strong", "html"), p.join("lib_2", "html")),
+ new _Directory(
+ "isolate", p.join("lib_strong", "isolate"), p.join("lib_2", "isolate")),
+ new _Directory("language", "language_strong", "language_2"),
+ new _Directory("lib", "lib_strong", "lib_2"),
+];
+
+/// Maps a Dart 1.0 or DDC root directory to its resulting migration Dart 2.0
+/// directory.
+String toTwoDirectory(String fromDir) {
+ for (var dir in _directories) {
+ if (dir.one == fromDir || dir.strong == fromDir) return dir.two;
+ }
+
+ throw new ArgumentError.value(fromDir, "fromDir");
+}
+
+/// Given a path within a Dart 1.0 or strong mode directory, returns the
+/// corresponding Dart 2.0 path.
+String toTwoPath(String fromPath) {
+ for (var dir in _directories) {
+ if (p.isWithin(dir.one, fromPath)) {
+ var relative = p.relative(fromPath, from: dir.one);
+ return p.join(dir.two, relative);
+ }
+
+ if (p.isWithin(dir.strong, fromPath)) {
+ var relative = p.relative(fromPath, from: dir.strong);
+ return p.join(dir.two, relative);
+ }
+ }
+
+ throw new ArgumentError.value(fromPath, "fromPath");
+}
+
+/// Given a path within a Dart 2.0 directory, returns the corresponding Dart 1.0
+/// path.
+String toOnePath(String twoPath) {
+ for (var dir in _directories) {
+ if (p.isWithin(dir.two, twoPath)) {
+ var relative = p.relative(twoPath, from: dir.two);
+ return p.join(dir.one, relative);
+ }
+ }
+
+ throw new ArgumentError.value(twoPath, "twoPath");
+}
+
+/// Given a path within a Dart 2.0 directory, returns the corresponding DDC
+/// strong mode.
+String toStrongPath(String twoPath) {
+ for (var dir in _directories) {
+ if (p.isWithin(dir.two, twoPath)) {
+ var relative = p.relative(twoPath, from: dir.two);
+ return p.join(dir.strong, relative);
+ }
+ }
+
+ throw new ArgumentError.value(twoPath, "twoPath");
+}
+
+class _Directory {
+ final String one;
+ final String strong;
+ final String two;
+
+ _Directory(this.one, this.strong, this.two);
+}
« no previous file with comments | « tools/migration/lib/src/migrate_statuses.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698