| // 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 legacyRootDirs = const [ |
| "corelib_2", |
| "language_2", |
| "lib_2", |
| "standalone_2" |
| ]; |
| |
| /// Maps a legacy test directory to its resulting migrated NNBD test directory. |
| String toNnbdDirectory(String legacyDir) { |
| if (!legacyDir.endsWith("_2")) { |
| throw ArgumentError.value(legacyDir, "legacyDir"); |
| } |
| |
| return legacyDir.replaceAll("_2", ""); |
| } |
| |
| /// Given a path within a legacy directory, returns the corresponding NNBD path. |
| String toNnbdPath(String legacyPath) { |
| for (var dir in legacyRootDirs) { |
| if (legacyPath == dir) return toNnbdDirectory(dir); |
| |
| if (p.isWithin(dir, legacyPath)) { |
| var relative = p.relative(legacyPath, from: dir); |
| return p.join(toNnbdDirectory(dir), relative); |
| } |
| } |
| |
| throw new ArgumentError.value(legacyPath, "legacyPath"); |
| } |