ko/archetype-test/src/test/java/org/apidesign/html/archetype/test/VerifyArchetypeTest.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 24 Jun 2013 17:50:44 +0200
branchclassloader
changeset 1225 73c0973e8e0a
parent 1212 ko-archetype-test/src/test/java/org/apidesign/html/archetype/test/VerifyArchetypeTest.java@70defaefc082
child 1227 5a907f38608d
permissions -rw-r--r--
Moving all knockout related code under the 'ko' directory
     1 /**
     2  * HTML via Java(tm) Language Bindings
     3  * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details. apidesign.org
    13  * designates this particular file as subject to the
    14  * "Classpath" exception as provided by apidesign.org
    15  * in the License file that accompanied this code.
    16  *
    17  * You should have received a copy of the GNU General Public License
    18  * along with this program. Look for COPYING file in the top folder.
    19  * If not, see http://wiki.apidesign.org/wiki/GPLwithClassPathException
    20  */
    21 package org.apidesign.html.archetype.test;
    22 
    23 import java.io.File;
    24 import java.util.Properties;
    25 import java.util.zip.ZipFile;
    26 import org.apache.maven.it.Verifier;
    27 import org.testng.annotations.Test;
    28 import static org.testng.Assert.*;
    29 
    30 /**
    31  *
    32  * @author Jaroslav Tulach <jtulach@netbeans.org>
    33  */
    34 public class VerifyArchetypeTest {
    35     @Test public void fxBrwsrCompiles() throws Exception {
    36         final File dir = new File("target/tests/fxcompile/").getAbsoluteFile();
    37         generateFromArchetype(dir);
    38         
    39         File created = new File(dir, "o-a-test");
    40         assertTrue(created.isDirectory(), "Project created");
    41         assertTrue(new File(created, "pom.xml").isFile(), "Pom file is in there");
    42         
    43         Verifier v = new Verifier(created.getAbsolutePath());
    44         v.executeGoal("verify");
    45         
    46         v.verifyErrorFreeLog();
    47         
    48         for (String l : v.loadFile(v.getBasedir(), v.getLogFileName(), false)) {
    49             if (l.contains("j2js")) {
    50                 fail("No pre-compilaton:\n" + l);
    51             }
    52         }
    53         
    54         v.verifyTextInLog("org.apidesign.bck2brwsr.launcher.FXBrwsrLauncher");
    55         v.verifyTextInLog("fxcompile/o-a-test/target/o-a-test-1.0-SNAPSHOT-fxbrwsr.zip");
    56     }
    57     
    58     @Test public void bck2BrwsrCompiles() throws Exception {
    59         final File dir = new File("target/tests/b2bcompile/").getAbsoluteFile();
    60         generateFromArchetype(dir);
    61         
    62         File created = new File(dir, "o-a-test");
    63         assertTrue(created.isDirectory(), "Project created");
    64         assertTrue(new File(created, "pom.xml").isFile(), "Pom file is in there");
    65         
    66         Verifier v = new Verifier(created.getAbsolutePath());
    67         Properties sysProp = v.getSystemProperties();
    68         if (Boolean.getBoolean("java.awt.headless")) {
    69             sysProp.put("java.awt.headless", "true");
    70         }
    71         v.addCliOption("-Pbck2brwsr");
    72         v.executeGoal("verify");
    73         
    74         v.verifyErrorFreeLog();
    75         
    76         // does pre-compilation to JavaScript
    77         v.verifyTextInLog("j2js");
    78         // uses Bck2BrwsrLauncher
    79         v.verifyTextInLog("BaseHTTPLauncher stopServerAndBrwsr");
    80         // building zip:
    81         v.verifyTextInLog("b2bcompile/o-a-test/target/o-a-test-1.0-SNAPSHOT-bck2brwsr.zip");
    82         
    83         for (String l : v.loadFile(v.getBasedir(), v.getLogFileName(), false)) {
    84             if (l.contains("fxbrwsr")) {
    85                 fail("No fxbrwsr:\n" + l);
    86             }
    87         }
    88 
    89         File zip = new File(new File(created, "target"), "o-a-test-1.0-SNAPSHOT-bck2brwsr.zip");
    90         assertTrue(zip.isFile(), "Zip file with website was created");
    91         
    92         ZipFile zf = new ZipFile(zip);
    93         assertNotNull(zf.getEntry("public_html/index.html"), "index.html found");
    94         assertNotNull(zf.getEntry("public_html/twitterExample.css"), "css file found");
    95         
    96     }
    97 
    98     private Verifier generateFromArchetype(final File dir, String... params) throws Exception {
    99         Verifier v = new Verifier(dir.getAbsolutePath());
   100         v.setAutoclean(false);
   101         v.setLogFileName("generate.log");
   102         v.deleteDirectory("");
   103         dir.mkdirs();
   104         Properties sysProp = v.getSystemProperties();
   105         sysProp.put("groupId", "org.apidesign.test");
   106         sysProp.put("artifactId", "o-a-test");
   107         sysProp.put("package", "org.apidesign.test.oat");
   108         sysProp.put("archetypeGroupId", "org.apidesign.html");
   109         sysProp.put("archetypeArtifactId", "knockout4j-archetype");
   110         sysProp.put("archetypeVersion", ArchetypeVersionTest.findCurrentVersion());
   111         
   112         for (String p : params) {
   113             v.addCliOption(p);
   114         }
   115         v.executeGoal("archetype:generate");
   116         v.verifyErrorFreeLog();
   117         return v;
   118     }
   119 }