| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| package f; |
| |
| import static org.hamcrest.core.Is.is; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertThat; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.apache.flex.compiler.clients.COMPC; |
| import org.apache.flex.compiler.problems.ICompilerProblem; |
| import org.apache.flex.utils.EnvProperties; |
| import org.junit.Test; |
| |
| import com.google.common.collect.ObjectArrays; |
| |
| |
| /** |
| * JUnit tests to compile the SWCs of the Flex SDK. |
| * <p> |
| * The projects to compile are in the <code>frameworks/projects</code> directory |
| * referenced by the <code>FLEX_HOME</code> environment variable. |
| * Each project has a config file which the <code>COMPC</code> uses to compile the SWC. |
| * |
| * @author Gordon Smith |
| */ |
| public class SDKSWCTests |
| { |
| private static EnvProperties env = EnvProperties.initiate(); |
| |
| private static final String TEXTLAYOUT_NAME = "textLayout"; |
| |
| private String[] extraArgs = new String[]{}; |
| |
| private void compileSWC(String projectName) |
| { |
| // Construct a command line which simply loads the project's config file. |
| assertNotNull("FLEX_HOME not set in unittest.properties", env.SDK); |
| assertNotNull("PLAYERGLOBAL_HOME not set in unittest.properties", env.FPSDK); |
| assertNotNull("AIR_HOME not set in unittest.properties", env.AIRSDK); |
| assertNotNull("TLF_HOME not set in unittest.properties", env.TLF); |
| |
| System.setProperty("flexlib", env.SDK + "/frameworks"); |
| |
| String output = null; |
| String outputSwcName = projectName; |
| try |
| { |
| if(outputSwcName.length() < 3) |
| outputSwcName = "_" + outputSwcName; |
| File tmpFile = File.createTempFile(outputSwcName, ".swc"); |
| tmpFile.deleteOnExit(); |
| output = tmpFile.getAbsolutePath(); |
| } |
| catch (IOException e) |
| { |
| } |
| |
| String configFile; |
| if (projectName.equals(TEXTLAYOUT_NAME)) |
| { |
| configFile = env.TLF + "/compile-config.xml"; |
| } |
| else |
| { |
| configFile = env.SDK + "/frameworks/projects/" + projectName + "/compile-config.xml"; |
| } |
| |
| String[] baseArgs = new String[] |
| { |
| "-load-config+=" + configFile, |
| "+env.PLAYERGLOBAL_HOME=" + env.FPSDK, |
| "+playerglobal.version=" + env.FPVER, |
| "-output=" + output |
| }; |
| |
| String [] allArgs = ObjectArrays.concat(baseArgs, extraArgs, String.class); |
| |
| // Run the COMPC client with the specified command line. |
| COMPC compc = new COMPC(); |
| compc.mainNoExit(allArgs); |
| |
| // Check that the SWC compiled cleanly. |
| List<ICompilerProblem> problems = new ArrayList<ICompilerProblem>(); |
| for (ICompilerProblem problem : compc.getProblems().getFilteredProblems()) |
| { |
| problems.add(problem); |
| } |
| assertThat(problems.size(), is(0)); |
| } |
| |
| @Test |
| public void advancedgridsSWC() |
| { |
| compileSWC("advancedgrids"); |
| } |
| |
| @Test |
| public void airframeworkSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+env.AIR_HOME=" + env.AIRSDK |
| }; |
| |
| compileSWC("airframework"); |
| } |
| |
| @Test |
| public void airsparkSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+env.AIR_HOME=" + env.AIRSDK |
| }; |
| |
| compileSWC("airspark"); |
| } |
| |
| @Test |
| public void apacheSWC() |
| { |
| compileSWC("apache"); |
| } |
| |
| @Test |
| public void authoringsupportSWC() |
| { |
| compileSWC("authoringsupport"); |
| } |
| |
| @Test |
| public void automationSWC() |
| { |
| compileSWC("automation"); |
| } |
| |
| @Test |
| public void automation_agentSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateQNameInSourcePathProblem" |
| }; |
| |
| compileSWC("automation_agent"); |
| } |
| |
| @Test |
| public void automation_airsparkSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+env.AIR_HOME=" + env.AIRSDK |
| }; |
| |
| compileSWC("automation_airspark"); |
| } |
| |
| @Test |
| public void automation_airSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+env.AIR_HOME=" + env.AIRSDK, |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateQNameInSourcePathProblem" |
| }; |
| |
| compileSWC("automation_air"); |
| } |
| |
| @Test |
| public void automation_dmvSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateQNameInSourcePathProblem" |
| }; |
| |
| compileSWC("automation_dmv"); |
| } |
| |
| @Test |
| public void automation_flashflexkitSWC() |
| { |
| compileSWC("automation_flashflexkit"); |
| } |
| |
| @Test |
| public void automation_sparkSWC() |
| { |
| compileSWC("automation_spark"); |
| } |
| |
| @Test |
| public void chartsSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-locale=", |
| }; |
| |
| compileSWC("charts"); |
| } |
| |
| @Test |
| public void coreSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-load-config+=" + env.SDK + "/frameworks/projects/framework/framework-config.xml" |
| }; |
| |
| compileSWC("core"); |
| } |
| |
| @Test |
| public void mxSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-locale=" |
| }; |
| |
| compileSWC("mx"); |
| } |
| |
| @Test |
| public void experimentalSWC() // WARNINGS -> FLEX-33731 |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateSkinStateProblem" |
| }; |
| |
| compileSWC("experimental"); |
| } |
| |
| @Test |
| public void flash_integrationSWC() |
| { |
| compileSWC("flash-integration"); |
| } |
| |
| @Test |
| public void frameworkSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-load-config+=" + env.SDK + "/frameworks/projects/framework/framework-config.xml" |
| }; |
| |
| compileSWC("framework"); |
| } |
| |
| @Test |
| public void haloSWC() |
| { |
| compileSWC("halo"); |
| } |
| |
| @Test |
| public void mobilecomponentsSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+env.AIR_HOME=" + env.AIRSDK |
| }; |
| |
| compileSWC("mobilecomponents"); |
| } |
| |
| @Test |
| public void mobilethemeSWC() // WARNINGS -> FLEX-33305 |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.NoDefinitionForSWCDependencyProblem" |
| }; |
| |
| compileSWC("mobiletheme"); |
| } |
| |
| /* |
| erikdebruin: the playerglobal project doesn't contain source that needs to |
| be compiled with COMPC |
| |
| @Test |
| public void playerglobalSWC() |
| { |
| compileSWC("playerglobal"); |
| } |
| */ |
| |
| @Test |
| public void rpcSWC() |
| { |
| compileSWC("rpc"); |
| } |
| |
| @Test |
| public void spark_dmvSWC() |
| { |
| compileSWC("spark_dmv"); |
| } |
| |
| @Test |
| public void sparkskinsSWC() |
| { |
| compileSWC("sparkskins"); |
| } |
| |
| @Test |
| public void sparkSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateSkinStateProblem" |
| }; |
| |
| compileSWC("spark"); |
| } |
| |
| @Test |
| public void textLayoutSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+source.dir=./textlayout", |
| "-define=CONFIG::debug,false", |
| "-define=CONFIG::release,true" |
| }; |
| |
| compileSWC(TEXTLAYOUT_NAME); |
| } |
| |
| @Test |
| public void tool_airSWC() |
| { |
| extraArgs = new String[] |
| { |
| "+env.AIR_HOME=" + env.AIRSDK, |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateQNameInSourcePathProblem" |
| }; |
| |
| compileSWC("tool_air"); |
| } |
| |
| @Test |
| public void toolSWC() |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateQNameInSourcePathProblem" |
| }; |
| |
| compileSWC("tool"); |
| } |
| |
| @Test |
| public void wireframeSWC() // WARNINGS -> FLEX-33310 |
| { |
| extraArgs = new String[] |
| { |
| "-ignore-problems=org.apache.flex.compiler.problems.DuplicateSkinStateProblem" |
| }; |
| |
| compileSWC("wireframe"); |
| } |
| |
| } |