FLEX-35138 - Implement FlexJS Maven compiler option for 'html-template' - Added the compiler option "htmlTemplate" - Added a first test for a testsuite implemented using the maven-invoker-plugin
NO JIRA: - Fixed an obvious bug in JSGoogPublisher.java (Was using == to compare for String equality) Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/734e89aa Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/734e89aa Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/734e89aa Branch: refs/heads/feature-autobuild/maven-archetypes Commit: 734e89aa884f1b2c909be5a50e7d93631bda0f93 Parents: 3784d29 Author: Christofer Dutz <christofer.d...@codecentric.de> Authored: Wed Oct 5 13:36:16 2016 +0200 Committer: Christofer Dutz <christofer.d...@codecentric.de> Committed: Wed Oct 5 13:36:16 2016 +0200 ---------------------------------------------------------------------- .gitignore | 1 - pom.xml | 7 + testsuite/pom.xml | 105 +++++++++++++++ .../custom-html-template/pom.xml | 128 +++++++++++++++++++ .../src/main/flex/HelloWorld.mxml | 30 +++++ .../main/template/custom-js-index-template.html | 30 +++++ .../custom-html-template/verify.groovy | 62 +++++++++ testsuite/src/it/settings.xml | 55 ++++++++ 8 files changed, 417 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/.gitignore ---------------------------------------------------------------------- diff --git a/.gitignore b/.gitignore index 96c39ca..b37ca3c 100644 --- a/.gitignore +++ b/.gitignore @@ -118,7 +118,6 @@ _ReSharper*/ *.zip *.rar *.tar -html-template #VF2JS generated files vf2js/frameworks/js/ http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 90759ba..4f20976 100644 --- a/pom.xml +++ b/pom.xml @@ -216,6 +216,13 @@ <module>distribution</module> </modules> </profile> + + <profile> + <id>run-testsuite</id> + <modules> + <module>testsuite</module> + </modules> + </profile> </profiles> <repositories> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/testsuite/pom.xml ---------------------------------------------------------------------- diff --git a/testsuite/pom.xml b/testsuite/pom.xml new file mode 100644 index 0000000..cb1e7e0 --- /dev/null +++ b/testsuite/pom.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.flex.flexjs.framework</groupId> + <artifactId>flexjs-framework-parent</artifactId> + <version>0.8.0-SNAPSHOT</version> + </parent> + + <artifactId>testsuite</artifactId> + <version>0.8.0-SNAPSHOT</version> + <packaging>jar</packaging> + + <name>Apache Flex - FlexJS: Testsuite</name> + + <build> + <plugins> + <plugin> + <artifactId>maven-invoker-plugin</artifactId> + <version>2.0.0</version> + <configuration> + <!-- Define the place the projects are copied to and executed in --> + <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> + <!-- Global settings file used by all tests --> + <settingsFile>src/it/settings.xml</settingsFile> + <!-- + Defines the location of the maven local repo + of all artifacts needed by the tests + --> + <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> + <!-- Runs a test for every pom.xml down two levels from the base directory --> + <pomIncludes>*/*/pom.xml</pomIncludes> + <!-- + Define the variables the plugin should replace + The plugin will replace any occurrence of '@variable.name@' by + the value of '<variable.name>...</variable.name>' + --> + <filterProperties> + <flash.version>${flash.version}</flash.version> + <air.version>${air.version}</air.version> + <flexjs.compiler.version>${flexjs.compiler.version}</flexjs.compiler.version> + <flexjs.typedefs.version>${flexjs.typedefs.version}</flexjs.typedefs.version> + <flexjs.framework.version>${project.version}</flexjs.framework.version> + <flexjs.build-tools.version>${flexjs.build-tools.version}</flexjs.build-tools.version> + </filterProperties> + + <!-- Name of the verify script used to check if a test is successfull --> + <postBuildHookScript>verify</postBuildHookScript> + <!-- Add the test-dependencies of this module to the classpath of the tests --> + <addTestClassPath>true</addTestClassPath> + </configuration> + <executions> + <execution> + <id>integration-test</id> + <goals> + <goal>install</goal> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>3.3.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-core</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + </dependencies> + +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/testsuite/src/it/compiler-options/custom-html-template/pom.xml ---------------------------------------------------------------------- diff --git a/testsuite/src/it/compiler-options/custom-html-template/pom.xml b/testsuite/src/it/compiler-options/custom-html-template/pom.xml new file mode 100644 index 0000000..eeb1d43 --- /dev/null +++ b/testsuite/src/it/compiler-options/custom-html-template/pom.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.flex.flexjs.testsuite.compiler-options</groupId> + <artifactId>custom-html-template</artifactId> + <version>@flexjs.framework.version@</version> + <packaging>swf</packaging> + + <description> + This test-project makes use of the htmlTemplate configuration option + which can be used to provide a custom html template for the js compilation. + </description> + + <build> + <sourceDirectory>src/main/flex</sourceDirectory> + <plugins> + <plugin> + <groupId>org.apache.flex.flexjs.compiler</groupId> + <artifactId>flexjs-maven-plugin</artifactId> + <version>@flexjs.compiler.version@</version> + <extensions>true</extensions> + <configuration> + <mainClass>HelloWorld.mxml</mainClass> + <outputJavaScript>true</outputJavaScript> + <htmlTemplate>${basedir}/src/main/template/custom-js-index-template.html</htmlTemplate> + </configuration> + <dependencies> + <dependency> + <groupId>org.apache.flex.flexjs.compiler</groupId> + <artifactId>compiler-jx</artifactId> + <version>@flexjs.compiler.version@</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>2.6</version> + <executions> + <execution> + <id>package-javascript</id> + <phase>package</phase> + <goals> + <goal>war</goal> + </goals> + </execution> + </executions> + <configuration> + <warSourceDirectory>${basedir}/target/javascript/bin/js-debug</warSourceDirectory> + <failOnMissingWebXml>false</failOnMissingWebXml> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.11</version> + <executions> + <execution> + <id>attach-war</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + </execution> + </executions> + <configuration> + <artifacts> + <artifact> + <file>${basedir}/target/${project.artifactId}-${project.version}.war</file> + <type>war</type> + </artifact> + </artifacts> + </configuration> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>com.adobe.flash.framework</groupId> + <artifactId>playerglobal</artifactId> + <version>@flash.version@</version> + <type>swc</type> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.flex.flexjs.framework</groupId> + <artifactId>Core</artifactId> + <version>@flexjs.framework.version@</version> + <type>swc</type> + </dependency> + <dependency> + <groupId>org.apache.flex.flexjs.framework</groupId> + <artifactId>HTML</artifactId> + <version>@flexjs.framework.version@</version> + <type>swc</type> + </dependency> + <dependency> + <groupId>org.apache.flex.flexjs.framework</groupId> + <artifactId>Language</artifactId> + <version>@flexjs.framework.version@</version> + <type>swc</type> + </dependency> + </dependencies> + +</project> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/testsuite/src/it/compiler-options/custom-html-template/src/main/flex/HelloWorld.mxml ---------------------------------------------------------------------- diff --git a/testsuite/src/it/compiler-options/custom-html-template/src/main/flex/HelloWorld.mxml b/testsuite/src/it/compiler-options/custom-html-template/src/main/flex/HelloWorld.mxml new file mode 100644 index 0000000..70d8d20 --- /dev/null +++ b/testsuite/src/it/compiler-options/custom-html-template/src/main/flex/HelloWorld.mxml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + +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. + +--> +<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009" + xmlns:js="library://ns.apache.org/flexjs/basic" > + <js:valuesImpl> + <js:SimpleCSSValuesImpl /> + </js:valuesImpl> + <js:initialView> + <js:View> + <js:Label text="Hello World!" /> + </js:View> + </js:initialView> +</js:Application> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/testsuite/src/it/compiler-options/custom-html-template/src/main/template/custom-js-index-template.html ---------------------------------------------------------------------- diff --git a/testsuite/src/it/compiler-options/custom-html-template/src/main/template/custom-js-index-template.html b/testsuite/src/it/compiler-options/custom-html-template/src/main/template/custom-js-index-template.html new file mode 100644 index 0000000..f2fbcc1 --- /dev/null +++ b/testsuite/src/it/compiler-options/custom-html-template/src/main/template/custom-js-index-template.html @@ -0,0 +1,30 @@ +<!-- + 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. +--> +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <meta name="Custom Template for injecting custom style CSS"> + <link rel="stylesheet" type="text/css" href="${application}.css"> + <link rel="stylesheet" type="text/css" href="my-custom-style.css"> +${head} +</head> +<body> +${body} +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/testsuite/src/it/compiler-options/custom-html-template/verify.groovy ---------------------------------------------------------------------- diff --git a/testsuite/src/it/compiler-options/custom-html-template/verify.groovy b/testsuite/src/it/compiler-options/custom-html-template/verify.groovy new file mode 100644 index 0000000..a62efb8 --- /dev/null +++ b/testsuite/src/it/compiler-options/custom-html-template/verify.groovy @@ -0,0 +1,62 @@ +/* + * + * 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. + * + */ + +import java.io.* +import org.junit.Assert +import org.hamcrest.core.Is +import org.apache.maven.model.io.xpp3.MavenXpp3Reader +import org.apache.maven.model.Model +import java.util.Scanner + +// Get the artifactId and version from the pom. +File pom = new File((File) basedir, "pom.xml") +MavenXpp3Reader reader = new MavenXpp3Reader(); +Model model = reader.read(new FileReader(pom)); +String artifactId = model.artifactId +String version = model.version + +// Find the index.html produced by the build +System.out.println("Base Dir: " + ((File) basedir).getPath()) +String fileName = "target/" + artifactId + "-" + version + "/index.html" +File file = new File((File) basedir, fileName) + +// Check that the index.html file exists and is a file +System.out.println("Template File: " + file.getPath()) +Assert.assertThat("Template file doesn't exist", file.exists(), Is.is(true)) +Assert.assertThat("Template file isn't a file", file.isFile(), Is.is(true)) + +// Check that the file contains the additional content from our template +Scanner sc = new Scanner(file) +boolean foundCustomName = false +boolean foundCustomStylesheet = false +while (sc.hasNextLine()) { + String line = sc.nextLine() + if(line.contains("<meta name=\"Custom Template for injecting custom style CSS\">")) { + foundCustomName = true + } else if(line.contains("<link rel=\"stylesheet\" type=\"text/css\" href=\"my-custom-style.css\">")) { + foundCustomStylesheet = true + } + if(foundCustomName && foundCustomStylesheet) { + break + } +} +Assert.assertThat("Output should contain '<meta name=\"Custom Template for injecting custom style CSS\">'", + foundCustomName, Is.is(true)) +Assert.assertThat("Output should contain '<link rel=\"stylesheet\" type=\"text/css\" href=\"my-custom-style.css\">'", + foundCustomStylesheet, Is.is(true)) http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/734e89aa/testsuite/src/it/settings.xml ---------------------------------------------------------------------- diff --git a/testsuite/src/it/settings.xml b/testsuite/src/it/settings.xml new file mode 100644 index 0000000..4b402f2 --- /dev/null +++ b/testsuite/src/it/settings.xml @@ -0,0 +1,55 @@ +<?xml version="1.0"?> +<!-- + + 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. + +--> +<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" + xmlns="http://maven.apache.org/SETTINGS/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <profiles> + <profile> + <id>it-repo</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <repositories> + <repository> + <id>local.central</id> + <url>@localRepositoryUrl@</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>local.central</id> + <url>@localRepositoryUrl@</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + </profile> + </profiles> +</settings> \ No newline at end of file