4141import io .fabric8 .kubernetes .client .utils .KubernetesSerialization ;
4242import io .fabric8 .kubernetes .client .utils .Serialization ;
4343import io .fabric8 .kubernetes .model .Scope ;
44+ import org .junit .jupiter .api .BeforeEach ;
4445import org .junit .jupiter .api .RepeatedTest ;
4546import org .junit .jupiter .api .Test ;
47+ import org .junit .jupiter .api .io .TempDir ;
4648import org .opentest4j .AssertionFailedError ;
4749import org .slf4j .Logger ;
4850import org .slf4j .LoggerFactory ;
4951
5052import java .io .ByteArrayInputStream ;
5153import java .io .ByteArrayOutputStream ;
5254import java .io .File ;
53- import java .io .FileInputStream ;
5455import java .net .URL ;
5556import java .nio .file .Files ;
57+ import java .nio .file .Path ;
5658import java .util .ArrayList ;
5759import java .util .Collection ;
5860import java .util .List ;
6163import java .util .concurrent .ConcurrentHashMap ;
6264
6365import static io .fabric8 .crdv2 .generator .CRDGeneratorAssertions .assertFileEquals ;
66+ import static org .assertj .core .api .Assertions .assertThat ;
6467import static org .junit .jupiter .api .Assertions .assertEquals ;
6568import static org .junit .jupiter .api .Assertions .assertFalse ;
6669import static org .junit .jupiter .api .Assertions .assertNotNull ;
7073
7174class CRDGeneratorTest {
7275
73- private final TestCRDOutput output = new TestCRDOutput ();
7476 protected boolean parallelCRDGeneration ;
77+ @ TempDir
78+ private File tempDir ;
79+ private TestCRDOutput output ;
80+
81+ @ BeforeEach
82+ void setUp () {
83+ output = new TestCRDOutput ();
84+ }
7585
7686 @ Test
7787 void choosingCRDVersionsShouldWork () {
@@ -458,12 +468,11 @@ void checkCRDGenerator() {
458468 }
459469
460470 @ Test
461- void checkGenerationIsDeterministic () throws Exception {
471+ void checkGenerationIsDeterministic () {
462472 // generated CRD
463- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
464473 final String crdName = CustomResourceInfo .fromClass (Complex .class ).crdName ();
465474 final CRDGenerationInfo crdInfo = newCRDGenerator ()
466- .inOutputDir (outputDir )
475+ .inOutputDir (tempDir )
467476 .forCRDVersions ("v1" )
468477 .customResourceClasses (Complex .class )
469478 .detailedGenerate ();
@@ -475,37 +484,27 @@ void checkGenerationIsDeterministic() throws Exception {
475484 assertNotNull (crdResource );
476485 final File expectedCrdFile = new File (crdResource .getFile ());
477486 assertFileEquals (expectedCrdFile , crdFile );
478-
479- // only delete the generated files if the test is successful
480- assertTrue (crdFile .delete ());
481- assertTrue (outputDir .delete ());
482487 }
483488
484489 @ Test
485490 void checkMinQuotesDefault () throws Exception {
486- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
487491 final String crdName = CustomResourceInfo .fromClass (Complex .class ).crdName ();
488492 CRDGenerationInfo crdInfo = newCRDGenerator ()
489- .inOutputDir (outputDir )
493+ .inOutputDir (tempDir )
490494 .forCRDVersions ("v1" )
491495 .customResourceClasses (Complex .class )
492496 .detailedGenerate ();
493497
494498 File crdFile = new File (crdInfo .getCRDInfos (crdName ).get ("v1" ).getFilePath ());
495499 String crd = Files .readString (crdFile .toPath ());
496500 assertTrue (crd .contains ("\" complexkinds.example.com\" " ));
497-
498- // only delete the generated files if the test is successful
499- assertTrue (crdFile .delete ());
500- assertTrue (outputDir .delete ());
501501 }
502502
503503 @ Test
504504 void checkMinQuotesFalse () throws Exception {
505- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
506505 final String crdName = CustomResourceInfo .fromClass (Complex .class ).crdName ();
507506 CRDGenerationInfo crdInfo = newCRDGenerator ()
508- .inOutputDir (outputDir )
507+ .inOutputDir (tempDir )
509508 .forCRDVersions ("v1" )
510509 .customResourceClasses (Complex .class )
511510 .withMinQuotes (false )
@@ -514,18 +513,13 @@ void checkMinQuotesFalse() throws Exception {
514513 File crdFile = new File (crdInfo .getCRDInfos (crdName ).get ("v1" ).getFilePath ());
515514 String crd = Files .readString (crdFile .toPath ());
516515 assertTrue (crd .contains ("\" complexkinds.example.com\" " ));
517-
518- // only delete the generated files if the test is successful
519- assertTrue (crdFile .delete ());
520- assertTrue (outputDir .delete ());
521516 }
522517
523518 @ Test
524519 void checkMinQuotesTrue () throws Exception {
525- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
526520 final String crdName = CustomResourceInfo .fromClass (Complex .class ).crdName ();
527521 CRDGenerationInfo crdInfo = newCRDGenerator ()
528- .inOutputDir (outputDir )
522+ .inOutputDir (tempDir )
529523 .forCRDVersions ("v1" )
530524 .customResourceClasses (Complex .class )
531525 .withMinQuotes (true )
@@ -535,23 +529,18 @@ void checkMinQuotesTrue() throws Exception {
535529 String crd = Files .readString (crdFile .toPath ());
536530 assertTrue (crd .contains ("complexkinds.example.com" ));
537531 assertFalse (crd .contains ("\" complexkinds.example.com\" " ));
538-
539- // only delete the generated files if the test is successful
540- assertTrue (crdFile .delete ());
541- assertTrue (outputDir .delete ());
542532 }
543533
544534 @ RepeatedTest (value = 10 )
545535 void checkGenerationMultipleVersionsOfCRDsIsDeterministic () throws Exception {
546536 // generated CRD
547- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
548537 final CustomResourceInfo infoV1 = CustomResourceInfo .fromClass (Multiple .class );
549538 final CustomResourceInfo infoV2 = CustomResourceInfo .fromClass (io .fabric8 .crdv2 .example .multiple .v2 .Multiple .class );
550539 assertEquals (infoV1 .crdName (), infoV2 .crdName ());
551540 final String crdName = infoV1 .crdName ();
552541
553542 final CRDGenerationInfo crdInfo = newCRDGenerator ()
554- .inOutputDir (outputDir )
543+ .inOutputDir (tempDir )
555544 .customResourceClasses (Multiple .class ,
556545 io .fabric8 .crdv2 .example .multiple .v2 .Multiple .class )
557546 .forCRDVersions ("v1" )
@@ -565,20 +554,15 @@ void checkGenerationMultipleVersionsOfCRDsIsDeterministic() throws Exception {
565554
566555 final File expectedCrdFile = new File (crdResource .getFile ());
567556 assertFileEquals (expectedCrdFile , crdFile );
568-
569- // only delete the generated files if the test is successful
570- assertTrue (crdFile .delete ());
571- assertTrue (outputDir .delete ());
572557 }
573558
574559 @ Test
575560 void checkK8sValidationRules () throws Exception {
576561 // generated CRD
577- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
578562 final String crdName = CustomResourceInfo .fromClass (K8sValidation .class ).crdName ();
579563
580564 final CRDGenerationInfo crdInfo = newCRDGenerator ()
581- .inOutputDir (outputDir )
565+ .inOutputDir (tempDir )
582566 .customResourceClasses (K8sValidation .class )
583567 .forCRDVersions ("v1" )
584568 .detailedGenerate ();
@@ -591,20 +575,15 @@ void checkK8sValidationRules() throws Exception {
591575
592576 final File expectedCrdFile = new File (crdResource .getFile ());
593577 assertFileEquals (expectedCrdFile , crdFile );
594-
595- // only delete the generated files if the test is successful
596- assertTrue (crdFile .delete ());
597- assertTrue (outputDir .delete ());
598578 }
599579
600580 @ Test
601581 void checkPostProcessing () throws Exception {
602582 // generated CRD
603- final File outputDir = Files .createTempDirectory ("crd-" ).toFile ();
604583 final String crdName = CustomResourceInfo .fromClass (Simplest .class ).crdName ();
605584
606585 final CRDGenerationInfo crdInfo = newCRDGenerator ()
607- .inOutputDir (outputDir )
586+ .inOutputDir (tempDir )
608587 .customResourceClasses (Simplest .class )
609588 .forCRDVersions ("v1" )
610589 .withPostProcessor (new CRDPostProcessor () {
@@ -617,16 +596,10 @@ public HasMetadata process(HasMetadata crd, String crdSpecVersion) {
617596 })
618597 .detailedGenerate ();
619598
620- final File crdFile = new File (crdInfo .getCRDInfos (crdName ).get ("v1" ).getFilePath ());
621- final var serialization = new KubernetesSerialization ();
622- final var crd = serialization .unmarshal (new FileInputStream (crdFile ), HasMetadata .class );
623- assertNotNull (crd );
624- assertEquals (crdName , crd .getMetadata ().getName ());
625- assertEquals ("bar" , crd .getMetadata ().getLabels ().get ("foo" ));
626-
627- // only delete the generated files if the test is successful
628- assertTrue (crdFile .delete ());
629- assertTrue (outputDir .delete ());
599+ assertThat (new KubernetesSerialization ().unmarshal (
600+ Files .newInputStream (Path .of (crdInfo .getCRDInfos (crdName ).get ("v1" ).getFilePath ())), HasMetadata .class ))
601+ .hasFieldOrPropertyWithValue ("metadata.name" , crdName )
602+ .hasFieldOrPropertyWithValue ("metadata.labels.foo" , "bar" );
630603 }
631604
632605 private CustomResourceDefinitionVersion checkCRD (Class <? extends CustomResource <?, ?>> customResource , String kind ,
0 commit comments