Skip to content

Commit 6852ca4

Browse files
committed
chore: parse premium versions and check for updates
This commit adds premium versions parsing and queries different urls for updaes, based on cppcheck version reported.
1 parent 792b522 commit 6852ca4

File tree

3 files changed

+380
-53
lines changed

3 files changed

+380
-53
lines changed
Lines changed: 299 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.googlecode.cppcheclipse.core.command;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertTrue;
46

57
import org.junit.Test;
68

9+
import com.googlecode.cppcheclipse.core.command.Version.VersionType;
10+
711
public class TestVersion {
812

913
// compare with issue 47
@@ -14,26 +18,318 @@ public void testDevelopmentVersion() {
1418
assertEquals(1, version.getMajorVersion());
1519
assertEquals(55, version.getMinorVersion());
1620
}
17-
21+
1822
@Test(expected=IllegalArgumentException.class)
1923
public void testInvalidVersion() {
2024
new Version("1.2.3");
2125
}
22-
26+
2327
@Test
2428
public void testReleaseVersion() {
2529
String versionString = "cppcheck 1.55";
2630
Version version = new Version(versionString);
2731
assertEquals(1, version.getMajorVersion());
2832
assertEquals(55, version.getMinorVersion());
33+
assertEquals(0, version.getRevision());
34+
assertEquals(0, version.getPatch());
35+
assertEquals(VersionType.OPEN_SOURCE, version.getType());
2936
}
30-
37+
3138
@Test
3239
public void testReleaseVersionWithRevision() {
3340
String versionString = "cppcheck 1.2.3";
3441
Version version = new Version(versionString);
3542
assertEquals(1, version.getMajorVersion());
3643
assertEquals(2, version.getMinorVersion());
3744
assertEquals(3, version.getRevision());
45+
assertEquals(0, version.getPatch());
46+
assertEquals(VersionType.OPEN_SOURCE, version.getType());
3847
}
48+
49+
@Test
50+
public void testReleaseVersionWithPatch() {
51+
String versionString = "cppcheck 1.2.3.4";
52+
Version version = new Version(versionString);
53+
assertEquals(1, version.getMajorVersion());
54+
assertEquals(2, version.getMinorVersion());
55+
assertEquals(3, version.getRevision());
56+
assertEquals(4, version.getPatch());
57+
assertEquals(VersionType.OPEN_SOURCE, version.getType());
58+
}
59+
60+
@Test
61+
public void testReleaseVersionPremium() {
62+
String versionString = "cppcheck premium 1.2.3.4";
63+
Version version = new Version(versionString);
64+
assertEquals(1, version.getMajorVersion());
65+
assertEquals(2, version.getMinorVersion());
66+
assertEquals(3, version.getRevision());
67+
assertEquals(4, version.getPatch());
68+
assertEquals(VersionType.PREMIUM, version.getType());
69+
}
70+
71+
@Test
72+
public void testReleaseVersionPremiumSafetyCertified() {
73+
String versionString = "cppcheck premium 1.2.3.4s";
74+
Version version = new Version(versionString);
75+
assertEquals(1, version.getMajorVersion());
76+
assertEquals(2, version.getMinorVersion());
77+
assertEquals(3, version.getRevision());
78+
assertEquals(4, version.getPatch());
79+
assertEquals(VersionType.PREMIUM_SAFETY_CERTIFIED, version.getType());
80+
}
81+
82+
@Test(expected=IllegalArgumentException.class)
83+
public void testIsGreaterThanCompareInvalidVersion() {
84+
Version version1 = new Version("cppcheck 1.3");
85+
Version version2 = new Version("cppcheck premium 2.3");
86+
version2.isGreaterThan(version1);
87+
}
88+
89+
@Test(expected=IllegalArgumentException.class)
90+
public void testIsGreaterThanCompareInvalidVersion2() {
91+
Version version1 = new Version("cppcheck 1.3");
92+
Version version2 = new Version("cppcheck premium 2.3s");
93+
version2.isGreaterThan(version1);
94+
}
95+
96+
@Test(expected=IllegalArgumentException.class)
97+
public void testIsGreaterThanCompareInvalidVersion3() {
98+
Version version1 = new Version("cppcheck premium 1.3");
99+
Version version2 = new Version("cppcheck premium 2.3s");
100+
version2.isGreaterThan(version1);
101+
}
102+
103+
@Test
104+
public void testIsGreaterThanWithDifferentMajorVersions() {
105+
Version version1 = new Version("cppcheck 1.3");
106+
Version version2 = new Version("cppcheck 2.3");
107+
assertTrue(version2.isGreaterThan(version1));
108+
assertFalse(version1.isGreaterThan(version2));
109+
}
110+
111+
@Test
112+
public void testIsGreaterThanPremiumWithDifferentMajorVersions() {
113+
Version version1 = new Version("cppcheck premium 1.3");
114+
Version version2 = new Version("cppcheck premium 2.3");
115+
assertTrue(version2.isGreaterThan(version1));
116+
assertFalse(version1.isGreaterThan(version2));
117+
}
118+
119+
@Test
120+
public void testIsGreaterThanPremiumSafetyCertifiedWithDifferentMajorVersions() {
121+
Version version1 = new Version("cppcheck premium 1.3s");
122+
Version version2 = new Version("cppcheck premium 2.3s");
123+
assertTrue(version2.isGreaterThan(version1));
124+
assertFalse(version1.isGreaterThan(version2));
125+
}
126+
127+
@Test
128+
public void testIsGreaterThanWithSameMajorAndMinorVersions() {
129+
Version version1 = new Version("cppcheck 1.2");
130+
Version version2 = new Version("cppcheck 1.2");
131+
assertFalse(version2.isGreaterThan(version1));
132+
assertFalse(version1.isGreaterThan(version2));
133+
}
134+
135+
@Test
136+
public void testIsGreaterThanPremiumWithSameMajorAndMinorVersions() {
137+
Version version1 = new Version("cppcheck premium 1.2");
138+
Version version2 = new Version("cppcheck premium 1.2");
139+
assertFalse(version2.isGreaterThan(version1));
140+
assertFalse(version1.isGreaterThan(version2));
141+
}
142+
143+
@Test
144+
public void testIsGreaterThanPremiumSafetyCerifiedWithSameMajorAndMinorVersions() {
145+
Version version1 = new Version("cppcheck premium 1.2s");
146+
Version version2 = new Version("cppcheck premium 1.2s");
147+
assertFalse(version2.isGreaterThan(version1));
148+
assertFalse(version1.isGreaterThan(version2));
149+
}
150+
151+
@Test
152+
public void testIsGreaterThanDifferentMinorVersions() {
153+
Version version1 = new Version("cppcheck 1.2");
154+
Version version2 = new Version("cppcheck 1.3");
155+
assertTrue(version2.isGreaterThan(version1));
156+
assertFalse(version1.isGreaterThan(version2));
157+
}
158+
159+
@Test
160+
public void testIsGreaterThanPremiumDifferentMinorVersions() {
161+
Version version1 = new Version("cppcheck premium 1.2");
162+
Version version2 = new Version("cppcheck premium 1.3");
163+
assertTrue(version2.isGreaterThan(version1));
164+
assertFalse(version1.isGreaterThan(version2));
165+
}
166+
167+
@Test
168+
public void testIsGreaterThanPremiumSafetyCertifiedDifferentMinorVersions() {
169+
Version version1 = new Version("cppcheck premium 1.2s");
170+
Version version2 = new Version("cppcheck premium 1.3s");
171+
assertTrue(version2.isGreaterThan(version1));
172+
assertFalse(version1.isGreaterThan(version2));
173+
}
174+
175+
@Test
176+
public void testIsGreaterThanWithDifferentMajorVersions2() {
177+
Version version1 = new Version("cppcheck 1.2.3");
178+
Version version2 = new Version("cppcheck 2.0.0");
179+
assertTrue(version2.isGreaterThan(version1));
180+
assertFalse(version1.isGreaterThan(version2));
181+
}
182+
183+
@Test
184+
public void testIsGreaterThanPremiumWithDifferentMajorVersions2() {
185+
Version version1 = new Version("cppcheck premium 1.2.3");
186+
Version version2 = new Version("cppcheck premium 2.0.0");
187+
assertTrue(version2.isGreaterThan(version1));
188+
assertFalse(version1.isGreaterThan(version2));
189+
}
190+
191+
@Test
192+
public void testIsGreaterThanPremiuSafetyCertifiedmWithDifferentMajorVersions2() {
193+
Version version1 = new Version("cppcheck premium 1.2.3s");
194+
Version version2 = new Version("cppcheck premium 2.0.0s");
195+
assertTrue(version2.isGreaterThan(version1));
196+
assertFalse(version1.isGreaterThan(version2));
197+
}
198+
199+
@Test
200+
public void testIsGreaterThanDifferentMinorVersions2() {
201+
Version version1 = new Version("cppcheck 1.2.6");
202+
Version version2 = new Version("cppcheck 1.3.0");
203+
assertTrue(version2.isGreaterThan(version1));
204+
assertFalse(version1.isGreaterThan(version2));
205+
}
206+
207+
@Test
208+
public void testIsGreaterThanPremiumDifferentMinorVersions2() {
209+
Version version1 = new Version("cppcheck premium 1.2.6");
210+
Version version2 = new Version("cppcheck premium 1.3.0");
211+
assertTrue(version2.isGreaterThan(version1));
212+
assertFalse(version1.isGreaterThan(version2));
213+
}
214+
215+
@Test
216+
public void testIsGreaterThanPremiumSafetyCertifiedDifferentMinorVersions2() {
217+
Version version1 = new Version("cppcheck premium 1.2.6s");
218+
Version version2 = new Version("cppcheck premium 1.3.0s");
219+
assertTrue(version2.isGreaterThan(version1));
220+
assertFalse(version1.isGreaterThan(version2));
221+
}
222+
223+
@Test
224+
public void testIsGreaterThanWithDiffrentRevisionVersions() {
225+
Version version1 = new Version("cppcheck 1.2.3");
226+
Version version2 = new Version("cppcheck 1.2.4");
227+
assertTrue(version2.isGreaterThan(version1));
228+
assertFalse(version1.isGreaterThan(version2));
229+
}
230+
231+
@Test
232+
public void testIsGreaterThanPremiumWithDiffrentRevisionVersions() {
233+
Version version1 = new Version("cppcheck premium 1.2.3");
234+
Version version2 = new Version("cppcheck premium 1.2.4");
235+
assertTrue(version2.isGreaterThan(version1));
236+
assertFalse(version1.isGreaterThan(version2));
237+
}
238+
239+
@Test
240+
public void testIsGreaterThanPremiumSafetyCertifiedWithDiffrentRevisionVersions() {
241+
Version version1 = new Version("cppcheck premium 1.2.3s");
242+
Version version2 = new Version("cppcheck premium 1.2.4s");
243+
assertTrue(version2.isGreaterThan(version1));
244+
assertFalse(version1.isGreaterThan(version2));
245+
}
246+
247+
@Test
248+
public void testIsGreaterThanWithSameVersions() {
249+
Version version1 = new Version("cppcheck 1.2.3");
250+
Version version2 = new Version("cppcheck 1.2.3");
251+
assertFalse(version2.isGreaterThan(version1));
252+
assertFalse(version1.isGreaterThan(version2));
253+
}
254+
255+
@Test
256+
public void testIsGreaterThanWithDiffrentRevisionVersions2() {
257+
Version version1 = new Version("cppcheck 1.2.3.5");
258+
Version version2 = new Version("cppcheck 1.2.4.5");
259+
assertTrue(version2.isGreaterThan(version1));
260+
assertFalse(version1.isGreaterThan(version2));
261+
}
262+
263+
@Test
264+
public void testIsGreaterThanWithDifferentPatchVersions() {
265+
Version version1 = new Version("cppcheck 1.2.3.4");
266+
Version version2 = new Version("cppcheck 1.2.3.5");
267+
assertTrue(version2.isGreaterThan(version1));
268+
assertFalse(version1.isGreaterThan(version2));
269+
}
270+
271+
@Test
272+
public void testIsGreaterThanWithDefaultRevisionAndPatch() {
273+
Version version1 = new Version("cppcheck 1.2");
274+
Version version2 = new Version("cppcheck 1.2.1");
275+
Version version3 = new Version("cppcheck 1.2.0");
276+
Version version4 = new Version("cppcheck 1.2.0.1");
277+
assertTrue(version2.isGreaterThan(version1));
278+
assertTrue(version4.isGreaterThan(version1));
279+
assertFalse(version3.isGreaterThan(version1));
280+
assertTrue(version4.isGreaterThan(version3));
281+
}
282+
283+
@Test
284+
public void testIsGreaterThanWithSamePatchVersions() {
285+
Version version1 = new Version("cppcheck 1.2.3.4");
286+
Version version2 = new Version("cppcheck 1.2.3.4");
287+
assertFalse(version2.isGreaterThan(version1));
288+
assertFalse(version1.isGreaterThan(version2));
289+
}
290+
291+
@Test
292+
public void testIsGreaterThanPremiumVersions() {
293+
Version version1 = new Version("cppcheck premium 1.2.3.4");
294+
Version version2 = new Version("cppcheck premium 1.2.3.5");
295+
Version version3 = new Version("cppcheck premium 1.2.3.5");
296+
assertTrue(version2.isGreaterThan(version1));
297+
assertFalse(version1.isGreaterThan(version2));
298+
assertFalse(version2.isGreaterThan(version3));
299+
assertFalse(version3.isGreaterThan(version2));
300+
}
301+
302+
@Test
303+
public void testIsGreaterThanPremiumSafetyCerifiedVersions() {
304+
Version version1 = new Version("cppcheck premium 1.2.3.4s");
305+
Version version2 = new Version("cppcheck premium 1.2.3.5s");
306+
Version version3 = new Version("cppcheck premium 1.2.3.5s");
307+
assertTrue(version2.isGreaterThan(version1));
308+
assertFalse(version1.isGreaterThan(version2));
309+
assertFalse(version2.isGreaterThan(version3));
310+
assertFalse(version3.isGreaterThan(version2));
311+
}
312+
313+
@Test
314+
public void testCompatibility() {
315+
Version version1 = new Version("cppcheck 1.56");
316+
Version version2 = new Version("cppcheck 1.56.0");
317+
Version version3 = new Version("cppcheck 1.56.0.0");
318+
assertTrue(version1.isCompatible());
319+
assertTrue(version2.isCompatible());
320+
assertTrue(version3.isCompatible());
321+
version1 = new Version("cppcheck premium 1.56");
322+
version2 = new Version("cppcheck premium 1.56.0");
323+
version3 = new Version("cppcheck premium 1.56.0.0");
324+
assertTrue(version1.isCompatible());
325+
assertTrue(version2.isCompatible());
326+
assertTrue(version3.isCompatible());
327+
version1 = new Version("cppcheck premium 1.56s");
328+
version2 = new Version("cppcheck premium 1.56.0s");
329+
version3 = new Version("cppcheck premium 1.56.0.0s");
330+
assertTrue(version1.isCompatible());
331+
assertTrue(version2.isCompatible());
332+
assertTrue(version3.isCompatible());
333+
}
334+
39335
}

