Skip to content

Commit

Permalink
Fix posix tests in DefaultLspManager for Windows (#333)
Browse files Browse the repository at this point in the history
DefaultLspManagerTest fails the assertions relating to verifying posix permissions on a Windows device.
This change skips posix related assertions when run on a Windows device
  • Loading branch information
shruti0085 authored Jan 27, 2025
1 parent 283be03 commit c2ccd1b
Showing 1 changed file with 15 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package software.aws.toolkits.eclipse.amazonq.lsp.manager;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
Expand Down Expand Up @@ -111,10 +110,7 @@ final void testGetLspInstallationWithOverride(final boolean isWindows, final Str
doReturn(expectedResult).when(lspManager).getLocalLspOverride();

// confirm file does not have posix permission upon creation
assertFalse(verifyPosixPermissions(serverCommand));

mockedStaticArtifactUtils.when(() -> ArtifactUtils.hasPosixFilePermissions(any(Path.class)))
.thenReturn(isWindows);
verifyPosixPermissions(serverCommand, false);

LspInstallResult result = lspManager.getLspInstallation();
assertEquals(expectedResult, result);
Expand All @@ -128,7 +124,7 @@ final void testGetLspInstallationWithOverride(final boolean isWindows, final Str

// verify proper posix permissions given platform
mockedStaticArtifactUtils.verify(() -> ArtifactUtils.hasPosixFilePermissions(any(Path.class)));
assertEquals(isWindows, verifyPosixPermissions(serverCommand));
verifyPosixPermissions(serverCommand, true);

// verify calling getLspInstallation again returns same instance
LspInstallResult secondResult = lspManager.getLspInstallation();
Expand All @@ -150,10 +146,9 @@ void testGetLspInstallationWithoutOverride() throws IOException {
Path serverCommand = lspServerSubDir.resolve("node");
Files.createFile(lspArgsFile);
Files.createFile(serverCommand);
assertFalse(verifyPosixPermissions(serverCommand));
verifyPosixPermissions(serverCommand, false);
setUpFetchingTools();

mockedStaticArtifactUtils.when(() -> ArtifactUtils.hasPosixFilePermissions(any(Path.class))).thenReturn(true);
LspInstallResult result = lspManager.getLspInstallation();

// verify proper parameters returned
Expand All @@ -170,7 +165,7 @@ void testGetLspInstallationWithoutOverride() throws IOException {
verify(mocklspFetcher).fetch(any(), any(), eq(tempDir), any());
verify(mockLogger, never()).info(any());
mockedStaticArtifactUtils.verify(() -> ArtifactUtils.hasPosixFilePermissions(any(Path.class)));
assertTrue(verifyPosixPermissions(serverCommand));
verifyPosixPermissions(serverCommand, true);

// verify calling getLspInstallation again returns same instance
LspInstallResult secondResult = lspManager.getLspInstallation();
Expand Down Expand Up @@ -286,14 +281,23 @@ private LspFetchResult setUpFetcherResult() {
return new LspFetchResult(serverDir.toString(), "version", LanguageServerLocation.OVERRIDE);
}

private static boolean verifyPosixPermissions(final Path filePath) throws IOException {
private static void verifyPosixPermissions(final Path filePath, final boolean expectedResult) throws IOException {
// skip verifying posix permissions if test run in windows environment
if (isWindowsEnvironment(filePath)) {
return;
}
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(filePath);
return permissions.contains(PosixFilePermission.OWNER_EXECUTE)
var actualResult = permissions.contains(PosixFilePermission.OWNER_EXECUTE)
&& permissions.contains(PosixFilePermission.OWNER_READ)
&& permissions.contains(PosixFilePermission.OWNER_WRITE)
&& permissions.contains(PosixFilePermission.GROUP_READ)
&& permissions.contains(PosixFilePermission.GROUP_EXECUTE)
&& permissions.contains(PosixFilePermission.OTHERS_EXECUTE)
&& permissions.contains(PosixFilePermission.OTHERS_READ);
assertEquals(expectedResult, actualResult);
}

private static boolean isWindowsEnvironment(final Path filePath) {
return !filePath.getFileSystem().supportedFileAttributeViews().contains("posix");
}
}

0 comments on commit c2ccd1b

Please sign in to comment.