From 85ac1259af062c70dc62f28fb1bfe40fa5d95b60 Mon Sep 17 00:00:00 2001 From: Ludy Date: Tue, 27 May 2025 17:09:02 +0200 Subject: [PATCH] Replace `any()` with `anyList()` in Mockito tests for stronger type safety (#3583) # Description of Changes Please provide a summary of the changes, including: - **What was changed** - Updated static imports in `CheckProgramInstallTest.java` and `PDFToFileTest.java` from `ArgumentMatchers.any` to `ArgumentMatchers.anyList`. - Changed all calls to `runCommandWithOutputHandling(any(List.class))` to `runCommandWithOutputHandling(anyList())`. - Removed unused `import java.util.List;` statements where no longer needed. - **Why the change was made** - `anyList()` provides stronger type safety than the raw `any()`, avoiding unchecked warnings and making intent clearer when matching `List` arguments in Mockito. - Cleaning up unused imports keeps the test codebase tidy and free of clutter. --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details. --- .../common/util/CheckProgramInstallTest.java | 26 ++++++++++--------- .../software/common/util/PDFToFileTest.java | 9 ++++--- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/common/src/test/java/stirling/software/common/util/CheckProgramInstallTest.java b/common/src/test/java/stirling/software/common/util/CheckProgramInstallTest.java index 22ebeb240..ae8132618 100644 --- a/common/src/test/java/stirling/software/common/util/CheckProgramInstallTest.java +++ b/common/src/test/java/stirling/software/common/util/CheckProgramInstallTest.java @@ -1,24 +1,26 @@ package stirling.software.common.util; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import java.io.IOException; import java.lang.reflect.Field; import java.util.Arrays; -import java.util.List; + import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; import org.mockito.Mockito; + import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; class CheckProgramInstallTest { @@ -140,7 +142,7 @@ class CheckProgramInstallTest { void testGetAvailablePythonCommand_WhenNoPythonIsAvailable() throws IOException, InterruptedException { // Arrange - when(mockExecutor.runCommandWithOutputHandling(any(List.class))) + when(mockExecutor.runCommandWithOutputHandling(anyList())) .thenThrow(new IOException("Command not found")); // Act @@ -168,7 +170,7 @@ class CheckProgramInstallTest { String firstCall = CheckProgramInstall.getAvailablePythonCommand(); // Change the mock to simulate a change in the environment - when(mockExecutor.runCommandWithOutputHandling(any(List.class))) + when(mockExecutor.runCommandWithOutputHandling(anyList())) .thenThrow(new IOException("Command not found")); String secondCall = CheckProgramInstall.getAvailablePythonCommand(); diff --git a/common/src/test/java/stirling/software/common/util/PDFToFileTest.java b/common/src/test/java/stirling/software/common/util/PDFToFileTest.java index 39cdbf913..6f4b4af92 100644 --- a/common/src/test/java/stirling/software/common/util/PDFToFileTest.java +++ b/common/src/test/java/stirling/software/common/util/PDFToFileTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.when; @@ -132,7 +133,7 @@ class PDFToFileTest { .when(() -> ProcessExecutor.getInstance(ProcessExecutor.Processes.PDFTOHTML)) .thenReturn(mockProcessExecutor); - when(mockProcessExecutor.runCommandWithOutputHandling(any(List.class), any(File.class))) + when(mockProcessExecutor.runCommandWithOutputHandling(anyList(), any(File.class))) .thenAnswer( invocation -> { // When command is executed, simulate creation of output files @@ -175,7 +176,7 @@ class PDFToFileTest { .when(() -> ProcessExecutor.getInstance(ProcessExecutor.Processes.PDFTOHTML)) .thenReturn(mockProcessExecutor); - when(mockProcessExecutor.runCommandWithOutputHandling(any(List.class), any(File.class))) + when(mockProcessExecutor.runCommandWithOutputHandling(anyList(), any(File.class))) .thenAnswer( invocation -> { // When command is executed, simulate creation of output files @@ -251,7 +252,7 @@ class PDFToFileTest { .when(() -> ProcessExecutor.getInstance(ProcessExecutor.Processes.PDFTOHTML)) .thenReturn(mockProcessExecutor); - when(mockProcessExecutor.runCommandWithOutputHandling(any(List.class), any(File.class))) + when(mockProcessExecutor.runCommandWithOutputHandling(anyList(), any(File.class))) .thenAnswer( invocation -> { // When command is executed, simulate creation of output files @@ -537,7 +538,7 @@ class PDFToFileTest { .when(() -> ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE)) .thenReturn(mockProcessExecutor); - when(mockProcessExecutor.runCommandWithOutputHandling(any(List.class))) + when(mockProcessExecutor.runCommandWithOutputHandling(anyList())) .thenAnswer( invocation -> { // When command is executed, find the output directory argument