com.googlecode.cppcheclipse.core/src/com/googlecode/cppcheclipse/core/command/UpdateCheckCommand.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@
1515

1616
public class UpdateCheckCommand {
1717

18-
private static final String UPDATE_URL = "https://cppcheck.sourceforge.net/version.txt";
18+
private static final String UPDATE_URL_OPEN_SOURCE = "https://cppcheck.sourceforge.net/version.txt";
19+
private static final String UPDATE_URL_PREMIUM = "https://files.cppchecksolutions.com/premium-version.txt";
20+
private static final String UPDATE_URL_PREMIUM_SAFETY_CERTIFIED = "https://files.cppchecksolutions.com/premium-s-version.txt";
1921

2022
public UpdateCheckCommand() {
2123

2224
}
2325

24-
private Version getNewVersion() throws IOException, URISyntaxException {
26+
private Version getNewVersion(String url) throws IOException, URISyntaxException {
2527
IHttpClientService client = CppcheclipsePlugin.getHttpClientService();
26-
InputStream is = client.executeGetRequest(new URL(UPDATE_URL));
28+
InputStream is = client.executeGetRequest(new URL(url));
2729
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
2830
String line = rd.readLine();
2931
rd.close();
@@ -47,8 +49,19 @@ private Version getCurrentVersion(IProgressMonitor monitor, IConsole console, St
4749
* @throws URISyntaxException
4850
*/
4951
public Version run(IProgressMonitor monitor, IConsole console, String binaryPath) throws IOException, InterruptedException, ProcessExecutionException, URISyntaxException {
50-
Version newVersion = getNewVersion();
52+
String updateUrl = UPDATE_URL_OPEN_SOURCE;
5153
Version currentVersion = getCurrentVersion(monitor, console, binaryPath);
54+
switch (currentVersion.getType()) {
55+
case PREMIUM:
56+
updateUrl = UPDATE_URL_PREMIUM;
57+
break;
58+
case PREMIUM_SAFETY_CERTIFIED:
59+
updateUrl = UPDATE_URL_PREMIUM_SAFETY_CERTIFIED;
60+
break;
61+
default:
62+
break;
63+
}
64+
Version newVersion = getNewVersion(updateUrl);
5265
if (newVersion.isGreaterThan(currentVersion))
5366
return newVersion;
5467
return null;

0 commit comments

Comments
 (0)