From 0b0f3b131d443235697d233f2ac2d3c8ba00951d Mon Sep 17 00:00:00 2001 From: Daniel Chao Date: Fri, 6 Jun 2025 17:26:38 -0700 Subject: [PATCH] Add ResourceReaders#fromServiceProviders to preconfigured evaluator (#1094) The preconfigured evaluator currently adds module key factories from service providers, but not resource readers. This means that users of pkl-spring, for example, cannot add custom resource readers. This is also inconsistent (in the preconfigured evaluator, `import` can use custom schemes, but not `read`). --- .../src/main/java/org/pkl/core/EvaluatorBuilder.java | 4 +++- .../src/test/kotlin/org/pkl/core/EvaluatorBuilderTest.kt | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pkl-core/src/main/java/org/pkl/core/EvaluatorBuilder.java b/pkl-core/src/main/java/org/pkl/core/EvaluatorBuilder.java index 8b5ad5d4..aa7ae8dd 100644 --- a/pkl-core/src/main/java/org/pkl/core/EvaluatorBuilder.java +++ b/pkl-core/src/main/java/org/pkl/core/EvaluatorBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -91,6 +91,7 @@ public final class EvaluatorBuilder { *
  • {@link ResourceReaders#https} *
  • {@link ResourceReaders#pkg} *
  • {@link ResourceReaders#projectpackage} + *
  • {@link ResourceReaders#fromServiceProviders} *
  • {@link System#getProperties} * */ @@ -108,6 +109,7 @@ public final class EvaluatorBuilder { .addResourceReader(ResourceReaders.https()) .addResourceReader(ResourceReaders.pkg()) .addResourceReader(ResourceReaders.projectpackage()) + .addResourceReaders(ResourceReaders.fromServiceProviders()) .addModuleKeyFactory(ModuleKeyFactories.standardLibrary); if (!TruffleOptions.AOT) { diff --git a/pkl-core/src/test/kotlin/org/pkl/core/EvaluatorBuilderTest.kt b/pkl-core/src/test/kotlin/org/pkl/core/EvaluatorBuilderTest.kt index 4a13f11e..8baa0059 100644 --- a/pkl-core/src/test/kotlin/org/pkl/core/EvaluatorBuilderTest.kt +++ b/pkl-core/src/test/kotlin/org/pkl/core/EvaluatorBuilderTest.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.pkl.core.project.Project +import org.pkl.core.resource.TestResourceReader class EvaluatorBuilderTest { @Test @@ -35,6 +36,12 @@ class EvaluatorBuilderTest { assertThat(builder.externalProperties).isEqualTo(System.getProperties()) } + @Test + fun `preconfigured builder adds resource readers from service providers`() { + val builder = EvaluatorBuilder.preconfigured() + assertThat(builder.resourceReaders).hasAtLeastOneElementOfType(TestResourceReader::class.java) + } + @Test fun `unconfigured builder does not set process env vars`() { val builder = EvaluatorBuilder.unconfigured()