Skip to content

Commit 0b011ad

Browse files
LarsEckartisidore
andcommitted
! r refactored getProgramFiles
Co-Authored-By: Llewellyn Falco <[email protected]>
1 parent 4023584 commit 0b011ad

File tree

3 files changed

+63
-44
lines changed

3 files changed

+63
-44
lines changed

approvaltests-tests/src/test/java/org/approvaltests/reporters/IntelliJResolverTest.java

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,45 @@
77

88
import static org.junit.jupiter.api.Assertions.assertNotEquals;
99

10-
class IntelliJResolverTest {
11-
@Test
12-
void testFindItOnMac() {
13-
Queryable<String> validPaths = Queryable.as("/Applications/IntelliJ IDEA.app/Contents/MacOS/idea",
14-
"Users/lars/Applications/IntelliJ IDEA Ultimate.app/Contents/MacOS/idea",
15-
"Users/lars/Applications/IntelliJ IDEA Community.app/Contents/MacOS/idea",
16-
"Users/lars/Applications/IntelliJ IDEA Community Edition.app/Contents/MacOS/idea");
17-
verifyPaths(IntelliJToolboxResolver::getDiffInfoMac, "Users/lars", validPaths);
10+
class IntelliJResolverTest
11+
{
12+
@Test
13+
void testFindItOnMac()
14+
{
15+
Queryable<String> validPaths = Queryable.as("/Applications/IntelliJ IDEA.app/Contents/MacOS/idea",
16+
"Users/lars/Applications/IntelliJ IDEA Ultimate.app/Contents/MacOS/idea",
17+
"Users/lars/Applications/IntelliJ IDEA Community.app/Contents/MacOS/idea",
18+
"Users/lars/Applications/IntelliJ IDEA Community Edition.app/Contents/MacOS/idea");
19+
verifyPaths(IntelliJToolboxResolver::getDiffInfoMac, "Users/lars", validPaths);
20+
}
21+
private static void verifyPaths(Function2<String, Function1<String, Boolean>, DiffInfo> finder, String userHome,
22+
Queryable<String> validPaths)
23+
{
24+
for (String path : validPaths)
25+
{
26+
DiffInfo diffInfo = finder.call(userHome, f -> f.equals(path));
27+
assertNotEquals("", diffInfo.diffProgram, path);
1828
}
19-
20-
private static void verifyPaths(Function2<String, Function1<String, Boolean>, DiffInfo> finder, String userHome, Queryable<String> validPaths) {
21-
for (String path : validPaths) {
22-
DiffInfo diffInfo = finder.call(userHome, f -> f.equals(path));
23-
assertNotEquals("", diffInfo.diffProgram, path);
24-
}
25-
}
26-
27-
@Test
28-
void testFindItOnLinux() {
29-
Queryable<String> validPaths = Queryable.as(
30-
"/home/lars/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/bin/idea.sh",
31-
"/home/lars/.local/share/JetBrains/Toolbox/apps/intellij-idea-community-edition/bin/idea.sh");
32-
verifyPaths(IntelliJToolboxResolver::getDiffInfoLinux, "/home/lars", validPaths);
33-
}
34-
35-
// "C:\Users\larse\AppData\Local\Programs\IntelliJ IDEA Ultimate\bin\idea64.exe"
36-
@Test
37-
void testFindItOnWindows() {
38-
Queryable<String> validPaths = Queryable.as(
39-
"C:\\Users\\larse\\AppData\\Local\\Programs\\IntelliJ IDEA Ultimate\\bin\\idea64.exe");
40-
String[] programFiles = {"C:\\Users\\larse\\AppData\\Local\\Programs"};
41-
for (String path : validPaths) {
42-
DiffInfo diffInfo = IntelliJToolboxResolver.getDiffInfoWindows(programFiles, f -> f.equals(path));
43-
assertNotEquals("", diffInfo.diffProgram, path);
44-
}
29+
}
30+
@Test
31+
void testFindItOnLinux()
32+
{
33+
Queryable<String> validPaths = Queryable.as(
34+
"/home/lars/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/bin/idea.sh",
35+
"/home/lars/.local/share/JetBrains/Toolbox/apps/intellij-idea-community-edition/bin/idea.sh");
36+
verifyPaths(IntelliJToolboxResolver::getDiffInfoLinux, "/home/lars", validPaths);
37+
}
38+
// "C:\Users\larse\AppData\Local\Programs\IntelliJ IDEA Ultimate\bin\idea64.exe"
39+
@Test
40+
void testFindItOnWindows()
41+
{
42+
Queryable<String> validPaths = Queryable
43+
.as("C:\\Users\\larse\\AppData\\Local\\Programs\\IntelliJ IDEA Ultimate\\bin\\idea64.exe");
44+
String[] programFiles = {"C:\\Users\\larse\\AppData\\Local\\Programs"};
45+
for (String path : validPaths)
46+
{
47+
DiffInfo diffInfo = IntelliJToolboxResolver.getDiffInfoWindows(programFiles, f -> f.equals(path));
48+
assertNotEquals("", diffInfo.diffProgram, path);
4549
}
50+
}
4651
}

approvaltests/src/main/java/org/approvaltests/reporters/DiffInfo.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.spun.util.ArrayUtils;
44

55
import java.io.File;
6+
import java.util.ArrayList;
67
import java.util.HashSet;
78
import java.util.List;
89
import java.util.Objects;
@@ -60,12 +61,25 @@ public boolean isEmpty()
6061
}
6162
public static String[] getProgramFilesPaths()
6263
{
63-
HashSet<String> paths = new HashSet<>();
64-
paths.add(System.getenv("ProgramFiles(x86)"));
65-
paths.add(System.getenv("ProgramFiles"));
66-
paths.add(System.getenv("ProgramW6432"));
67-
paths.add(System.getenv("LOCALAPPDATA") + "\\Programs");
68-
return paths.stream().filter(Objects::nonNull).toArray(String[]::new);
64+
List<String> paths = new ArrayList<>();
65+
addIfNotNull("ProgramFiles(x86)", paths);
66+
addIfNotNull("ProgramFiles(x86)", paths);
67+
addIfNotNull("ProgramFiles", paths);
68+
addIfNotNull("ProgramW6432", paths);
69+
addIfNotNull("LOCALAPPDATA", paths, "\\Programs");
70+
return paths.toArray(new String[0]);
71+
}
72+
private static void addIfNotNull(String envVarName, List<String> paths)
73+
{
74+
addIfNotNull(envVarName, paths, "");
75+
}
76+
private static void addIfNotNull(String envVarName, List<String> paths, String postfix)
77+
{
78+
String path = System.getenv(envVarName);
79+
if (path != null)
80+
{
81+
paths.add(path + postfix);
82+
}
6983
}
7084
public static class One
7185
{

approvaltests/src/main/java/org/approvaltests/reporters/IntelliJToolboxResolver.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ public class IntelliJToolboxResolver
1212
{
1313
private interface Resolver extends Function2<String, Function1<String, Boolean>, DiffInfo>
1414
{
15-
1615
}
1716
public static DiffInfo findIt()
1817
{
@@ -43,15 +42,16 @@ public static DiffInfo getDiffInfoLinux(String userHome, Function1<String, Boole
4342
String postfix = "/bin/idea.sh";
4443
return getDiffInfo(fileExists, applications, locations, postfix, "/");
4544
}
46-
public static DiffInfo getDiffInfoWindows(String[] programFiles, Function1<String, Boolean> fileExists) {
45+
public static DiffInfo getDiffInfoWindows(String[] programFiles, Function1<String, Boolean> fileExists)
46+
{
4747
Queryable<String> applications = as("IntelliJ IDEA Ultimate", "IntelliJ IDEA", "IntelliJ IDEA Community",
48-
"IntelliJ IDEA Community Edition");
48+
"IntelliJ IDEA Community Edition");
4949
Queryable<String> locations = Queryable.as(programFiles);
5050
String postfix = "\\bin\\idea64.exe";
5151
return getDiffInfo(fileExists, locations, applications, postfix, "\\");
5252
}
5353
private static DiffInfo getDiffInfo(Function1<String, Boolean> fileExists, Queryable<String> locations,
54-
Queryable<String> applications, String postfix, String pathSeparator)
54+
Queryable<String> applications, String postfix, String pathSeparator)
5555
{
5656
Queryable<String> paths = locations.selectMany(l -> applications.select(a -> l + pathSeparator + a + postfix));
5757
String matching = paths.first(fileExists);

0 commit comments

Comments
 (0)