ko-archetype-test/src/test/java/org/apidesign/html/archetype/test/VerifyArchetypeTest.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 15 May 2013 10:53:33 +0200
changeset 1211 c4bcb9c2a973
parent 1208 ea9ac5eea2d4
child 1212 70defaefc082
permissions -rw-r--r--
Launchers share BaseHTTPServer since version 0.7.1
     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         v.addCliOption("-Pbck2brwsr");
    68         v.executeGoal("verify");
    69         
    70         v.verifyErrorFreeLog();
    71         
    72         // does pre-compilation to JavaScript
    73         v.verifyTextInLog("j2js");
    74         // uses Bck2BrwsrLauncher
    75         v.verifyTextInLog("BaseHTTPLauncher stopServerAndBrwsr");
    76         // building zip:
    77         v.verifyTextInLog("b2bcompile/o-a-test/target/o-a-test-1.0-SNAPSHOT-bck2brwsr.zip");
    78         
    79         for (String l : v.loadFile(v.getBasedir(), v.getLogFileName(), false)) {
    80             if (l.contains("fxbrwsr")) {
    81                 fail("No fxbrwsr:\n" + l);
    82             }
    83         }
    84 
    85         File zip = new File(new File(created, "target"), "o-a-test-1.0-SNAPSHOT-bck2brwsr.zip");
    86         assertTrue(zip.isFile(), "Zip file with website was created");
    87         
    88         ZipFile zf = new ZipFile(zip);
    89         assertNotNull(zf.getEntry("public_html/index.html"), "index.html found");
    90         assertNotNull(zf.getEntry("public_html/twitterExample.css"), "css file found");
    91         
    92     }
    93 
    94     private Verifier generateFromArchetype(final File dir, String... params) throws Exception {
    95         Verifier v = new Verifier(dir.getAbsolutePath());
    96         v.setAutoclean(false);
    97         v.setLogFileName("generate.log");
    98         v.deleteDirectory("");
    99         dir.mkdirs();
   100         Properties sysProp = v.getSystemProperties();
   101         sysProp.put("groupId", "org.apidesign.test");
   102         sysProp.put("artifactId", "o-a-test");
   103         sysProp.put("package", "org.apidesign.test.oat");
   104         sysProp.put("archetypeGroupId", "org.apidesign.html");
   105         sysProp.put("archetypeArtifactId", "knockout4j-archetype");
   106         sysProp.put("archetypeVersion", ArchetypeVersionTest.findCurrentVersion());
   107         
   108         for (String p : params) {
   109             v.addCliOption(p);
   110         }
   111         v.executeGoal("archetype:generate");
   112         v.verifyErrorFreeLog();
   113         return v;
   114     }
   115 }