Skip to content

Commit a0a2594

Browse files
committed
fix: Enhance OpenAPI generator with new features and improvements
- Added OpenApiTest class to openapi_generator_annotations_base.dart for testing purposes. - Updated type_methods.dart to improve type checking and enum handling. - Refactored openapi_generator_runner.dart to clean up deprecated functionality and improve readability. - Updated pubspec.yaml to allow for newer versions of dependencies. - Refactored builder_test.dart to utilize new utility functions for reading annotations. - Improved generator_arguments_test.dart to streamline annotation processing. - Enhanced github_issues_test.dart to ensure proper output directory handling and verification. - Updated test_configs.dart to include new process execution for OpenAPI CLI commands. - Refactored test_generator.dart to integrate process execution for OpenAPI generation. - Improved utils.dart with new methods for reading annotations and verifying generation results. - Updated verify_generation_test.dart to enhance library initialization for tests.
1 parent 5747abf commit a0a2594

File tree

12 files changed

+443
-359
lines changed

12 files changed

+443
-359
lines changed

example/pubspec.lock

Lines changed: 31 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ packages:
55
dependency: transitive
66
description:
77
name: _fe_analyzer_shared
8-
sha256: e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f
8+
sha256: dd3d2ad434b9510001d089e8de7556d50c834481b9abc2891a0184a8493a19dc
99
url: "https://pub.dev"
1010
source: hosted
11-
version: "82.0.0"
11+
version: "89.0.0"
1212
analyzer:
1313
dependency: transitive
1414
description:
1515
name: analyzer
16-
sha256: "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0"
16+
sha256: c22b6e7726d1f9e5db58c7251606076a71ca0dbcf76116675edfadbec0c9e875
1717
url: "https://pub.dev"
1818
source: hosted
19-
version: "7.4.5"
19+
version: "8.2.0"
2020
args:
2121
dependency: transitive
2222
description:
@@ -45,18 +45,18 @@ packages:
4545
dependency: transitive
4646
description:
4747
name: build
48-
sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
48+
sha256: "5b887c55a0f734b433b3b2d89f9cd1f99eb636b17e268a5b4259258bc916504b"
4949
url: "https://pub.dev"
5050
source: hosted
51-
version: "2.4.2"
51+
version: "4.0.0"
5252
build_config:
5353
dependency: transitive
5454
description:
5555
name: build_config
56-
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
56+
sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187"
5757
url: "https://pub.dev"
5858
source: hosted
59-
version: "1.1.2"
59+
version: "1.2.0"
6060
build_daemon:
6161
dependency: transitive
6262
description:
@@ -65,30 +65,14 @@ packages:
6565
url: "https://pub.dev"
6666
source: hosted
6767
version: "4.0.4"
68-
build_resolvers:
69-
dependency: transitive
70-
description:
71-
name: build_resolvers
72-
sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
73-
url: "https://pub.dev"
74-
source: hosted
75-
version: "2.4.4"
7668
build_runner:
7769
dependency: "direct dev"
7870
description:
7971
name: build_runner
80-
sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
81-
url: "https://pub.dev"
82-
source: hosted
83-
version: "2.4.15"
84-
build_runner_core:
85-
dependency: transitive
86-
description:
87-
name: build_runner_core
88-
sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
72+
sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1"
8973
url: "https://pub.dev"
9074
source: hosted
91-
version: "8.0.0"
75+
version: "2.9.0"
9276
built_collection:
9377
dependency: transitive
9478
description:
@@ -101,10 +85,10 @@ packages:
10185
dependency: transitive
10286
description:
10387
name: built_value
104-
sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27"
88+
sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d
10589
url: "https://pub.dev"
10690
source: hosted
107-
version: "8.10.1"
91+
version: "8.12.0"
10892
characters:
10993
dependency: transitive
11094
description:
@@ -125,10 +109,10 @@ packages:
125109
dependency: transitive
126110
description:
127111
name: cli_launcher
128-
sha256: "5e7e0282b79e8642edd6510ee468ae2976d847a0a29b3916e85f5fa1bfe24005"
112+
sha256: "17d2744fb9a254c49ec8eda582536abe714ea0131533e24389843a4256f82eac"
129113
url: "https://pub.dev"
130114
source: hosted
131-
version: "0.3.1"
115+
version: "0.3.2+1"
132116
clock:
133117
dependency: transitive
134118
description:
@@ -141,10 +125,10 @@ packages:
141125
dependency: transitive
142126
description:
143127
name: code_builder
144-
sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e"
128+
sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243"
145129
url: "https://pub.dev"
146130
source: hosted
147-
version: "4.10.1"
131+
version: "4.11.0"
148132
collection:
149133
dependency: transitive
150134
description:
@@ -181,10 +165,10 @@ packages:
181165
dependency: transitive
182166
description:
183167
name: dart_style
184-
sha256: "5b236382b47ee411741447c1f1e111459c941ea1b3f2b540dde54c210a3662af"
168+
sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697
185169
url: "https://pub.dev"
186170
source: hosted
187-
version: "3.1.0"
171+
version: "3.1.2"
188172
fake_async:
189173
dependency: transitive
190174
description:
@@ -227,14 +211,6 @@ packages:
227211
description: flutter
228212
source: sdk
229213
version: "0.0.0"
230-
frontend_server_client:
231-
dependency: transitive
232-
description:
233-
name: frontend_server_client
234-
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
235-
url: "https://pub.dev"
236-
source: hosted
237-
version: "4.0.0"
238214
glob:
239215
dependency: transitive
240216
description:
@@ -255,10 +231,10 @@ packages:
255231
dependency: transitive
256232
description:
257233
name: http
258-
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
234+
sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007
259235
url: "https://pub.dev"
260236
source: hosted
261-
version: "1.4.0"
237+
version: "1.5.0"
262238
http_multi_server:
263239
dependency: transitive
264240
description:
@@ -283,14 +259,6 @@ packages:
283259
url: "https://pub.dev"
284260
source: hosted
285261
version: "1.0.5"
286-
js:
287-
dependency: transitive
288-
description:
289-
name: js
290-
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
291-
url: "https://pub.dev"
292-
source: hosted
293-
version: "0.7.2"
294262
json_annotation:
295263
dependency: transitive
296264
description:
@@ -303,10 +271,10 @@ packages:
303271
dependency: transitive
304272
description:
305273
name: leak_tracker
306-
sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0"
274+
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
307275
url: "https://pub.dev"
308276
source: hosted
309-
version: "11.0.1"
277+
version: "11.0.2"
310278
leak_tracker_flutter_testing:
311279
dependency: transitive
312280
description:
@@ -412,10 +380,10 @@ packages:
412380
dependency: transitive
413381
description:
414382
name: pool
415-
sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
383+
sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
416384
url: "https://pub.dev"
417385
source: hosted
418-
version: "1.5.1"
386+
version: "1.5.2"
419387
pub_semver:
420388
dependency: transitive
421389
description:
@@ -457,10 +425,10 @@ packages:
457425
dependency: transitive
458426
description:
459427
name: source_gen
460-
sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
428+
sha256: ccf30b0c9fbcd79d8b6f5bfac23199fb354938436f62475e14aea0f29ee0f800
461429
url: "https://pub.dev"
462430
source: hosted
463-
version: "2.0.0"
431+
version: "4.0.1"
464432
source_span:
465433
dependency: transitive
466434
description:
@@ -517,14 +485,6 @@ packages:
517485
url: "https://pub.dev"
518486
source: hosted
519487
version: "0.7.6"
520-
timing:
521-
dependency: transitive
522-
description:
523-
name: timing
524-
sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
525-
url: "https://pub.dev"
526-
source: hosted
527-
version: "1.0.2"
528488
typed_data:
529489
dependency: transitive
530490
description:
@@ -545,18 +505,18 @@ packages:
545505
dependency: transitive
546506
description:
547507
name: vm_service
548-
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
508+
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
549509
url: "https://pub.dev"
550510
source: hosted
551-
version: "15.0.0"
511+
version: "15.0.2"
552512
watcher:
553513
dependency: transitive
554514
description:
555515
name: watcher
556-
sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
516+
sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c"
557517
url: "https://pub.dev"
558518
source: hosted
559-
version: "1.1.1"
519+
version: "1.1.3"
560520
web:
561521
dependency: transitive
562522
description:
@@ -590,5 +550,5 @@ packages:
590550
source: hosted
591551
version: "3.1.3"
592552
sdks:
593-
dart: ">=3.8.0 <4.0.0"
553+
dart: ">=3.9.0 <4.0.0"
594554
flutter: ">=3.18.0-18.0.pre.54"

