@@ -13,198 +13,187 @@ import 'package:build/build.dart';
1313import 'package:build/src/builder/build_step_impl.dart' ;
1414
1515void main () {
16- group ('BuildStepImpl ' , () {
17- AssetWriter writer;
18- AssetReader reader;
19-
20- group ('with reader/writer stub' , () {
21- AssetId primary;
22- BuildStepImpl buildStep;
23-
24- setUp (() {
25- reader = new StubAssetReader ();
26- writer = new StubAssetWriter ();
27- primary = makeAssetId ();
28- buildStep = new BuildStepImpl (primary, [], reader, writer,
29- primary.package, const BarbackResolvers ());
30- });
31-
32- test ('doesnt allow non-expected outputs' , () {
33- var id = makeAssetId ();
34- expect (() => buildStep.writeAsString (id, '$id ' ),
35- throwsA (new isInstanceOf <UnexpectedOutputException >()));
36- });
37-
38- test ('canRead throws invalidInputExceptions' , () async {
39- expect (() => buildStep.canRead (makeAssetId ('b|web/a.txt' )),
40- throwsA (invalidInputException));
41- expect (() => buildStep.canRead (makeAssetId ('b|a.txt' )),
42- throwsA (invalidInputException));
43- expect (() => buildStep.canRead (makeAssetId ('foo|bar.txt' )),
44- throwsA (invalidInputException));
45- });
16+ group ('with reader/writer stub' , () {
17+ AssetId primary;
18+ BuildStepImpl buildStep;
19+
20+ setUp (() {
21+ var reader = new StubAssetReader ();
22+ var writer = new StubAssetWriter ();
23+ primary = makeAssetId ();
24+ buildStep = new BuildStepImpl (primary, [], reader, writer,
25+ primary.package, const BarbackResolvers ());
26+ });
4627
47- test ('hasInput behaves like canRead' , () async {
48- expect (() => buildStep.hasInput (makeAssetId ('b|web/a.txt' )),
49- throwsA (invalidInputException));
50- expect (() => buildStep.hasInput (makeAssetId ('b|a.txt' )),
51- throwsA (invalidInputException));
52- expect (() => buildStep.hasInput (makeAssetId ('foo|bar.txt' )),
53- throwsA (invalidInputException));
54- });
28+ test ('doesnt allow non-expected outputs' , () {
29+ var id = makeAssetId ();
30+ expect (() => buildStep.writeAsString (id, '$id ' ),
31+ throwsA (new isInstanceOf <UnexpectedOutputException >()));
32+ });
5533
56- test ('readAs* throws InvalidInputExceptions' , () async {
57- var invalidInputs = [
58- makeAssetId ('b|web/a.txt' ),
59- makeAssetId ('b|a.txt' ),
60- makeAssetId ('foo|bar.txt' )
61- ];
62- for (var id in invalidInputs) {
63- expect (
64- () => buildStep.readAsString (id), throwsA (invalidInputException));
65- expect (
66- () => buildStep.readAsBytes (id), throwsA (invalidInputException));
67- }
68- });
34+ test ('canRead throws invalidInputExceptions' , () async {
35+ expect (() => buildStep.canRead (makeAssetId ('b|web/a.txt' )),
36+ throwsA (invalidInputException));
37+ expect (() => buildStep.canRead (makeAssetId ('b|a.txt' )),
38+ throwsA (invalidInputException));
39+ expect (() => buildStep.canRead (makeAssetId ('foo|bar.txt' )),
40+ throwsA (invalidInputException));
41+ });
6942
70- test ('writeAs* throws InvalidOutputExceptions' , () async {
71- var invalidOutputIds = [
72- makeAssetId ('b|test.txt' ),
73- makeAssetId ('foo|bar.txt' ),
74- ];
75- for (var id in invalidOutputIds) {
76- expect (() => buildStep.writeAsString (id, 'foo' ),
77- throwsA (invalidOutputException));
78- expect (() => buildStep.writeAsBytes (id, [0 ]),
79- throwsA (invalidOutputException));
80- }
81- });
43+ test ('hasInput behaves like canRead' , () async {
44+ expect (() => buildStep.hasInput (makeAssetId ('b|web/a.txt' )),
45+ throwsA (invalidInputException));
46+ expect (() => buildStep.hasInput (makeAssetId ('b|a.txt' )),
47+ throwsA (invalidInputException));
48+ expect (() => buildStep.hasInput (makeAssetId ('foo|bar.txt' )),
49+ throwsA (invalidInputException));
8250 });
8351
84- group ('with in memory file system' , () {
85- InMemoryAssetWriter writer;
86- InMemoryAssetReader reader;
52+ test ('readAs* throws InvalidInputExceptions' , () async {
53+ var invalidInputs = [
54+ makeAssetId ('b|web/a.txt' ),
55+ makeAssetId ('b|a.txt' ),
56+ makeAssetId ('foo|bar.txt' )
57+ ];
58+ for (var id in invalidInputs) {
59+ expect (
60+ () => buildStep.readAsString (id), throwsA (invalidInputException));
61+ expect (() => buildStep.readAsBytes (id), throwsA (invalidInputException));
62+ }
63+ });
8764
88- setUp (() {
89- writer = new InMemoryAssetWriter ();
90- reader = new InMemoryAssetReader (sourceAssets: writer.assets);
91- });
65+ test ('writeAs* throws InvalidOutputExceptions' , () async {
66+ var invalidOutputIds = [
67+ makeAssetId ('b|test.txt' ),
68+ makeAssetId ('foo|bar.txt' ),
69+ ];
70+ for (var id in invalidOutputIds) {
71+ expect (() => buildStep.writeAsString (id, 'foo' ),
72+ throwsA (invalidOutputException));
73+ expect (() => buildStep.writeAsBytes (id, [0 ]),
74+ throwsA (invalidOutputException));
75+ }
76+ });
77+ });
9278
93- test ('tracks outputs created by a builder' , () async {
94- var builder = new CopyBuilder ();
95- var primary = makeAssetId ('a|web/primary.txt' );
96- var inputs = {
97- primary: 'foo' ,
98- };
99- addAssets (inputs, writer);
100- var outputId = new AssetId .parse ('$primary .copy' );
101- var buildStep = new BuildStepImpl (
102- primary, [outputId], reader, writer, 'a' , const BarbackResolvers ());
79+ group ('with in memory file system' , () {
80+ InMemoryAssetWriter writer;
81+ InMemoryAssetReader reader;
10382
104- await builder.build (buildStep);
105- await buildStep.complete ();
83+ setUp (() {
84+ writer = new InMemoryAssetWriter ();
85+ reader = new InMemoryAssetReader (sourceAssets: writer.assets);
86+ });
10687
107- // One output.
108- expect (writer.assets[outputId].stringValue, 'foo' );
109- });
88+ test ('tracks outputs created by a builder' , () async {
89+ var builder = new CopyBuilder ();
90+ var primary = makeAssetId ('a|web/primary.txt' );
91+ var inputs = {
92+ primary: 'foo' ,
93+ };
94+ addAssets (inputs, writer);
95+ var outputId = new AssetId .parse ('$primary .copy' );
96+ var buildStep = new BuildStepImpl (
97+ primary, [outputId], reader, writer, 'a' , const BarbackResolvers ());
98+
99+ await builder.build (buildStep);
100+ await buildStep.complete ();
101+
102+ // One output.
103+ expect (writer.assets[outputId].stringValue, 'foo' );
104+ });
110105
111- group ('resolve' , () {
112- test ('can resolve assets' , () async {
113- var inputs = {
114- makeAssetId ('a|web/a.dart' ): '''
106+ group ('resolve' , () {
107+ test ('can resolve assets' , () async {
108+ var inputs = {
109+ makeAssetId ('a|web/a.dart' ): '''
115110 library a;
116111
117112 import 'b.dart';
118113 ''' ,
119- makeAssetId ('a|web/b.dart' ): '''
114+ makeAssetId ('a|web/b.dart' ): '''
120115 library b;
121116 ''' ,
122- };
123- addAssets (inputs, writer);
124-
125- var primary = makeAssetId ('a|web/a.dart' );
126- var buildStep = new BuildStepImpl (primary, [], reader, writer,
127- primary.package, const BarbackResolvers ());
128- var resolver = await buildStep.resolver;
129-
130- var aLib = resolver.getLibrary (primary);
131- expect (aLib.name, 'a' );
132- expect (aLib.importedLibraries.length, 2 );
133- expect (aLib.importedLibraries.any ((library) => library.name == 'b' ),
134- isTrue);
135-
136- var bLib = resolver.getLibraryByName ('b' );
137- expect (bLib.name, 'b' );
138- expect (bLib.importedLibraries.length, 1 );
139-
140- await buildStep.complete ();
141- });
117+ };
118+ addAssets (inputs, writer);
119+
120+ var primary = makeAssetId ('a|web/a.dart' );
121+ var buildStep = new BuildStepImpl (primary, [], reader, writer,
122+ primary.package, const BarbackResolvers ());
123+ var resolver = await buildStep.resolver;
124+
125+ var aLib = resolver.getLibrary (primary);
126+ expect (aLib.name, 'a' );
127+ expect (aLib.importedLibraries.length, 2 );
128+ expect (aLib.importedLibraries.any ((library) => library.name == 'b' ),
129+ isTrue);
130+
131+ var bLib = resolver.getLibraryByName ('b' );
132+ expect (bLib.name, 'b' );
133+ expect (bLib.importedLibraries.length, 1 );
134+
135+ await buildStep.complete ();
142136 });
143137 });
138+ });
144139
145- group ('With slow writes' , () {
146- BuildStepImpl buildStep;
147- SlowAssetWriter assetWriter;
148- AssetId outputId;
149- String outputContent;
150-
151- setUp (() async {
152- var primary = makeAssetId ();
153- assetWriter = new SlowAssetWriter ();
154- outputId = makeAssetId ('a|test.txt' );
155- outputContent = '$outputId ' ;
156- buildStep = new BuildStepImpl (
157- primary,
158- [outputId],
159- new StubAssetReader (),
160- assetWriter,
161- primary.package,
162- const BarbackResolvers ());
163- });
140+ group ('With slow writes' , () {
141+ BuildStepImpl buildStep;
142+ SlowAssetWriter assetWriter;
143+ AssetId outputId;
144+ String outputContent;
145+
146+ setUp (() async {
147+ var primary = makeAssetId ();
148+ assetWriter = new SlowAssetWriter ();
149+ outputId = makeAssetId ('a|test.txt' );
150+ outputContent = '$outputId ' ;
151+ buildStep = new BuildStepImpl (primary, [outputId], new StubAssetReader (),
152+ assetWriter, primary.package, const BarbackResolvers ());
153+ });
164154
165- test ('Completes only after writes finish' , () async {
166- // ignore: unawaited_futures
167- buildStep.writeAsString (outputId, outputContent);
168- var isComplete = false ;
169- // ignore: unawaited_futures
170- buildStep.complete ().then ((_) {
171- isComplete = true ;
172- });
173- await new Future (() {});
174- expect (isComplete, false ,
175- reason: 'File has not written, should not be complete' );
176- assetWriter.finishWrite ();
177- await new Future (() {});
178- expect (isComplete, true , reason: 'File is written, should be complete' );
155+ test ('Completes only after writes finish' , () async {
156+ // ignore: unawaited_futures
157+ buildStep.writeAsString (outputId, outputContent);
158+ var isComplete = false ;
159+ // ignore: unawaited_futures
160+ buildStep.complete ().then ((_) {
161+ isComplete = true ;
179162 });
163+ await new Future (() {});
164+ expect (isComplete, false ,
165+ reason: 'File has not written, should not be complete' );
166+ assetWriter.finishWrite ();
167+ await new Future (() {});
168+ expect (isComplete, true , reason: 'File is written, should be complete' );
169+ });
180170
181- test ('Completes only after async writes finish' , () async {
182- var outputCompleter = new Completer <String >();
183- // ignore: unawaited_futures
184- buildStep.writeAsString (outputId, outputCompleter.future);
185- var isComplete = false ;
186- // ignore: unawaited_futures
187- buildStep.complete ().then ((_) {
188- isComplete = true ;
189- });
190- await new Future (() {});
191- expect (isComplete, false ,
192- reason: 'File has not resolved, should not be complete' );
193- outputCompleter.complete (outputContent);
194- await new Future (() {});
195- expect (isComplete, false ,
196- reason: 'File has not written, should not be complete' );
197- assetWriter.finishWrite ();
198- await new Future (() {});
199- expect (isComplete, true , reason: 'File is written, should be complete' );
171+ test ('Completes only after async writes finish' , () async {
172+ var outputCompleter = new Completer <String >();
173+ // ignore: unawaited_futures
174+ buildStep.writeAsString (outputId, outputCompleter.future);
175+ var isComplete = false ;
176+ // ignore: unawaited_futures
177+ buildStep.complete ().then ((_) {
178+ isComplete = true ;
200179 });
180+ await new Future (() {});
181+ expect (isComplete, false ,
182+ reason: 'File has not resolved, should not be complete' );
183+ outputCompleter.complete (outputContent);
184+ await new Future (() {});
185+ expect (isComplete, false ,
186+ reason: 'File has not written, should not be complete' );
187+ assetWriter.finishWrite ();
188+ await new Future (() {});
189+ expect (isComplete, true , reason: 'File is written, should be complete' );
201190 });
202191 });
203192}
204193
205194class SlowAssetWriter implements AssetWriter {
206195 final _writeCompleter = new Completer <Null >();
207-
196+
208197 void finishWrite () {
209198 _writeCompleter.complete (null );
210199 }
0 commit comments