Skip to content

Commit ad50db0

Browse files
committed
Merge pull request #330 from brunobowden/refactor
Minimum Gradle Version check: 2.4
2 parents df0e54a + 99e5b63 commit ad50db0

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

src/main/groovy/com/github/j2objccontrib/j2objcgradle/J2objcPlugin.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import org.gradle.api.Plugin
3030
import org.gradle.api.Project
3131
import org.gradle.api.Task
3232
import org.gradle.api.logging.LogLevel
33+
import org.gradle.util.GradleVersion
3334

3435
/*
3536
* Main plugin class for creation of extension object and all the tasks.
@@ -40,6 +41,8 @@ class J2objcPlugin implements Plugin<Project> {
4041
void apply(Project project) {
4142
// This avoids a lot of "project." prefixes, such as "project.tasks.create"
4243
project.with {
44+
Utils.checkMinGradleVersion(GradleVersion.current())
45+
4346
extensions.create('j2objcConfig', J2objcConfig, project)
4447

4548
afterEvaluate { Project evaluatedProject ->

src/main/groovy/com/github/j2objccontrib/j2objcgradle/tasks/Utils.groovy

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import org.gradle.api.tasks.WorkResult
3434
import org.gradle.process.ExecResult
3535
import org.gradle.process.ExecSpec
3636
import org.gradle.process.internal.ExecException
37+
import org.gradle.util.GradleVersion
3738

3839
import java.util.regex.Matcher
3940

@@ -48,6 +49,17 @@ class Utils {
4849
// TODO: ideally bundle j2objc binaries with plugin jar and load at runtime with
4950
// TODO: ClassLoader.getResourceAsStream(), extract, chmod and then execute
5051

52+
// Prevent construction of this class, confines usage to static methods
53+
private Utils() { }
54+
55+
static void checkMinGradleVersion(GradleVersion gradleVersion) {
56+
final GradleVersion minGradleVersion = GradleVersion.version('2.4')
57+
if (gradleVersion.compareTo(minGradleVersion) < 0) {
58+
throw new InvalidUserDataException(
59+
"J2ObjC Gradle Plugin requires minimum Gradle version: $minGradleVersion")
60+
}
61+
}
62+
5163
static boolean isWindows() {
5264
return System.getProperty('os.name').toLowerCase().contains('windows')
5365
}

src/test/groovy/com/github/j2objccontrib/j2objcgradle/tasks/UtilsTest.groovy

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.gradle.api.plugins.JavaPlugin
2626
import org.gradle.process.ExecSpec
2727
import org.gradle.process.internal.ExecHandleBuilder
2828
import org.gradle.testfixtures.ProjectBuilder
29+
import org.gradle.util.GradleVersion
2930
import org.junit.Before
3031
import org.junit.Rule
3132
import org.junit.Test
@@ -47,6 +48,20 @@ class UtilsTest {
4748
proj = ProjectBuilder.builder().build()
4849
}
4950

51+
@Test
52+
void testCheckMinGradleVersion_valid() {
53+
Utils.checkMinGradleVersion(GradleVersion.version('2.4'))
54+
Utils.checkMinGradleVersion(GradleVersion.version('2.4.1'))
55+
Utils.checkMinGradleVersion(GradleVersion.version('2.5'))
56+
Utils.checkMinGradleVersion(GradleVersion.version('3.0'))
57+
Utils.checkMinGradleVersion(GradleVersion.version('10.0'))
58+
}
59+
60+
@Test(expected=InvalidUserDataException)
61+
void testCheckMinGradleVersion_invalid() {
62+
Utils.checkMinGradleVersion(GradleVersion.version('2.3'))
63+
}
64+
5065
@Test
5166
void testIsWindows() {
5267
// TODO: also test for correctness
@@ -118,7 +133,7 @@ class UtilsTest {
118133
localProperties.write('j2objc.written-invalid-key')
119134

120135
expectedException.expect(InvalidUserDataException.class)
121-
expectedException.expectMessage('Invalid j2objc property: j2objc.written-invalid-key')
136+
expectedException.expectMessage('Invalid J2ObjC Gradle Plugin property: j2objc.written-invalid-key')
122137
expectedException.expectMessage("From local.properties: $proj.projectDir/local.properties")
123138
// Check list of valid keys is suggested by checking for a single entry:
124139
expectedException.expectMessage('debug.enabled')

0 commit comments

Comments
 (0)