Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: test/codegen_test.dart

Issue 993213003: Support browser caching using hashes in serverMode (fixes #93, fixes #92) (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/codegen/expect/server_mode/html_input.txt ('k') | test/dependency_graph_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Tests code generation. 5 /// Tests code generation.
6 /// Runs Dart Dev Compiler on all input in the `codegen` directory and checks 6 /// Runs Dart Dev Compiler on all input in the `codegen` directory and checks
7 /// that the output is what we expected. 7 /// that the output is what we expected.
8 library dev_compiler.test.codegen_test; 8 library dev_compiler.test.codegen_test;
9 9
10 import 'dart:io'; 10 import 'dart:io';
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 var inputDir = dartGen 49 var inputDir = dartGen
50 ? path.join(testDir, 'dart_codegen') 50 ? path.join(testDir, 'dart_codegen')
51 : path.join(testDir, 'codegen'); 51 : path.join(testDir, 'codegen');
52 var actualDir = path.join(inputDir, 'actual'); 52 var actualDir = path.join(inputDir, 'actual');
53 var paths = new Directory(inputDir) 53 var paths = new Directory(inputDir)
54 .listSync() 54 .listSync()
55 .where((f) => f is File) 55 .where((f) => f is File)
56 .map((f) => f.path) 56 .map((f) => f.path)
57 .where((p) => p.endsWith('.dart') && filePattern.hasMatch(p)); 57 .where((p) => p.endsWith('.dart') && filePattern.hasMatch(p));
58 58
59 compile(String entryPoint, String sdkPath, [bool checkSdk = false]) { 59 compile(String entryPoint, String sdkPath,
60 {bool checkSdk: false, bool serverMode: false}) {
60 var options = new CompilerOptions( 61 var options = new CompilerOptions(
61 outputDir: actualDir, 62 outputDir: serverMode ? path.join(actualDir, 'server_mode') : actualDir,
62 useColors: false, 63 useColors: false,
63 outputDart: dartGen, 64 outputDart: dartGen,
64 formatOutput: dartGen, 65 formatOutput: dartGen,
65 emitSourceMaps: false, 66 emitSourceMaps: false,
66 forceCompile: checkSdk, 67 forceCompile: checkSdk,
67 cheapTestFormat: checkSdk, 68 cheapTestFormat: checkSdk,
68 checkSdk: checkSdk, 69 checkSdk: checkSdk,
69 entryPointFile: entryPoint, 70 entryPointFile: entryPoint,
70 dartSdkPath: sdkPath); 71 dartSdkPath: sdkPath,
72 serverMode: serverMode);
71 return new Compiler(options).run(); 73 return new Compiler(options).run();
72 } 74 }
73 var realSdk = getSdkDir(arguments).path; 75 var realSdk = getSdkDir(arguments).path;
74 76
75 // Validate that old output is gone before running. 77 // Validate that old output is gone before running.
76 // TODO(jmesserly): it'd be nice to do all cleanup here, including removing 78 // TODO(jmesserly): it'd be nice to do all cleanup here, including removing
77 // pub's 'packages' symlinks which mess up the diff. That way this test 79 // pub's 'packages' symlinks which mess up the diff. That way this test
78 // can be self contained instead of depending on a shell script. 80 // can be self contained instead of depending on a shell script.
79 if (new Directory(actualDir).existsSync()) { 81 if (new Directory(actualDir).existsSync()) {
80 throw 'Old compiler output should be cleaned up first. Use ./test/test.sh'; 82 throw 'Old compiler output should be cleaned up first. Use ./test/test.sh';
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 }); 122 });
121 123
122 test('devc dart:core', () { 124 test('devc dart:core', () {
123 // Get the test SDK. We use a checked in copy so test expectations can be 125 // Get the test SDK. We use a checked in copy so test expectations can be
124 // generated against a specific SDK version. 126 // generated against a specific SDK version.
125 // TODO(jmesserly): eventually we should track compiler messages. 127 // TODO(jmesserly): eventually we should track compiler messages.
126 // For now we're just trying to get decent code generation. 128 // For now we're just trying to get decent code generation.
127 var testSdk = dartGen 129 var testSdk = dartGen
128 ? path.join(testDir, '..', 'tool', 'input_sdk') 130 ? path.join(testDir, '..', 'tool', 'input_sdk')
129 : path.join(testDir, 'generated_sdk'); 131 : path.join(testDir, 'generated_sdk');
130 var result = compile('dart:core', testSdk, true); 132 var result = compile('dart:core', testSdk, checkSdk: true);
131 var outputDir = new Directory(path.join(actualDir, 'core')); 133 var outputDir = new Directory(path.join(actualDir, 'core'));
132 var outFile = dartGen 134 var outFile = dartGen
133 ? new File(path.join(actualDir, 'core/core')) 135 ? new File(path.join(actualDir, 'core/core'))
134 : new File(path.join(actualDir, 'dart/core.js')); 136 : new File(path.join(actualDir, 'dart/core.js'));
135 expect(outFile.existsSync(), true, 137 expect(outFile.existsSync(), true,
136 reason: '${outFile.path} was created for dart:core'); 138 reason: '${outFile.path} was created for dart:core');
137 }); 139 });
138 }); 140 });
139 141
140 if (!dartGen) { 142 if (!dartGen) {
141 test('devc jscodegen html_input.html', () { 143 test('devc jscodegen html_input.html', () {
142 var filePath = path.join(inputDir, 'html_input.html'); 144 var filePath = path.join(inputDir, 'html_input.html');
143 compilerMessages.writeln('// Messages from compiling html_input.html'); 145 compilerMessages.writeln('// Messages from compiling html_input.html');
144 146
145 var result = compile(filePath, realSdk); 147 var result = compile(filePath, realSdk);
146 var success = !result.failure; 148 var success = !result.failure;
147 149
148 // Write compiler messages to disk. 150 // Write compiler messages to disk.
149 new File(path.join(actualDir, 'html_input.txt')) 151 new File(path.join(actualDir, 'html_input.txt'))
150 .writeAsStringSync(compilerMessages.toString()); 152 .writeAsStringSync(compilerMessages.toString());
151 153
152 var outFile = new File(path.join(actualDir, 'html_input.html')); 154 var outFile = new File(path.join(actualDir, 'html_input.html'));
153 expect(outFile.existsSync(), success, 155 expect(outFile.existsSync(), success,
154 reason: '${outFile.path} was created iff compilation succeeds'); 156 reason: '${outFile.path} was created iff compilation succeeds');
155 }); 157 });
158
159 test('devc jscodegen html_input.html server mode', () {
160 var filePath = path.join(inputDir, 'html_input.html');
161 compilerMessages.writeln('// Messages from compiling html_input.html');
162
163 var result = compile(filePath, realSdk, serverMode: true);
164 var success = !result.failure;
165
166 // Write compiler messages to disk.
167 new File(path.join(actualDir, 'server_mode', 'html_input.txt'))
168 .writeAsStringSync(compilerMessages.toString());
169
170 var outFile =
171 new File(path.join(actualDir, 'server_mode', 'html_input.html'));
172 expect(outFile.existsSync(), success,
173 reason: '${outFile.path} was created iff compilation succeeds');
174 });
156 } 175 }
157 } 176 }
158 177
159 /// An implementation of analysis engine's [Logger] that prints. 178 /// An implementation of analysis engine's [Logger] that prints.
160 class PrintLogger implements Logger { 179 class PrintLogger implements Logger {
161 @override void logError(String message, [CaughtException exception]) { 180 @override void logError(String message, [CaughtException exception]) {
162 print('[AnalysisEngine] error $message $exception'); 181 print('[AnalysisEngine] error $message $exception');
163 } 182 }
164 183
165 @override void logError2(String message, Object exception) { 184 @override void logError2(String message, Object exception) {
166 print('[AnalysisEngine] error $message $exception'); 185 print('[AnalysisEngine] error $message $exception');
167 } 186 }
168 187
169 void logInformation(String message, [CaughtException exception]) {} 188 void logInformation(String message, [CaughtException exception]) {}
170 void logInformation2(String message, Object exception) {} 189 void logInformation2(String message, Object exception) {}
171 } 190 }
OLDNEW
« no previous file with comments | « test/codegen/expect/server_mode/html_input.txt ('k') | test/dependency_graph_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698