@@ -11,43 +11,57 @@ import 'package:logging/logging.dart';
11
11
import 'package:path/path.dart' as p;
12
12
import 'package:test/test.dart' ;
13
13
14
- import 'util.dart' ;
15
-
16
14
void main () {
17
- late Map <String , Object > assets;
18
15
final platform = DartPlatform .register ('ddc' , ['dart:html' ]);
19
16
final kernelOutputExtension = '.test.dill' ;
20
17
21
18
group ('basic project' , () {
22
- setUp (() async {
23
- assets = {
24
- 'b|lib/b.dart' : '''final world = 'world';''' ,
25
- 'a|lib/a.dart' : r'''
26
- import 'package:b/b.dart';
27
- final helloWorld = 'hello $world';
28
- ''' ,
29
- 'a|web/index.dart' : r'''
30
- import "package:a/a.dart";
19
+ final startingAssets = {
20
+ 'a|web/index.dart' : r'''
21
+ import "package:b/b.dart";
31
22
32
23
main() {
33
24
print(helloWorld);
34
25
}
35
26
''' ,
36
- };
37
-
38
- // Set up all the other required inputs for this test.
39
- await testBuilderAndCollectAssets (const ModuleLibraryBuilder (), assets);
40
- await testBuilderAndCollectAssets (MetaModuleBuilder (platform), assets);
41
- await testBuilderAndCollectAssets (
42
- MetaModuleCleanBuilder (platform),
43
- assets,
27
+ 'b|lib/b.dart' : r'''
28
+ import 'package:c/c.dart';
29
+ final helloWorld = 'hello $world';
30
+ ''' ,
31
+ 'c|lib/c.dart' : '''final world = 'world';''' ,
32
+ };
33
+ final startingBuilders = [
34
+ const ModuleLibraryBuilder (),
35
+ MetaModuleBuilder (platform),
36
+ MetaModuleCleanBuilder (platform),
37
+ ModuleBuilder (platform),
38
+ ];
39
+ final startingExpectedOutputs = {
40
+ 'a|lib/.ddc.meta_module.clean' : isNotNull,
41
+ 'a|lib/.ddc.meta_module.raw' : isNotNull,
42
+ 'a|web/index.ddc.module' : isNotNull,
43
+ 'a|web/index.module.library' : isNotNull,
44
+ 'b|lib/.ddc.meta_module.clean' : isNotNull,
45
+ 'b|lib/.ddc.meta_module.raw' : isNotNull,
46
+ 'b|lib/b.ddc.module' : isNotNull,
47
+ 'b|lib/b.module.library' : isNotNull,
48
+ 'c|lib/.ddc.meta_module.clean' : isNotNull,
49
+ 'c|lib/.ddc.meta_module.raw' : isNotNull,
50
+ 'c|lib/c.ddc.module' : isNotNull,
51
+ 'c|lib/c.module.library' : isNotNull,
52
+ };
53
+ test ('base build' , () async {
54
+ await testBuilders (
55
+ startingBuilders,
56
+ startingAssets,
57
+ outputs: startingExpectedOutputs,
44
58
);
45
- await testBuilderAndCollectAssets (ModuleBuilder (platform), assets);
46
59
});
47
60
48
61
for (var trackUnusedInputs in [true , false ]) {
49
- test ('can output kernel summaries for modules under lib and web'
50
- '${trackUnusedInputs ? ' and track unused inputs' : '' }' , () async {
62
+ test ('can output kernel summaries for modules under lib and web '
63
+ '${trackUnusedInputs ? 'tracking' : 'not tracking' } '
64
+ 'unused inputs' , () async {
51
65
var builder = KernelBuilder (
52
66
platform: platform,
53
67
outputExtension: kernelOutputExtension,
@@ -56,56 +70,34 @@ void main() {
56
70
useIncrementalCompiler: trackUnusedInputs,
57
71
trackUnusedInputs: trackUnusedInputs,
58
72
);
59
- // We need to compile package:b first - so its kernel file is
60
- // available.
61
- var expectedOutputs = < String , Matcher > {
62
- 'b|lib/b$kernelOutputExtension ' : containsAllInOrder (
63
- utf8.encode ('package:b/b.dart' ),
64
- ),
65
- };
66
-
67
- await testBuilderAndCollectAssets (
68
- builder,
69
- assets,
70
- outputs: expectedOutputs,
71
- generateFor: {'b|lib/b${moduleExtension (platform )}' },
72
- );
73
73
74
- // Next, compile package:a
75
- expectedOutputs = {
76
- 'a|lib/a$kernelOutputExtension ' : containsAllInOrder (
77
- utf8.encode ('package:a/a.dart' ),
78
- ),
79
- };
80
-
81
- await testBuilderAndCollectAssets (
82
- builder,
83
- assets,
84
- outputs: expectedOutputs,
85
- generateFor: {'a|lib/a${moduleExtension (platform )}' },
86
- );
87
-
88
- expectedOutputs = {
74
+ var expectedOutputs = Map .of (startingExpectedOutputs)..addAll ({
89
75
'a|web/index$kernelOutputExtension ' : containsAllInOrder (
90
76
utf8.encode ('web/index.dart' ),
91
77
),
92
- };
78
+ 'b|lib/b$kernelOutputExtension ' : containsAllInOrder (
79
+ utf8.encode ('package:b/b.dart' ),
80
+ ),
81
+ 'c|lib/c$kernelOutputExtension ' : containsAllInOrder (
82
+ utf8.encode ('package:c/c.dart' ),
83
+ ),
84
+ });
93
85
94
- // And finally compile a|web/index.dart
95
86
var reportedUnused = < AssetId , Iterable <AssetId >> {};
96
- await testBuilder (
97
- builder,
98
- assets ,
87
+ await testBuilders (
88
+ [...startingBuilders, builder] ,
89
+ startingAssets ,
99
90
outputs: expectedOutputs,
100
- reportUnusedAssetsForInput:
101
- (input, unused) => reportedUnused[input] = unused,
102
- generateFor : { 'a|web/index${ moduleExtension ( platform )}' },
91
+ reportUnusedAssetsForInput: (input, unused) {
92
+ reportedUnused[input] = unused;
93
+ },
103
94
);
95
+
104
96
expect (
105
97
reportedUnused[AssetId ('a' , 'web/index${moduleExtension (platform )}' )],
106
98
equals (
107
99
trackUnusedInputs
108
- ? [AssetId ('b ' , 'lib/b $kernelOutputExtension ' )]
100
+ ? [AssetId ('c ' , 'lib/c $kernelOutputExtension ' )]
109
101
: null ,
110
102
),
111
103
reason:
@@ -117,45 +109,48 @@ void main() {
117
109
});
118
110
119
111
group ('kernel outlines with missing imports' , () {
120
- setUp (() async {
121
- assets = {
122
- 'a|web/index.dart' : 'import "package:a/a.dart";' ,
123
- 'a|lib/a.dart' : 'import "package:b/b.dart";' ,
124
- };
125
-
126
- // Set up all the other required inputs for this test.
127
- await testBuilderAndCollectAssets (const ModuleLibraryBuilder (), assets);
128
- await testBuilderAndCollectAssets (MetaModuleBuilder (platform), assets);
129
- await testBuilderAndCollectAssets (
130
- MetaModuleCleanBuilder (platform),
131
- assets,
132
- );
133
- await testBuilderAndCollectAssets (ModuleBuilder (platform), assets);
134
- await testBuilderAndCollectAssets (
135
- KernelBuilder (
136
- platform: platform,
137
- outputExtension: kernelOutputExtension,
138
- summaryOnly: true ,
139
- sdkKernelPath: p.url.join ('lib' , '_internal' , 'ddc_sdk.dill' ),
140
- ),
141
- assets,
112
+ final startingAssets = {
113
+ 'a|web/index.dart' : 'import "package:a/a.dart";' ,
114
+ 'a|lib/a.dart' : 'import "package:b/b.dart";' ,
115
+ };
116
+ final startingBuilders = [
117
+ const ModuleLibraryBuilder (),
118
+ MetaModuleBuilder (platform),
119
+ MetaModuleCleanBuilder (platform),
120
+ ModuleBuilder (platform),
121
+ KernelBuilder (
122
+ platform: platform,
123
+ outputExtension: kernelOutputExtension,
124
+ summaryOnly: true ,
125
+ sdkKernelPath: p.url.join ('lib' , '_internal' , 'ddc_sdk.dill' ),
126
+ ),
127
+ ];
128
+ final startingExpectedOutputs = < String , Object > {
129
+ 'a|lib/.ddc.meta_module.clean' : isNotNull,
130
+ 'a|lib/.ddc.meta_module.raw' : isNotNull,
131
+ 'a|lib/a.ddc.module' : isNotNull,
132
+ 'a|lib/a.module.library' : isNotNull,
133
+ 'a|web/index.ddc.module' : isNotNull,
134
+ 'a|web/index.module.library' : isNotNull,
135
+ };
136
+
137
+ test ('base build' , () async {
138
+ await testBuilders (
139
+ startingBuilders,
140
+ startingAssets,
141
+ rootPackage: 'a' ,
142
+ outputs: startingExpectedOutputs,
142
143
);
143
144
});
144
145
145
146
test (
146
147
'print an error if there are any missing transitive modules' ,
147
148
() async {
148
- var expectedOutputs = < String , Matcher > {};
149
149
var logs = < LogRecord > [];
150
- await testBuilder (
151
- KernelBuilder (
152
- platform: platform,
153
- outputExtension: kernelOutputExtension,
154
- summaryOnly: true ,
155
- sdkKernelPath: p.url.join ('lib' , '_internal' , 'ddc_sdk.dill' ),
156
- ),
157
- assets,
158
- outputs: expectedOutputs,
150
+ await testBuilders (
151
+ startingBuilders,
152
+ startingAssets,
153
+ outputs: startingExpectedOutputs,
159
154
onLog: logs.add,
160
155
);
161
156
expect (
0 commit comments