@@ -10,9 +10,11 @@ import 'utils.dart';
1010
1111/// We test the build runner by mocking the specs and then checking the output
1212/// content for the expected generate command.
13+ ///
14+ /// we do not use mock process runner for github issues because we want to test
15+ /// that generated code compiles.
16+ /// If you do not want to generate the actual code, then you can initialise [MockProcessRunner] in the test
1317void main () {
14- // we do not use mock process runner for github issues because we want to test
15- // that generated code compiles
1618 var processRunner = ProcessRunner ();
1719 group ('Github Issues' , () {
1820 // setUpAll(() {
@@ -58,11 +60,8 @@ void main() {
5860 process: processRunner,
5961 );
6062
61- expect (generatedOutput,
62- contains ('Skipping source gen because generator does not need it.' ),
63- reason: generatedOutput);
64- expect (generatedOutput, contains ('Successfully formatted code.' ),
65- reason: generatedOutput);
63+ expectSourceGenSkipped (generatedOutput);
64+ expectCodeFormattedSuccessfully (generatedOutput);
6665 var analyzeResult = await Process .run (
6766 'dart' ,
6867 ['analyze' ],
@@ -101,11 +100,9 @@ void main() {
101100 annotatedFileContent.replaceAll ('{{issueNumber}}' , issueNumber),
102101 );
103102
104- expect (generatedOutput,
105- contains ('Skipping source gen because generator does not need it.' ),
106- reason: generatedOutput);
107- expect (generatedOutput, contains ('Successfully formatted code.' ),
108- reason: generatedOutput);
103+ expectSourceGenSkipped (generatedOutput);
104+ expectCodeFormattedSuccessfully (generatedOutput);
105+
109106 var analyzeResult = await Process .run (
110107 'dart' ,
111108 ['analyze' , '--no-fatal-warnings' ],
@@ -133,13 +130,8 @@ void main() {
133130 annotatedFileContent.replaceAll ('{{issueNumber}}' , issueNumber),
134131 );
135132
136- expect (
137- generatedOutput,
138- contains (
139- 'pub run build_runner build --delete-conflicting-outputs' ),
140- reason: generatedOutput);
141- expect (generatedOutput, contains ('Successfully formatted code.' ),
142- reason: generatedOutput);
133+ expectSourceGenRun (generatedOutput);
134+ expectCodeFormattedSuccessfully (generatedOutput);
143135 var workingDirectory = path.join (parentFolder, 'output' );
144136 var analyzeResult = await Process .run (
145137 'dart' ,
@@ -180,11 +172,8 @@ void main() {
180172 annotatedFileContent.replaceAll ('{{issueNumber}}' , issueNumber),
181173 );
182174
183- expect (generatedOutput,
184- contains ('Skipping source gen because generator does not need it.' ),
185- reason: generatedOutput);
186- expect (generatedOutput, contains ('Successfully formatted code.' ),
187- reason: generatedOutput);
175+ expectSourceGenSkipped (generatedOutput);
176+ expectCodeFormattedSuccessfully (generatedOutput);
188177 var analyzeResult = await Process .run (
189178 'dart' ,
190179 ['analyze' , '--fatal-warnings' ],
@@ -212,13 +201,8 @@ void main() {
212201 annotatedFileContent.replaceAll ('{{issueNumber}}' , issueNumber),
213202 );
214203
215- expect (
216- generatedOutput,
217- contains (
218- 'pub run build_runner build --delete-conflicting-outputs' ),
219- reason: generatedOutput);
220- expect (generatedOutput, contains ('Successfully formatted code.' ),
221- reason: generatedOutput);
204+ expectSourceGenRun (generatedOutput);
205+ expectCodeFormattedSuccessfully (generatedOutput);
222206 var workingDirectory = path.join (parentFolder, 'output' );
223207 await Process .run (
224208 'dart' ,
@@ -257,11 +241,8 @@ void main() {
257241 var generatedOutput = await generateFromPath (annotatedFile.path,
258242 process: processRunner, openapiSpecFilePath: inputSpecFile.path);
259243
260- expect (generatedOutput,
261- contains ('Skipping source gen because generator does not need it.' ),
262- reason: generatedOutput);
263- expect (generatedOutput, contains ('Successfully formatted code.' ),
264- reason: generatedOutput);
244+ expectSourceGenSkipped (generatedOutput);
245+ expectCodeFormattedSuccessfully (generatedOutput);
265246 var analyzeResult = await Process .run (
266247 'dart' ,
267248 ['analyze' , '--no-fatal-warnings' ],
@@ -282,8 +263,7 @@ void main() {
282263 var generatedOutput = await generateFromPath (annotatedFile.path,
283264 process: processRunner, openapiSpecFilePath: inputSpecFile.path);
284265
285- expect (generatedOutput, contains ('Successfully formatted code.' ),
286- reason: generatedOutput);
266+ expectCodeFormattedSuccessfully (generatedOutput);
287267 var workingDirectory = path.join (parentFolder, 'output' );
288268 var analyzeResult = await Process .run (
289269 'dart' ,
@@ -333,5 +313,90 @@ void main() {
333313 cleanup (workingDirectory);
334314 }, skip: true );
335315 });
316+
317+ group ('#164' , () {
318+ var issueNumber = '164' ;
319+ var parentFolder = path.join (testSpecPath, 'issue' , issueNumber);
320+ var workingDirectory = path.join (parentFolder, 'output' );
321+ setUpAll (
322+ () {
323+ var workingDirectory = path.join (parentFolder, 'output' );
324+ cleanup (workingDirectory);
325+ },
326+ );
327+ test ('[dio] Test that generation does not fail' , () async {
328+ var generatedOutput = await generateFromAnnotation (
329+ Openapi (
330+ additionalProperties: DioProperties (
331+ pubName: 'petstore_api' , pubAuthor: 'Johnny_dep' ),
332+ inputSpec: RemoteSpec (
333+ path: 'https://petstore3.swagger.io/api/v3/openapi.json' ),
334+ typeMappings: {'Pet' : 'ExamplePet' },
335+ generatorName: Generator .dio,
336+ runSourceGenOnOutput: true ,
337+ skipIfSpecIsUnchanged: false ,
338+ cleanSubOutputDirectory: [
339+ './test/specs/issue/$issueNumber /output'
340+ ],
341+ outputDirectory: './test/specs/issue/$issueNumber /output' ),
342+ process: processRunner,
343+ );
344+
345+ expectSourceGenRun (generatedOutput);
346+ expectCodeFormattedSuccessfully (generatedOutput);
347+ var analyzeResult = await Process .run (
348+ 'dart' ,
349+ ['analyze' , '--no-fatal-warnings' ],
350+ workingDirectory: workingDirectory,
351+ );
352+ expect (analyzeResult.exitCode, 0 ,
353+ reason: '${analyzeResult .stdout }\n\n ${analyzeResult .stderr }' );
354+ cleanup (workingDirectory);
355+ });
356+ });
357+
358+ group ('#167' , () {
359+ var issueNumber = '167' ;
360+ var parentFolder = path.join (testSpecPath, 'issue' , issueNumber);
361+ var workingDirectory = path.join (parentFolder, 'output' );
362+ setUpAll (
363+ () {
364+ var workingDirectory = path.join (parentFolder, 'output' );
365+ cleanup (workingDirectory);
366+ },
367+ );
368+ test ('[dio] Test that generation does not fail' , () async {
369+ var generatedOutput = await generateFromAnnotation (
370+ Openapi (
371+ additionalProperties: DioAltProperties (
372+ pubName: 'issue_api' ,
373+ ),
374+ inputSpec: InputSpec (
375+ path:
376+ './test/specs/issue/$issueNumber /github_issue_#167.yaml' ),
377+ generatorName: Generator .dio,
378+ runSourceGenOnOutput: true ,
379+ typeMappings: {'Pet' : 'ExamplePet' , 'Test' : 'ExampleTest' },
380+ skipIfSpecIsUnchanged: false ,
381+ cleanSubOutputDirectory: [
382+ './test/specs/issue/$issueNumber /output'
383+ ],
384+ outputDirectory: './test/specs/issue/$issueNumber /output' ),
385+ process: processRunner,
386+ );
387+
388+ expectSourceGenRun (generatedOutput);
389+ expectCodeFormattedSuccessfully (generatedOutput);
390+ var analyzeResult = await Process .run (
391+ 'dart' ,
392+ ['analyze' , '--no-fatal-warnings' ],
393+ workingDirectory: workingDirectory,
394+ );
395+ expect (analyzeResult.exitCode, 0 ,
396+ reason: '${analyzeResult .stdout }\n\n ${analyzeResult .stderr }' );
397+
398+ cleanup (workingDirectory);
399+ });
400+ });
336401 });
337402}
0 commit comments