openapi-generator-annotations/lib/src/openapi_generator_annotations_base.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,9 @@ String _formatMap(Map<String, String> map) {
244244
buffer.write('}');
245245
return buffer.toString();
246246
}
247-
247+
class OpenApiTest{
248+
const OpenApiTest();
249+
}
248250
/// Provides the input spec file to be used.
249251
///
250252
/// Provides the location of the input spec file to be used by the generator.

openapi-generator/lib/src/extensions/type_methods.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'dart:mirrors';
2-
32
import 'package:analyzer/dart/element/type.dart';
43
import 'package:openapi_generator/src/utils.dart';
54
import 'package:openapi_generator_annotations/openapi_generator_annotations.dart';
@@ -60,8 +59,8 @@ extension TypeMethods on ConstantReader {
6059
throw Exception(
6160
'Could not read constant via enumValue<$T>(). $T is not a Dart enum.');
6261
}
63-
64-
if (!instanceOf(TypeChecker.fromRuntime(T))) {
62+
63+
if (!instanceOf(TypeChecker.typeNamed(T))) {
6564
throw Exception('Not an instance of $T.');
6665
}
6766

@@ -174,12 +173,13 @@ extension ReadProperty on ConstantReader {
174173
} else if (isA(v, List)) {
175174
return v.listValue.map(convertToPropertyValue).toList() as T;
176175
} else if (isA(v, Enum)) {
177-
return v.enumValue();
176+
return v.enumValue<T>();
178177
} else {
179178
return null;
180179
}
181180
}
182181
}
183182

