diff --git a/pkg/front_end/test/utils/io_utils.dart b/pkg/front_end/test/utils/io_utils.dart index a68fef8d455..936d83afdbe 100644 --- a/pkg/front_end/test/utils/io_utils.dart +++ b/pkg/front_end/test/utils/io_utils.dart @@ -35,6 +35,20 @@ String computeRepoDir() { if (!new Directory(dirPath).existsSync()) { throw "The path returned by git ($dirPath) does not actually exist."; } + if (dirPath.length > 1 && dirPath[1] == ':') { + // Absolute Windows path. Normalize drive letter to match Uri.base. + if (Uri.base.path.length < 3 || + Uri.base.path[0] != '/' || + Uri.base.path[2] != ':') { + throw "Expected Uri.base=${Uri.base} to be an absolute file path."; + } + bool isLowerCase = Uri.base.path[1] == Uri.base.path[1].toLowerCase(); + if (isLowerCase) { + dirPath = dirPath[0].toLowerCase() + dirPath.substring(1); + } else { + dirPath = dirPath[0].toUpperCase() + dirPath.substring(1); + } + } return dirPath; }