Skip to content
This repository was archived by the owner on Feb 1, 2023. It is now read-only.

Commit a11175d

Browse files
committed
fix: isFullRescanRequested() should be False after rescan finished and before UI updates;
chore: mocks skeleton for .core tests created.
1 parent 58419e2 commit a11175d

13 files changed

+401
-131
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## [2.1.12] - 2020-10-17
2+
- fix: isFullRescanRequested() should be False after rescan finished and before UI updates.
3+
14
## [2.1.11] - 2020-10-05
25
- added param: "waiting results" timeout.
36

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66

77
group = "io.snyk.code.sdk"
88
archivesBaseName = "snyk-code-client"
9-
version = "2.1.11"
9+
version = "2.1.12"
1010

1111
repositories {
1212
mavenCentral()

src/main/java/ai/deepcode/javaclient/core/RunUtilsBase.java

+1
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ public void updateCachedAnalysisResults(@NotNull Object project, @NotNull Object
320320
analysisData.updateCachedResultsForFiles(project, allSupportedFilesInProject, progress);
321321

322322
} finally {
323+
projectsWithFullRescanRequested.remove(project);
323324
updateAnalysisResultsUIPresentation(
324325
project, analysisData.getAllFilesWithSuggestions(project));
325326
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package ai.deepcode.javaclient.core;
22

3+
import ai.deepcode.javaclient.core.mocks.DeepCodeIgnoreInfoHolderMock;
4+
import ai.deepcode.javaclient.core.mocks.HashContentUtilsMock;
5+
import ai.deepcode.javaclient.core.mocks.LoggerMock;
6+
import ai.deepcode.javaclient.core.mocks.PlatformDependentUtilsAbstractMock;
37
import org.jetbrains.annotations.NotNull;
4-
import org.jetbrains.annotations.Nullable;
58
import org.junit.Test;
69

710
import java.io.File;
8-
import java.io.IOException;
9-
import java.nio.file.Files;
10-
import java.nio.file.Paths;
1111
import java.util.Collections;
12-
import java.util.function.Consumer;
1312

14-
import static org.junit.Assert.*;
13+
import static org.junit.Assert.assertFalse;
14+
import static org.junit.Assert.assertTrue;
1515

1616
public class DeepCodeIgnoreInfoHolderTest {
1717

@@ -121,47 +121,7 @@ public void scanAllMissedIgnoreFiles() {
121121
assertTrue(ignoreInfoHolder.isIgnoredFile(new File(basicProject, "2.js")));
122122
}
123123

124-
@NotNull
125-
private DeepCodeIgnoreInfoHolderBase getNewIgnoreInfoHolder() {
126-
return new DeepCodeIgnoreInfoHolderBase(
127-
new MockHashContentUtils(), new MockPlatformDependentUtils(), new MockLogger()) {
128-
};
129-
}
130-
131-
private class MockHashContentUtils extends HashContentUtilsBase {
132-
protected MockHashContentUtils() {
133-
super(new MockPlatformDependentUtils());
134-
}
135-
136-
@Override
137-
public @NotNull String doGetFileContent(@NotNull Object file) {
138-
try {
139-
return Files.readString(Paths.get(((File)file).getAbsolutePath()));
140-
} catch (IOException e) {
141-
throw new RuntimeException(e);
142-
}
143-
}
144-
}
145-
146-
private class MockLogger extends DCLoggerBase {
147-
148-
protected MockLogger() {
149-
super(
150-
() -> System.out::println,
151-
() -> System.out::println,
152-
() -> true,
153-
() -> true,
154-
"ai.deepcode",
155-
"");
156-
}
157-
158-
@Override
159-
protected String getExtraInfo() {
160-
return "";
161-
}
162-
}
163-
164-
private class MockPlatformDependentUtils extends PlatformDependentUtilsBase {
124+
private PlatformDependentUtilsBase pdUtils = new PlatformDependentUtilsAbstractMock() {
165125
@Override
166126
public @NotNull Object getProject(@NotNull Object file) {
167127
final String filePath = ((File)file).getPath();
@@ -182,94 +142,20 @@ private class MockPlatformDependentUtils extends PlatformDependentUtilsBase {
182142

183143
@Override
184144
public @NotNull String getFilePath(@NotNull Object file) {
185-
return ((File) file).getPath().replaceAll("\\\\", "/"); // case for Windows base path
145+
return ((File) file).getPath().replaceAll("\\\\", "/"); // case for Windows base path
186146
}
187147

188148
@Override
189149
public @NotNull String getDirPath(@NotNull Object file) {
190-
return ((File) file).getParent().replaceAll("\\\\", "/"); // case for Windows base path
150+
return ((File) file).getParent().replaceAll("\\\\", "/"); // case for Windows base path
191151
}
152+
};
192153

193-
// ------------------------------ don't needed below ---------------------------
194-
@Override
195-
protected @NotNull String getProjectBasedFilePath(@NotNull Object file) {
196-
return null;
197-
}
198-
199-
@Override
200-
public Object getFileByDeepcodedPath(String path, Object project) {
201-
return null;
202-
}
203-
204-
@Override
205-
public Object[] getOpenProjects() {
206-
return new Object[0];
207-
}
208-
209-
@Override
210-
public long getFileSize(@NotNull Object file) {
211-
return 0;
212-
}
213-
214-
@Override
215-
public int getLineStartOffset(@NotNull Object file, int line) {
216-
return 0;
217-
}
218-
219-
@Override
220-
public void runInBackgroundCancellable(
221-
@NotNull Object file, @NotNull String title, @NotNull Consumer<Object> progressConsumer) {}
222-
223-
@Override
224-
public void runInBackground(
225-
@NotNull Object project,
226-
@NotNull String title,
227-
@NotNull Consumer<Object> progressConsumer) {}
228-
229-
@Override
230-
public void cancelRunningIndicators(@NotNull Object project) {}
231-
232-
@Override
233-
public void doFullRescan(@NotNull Object project) {}
234-
235-
@Override
236-
public void refreshPanel(@NotNull Object project) {}
237-
238-
@Override
239-
public boolean isLogged(@Nullable Object project, boolean userActionNeeded) {
240-
return false;
241-
}
242-
243-
@Override
244-
public void progressSetText(@Nullable Object progress, String text) {}
245-
246-
@Override
247-
public void progressCheckCanceled(@Nullable Object progress) {}
248-
249-
@Override
250-
public boolean progressCanceled(@Nullable Object progress) {
251-
return false;
252-
}
253-
254-
@Override
255-
public void progressSetFraction(@Nullable Object progress, double fraction) {}
256-
257-
@Override
258-
public void showInBrowser(@NotNull String url) {}
259-
260-
@Override
261-
public void showLoginLink(@Nullable Object project, String message) {}
262-
263-
@Override
264-
public void showConsentRequest(Object project, boolean userActionNeeded) {}
265-
266-
@Override
267-
public void showInfo(String message, @Nullable Object project) {}
268-
269-
@Override
270-
public void showWarn(String message, @Nullable Object project, boolean wasWarnShown) {}
271-
272-
@Override
273-
public void showError(String message, @Nullable Object project) {}
154+
@NotNull
155+
private DeepCodeIgnoreInfoHolderBase getNewIgnoreInfoHolder() {
156+
return new DeepCodeIgnoreInfoHolderMock(
157+
new HashContentUtilsMock(pdUtils),
158+
pdUtils,
159+
new LoggerMock());
274160
}
275161
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package ai.deepcode.javaclient.core;
2+
3+
import ai.deepcode.javaclient.core.mocks.*;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.junit.Test;
6+
7+
import java.util.Collection;
8+
9+
import static org.junit.Assert.assertFalse;
10+
11+
public class RunUtilsTest {
12+
13+
@Test
14+
public void isRescanShownAsNotRequestedAfterScanFinishedTest() {
15+
16+
final boolean[] isFullRescanRequested = {true};
17+
18+
// ---------------------------- setup --------------------------
19+
final PlatformDependentUtilsBase pdUtils = new PlatformDependentUtilsAbstractMock() {};
20+
final DeepCodeParamsBase deepCodeParams = new DeepCodeParamsMock();
21+
final DCLoggerBase dcLogger = new LoggerMock();
22+
23+
final HashContentUtilsBase hashContentUtils = new HashContentUtilsMock(pdUtils);
24+
25+
final DeepCodeIgnoreInfoHolderBase ignoreInfoHolder =
26+
new DeepCodeIgnoreInfoHolderMock(hashContentUtils, pdUtils, dcLogger);
27+
28+
final AnalysisDataBase analysisData =
29+
new AnalysisDataBaseMock(pdUtils, hashContentUtils, deepCodeParams, dcLogger) {
30+
@Override
31+
public void updateCachedResultsForFiles(
32+
@NotNull Object project,
33+
@NotNull Collection<Object> allProjectFiles,
34+
@NotNull Object progress) {}
35+
};
36+
37+
final DeepCodeUtilsBase deepCodeUtils =
38+
new DeepCodeUtilsMock(analysisData, deepCodeParams, ignoreInfoHolder, pdUtils, dcLogger);
39+
40+
final String project = "Project";
41+
42+
RunUtilsBase runUtilsMock =
43+
new RunUtilsBaseMock(pdUtils, hashContentUtils, analysisData, deepCodeUtils, dcLogger) {
44+
@Override
45+
protected void updateAnalysisResultsUIPresentation(
46+
@NotNull Object project, @NotNull Collection<Object> files) {
47+
isFullRescanRequested[0] = isFullRescanRequested(project);
48+
}
49+
};
50+
51+
// --------------------------- actual test --------------------
52+
runUtilsMock.rescanInBackgroundCancellableDelayed(project, 0, false, false);
53+
54+
assertFalse(
55+
"isFullRescanRequested() should be False after rescan finished and before UI updates",
56+
isFullRescanRequested[0]);
57+
}
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package ai.deepcode.javaclient.core.mocks;
2+
3+
import ai.deepcode.javaclient.core.*;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
import java.util.Collection;
7+
8+
public class AnalysisDataBaseMock extends AnalysisDataBase {
9+
10+
public AnalysisDataBaseMock(
11+
@NotNull PlatformDependentUtilsBase platformDependentUtils,
12+
@NotNull HashContentUtilsBase hashContentUtils,
13+
@NotNull DeepCodeParamsBase deepCodeParams,
14+
@NotNull DCLoggerBase dcLogger) {
15+
super(platformDependentUtils, hashContentUtils, deepCodeParams, dcLogger);
16+
}
17+
18+
@Override
19+
protected void updateUIonFilesRemovalFromCache(@NotNull Collection<Object> files) {}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package ai.deepcode.javaclient.core.mocks;
2+
3+
import ai.deepcode.javaclient.core.*;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
public class DeepCodeIgnoreInfoHolderMock extends DeepCodeIgnoreInfoHolderBase {
7+
8+
public DeepCodeIgnoreInfoHolderMock(
9+
@NotNull HashContentUtilsBase hashContentUtils,
10+
@NotNull PlatformDependentUtilsBase pdUtils,
11+
@NotNull DCLoggerBase dcLogger) {
12+
super(hashContentUtils, pdUtils, dcLogger);
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package ai.deepcode.javaclient.core.mocks;
2+
3+
import ai.deepcode.javaclient.core.DeepCodeParamsBase;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
public class DeepCodeParamsMock extends DeepCodeParamsBase {
7+
8+
public DeepCodeParamsMock() {
9+
super(
10+
true,
11+
"",
12+
false,
13+
false,
14+
1,
15+
"",
16+
"",
17+
"",
18+
() -> 1000L);
19+
}
20+
21+
@Override
22+
public boolean consentGiven(@NotNull Object project) {
23+
return true;
24+
}
25+
26+
@Override
27+
public void setConsentGiven(@NotNull Object project) {}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package ai.deepcode.javaclient.core.mocks;
2+
3+
import ai.deepcode.javaclient.core.*;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
import java.util.Collection;
7+
import java.util.Collections;
8+
9+
public class DeepCodeUtilsMock extends DeepCodeUtilsBase {
10+
11+
public DeepCodeUtilsMock(
12+
@NotNull AnalysisDataBase analysisData,
13+
@NotNull DeepCodeParamsBase deepCodeParams,
14+
@NotNull DeepCodeIgnoreInfoHolderBase ignoreInfoHolder,
15+
@NotNull PlatformDependentUtilsBase pdUtils,
16+
@NotNull DCLoggerBase dcLogger) {
17+
super(analysisData, deepCodeParams, ignoreInfoHolder, pdUtils, dcLogger);
18+
}
19+
20+
@Override
21+
protected Collection<Object> allProjectFiles(@NotNull Object project) {
22+
return Collections.emptySet();
23+
}
24+
25+
@Override
26+
protected long getFileLength(@NotNull Object file) {
27+
return 0;
28+
}
29+
30+
@Override
31+
protected String getFileExtention(@NotNull Object file) {
32+
return "";
33+
}
34+
35+
@Override
36+
protected boolean isGitIgnoredExternalCheck(@NotNull Object file) {
37+
return false;
38+
}
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package ai.deepcode.javaclient.core.mocks;
2+
3+
import ai.deepcode.javaclient.core.HashContentUtilsBase;
4+
import ai.deepcode.javaclient.core.PlatformDependentUtilsBase;
5+
import org.jetbrains.annotations.NotNull;
6+
7+
import java.io.File;
8+
import java.io.IOException;
9+
import java.nio.file.Files;
10+
import java.nio.file.Paths;
11+
12+
public class HashContentUtilsMock extends HashContentUtilsBase {
13+
14+
public HashContentUtilsMock(@NotNull PlatformDependentUtilsBase platformDependentUtils) {
15+
super(platformDependentUtils);
16+
}
17+
18+
@Override
19+
public @NotNull String doGetFileContent(@NotNull Object file) {
20+
try {
21+
return Files.readString(Paths.get(((File) file).getAbsolutePath()));
22+
} catch (IOException e) {
23+
throw new RuntimeException(e);
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)