184-
bool isA(ConstantReader? v, Type t) =>
185-
v?.instanceOf(TypeChecker.fromRuntime(t)) ?? false;
183+
bool isA(ConstantReader? v, Type t) {
184+
return v?.instanceOf(TypeChecker.typeNamed(t)) ?? false;
185+
}

openapi-generator/lib/src/openapi_generator_runner.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
2626
@override
2727
FutureOr<String> generateForAnnotatedElement(
2828
Element element, ConstantReader annotations, BuildStep buildStep) async {
29+
2930
logOutputMessage(
3031
log: log,
3132
communication: OutputMessage(
@@ -216,7 +217,6 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
216217
}
217218

218219
// Skip spec check removed - deprecated functionality
219-
220220
await runOpenApiJar(arguments: args);
221221
await fetchDependencies(baseCommand: baseCommand, args: args);
222222
await generateSources(baseCommand: baseCommand, args: args);

openapi-generator/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ environment:
77
sdk: '>=2.15.0 <4.0.0'
88

99
dependencies:
10-
build: '>=1.0.0 <=3.0.0'
11-
source_gen: '>=1.0.0 <=5.0.0'
10+
build: '>=1.0.0 <=4.0.0'
11+
source_gen: '>=4.0.1 <=5.0.0'
1212
path: '>=1.0.0 <=2.0.0'
1313
openapi_generator_annotations: ^6.1.0
14-
analyzer: '>5.12.0 <9.0.0'
14+
analyzer: '>8.0.0 <9.0.0'
1515
openapi_generator_cli: ^6.1.0
1616
crypto: '>=3.0.6 <=4.0.0'
1717
meta: '>=1.15.0 <=2.0.0'

0 commit comments

Comments
 (0)