Add driver tests for some package resolution corner cases.
diff --git a/test/driver_test.dart b/test/driver_test.dart
index 5558c9f..bd492ba 100644
--- a/test/driver_test.dart
+++ b/test/driver_test.dart
@@ -4,8 +4,11 @@
library analyzer_cli.test.driver;
+import 'dart:io';
+
import 'package:analyzer/plugin/options.dart';
import 'package:analyzer_cli/src/driver.dart';
+import 'package:path/path.dart' as path;
import 'package:plugin/plugin.dart';
import 'package:test/test.dart';
import 'package:yaml/src/yaml_node.dart';
@@ -26,6 +29,63 @@
expect(processor.exception, isNull);
});
});
+
+ group('in temp directory', () {
+ StringSink savedOutSink, savedErrorSink;
+ int savedExitCode;
+ Directory savedCurrentDirectory;
+ Directory tempDir;
+ setUp(() {
+ savedOutSink = outSink;
+ savedErrorSink = errorSink;
+ savedExitCode = exitCode;
+ outSink = new StringBuffer();
+ errorSink = new StringBuffer();
+ savedCurrentDirectory = Directory.current;
+ tempDir = Directory.systemTemp.createTempSync('analyzer_');
+ });
+ tearDown(() {
+ outSink = savedOutSink;
+ errorSink = savedErrorSink;
+ exitCode = savedExitCode;
+ Directory.current = savedCurrentDirectory;
+ tempDir.deleteSync(recursive: true);
+ });
+
+ test('packages folder', () {
+ Directory.current = tempDir;
+ new File(path.join(tempDir.path, 'test.dart')).writeAsStringSync('''
+import 'package:foo/bar.dart';
+main() {
+ baz();
+}
+ ''');
+ Directory packagesDir =
+ new Directory(path.join(tempDir.path, 'packages'));
+ packagesDir.createSync();
+ Directory fooDir = new Directory(path.join(packagesDir.path, 'foo'));
+ fooDir.createSync();
+ new File(path.join(fooDir.path, 'bar.dart')).writeAsStringSync('''
+void baz() {}
+ ''');
+ new Driver().start(['test.dart']);
+ expect(exitCode, 0);
+ });
+
+ test('no package resolution', () {
+ Directory.current = tempDir;
+ new File(path.join(tempDir.path, 'test.dart')).writeAsStringSync('''
+import 'package:path/path.dart';
+main() {}
+ ''');
+ new Driver().start(['test.dart']);
+ expect(exitCode, 3);
+ String stdout = outSink.toString();
+ expect(stdout, contains('[error] Target of URI does not exist'));
+ expect(stdout, contains('1 error found.'));
+ expect(errorSink.toString(), '');
+ });
+ });
});
}