jaroslav@1785: /** jaroslav@1785: * Back 2 Browser Bytecode Translator jaroslav@1785: * Copyright (C) 2012 Jaroslav Tulach jaroslav@1785: * jaroslav@1785: * This program is free software: you can redistribute it and/or modify jaroslav@1785: * it under the terms of the GNU General Public License as published by jaroslav@1785: * the Free Software Foundation, version 2 of the License. jaroslav@1785: * jaroslav@1785: * This program is distributed in the hope that it will be useful, jaroslav@1785: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@1785: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@1785: * GNU General Public License for more details. jaroslav@1785: * jaroslav@1785: * You should have received a copy of the GNU General Public License jaroslav@1785: * along with this program. Look for COPYING file in the top folder. jaroslav@1785: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@1785: */ jaroslav@1785: package org.apidesign.bck2brwsr.demo.calc.staticcompilation; jaroslav@1785: jaroslav@1785: import java.io.BufferedReader; jaroslav@1785: import java.io.InputStreamReader; jaroslav@1785: import java.net.URL; jaroslav@1785: import java.util.Enumeration; jaroslav@1785: import java.util.Map; jaroslav@1785: import java.util.jar.Attributes; jaroslav@1785: import java.util.jar.Manifest; jaroslav@1785: import org.testng.annotations.Test; jaroslav@1785: import static org.testng.Assert.*; jaroslav@1785: jaroslav@1785: public class MinifiedTest { jaroslav@1785: @Test public void minifiedVersionDoesNotContainFQN() throws Exception { jaroslav@1785: final ClassLoader l = MinifiedTest.class.getClassLoader(); jaroslav@1785: Enumeration en = l.getResources("META-INF/MANIFEST.MF"); jaroslav@1785: while (en.hasMoreElements()) { jaroslav@1785: URL u = en.nextElement(); jaroslav@1785: Manifest mf = new Manifest(u.openStream()); jaroslav@1785: for (Map.Entry entrySet : mf.getEntries().entrySet()) { jaroslav@1785: String key = entrySet.getKey(); jaroslav@1785: if (!key.contains("-min.js")) { jaroslav@1785: continue; jaroslav@1785: } jaroslav@1785: if (!key.contains("javaquery.api")) { jaroslav@1785: continue; jaroslav@1785: } jaroslav@1785: try (BufferedReader r = new BufferedReader(new InputStreamReader(l.getResourceAsStream(key)))) { jaroslav@1785: for (;;) { jaroslav@1785: String line = r.readLine(); jaroslav@1785: if (line == null) { jaroslav@1785: break; jaroslav@1785: } jaroslav@1785: if (line.contains(" org_apidesign_bck2brwsr_htmlpage_Knockout")) { jaroslav@1785: fail("Found FQN of non-public class. Is it minified version?: " + line + " in " + key); jaroslav@1785: } jaroslav@1785: } jaroslav@1785: } jaroslav@1785: // success jaroslav@1785: return; jaroslav@1785: } jaroslav@1785: } jaroslav@1785: fail("No minified javaquery found: " + System.getProperty("java.class.path")); jaroslav@1785: } jaroslav@1785: jaroslav@1785: @Test public void debugVersionContainsFQN() throws Exception { jaroslav@1785: final ClassLoader l = MinifiedTest.class.getClassLoader(); jaroslav@1785: Enumeration en = l.getResources("META-INF/MANIFEST.MF"); jaroslav@1785: while (en.hasMoreElements()) { jaroslav@1785: URL u = en.nextElement(); jaroslav@1785: Manifest mf = new Manifest(u.openStream()); jaroslav@1785: for (Map.Entry entrySet : mf.getEntries().entrySet()) { jaroslav@1785: String key = entrySet.getKey(); jaroslav@1785: if (!key.contains("-debug.js")) { jaroslav@1785: continue; jaroslav@1785: } jaroslav@1785: if (!key.contains("javaquery.api")) { jaroslav@1785: continue; jaroslav@1785: } jaroslav@1785: try (BufferedReader r = new BufferedReader(new InputStreamReader(l.getResourceAsStream(key)))) { jaroslav@1785: for (;;) { jaroslav@1785: String line = r.readLine(); jaroslav@1785: if (line == null) { jaroslav@1785: break; jaroslav@1785: } jaroslav@1785: if (line.contains(" org_apidesign_bck2brwsr_htmlpage_Knockout")) { jaroslav@1785: // ok, it should be there jaroslav@1785: return; jaroslav@1785: } jaroslav@1785: } jaroslav@1785: } jaroslav@1785: fail("Found no FQN of non-public Knockout class. Is it debug version?:" + key); jaroslav@1785: } jaroslav@1785: } jaroslav@1785: fail("No debug javaquery found: " + System.getProperty("java.class.path")); jaroslav@1785: } jaroslav@1785: jaroslav@1785: }