Index: test/codegen_test.dart |
diff --git a/test/codegen_test.dart b/test/codegen_test.dart |
index e72dd09405582e107194fe3d2ba7a00960fbcc7e..efb8fd32ad06d16077be611ef1af8e9670518dcc 100644 |
--- a/test/codegen_test.dart |
+++ b/test/codegen_test.dart |
@@ -8,8 +8,8 @@ |
library dev_compiler.test.codegen_test; |
import 'dart:io'; |
-import 'package:cli_util/cli_util.dart' show getSdkDir; |
-import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine, Logger; |
+import 'package:analyzer/src/generated/engine.dart' |
+ show AnalysisContext, AnalysisEngine, Logger; |
import 'package:analyzer/src/generated/java_engine.dart' show CaughtException; |
import 'package:args/args.dart'; |
import 'package:logging/logging.dart' show Level; |
@@ -17,14 +17,11 @@ import 'package:path/path.dart' as path; |
import 'package:test/test.dart'; |
import 'package:dev_compiler/devc.dart'; |
+import 'package:dev_compiler/strong_mode.dart'; |
+import 'package:dev_compiler/src/compiler.dart' show defaultRuntimeFiles; |
import 'package:dev_compiler/src/options.dart'; |
-import 'package:dev_compiler/src/dependency_graph.dart' |
- show defaultRuntimeFiles; |
-import 'package:dev_compiler/src/utils.dart' |
- show computeHash, computeHashFromFile; |
-import 'package:html/parser.dart' as html; |
-import 'test_util.dart' show testDirectory; |
+import 'testing.dart' show realSdkContext, testDirectory; |
final ArgParser argParser = new ArgParser() |
..addOption('dart-sdk', help: 'Dart SDK Path', defaultsTo: null); |
@@ -56,14 +53,12 @@ main(arguments) { |
.map((f) => f.path) |
.where((p) => p.endsWith('.dart') && filePattern.hasMatch(p)); |
- compile(String entryPoint, String sdkPath, {bool checkSdk: false, |
- bool serverMode: false, bool sourceMaps: false, String subDir}) { |
+ bool compile(String entryPoint, AnalysisContext context, |
+ {bool checkSdk: false, bool sourceMaps: false, String subDir}) { |
// TODO(jmesserly): add a way to specify flags in the test file, so |
// they're more self-contained. |
var runtimeDir = path.join(path.dirname(testDirectory), 'lib', 'runtime'); |
var options = new CompilerOptions( |
- sourceOptions: new SourceResolverOptions( |
- entryPointFile: entryPoint, dartSdkPath: sdkPath), |
codegenOptions: new CodegenOptions( |
outputDir: subDir == null |
? expectDir |
@@ -73,11 +68,10 @@ main(arguments) { |
useColors: false, |
checkSdk: checkSdk, |
runtimeDir: runtimeDir, |
- serverMode: serverMode, |
- enableHashing: serverMode); |
- return new Compiler(options).run(); |
+ inputs: [entryPoint]); |
+ var reporter = createErrorReporter(context, options); |
+ return new BatchCompiler(context, options, reporter: reporter).run(); |
} |
- var realSdk = getSdkDir(arguments).path; |
// Remove old output, and `packages` symlinks which mess up the diff. |
var dir = new Directory(expectDir); |
@@ -96,8 +90,7 @@ main(arguments) { |
// TODO(jmesserly): this was added to get some coverage of source maps |
// We need a more comprehensive strategy to test them. |
var sourceMaps = filename == 'map_keys'; |
- var result = compile(filePath, realSdk, sourceMaps: sourceMaps); |
- var success = !result.failure; |
+ var success = compile(filePath, realSdkContext, sourceMaps: sourceMaps); |
// Write compiler messages to disk. |
new File(path.join(expectDir, '$filename.txt')) |
@@ -129,11 +122,14 @@ main(arguments) { |
}); |
test('devc dart:core', () { |
+ var testSdkContext = createAnalysisContextWithSources( |
+ new StrongModeOptions(), new SourceResolverOptions( |
+ dartSdkPath: path.join( |
+ testDirectory, '..', 'tool', 'generated_sdk'))); |
+ |
// Get the test SDK. We use a checked in copy so test expectations can |
// be generated against a specific SDK version. |
- var testSdk = path.join(testDirectory, '..', 'tool', 'generated_sdk'); |
- compile('dart:core', testSdk, checkSdk: true); |
- new Directory(path.join(expectDir, 'core')); |
+ compile('dart:core', testSdkContext, checkSdk: true); |
var outFile = new File(path.join(expectDir, 'dart/core.js')); |
expect(outFile.existsSync(), true, |
reason: '${outFile.path} was created for dart:core'); |
@@ -148,8 +144,7 @@ main(arguments) { |
var filePath = path.join(inputDir, 'sunflower', 'sunflower.html'); |
compilerMessages.writeln('// Messages from compiling sunflower.html'); |
- var result = compile(filePath, realSdk, subDir: 'sunflower'); |
- var success = !result.failure; |
+ var success = compile(filePath, realSdkContext, subDir: 'sunflower'); |
// Write compiler messages to disk. |
new File(path.join(expectDir, 'sunflower', 'sunflower.txt')) |
@@ -158,8 +153,6 @@ main(arguments) { |
var expectedFiles = [ |
'sunflower.html', |
'sunflower.js', |
- 'sunflower.css', |
- 'math.png', |
]..addAll(expectedRuntime); |
for (var filepath in expectedFiles) { |
@@ -173,8 +166,7 @@ main(arguments) { |
var filePath = path.join(inputDir, 'html_input.html'); |
compilerMessages.writeln('// Messages from compiling html_input.html'); |
- var result = compile(filePath, realSdk); |
- var success = !result.failure; |
+ var success = compile(filePath, realSdkContext); |
// Write compiler messages to disk. |
new File(path.join(expectDir, 'html_input.txt')) |
@@ -194,71 +186,6 @@ main(arguments) { |
expect(outFile.existsSync(), success, |
reason: '${outFile.path} was created iff compilation succeeds'); |
} |
- |
- var notExpectedFiles = [ |
- 'dev_compiler/runtime/messages_widget.js', |
- 'dev_compiler/runtime/messages.css' |
- ]; |
- for (var filepath in notExpectedFiles) { |
- var outFile = new File(path.join(expectDir, filepath)); |
- expect(outFile.existsSync(), isFalse, |
- reason: '${outFile.path} should only be generated in server mode'); |
- } |
- }); |
- |
- test('devc jscodegen html_input.html server mode', () { |
- var filePath = path.join(inputDir, 'html_input.html'); |
- compilerMessages.writeln('// Messages from compiling html_input.html'); |
- |
- var result = |
- compile(filePath, realSdk, serverMode: true, subDir: 'server_mode'); |
- var success = !result.failure; |
- |
- // Write compiler messages to disk. |
- new File(path.join(expectDir, 'server_mode', 'html_input.txt')) |
- .writeAsStringSync(compilerMessages.toString()); |
- |
- var expectedFiles = [ |
- 'dir/html_input_a.js', |
- 'dir/html_input_b.js', |
- 'dir/html_input_c.js', |
- 'dir/html_input_d.js', |
- 'dir/html_input_e.js', |
- 'dev_compiler/runtime/messages_widget.js', |
- 'dev_compiler/runtime/messages.css' |
- ]..addAll(expectedRuntime); |
- |
- // Parse the HTML file and verify its contents were expected. |
- var htmlPath = path.join(expectDir, 'server_mode', 'html_input.html'); |
- var doc = html.parse(new File(htmlPath).readAsStringSync()); |
- |
- for (var filepath in expectedFiles) { |
- var outPath = path.join(expectDir, 'server_mode', filepath); |
- expect(new File(outPath).existsSync(), success, |
- reason: '$outPath was created iff compilation succeeds'); |
- |
- var query; |
- if (filepath.endsWith('js')) { |
- var hash; |
- if (filepath.startsWith('dev_compiler')) { |
- hash = computeHashFromFile(outPath); |
- } else { |
- // TODO(jmesserly): see if we can get this to return the same |
- // answer as computeHashFromFile. |
- hash = computeHash(new File(outPath).readAsStringSync()); |
- } |
- query = 'script[src="$filepath?____cached=$hash"]'; |
- } else { |
- var hash = computeHashFromFile(outPath); |
- query = 'link[href="$filepath?____cached=$hash"]'; |
- } |
- expect(doc.querySelector(query), isNotNull, |
- reason: "should find `$query` in $htmlPath for $outPath"); |
- } |
- |
- // Clean up the server mode folder, otherwise it causes diff churn. |
- var dir = new Directory(path.join(expectDir, 'server_mode')); |
- if (dir.existsSync()) dir.deleteSync(recursive: true); |
}); |
} |