diff --git a/src/main/java/com/crowdin/cli/commands/actions/DownloadAction.java b/src/main/java/com/crowdin/cli/commands/actions/DownloadAction.java index dbedd001..9605a9ba 100644 --- a/src/main/java/com/crowdin/cli/commands/actions/DownloadAction.java +++ b/src/main/java/com/crowdin/cli/commands/actions/DownloadAction.java @@ -281,14 +281,6 @@ public void act(Outputter out, PropertiesWithFiles pb, ProjectClient client) { omittedFilesNoSources.add(allOmittedFilesNoSources); } - if (!anyFileDownloaded.get()) { - if (project.getSkipUntranslatedFiles() || skipUntranslatedFiles.get()) { - out.println(WARNING.withIcon(RESOURCE_BUNDLE.getString("message.warning.no_file_to_download_skipuntranslated"))); - } else { - out.println(WARNING.withIcon(RESOURCE_BUNDLE.getString("message.warning.no_file_to_download"))); - } - } - if (!ignoreMatch && !plainView) { totalOmittedFiles = totalOmittedFiles.entrySet().stream() .filter(entry -> !entry.getValue().isEmpty()) @@ -322,6 +314,14 @@ public void act(Outputter out, PropertiesWithFiles pb, ProjectClient client) { out.println(EMPTY.withIcon(RESOURCE_BUNDLE.getString("message.faq_link"))); } } + + if (!anyFileDownloaded.get()) { + if (project.getSkipUntranslatedFiles() || skipUntranslatedFiles.get()) { + throw new ExitCodeExceptionMapper.ValidationException(RESOURCE_BUNDLE.getString("message.warning.no_file_to_download_skipuntranslated")); + } else { + throw new ExitCodeExceptionMapper.ValidationException(WARNING.withIcon(RESOURCE_BUNDLE.getString("message.warning.no_file_to_download"))); + } + } } catch (ProjectBuildFailedException e) { out.println(WARNING.withIcon(RESOURCE_BUNDLE.getString("message.translations_build_unsuccessful"))); } finally { diff --git a/src/test/java/com/crowdin/cli/commands/actions/DownloadActionTest.java b/src/test/java/com/crowdin/cli/commands/actions/DownloadActionTest.java index 76f11ab6..a3f32979 100644 --- a/src/test/java/com/crowdin/cli/commands/actions/DownloadActionTest.java +++ b/src/test/java/com/crowdin/cli/commands/actions/DownloadActionTest.java @@ -5,6 +5,7 @@ import com.crowdin.cli.commands.NewAction; import com.crowdin.cli.commands.Outputter; import com.crowdin.cli.commands.functionality.FilesInterface; +import com.crowdin.cli.commands.picocli.ExitCodeExceptionMapper; import com.crowdin.cli.properties.PropertiesWithFiles; import com.crowdin.cli.properties.NewPropertiesWithFilesUtilBuilder; import com.crowdin.cli.properties.helper.FileHelperTest; @@ -87,7 +88,8 @@ public void testEmptyProject() throws IOException, ResponseException { NewAction action = new DownloadAction(files, false, null, null, false, null, false, false, false, false, false); - action.act(Outputter.getDefault(), pb, client); + + assertThrows(ExitCodeExceptionMapper.ValidationException.class, () -> action.act(Outputter.getDefault(), pb, client)); verify(client).downloadFullProject(null); verify(client).startBuildingTranslation(eq(buildProjectTranslationRequest));