19
19
import java .io .File ;
20
20
import java .io .IOException ;
21
21
import java .io .PrintStream ;
22
+ import java .net .URISyntaxException ;
22
23
import java .net .URL ;
23
24
import java .nio .charset .StandardCharsets ;
24
25
import java .nio .file .Files ;
35
36
import org .junit .jupiter .api .BeforeAll ;
36
37
import org .junit .jupiter .api .BeforeEach ;
37
38
import org .junit .jupiter .api .Test ;
39
+ import org .junit .jupiter .api .condition .EnabledOnOs ;
40
+ import org .junit .jupiter .api .condition .OS ;
38
41
import org .junit .jupiter .api .io .TempDir ;
39
42
import org .junit .jupiter .params .ParameterizedTest ;
40
43
import org .junit .jupiter .params .provider .MethodSource ;
@@ -157,6 +160,16 @@ public void testSvgGenToStdout( final KnownVersion metaModelVersion ) {
157
160
assertThat ( stdoutBuffer .toString ( StandardCharsets .UTF_8 ) ).startsWith ( "<svg" );
158
161
}
159
162
163
+ @ EnabledOnOs ( OS .WINDOWS )
164
+ @ ParameterizedTest
165
+ @ MethodSource ( value = "allVersions" )
166
+ public void testSvgGenToFileWithDefLanguageAndExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
167
+ final File outputDir = outputDirectory .toFile ();
168
+ createValidArgsExecution ( metaModelVersion , "to" , "svg" , "-o" , getPathForArtifact ( "AspectWithEntity.svg" ),
169
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
170
+ validateFile ( outputDir , "AspectWithEntity.svg" );
171
+ }
172
+
160
173
@ ParameterizedTest
161
174
@ MethodSource ( value = "allVersions" )
162
175
public void testPngGenToFileWithDefLanguage ( final KnownVersion metaModelVersion ) {
@@ -181,6 +194,16 @@ public void testPngGenToFileFailForNonexistentLanguage( final KnownVersion metaM
181
194
.hasMessageContaining ( "The model does not contain the desired language" );
182
195
}
183
196
197
+ @ EnabledOnOs ( OS .WINDOWS )
198
+ @ ParameterizedTest
199
+ @ MethodSource ( value = "allVersions" )
200
+ public void testPngGenToFileWithDefLanguageAndExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
201
+ final File outputDir = outputDirectory .toFile ();
202
+ createValidArgsExecution ( metaModelVersion , "to" , "png" , "-o" , getPathForArtifact ( "AspectWithEntity.png" ),
203
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
204
+ validateFile ( outputDir , "AspectWithEntity.png" );
205
+ }
206
+
184
207
@ ParameterizedTest
185
208
@ MethodSource ( value = "allVersions" )
186
209
public void testDotGenToFileWithDefLanguage ( final KnownVersion metaModelVersion ) {
@@ -212,6 +235,16 @@ public void testDotGenToStdout( final KnownVersion metaModelVersion ) {
212
235
assertThat ( stdoutBuffer .toString ( StandardCharsets .UTF_8 ) ).startsWith ( "digraph AspectModel" );
213
236
}
214
237
238
+ @ EnabledOnOs ( OS .WINDOWS )
239
+ @ ParameterizedTest
240
+ @ MethodSource ( value = "allVersions" )
241
+ public void testDotGenToFileWithDefLanguageAndExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
242
+ final File outputDir = outputDirectory .toFile ();
243
+ createValidArgsExecution ( metaModelVersion , "to" , "dot" , "-o" , getPathForArtifact ( "AspectWithEntity.dot" ),
244
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
245
+ validateFile ( outputDir , "AspectWithEntity.dot" );
246
+ }
247
+
215
248
@ ParameterizedTest
216
249
@ MethodSource ( value = "allVersions" )
217
250
public void testJsonToFile ( final KnownVersion metaModelVersion ) {
@@ -227,6 +260,16 @@ public void testJsonToStdout( final KnownVersion metaModelVersion ) {
227
260
assertThat ( stdoutBuffer .toString ( StandardCharsets .UTF_8 ) ).startsWith ( "{" );
228
261
}
229
262
263
+ @ EnabledOnOs ( OS .WINDOWS )
264
+ @ ParameterizedTest
265
+ @ MethodSource ( value = "allVersions" )
266
+ public void testJsonToFileWithExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
267
+ final File outputDir = outputDirectory .toFile ();
268
+ createValidArgsExecution ( metaModelVersion , "to" , "json" , "-o" , getPathForArtifact ( "AspectWithEntity.json" ),
269
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
270
+ validateFile ( outputDir , "AspectWithEntity.json" );
271
+ }
272
+
230
273
@ ParameterizedTest
231
274
@ MethodSource ( value = "allVersions" )
232
275
public void testJsonSchemaToFile ( final KnownVersion metaModelVersion ) {
@@ -242,6 +285,16 @@ public void testJsonSchemaToStdout( final KnownVersion metaModelVersion ) {
242
285
assertThat ( stdoutBuffer .toString ( StandardCharsets .UTF_8 ) ).startsWith ( "{" );
243
286
}
244
287
288
+ @ EnabledOnOs ( OS .WINDOWS )
289
+ @ ParameterizedTest
290
+ @ MethodSource ( value = "allVersions" )
291
+ public void testJsonSchemaToFileWithExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
292
+ final File outputDir = outputDirectory .toFile ();
293
+ createValidArgsExecution ( metaModelVersion , "to" , "schema" , "-o" , getPathForArtifact ( "AspectWithEntity.schema.json" ),
294
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
295
+ validateFile ( outputDir , "AspectWithEntity.schema.json" );
296
+ }
297
+
245
298
@ ParameterizedTest
246
299
@ MethodSource ( value = "allVersions" )
247
300
public void testGenerateAspectModelJavaClassWithDefaultPackageName ( final KnownVersion metaModelVersion ) {
@@ -256,6 +309,22 @@ public void testGenerateAspectModelJavaClassWithDefaultPackageName( final KnownV
256
309
validateFile ( directory , "TestEntity.java" );
257
310
}
258
311
312
+ @ EnabledOnOs ( OS .WINDOWS )
313
+ @ ParameterizedTest
314
+ @ MethodSource ( value = "allVersions" )
315
+ public void testGenerateAspectModelJavaClassWithDefaultPackageNameAndExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
316
+ final File outputDir = outputDirectory .toFile ();
317
+
318
+ createValidArgsExecution ( metaModelVersion , "to" , "java" , "-d" , outputDirectory .toString (),
319
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
320
+ final File directory = Paths .get ( outputDir .getAbsolutePath (), "io" , "openmanufacturing" , "test" ).toFile ();
321
+ assertThat ( directory ).exists ();
322
+ assertThat ( directory ).isDirectory ();
323
+
324
+ validateFile ( directory , "AspectWithEntity.java" );
325
+ validateFile ( directory , "TestEntity.java" );
326
+ }
327
+
259
328
@ ParameterizedTest
260
329
@ MethodSource ( value = "allVersions" )
261
330
public void testGenerateStaticMetaModelJavaClassWithDefaultPackageName ( final KnownVersion metaModelVersion )
@@ -276,7 +345,14 @@ public void testGenerateStaticMetaModelJavaClassWithDefaultPackageName( final Kn
276
345
public void testValidation ( final KnownVersion metaModelVersion ) {
277
346
createValidArgsExecution ( metaModelVersion , "validate" );
278
347
}
279
-
348
+
349
+ @ EnabledOnOs ( OS .WINDOWS )
350
+ @ ParameterizedTest
351
+ @ MethodSource ( value = "allVersions" )
352
+ public void testValidationWithCustomResolver ( final KnownVersion metaModelVersion ) throws IOException , URISyntaxException {
353
+ createValidArgsExecution ( metaModelVersion , "validate" , "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
354
+ }
355
+
280
356
@ ParameterizedTest
281
357
@ MethodSource ( value = "allVersions" )
282
358
public void testPrettyPrintingToFile ( final KnownVersion metaModelVersion ) {
@@ -371,6 +447,14 @@ public void testGenerateOpenApiSpecWithResourcePath( final KnownVersion metaMode
371
447
createValidArgsExecution ( metaModelVersion , "to" , "openapi" , "-j" , "-b" , "https://test.example.com" , "-r" , "my-aspect" );
372
448
}
373
449
450
+ @ EnabledOnOs ( OS .WINDOWS )
451
+ @ ParameterizedTest
452
+ @ MethodSource ( value = "allVersions" )
453
+ public void testGenerateOpenApiSpecWithResourcePathAndExternalModelResolver ( final KnownVersion metaModelVersion ) throws URISyntaxException {
454
+ createValidArgsExecution ( metaModelVersion , "to" , "openapi" , "-j" , "-b" , "https://test.example.com" , "-r" , "my-aspect" ,
455
+ "--custom-resolver" , getResolverCommand ( metaModelVersion ) );
456
+ }
457
+
374
458
private void createValidArgsExecution ( final KnownVersion testedVersion , final String ... args ) {
375
459
assertThat ( executeCommand ( testedVersion , args ) ).isEqualTo ( 0 );
376
460
}
@@ -493,4 +577,11 @@ private Path findTestsJar( final Path searchDirectory ) throws IOException {
493
577
.get ();
494
578
}
495
579
}
580
+
581
+ private String getResolverCommand ( final KnownVersion metaModelVersion ) throws URISyntaxException {
582
+ final Path targetDirectory = Paths .get ( getClass ().getResource ( "/" ).toURI () ).getParent ();
583
+ final Path testClasses = Paths .get ( targetDirectory .toString (), "test-classes" );
584
+ final Path modelsRoot = Paths .get ( targetDirectory .toString (), "classes" , "valid" );
585
+ return testClasses + "\\ model_resolver.bat " + modelsRoot + " " + metaModelVersion .toString ().toLowerCase ();
586
+ }
496
587
}
0 commit comments