| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 /// Integration test that runs the incremental compiler, runs the compiled | 5 /// Integration test that runs the incremental compiler, runs the compiled |
| 6 /// program, incrementally rebuild portions of the app, and triggers a hot | 6 /// program, incrementally rebuild portions of the app, and triggers a hot |
| 7 /// reload on the running program. | 7 /// reload on the running program. |
| 8 library front_end.incremental.hot_reload_e2e_test; | 8 library front_end.incremental.hot_reload_e2e_test; |
| 9 | 9 |
| 10 import 'dart:async'; | 10 import 'dart:async'; |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 } | 168 } |
| 169 | 169 |
| 170 var dartVm = Uri.base.resolve(Platform.resolvedExecutable); | 170 var dartVm = Uri.base.resolve(Platform.resolvedExecutable); |
| 171 var sdkRoot = dartVm.resolve("patched_sdk/"); | 171 var sdkRoot = dartVm.resolve("patched_sdk/"); |
| 172 | 172 |
| 173 Future<IncrementalKernelGenerator> createIncrementalCompiler( | 173 Future<IncrementalKernelGenerator> createIncrementalCompiler( |
| 174 String entry, FileSystem fs) { | 174 String entry, FileSystem fs) { |
| 175 var entryUri = Uri.base.resolve(entry); | 175 var entryUri = Uri.base.resolve(entry); |
| 176 var options = new CompilerOptions() | 176 var options = new CompilerOptions() |
| 177 ..sdkRoot = sdkRoot | 177 ..sdkRoot = sdkRoot |
| 178 ..sdkSummary = sdkRoot.resolve('outline.dill') | |
| 179 ..packagesFileUri = Uri.parse('file:///.packages') | 178 ..packagesFileUri = Uri.parse('file:///.packages') |
| 180 ..strongMode = false | 179 ..strongMode = false |
| 181 ..dartLibraries = loadDartLibraries() | 180 ..compileSdk = true // the incremental generator requires the sdk sources |
| 182 ..fileSystem = fs | 181 ..fileSystem = fs |
| 183 ..byteStore = new MemoryByteStore(); | 182 ..byteStore = new MemoryByteStore(); |
| 184 return IncrementalKernelGenerator.newInstance(options, entryUri); | 183 return IncrementalKernelGenerator.newInstance(options, entryUri); |
| 185 } | 184 } |
| 186 | 185 |
| 187 Map<String, Uri> loadDartLibraries() { | |
| 188 var libraries = sdkRoot.resolve('lib/libraries.json'); | |
| 189 var map = | |
| 190 JSON.decode(new File.fromUri(libraries).readAsStringSync())['libraries']; | |
| 191 var dartLibraries = <String, Uri>{}; | |
| 192 map.forEach((k, v) => dartLibraries[k] = libraries.resolve(v)); | |
| 193 return dartLibraries; | |
| 194 } | |
| 195 | |
| 196 Future<bool> rebuild(IncrementalKernelGenerator compiler, Uri outputUri) async { | 186 Future<bool> rebuild(IncrementalKernelGenerator compiler, Uri outputUri) async { |
| 197 compiler.invalidate(Uri.parse("file:///a.dart")); | 187 compiler.invalidate(Uri.parse("file:///a.dart")); |
| 198 compiler.invalidate(Uri.parse("file:///b.dart")); | 188 compiler.invalidate(Uri.parse("file:///b.dart")); |
| 199 var program = (await compiler.computeDelta()).newProgram; | 189 var program = (await compiler.computeDelta()).newProgram; |
| 200 if (program != null && !program.libraries.isEmpty) { | 190 if (program != null && !program.libraries.isEmpty) { |
| 201 await writeProgram(program, outputUri); | 191 await writeProgram(program, outputUri); |
| 202 return true; | 192 return true; |
| 203 } | 193 } |
| 204 return false; | 194 return false; |
| 205 } | 195 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 | 239 |
| 250 f() => "$line part2"; | 240 f() => "$line part2"; |
| 251 '''; | 241 '''; |
| 252 | 242 |
| 253 const sourceB = r''' | 243 const sourceB = r''' |
| 254 get line => "part1"; | 244 get line => "part1"; |
| 255 '''; | 245 '''; |
| 256 | 246 |
| 257 RegExp observatoryPortRegExp = | 247 RegExp observatoryPortRegExp = |
| 258 new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)/"); | 248 new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)/"); |
| OLD | NEW |