diff --git a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java index 5e0858ab1ba..52cfb464a16 100644 --- a/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java +++ b/validator/client/src/test/java/tech/pegasys/teku/validator/client/loader/ValidatorLoaderTest.java @@ -33,6 +33,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.function.Supplier; @@ -776,33 +777,44 @@ void doNotInitializeInteropValidatorsWhenInteropIsDisabled() { @Test void shouldThrowWhenAnyErrorOccurs(@TempDir Path tempDir) throws Exception { - writeKeystore(tempDir); - writeBadKeystore(tempDir); - final ValidatorConfig config = - ValidatorConfig.builder() - .validatorKeys( - List.of(tempDir.toAbsolutePath() + File.pathSeparator + tempDir.toAbsolutePath())) - .build(); - final ValidatorLoader validatorLoader = - ValidatorLoader.create( - spec, - config, - disabledInteropConfig, - httpClientFactory, - slashingProtector, - slashingProtectionLogger, - publicKeyLoader, - asyncRunner, - metricsSystem, - Optional.empty(), - (publicKey) -> Optional.empty()); - - assertThatThrownBy(validatorLoader::loadValidators) - .isExactlyInstanceOf(InvalidConfigurationException.class); - final OwnedValidators validators = validatorLoader.getOwnedValidators(); - - assertThat(validators.getValidatorCount()).isEqualTo(0); - checkGraffitiProviderTypes(validators.getValidators(), FileBackedGraffitiProvider.class); + ValidatorLoader validatorLoader = null; + try { + writeKeystore(tempDir); + writeBadKeystore(tempDir); + final ValidatorConfig config = + ValidatorConfig.builder() + .validatorKeys( + List.of(tempDir.toAbsolutePath() + File.pathSeparator + tempDir.toAbsolutePath())) + .build(); + validatorLoader = + ValidatorLoader.create( + spec, + config, + disabledInteropConfig, + httpClientFactory, + slashingProtector, + slashingProtectionLogger, + publicKeyLoader, + asyncRunner, + metricsSystem, + Optional.empty(), + (publicKey) -> Optional.empty()); + + assertThatThrownBy(validatorLoader::loadValidators) + .isExactlyInstanceOf(InvalidConfigurationException.class); + } finally { + // Ensure all files and directories within tempDir are deleted + Files.walk(tempDir) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + OwnedValidators validators = null; + if (validatorLoader != null) { + validators = validatorLoader.getOwnedValidators(); + assertThat(validators.getValidatorCount()).isEqualTo(0); + checkGraffitiProviderTypes(validators.getValidators(), FileBackedGraffitiProvider.class); + } } static void writeKeystore(final Path tempDir) throws Exception {