blob: d89deabeb376024c185f720bc1c98188c80eefb0 [file] [log] [blame]
// 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.
import 'dart:io' hide File;
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
/**
* A mixin for test classes that adds a [ResourceProvider] and utility methods
* for manipulating the file system. The utility methods all take a posix style
* path and convert it as appropriate for the actual platform.
*/
class ResourceProviderMixin {
MemoryResourceProvider resourceProvider = new MemoryResourceProvider();
void deleteFile(String path) {
String convertedPath = resourceProvider.convertPath(path);
resourceProvider.deleteFile(convertedPath);
}
void deleteFolder(String path) {
String convertedPath = resourceProvider.convertPath(path);
resourceProvider.deleteFolder(convertedPath);
}
File getFile(String path) {
String convertedPath = resourceProvider.convertPath(path);
return resourceProvider.getFile(convertedPath);
}
Folder getFolder(String path) {
String convertedPath = resourceProvider.convertPath(path);
return resourceProvider.getFolder(convertedPath);
}
void modifyFile(String path, String content) {
String convertedPath = resourceProvider.convertPath(path);
resourceProvider.modifyFile(convertedPath, content);
}
File newFile(String path, {String content = ''}) {
String convertedPath = resourceProvider.convertPath(path);
return resourceProvider.newFile(convertedPath, content);
}
File newFileWithBytes(String path, List<int> bytes) {
String convertedPath = resourceProvider.convertPath(path);
return resourceProvider.newFileWithBytes(convertedPath, bytes);
}
Folder newFolder(String path) {
String convertedPath = resourceProvider.convertPath(path);
return resourceProvider.newFolder(convertedPath);
}
String join(String part1,
[String part2,
String part3,
String part4,
String part5,
String part6,
String part7,
String part8]) =>
resourceProvider.pathContext
.join(part1, part2, part3, part4, part5, part6, part7, part8);
String convertPath(String path) => resourceProvider.convertPath(path);
/// Convert the given [path] to be a valid import uri for this provider's path context.
String convertPathForImport(String path) {
path = resourceProvider.convertPath(path);
// On Windows, absolute import paths are not quite the same as a normal fs path.
// C:\test.dart must be imported as one of:
// import "file:///C:/test.dart"
// import "/C:/test.dart"
if (Platform.isWindows && resourceProvider.pathContext.isAbsolute(path)) {
// The .path on a file Uri is in the form "/C:/test.dart"
path = new Uri.file(path).path;
}
return path;
}
}