Fix: https://issues.apache.org/jira/browse/FLEX-34839
- Make use of Apache Commons Lang3.SystemUtils for OS detection. - Make SdkConverterCLI to use the detection. - Removed the PowerMock lib, couldn't mock static final field, I remove dynamically the final modifier instead. Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/6496873b Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/6496873b Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/6496873b Branch: refs/heads/as3httpclient-work Commit: 6496873b53142ab7476f5e3afa4ce1b49f1bf668 Parents: 002b4de Author: Frédéric THOMAS <webdoubl...@gmail.com> Authored: Thu May 14 13:04:43 2015 +0100 Committer: Frédéric THOMAS <webdoubl...@gmail.com> Committed: Thu May 14 13:04:43 2015 +0100 ---------------------------------------------------------------------- .../converter/core/SdkConverterCLI.java | 12 +-- mavenizer/retrievers/base/pom.xml | 32 ++------ .../retrievers/types/PlatformType.java | 84 ++------------------ .../converter/retrievers/utils/ProgressBar.java | 2 +- .../retrievers/types/PlatformTypeTest.java | 72 +++++++++-------- 5 files changed, 59 insertions(+), 143 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/6496873b/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java ---------------------------------------------------------------------- diff --git a/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java b/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java index 9f3d160..918dd70 100644 --- a/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java +++ b/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java @@ -2,7 +2,6 @@ package org.apache.flex.utilities.converter.core; import org.apache.commons.cli.*; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.SystemUtils; import org.apache.flex.utilities.converter.air.AirConverter; import org.apache.flex.utilities.converter.deployer.aether.AetherDeployer; import org.apache.flex.utilities.converter.flash.FlashConverter; @@ -122,14 +121,11 @@ public class SdkConverterCLI { platforms.add(PlatformType.valueOf(platformName)); } } + if(platforms.isEmpty()) { - if(SystemUtils.IS_OS_WINDOWS) { - platforms.add(PlatformType.WINDOWS); - } else if(SystemUtils.IS_OS_MAC) { - platforms.add(PlatformType.MAC); - } else if(SystemUtils.IS_OS_LINUX) { - platforms.add(PlatformType.LINUX); - } else { + try { + platforms.add(PlatformType.getCurrent()); + } catch (Exception e) { System.err.println("Unsupported OS type. Provide manually using 'platform' parameter."); System.exit(1); } http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/6496873b/mavenizer/retrievers/base/pom.xml ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/pom.xml b/mavenizer/retrievers/base/pom.xml index d13b4cb..ace86c6 100644 --- a/mavenizer/retrievers/base/pom.xml +++ b/mavenizer/retrievers/base/pom.xml @@ -32,7 +32,7 @@ <properties> <powermock.version>1.6.2</powermock.version> - <junit.version>4.8.2</junit.version> + <junit.version>4.11</junit.version> </properties> <dependencies> @@ -47,9 +47,9 @@ <version>1.8.1</version> </dependency> <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.6</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.3.2</version> </dependency> <!--TEST--> @@ -60,27 +60,9 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-module-junit4-rule-agent</artifactId> - <version>${powermock.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-module-junit4</artifactId> - <version>${powermock.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-api-easymock</artifactId> - <version>${powermock.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <version>3.3.1</version> + <groupId>pl.pragmatists</groupId> + <artifactId>JUnitParams</artifactId> + <version>1.0.4</version> <scope>test</scope> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/6496873b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/PlatformType.java ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/PlatformType.java b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/PlatformType.java index 2dceba0..d7320d4 100644 --- a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/PlatformType.java +++ b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/PlatformType.java @@ -16,6 +16,8 @@ */ package org.apache.flex.utilities.converter.retrievers.types; +import org.apache.commons.lang3.SystemUtils; + /** * Created by cdutz on 18.05.2014. */ @@ -25,95 +27,23 @@ public enum PlatformType { LINUX, MAC; - public static PlatformType getCurrent() - { + public static PlatformType getCurrent() throws Exception { PlatformType platformType = null; - if (isWindows()) + if (SystemUtils.IS_OS_WINDOWS) { platformType = PlatformType.WINDOWS; } - else if (isMac()) + else if (SystemUtils.IS_OS_MAC || SystemUtils.IS_OS_MAC_OSX) { platformType = PlatformType.MAC; } - else if (isUnixBased()) + else if (SystemUtils.IS_OS_UNIX) { platformType = PlatformType.LINUX; } + else throw new Exception("Unsupported OS."); return platformType; } - - static final String NET_BSD = "netbsd"; - - static final String FREE_BSD = "freebsd"; - - static final String WINDOWS_OS = "windows"; - - static final String MAC_OS = "mac os x"; - - static final String MAC_OS_DARWIN = "darwin"; - - static final String LINUX_OS = "linux"; - - static final String SOLARIS_OS = "sunos"; - - private static String osString() - { - return System.getProperty( "os.name" ).toLowerCase(); - } - - /** - * Return a boolean to show if we are running on Windows. - * - * @return true if we are running on Windows. - */ - private static boolean isWindows() - { - return osString().startsWith( WINDOWS_OS ); - } - - /** - * Return a boolean to show if we are running on Linux. - * - * @return true if we are running on Linux. - */ - private static boolean isLinux() - { - return osString().startsWith( LINUX_OS ) || - // I know, but people said that workds... - osString().startsWith( NET_BSD ) || - osString().startsWith( FREE_BSD ); - } - - /** - * Return a boolean to show if we are running on Solaris. - * - * @return true if we are running on Solaris. - */ - private static boolean isSolaris() - { - return osString().startsWith( SOLARIS_OS ); - } - - /** - * Return a boolean to show if we are running on a unix-based OS. - * - * @return true if we are running on a unix-based OS. - */ - private static boolean isUnixBased() - { - return isLinux() || isSolaris(); - } - - /** - * Return a boolean to show if we are running on Mac OS X. - * - * @return true if we are running on Mac OS X. - */ - private static boolean isMac() - { - return osString().startsWith( MAC_OS ) || osString().startsWith( MAC_OS_DARWIN ); - } } http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/6496873b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java index 72ee855..c15d26b 100644 --- a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java +++ b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java @@ -16,7 +16,7 @@ */ package org.apache.flex.utilities.converter.retrievers.utils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * Created by cdutz on 24.05.2014. http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/6496873b/mavenizer/retrievers/base/src/test/java/org/apache/flex/utilities/converter/retrievers/types/PlatformTypeTest.java ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/src/test/java/org/apache/flex/utilities/converter/retrievers/types/PlatformTypeTest.java b/mavenizer/retrievers/base/src/test/java/org/apache/flex/utilities/converter/retrievers/types/PlatformTypeTest.java index d8571bc..eeb6a22 100644 --- a/mavenizer/retrievers/base/src/test/java/org/apache/flex/utilities/converter/retrievers/types/PlatformTypeTest.java +++ b/mavenizer/retrievers/base/src/test/java/org/apache/flex/utilities/converter/retrievers/types/PlatformTypeTest.java @@ -1,61 +1,69 @@ package org.apache.flex.utilities.converter.retrievers.types; -import org.junit.Rule; +import junitparams.JUnitParamsRunner; +import junitparams.Parameters; +import org.apache.commons.lang3.SystemUtils; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.rule.PowerMockRule; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Collection; -import static org.easymock.EasyMock.expect; import static org.junit.Assert.assertEquals; -import static org.powermock.api.easymock.PowerMock.*; /** * @author: Frederic Thomas * Date: 12/05/2015 * Time: 01:34 */ -@PrepareForTest( { PlatformType.class }) -@RunWith(Parameterized.class) +@RunWith(JUnitParamsRunner.class) public class PlatformTypeTest { - private String osName; - private PlatformType platformType; - - @Rule - public PowerMockRule powerMockRule = new PowerMockRule(); - - @Parameterized.Parameters - public static Collection<Object[]> data() { + private Class<SystemUtils> systemUtilsClass; + public static Collection<Object[]> platformParameters() { return Arrays.asList(new Object[][]{ - {PlatformType.WINDOWS_OS, PlatformType.WINDOWS}, - {PlatformType.MAC_OS, PlatformType.MAC}, - {PlatformType.MAC_OS_DARWIN, PlatformType.MAC}, - {PlatformType.FREE_BSD, PlatformType.LINUX}, - {PlatformType.LINUX_OS, PlatformType.LINUX}, - {PlatformType.NET_BSD, PlatformType.LINUX}, - {PlatformType.SOLARIS_OS, PlatformType.LINUX} + {"IS_OS_WINDOWS", PlatformType.WINDOWS}, + {"IS_OS_MAC", PlatformType.MAC}, + {"IS_OS_MAC_OSX", PlatformType.MAC}, + {"IS_OS_UNIX", PlatformType.LINUX} }); } - public PlatformTypeTest(String osName, PlatformType platformType) { - this.osName = osName; - this.platformType = platformType; + @Before + public void setUp() throws Exception { + systemUtilsClass = SystemUtils.class; + + setFinalStatic(systemUtilsClass.getField("IS_OS_WINDOWS"), false); + setFinalStatic(systemUtilsClass.getField("IS_OS_MAC"), false); + setFinalStatic(systemUtilsClass.getField("IS_OS_MAC_OSX"), false); + setFinalStatic(systemUtilsClass.getField("IS_OS_UNIX"), false); } @Test - public void it_returns_the_current_platform_type() throws Exception { - mockStatic(System.class); - - expect(System.getProperty("os.name")).andReturn(osName).anyTimes(); - replayAll(); + @Parameters(method = "platformParameters") + public void it_detects_the_current_platform_type(String fieldName, PlatformType platformType) throws Exception { + setFinalStatic(systemUtilsClass.getField(fieldName), true); assertEquals(platformType, PlatformType.getCurrent()); - verifyAll(); + } + + @Test(expected = Exception.class) + public void it_throws_an_exception_when_it_can_not_detect_the_current_platform_type() throws Exception { + PlatformType.getCurrent(); + } + + private static void setFinalStatic(Field field, Object newValue) throws Exception { + field.setAccessible(true); + + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + + field.set(null, newValue); } }