OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 // Test that the helper [Compiler.inUserCode] works as intended. | 5 // Test that the helper [Compiler.inUserCode] works as intended. |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'package:async_helper/async_helper.dart'; | 8 import 'package:async_helper/async_helper.dart'; |
9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
10 import 'package:compiler/src/commandline_options.dart'; | 10 import 'package:compiler/src/commandline_options.dart'; |
11 import 'package:compiler/src/compiler.dart' show Compiler; | 11 import 'package:compiler/src/compiler.dart' show Compiler; |
12 import 'memory_compiler.dart'; | 12 import 'memory_compiler.dart'; |
13 | 13 |
14 const SOURCE = const { | 14 const SOURCE = const { |
15 'main.dart': """ | 15 'main.dart': """ |
16 library main; | 16 library main; |
17 | 17 |
18 import 'dart:async'; | 18 import 'dart:async'; |
19 import 'foo.dart'; | 19 import 'foo.dart'; |
20 import 'pkg/sub/bar.dart'; | 20 import 'pkg/sub/bar.dart'; |
21 import 'package:sub/bar.dart'; | 21 import 'package:sub/bar.dart'; |
22 import 'package:sup/boz.dart'; | 22 import 'package:sup/boz.dart'; |
23 | 23 |
24 main() {} | 24 main() {} |
25 """, | 25 """, |
26 | |
27 'foo.dart': """ | 26 'foo.dart': """ |
28 library foo; | 27 library foo; |
29 """, | 28 """, |
30 | |
31 'pkg/sub/bar.dart': """ | 29 'pkg/sub/bar.dart': """ |
32 library sub.bar; | 30 library sub.bar; |
33 | 31 |
34 import 'package:sup/boz.dart'; | 32 import 'package:sup/boz.dart'; |
35 import 'baz.dart'; | 33 import 'baz.dart'; |
36 """, | 34 """, |
37 | |
38 'pkg/sub/baz.dart': """ | 35 'pkg/sub/baz.dart': """ |
39 library sub.baz; | 36 library sub.baz; |
40 """, | 37 """, |
41 | |
42 'pkg/sup/boz.dart': """ | 38 'pkg/sup/boz.dart': """ |
43 library sup.boz; | 39 library sup.boz; |
44 """, | 40 """, |
45 }; | 41 }; |
46 | 42 |
47 Future test(List<Uri> entryPoints, Map<String, bool> expectedResults) async { | 43 Future test(List<Uri> entryPoints, Map<String, bool> expectedResults) async { |
48 CompilationResult result = await runCompiler( | 44 CompilationResult result = await runCompiler( |
49 entryPoints: entryPoints, | 45 entryPoints: entryPoints, |
50 memorySourceFiles: SOURCE, | 46 memorySourceFiles: SOURCE, |
51 options: [Flags.analyzeOnly, Flags.analyzeAll], | 47 options: [Flags.analyzeOnly, Flags.analyzeAll], |
52 packageRoot: Uri.parse('memory:pkg/')); | 48 packageRoot: Uri.parse('memory:pkg/')); |
53 Compiler compiler = result.compiler; | 49 Compiler compiler = result.compiler; |
54 expectedResults.forEach((String uri, bool expectedResult) { | 50 expectedResults.forEach((String uri, bool expectedResult) { |
55 var element = compiler.libraryLoader.lookupLibrary(Uri.parse(uri)); | 51 var element = compiler.libraryLoader.lookupLibrary(Uri.parse(uri)); |
56 Expect.isNotNull(element, "Unknown library '$uri'."); | 52 Expect.isNotNull(element, "Unknown library '$uri'."); |
57 Expect.equals(expectedResult, compiler.inUserCode(element), | 53 Expect.equals( |
58 expectedResult ? "Library '$uri' expected to be in user code" | 54 expectedResult, |
59 : "Library '$uri' not expected to be in user code"); | 55 compiler.inUserCode(element), |
| 56 expectedResult |
| 57 ? "Library '$uri' expected to be in user code" |
| 58 : "Library '$uri' not expected to be in user code"); |
60 }); | 59 }); |
61 } | 60 } |
62 | 61 |
63 void main() { | 62 void main() { |
64 asyncTest(runTests); | 63 asyncTest(runTests); |
65 } | 64 } |
66 | 65 |
67 Future runTests() async { | 66 Future runTests() async { |
| 67 await test([ |
| 68 Uri.parse('memory:main.dart') |
| 69 ], { |
| 70 'memory:main.dart': true, |
| 71 'memory:foo.dart': true, |
| 72 'memory:pkg/sub/bar.dart': true, |
| 73 'memory:pkg/sub/baz.dart': true, |
| 74 'package:sub/bar.dart': false, |
| 75 'package:sub/baz.dart': false, |
| 76 'package:sup/boz.dart': false, |
| 77 'dart:core': false, |
| 78 'dart:async': false |
| 79 }); |
68 await test( | 80 await test( |
69 [Uri.parse('memory:main.dart')], | 81 [Uri.parse('dart:async')], {'dart:core': true, 'dart:async': true}); |
70 {'memory:main.dart': true, | 82 await test([ |
71 'memory:foo.dart': true, | 83 Uri.parse('package:sub/bar.dart') |
72 'memory:pkg/sub/bar.dart': true, | 84 ], { |
73 'memory:pkg/sub/baz.dart': true, | 85 'package:sub/bar.dart': true, |
74 'package:sub/bar.dart': false, | 86 'package:sub/baz.dart': true, |
75 'package:sub/baz.dart': false, | 87 'package:sup/boz.dart': false, |
76 'package:sup/boz.dart': false, | 88 'dart:core': false |
77 'dart:core': false, | 89 }); |
78 'dart:async': false}); | 90 await test([ |
79 await test( | 91 Uri.parse('package:sub/bar.dart'), |
80 [Uri.parse('dart:async')], | 92 Uri.parse('package:sup/boz.dart') |
81 {'dart:core': true, | 93 ], { |
82 'dart:async': true}); | 94 'package:sub/bar.dart': true, |
83 await test( | 95 'package:sub/baz.dart': true, |
84 [Uri.parse('package:sub/bar.dart')], | 96 'package:sup/boz.dart': true, |
85 {'package:sub/bar.dart': true, | 97 'dart:core': false |
86 'package:sub/baz.dart': true, | 98 }); |
87 'package:sup/boz.dart': false, | 99 await test([ |
88 'dart:core': false}); | 100 Uri.parse('dart:async'), |
89 await test( | 101 Uri.parse('package:sub/bar.dart') |
90 [Uri.parse('package:sub/bar.dart'), Uri.parse('package:sup/boz.dart')], | 102 ], { |
91 {'package:sub/bar.dart': true, | 103 'package:sub/bar.dart': true, |
92 'package:sub/baz.dart': true, | 104 'package:sub/baz.dart': true, |
93 'package:sup/boz.dart': true, | 105 'package:sup/boz.dart': false, |
94 'dart:core': false}); | 106 'dart:core': true, |
95 await test( | 107 'dart:async': true |
96 [Uri.parse('dart:async'), Uri.parse('package:sub/bar.dart')], | 108 }); |
97 {'package:sub/bar.dart': true, | |
98 'package:sub/baz.dart': true, | |
99 'package:sup/boz.dart': false, | |
100 'dart:core': true, | |
101 'dart:async': true}); | |
102 } | 109 } |
103 | |
OLD | NEW |