diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java index 73ddd85201ce..01fd0b7fe3ab 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java @@ -70,6 +70,7 @@ import java.util.logging.Logger; import static com.yahoo.text.Lowercase.toLowerCase; +import static com.yahoo.yolean.Exceptions.uncheck; /** @@ -644,9 +645,15 @@ private void preprocess(File appDir, File dir, Zone zone) throws IOException { private void validateServicesFile() throws IOException { File servicesFile = getServicesFile(); if ( ! servicesFile.exists()) - throw new IllegalArgumentException(SERVICES + " does not exist in application package"); + throw new IllegalArgumentException(SERVICES + " does not exist in application package. " + + "There are " + filesInApplicationPackage() + " files in the directory"); if (IOUtils.readFile(servicesFile).isEmpty()) - throw new IllegalArgumentException(SERVICES + " in application package is empty"); + throw new IllegalArgumentException(SERVICES + " in application package is empty. " + + "There are " + filesInApplicationPackage() + " files in the directory"); + } + + private long filesInApplicationPackage() { + return uncheck(() -> Files.list(appDir.toPath()).count()); } private void copyUserDefsIntoApplication() { diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java index c93e1a167262..316b222059f2 100644 --- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java +++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java @@ -129,7 +129,9 @@ public void failOnMissingServicesXml() throws IOException { FilesApplicationPackage app = FilesApplicationPackage.fromFile(appDir); var exception = assertThrows(IllegalArgumentException.class, () -> app.preprocess(new Zone(Environment.dev, RegionName.defaultName()), new BaseDeployLogger())); - assertEquals("services.xml does not exist in application package", exception.getMessage()); + String message = exception.getMessage(); + assertTrue(message.startsWith("services.xml does not exist in application package")); + assertTrue(message.contains("There are 4 files in the directory")); } @Test diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java index 25e4e004a61e..c77bd34def24 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java @@ -180,7 +180,7 @@ void testBadZipDeployment() throws Exception { """ { "error-code": "BAD_REQUEST", - "message": "Error preprocessing application package for test.default, session 2: services.xml does not exist in application package" + "message": "Error preprocessing application package for test.default, session 2: services.xml does not exist in application package. There are 1 files in the directory" } """); }