diff src/nabble/view/web/template/CompileTest.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children cc5b7d515580
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/view/web/template/CompileTest.java	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,239 @@
+package nabble.view.web.template;
+
+import nabble.model.Init;
+import nabble.modules.ModuleManager;
+import nabble.modules.hacks.HacksModule;
+import nabble.modules.workgroup.WorkgroupModule;
+import nabble.naml.compiler.CompileException;
+import nabble.naml.compiler.Module;
+import nabble.naml.compiler.Program;
+import nabble.naml.compiler.Template;
+import nabble.naml.compiler.TemplatePrintWriter;
+import nabble.naml.namespaces.BasicNamespace;
+import nabble.utils.Log4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+
+public final class CompileTest {
+	private static final Logger logger = LoggerFactory.getLogger(CompileTest.class);
+
+	private static final List<Program> keepInMemory = new ArrayList<Program>();
+
+	private static void test0(Program program,String macroName,Class<?>... classes) throws CompileException {
+		if( program.getTemplate( macroName, classes ) == null )
+			throw new RuntimeException("macro '"+macroName+"' not found");
+	}
+
+	public static void test(Program program,String macroName,Class<?>... classes) throws CompileException {
+		Class<?>[] a = new Class<?>[classes.length+2];
+		a[0] = BasicNamespace.class;
+		a[1] = NabbleNamespace.class;
+		System.arraycopy(classes,0,a,2,classes.length);
+		test0(program,macroName,a);
+	}
+
+	static void compileTopic(Program program) throws CompileException {
+		CompileTest.test( program, "topic", ServletNamespace.class );
+		CompileTest.test( program, "classic_blog_topic", ServletNamespace.class );
+		CompileTest.test( program, "list_blog_topic", ServletNamespace.class );
+		CompileTest.test( program, "threaded_blog_topic", ServletNamespace.class );
+		CompileTest.test( program, "classic_forum_topic", ServletNamespace.class );
+		CompileTest.test( program, "list_forum_topic", ServletNamespace.class );
+		CompileTest.test( program, "threaded_forum_topic", ServletNamespace.class );
+	}
+
+	static void compileAll(Program program) throws CompileException {
+		runCompileAllMacro(program);
+	}
+
+	static void compileAll() throws CompileException {
+		Program program;
+
+		program = Program.getInstance(ModuleManager.getGenericModules());
+		compileAll(program);
+
+		logger.info("----- Tweak: more_ads -----");
+		testModule("more_ads", new String[] { "topic", "view_standard", "view_topics", "view_mixed", "view_board", "view_category" });
+
+		logger.info("----- Tweak: PPC -----");
+		testModule("ppc", new String[] { "manage_subscribers" });
+
+		logger.info("----- Tweak: Вайнах -----");
+		testModule("banhax", new String[] { "view_news", "view_gallery" });
+
+		logger.info("----- Tweak: PedXing -----");
+		testModule("pedxing", new String[] { "atom_topics_by_popularity", "topic" });
+
+		logger.info("----- Tweak: Jonaspm -----");
+		testModule("jonaspm", new String[] { "view_news" });
+
+		logger.info("----- Tweak: Animeron -----");
+		testModule("animeron", new String[] { "user_profile", "topic" });
+
+		logger.info("----- Tweak: Blackcow -----");
+		testModule("blackcow", HacksModule.INSTANCE, new String[] { "topic" });
+
+		logger.info("----- Languages -----");
+		String[] langMacros = new String[] { "topic", "view_app", "user_nodes", "send bookmark email", "post_by_email_page" };
+		String[] langModules = new String[] { "lang_pt_br", "lang_ch_si", "lang_ch_tr", "lang_fr_fr", "lang_sv", "lang_es", "lang_cs_cz", "lang_ell", "lang_tu", "lang_pl", "lang_rus_ru" };
+		for (String lang : langModules) {
+			testModule(lang, langMacros);
+			testEmails(lang);
+		}
+
+		logger.info("----- Social -----");
+		testModule("social_dropdown_links", new String[] { "topic" });
+		testModule("social_google_plus_one", new String[] { "topic" });
+		testModule("social_facebook_like", new String[] { "topic" });
+		testModule("social_tweet", new String[] { "topic" });
+
+		logger.info("----- Content -----");
+		testModule("content_noindex", new String[] { "topic", "view_standard", "view_topics", "view_mixed" });
+		testModule("content_open_links_in_new_window", new String[] { "topic" });
+		testModule("content_smart_cache", new String[] { "view_app" });
+		testModule("content_news_summary", new String[] { "view_app", "view_news" });
+
+		logger.info("----- Email -----");
+		testModule("email_registration_notification", new String[] { "finish_registration_page" });
+
+		logger.info("----- Workgroup -----");
+		testModule("workgroup", new String[] { "view_app", "topic", "new_topic", "reply" });
+/*
+		logger.info("----- Poll -----");
+		testModule("poll", new String[] { "new_topic", "reply", "edit_post", "topic", "change_permissions" });
+		testEmails("poll");
+*/
+	}
+
+	private static void testModule(String moduleName, String[] macros) throws CompileException {
+		testModule(moduleName, null, macros);
+	}
+
+	private static void testModule(String moduleName, Module module, String[] macros) throws CompileException {
+		List<Module> modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule(moduleName) );
+		if (module != null)
+			modules.add(module);
+		Program program = Program.getInstance(modules);
+		for (String macro: macros) {
+			if ("topic".equals(macro))
+				compileTopic(program);
+			else
+				CompileTest.test( program, macro, ServletNamespace.class );
+		}
+	}
+
+	private static void testEmails(String moduleName) throws CompileException {
+		List<Module> modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule(moduleName) );
+		Program program = Program.getInstance(modules);
+		CompileTest.test( program, "notify_subscribers", NodeNamespace.class );
+		CompileTest.test( program, "digest email", NodeList.class, SubscriptionNamespace.class );
+	}
+
+	static void memTest() throws Exception {
+		logger.info("memTest");
+System.in.read();
+
+		Program program;
+
+		program = Program.getInstance(ModuleManager.getGenericModules());
+		keepInMemory.add(program);
+		compileAll(program);
+
+		List<Module> modules = ModuleManager.getGenericModules();
+
+		logger.info("----- Tweak: PPC -----");
+		modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule("ppc") );
+		program = Program.getInstance(modules);
+		keepInMemory.add(program);
+		compileAll(program);
+
+		logger.info("----- Tweak: Вайнах -----");
+		modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule("banhax") );
+		program = Program.getInstance(modules);
+		keepInMemory.add(program);
+		compileAll(program);
+
+		logger.info("----- Tweak: PedXing -----");
+		modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule("pedxing") );
+		program = Program.getInstance(modules);
+		keepInMemory.add(program);
+		compileAll(program);
+
+		logger.info("----- Tweak: Jonaspm -----");
+		modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule("jonaspm") );
+		program = Program.getInstance(modules);
+		keepInMemory.add(program);
+		compileAll(program);
+
+		logger.info("----- Tweak: Animeron -----");
+		modules = ModuleManager.getGenericModules();
+		modules.add( ModuleManager.getModule("animeron") );
+		program = Program.getInstance(modules);
+		keepInMemory.add(program);
+		compileAll(program);
+
+		logger.info("----- Tweak: Blackcow -----");
+		modules = ModuleManager.getGenericModules();
+		modules.add(HacksModule.INSTANCE);
+		modules.add( ModuleManager.getModule("blackcow") );
+		program = Program.getInstance(modules);
+		keepInMemory.add(program);
+		compileAll(program);
+
+		System.out.println("done");
+		System.in.read();
+	}
+
+	static void runCompileAllMacro(Program program) throws CompileException {
+		Template template = program.getTemplate( "compile_all", BasicNamespace.class );
+		template.run( TemplatePrintWriter.NULL, Collections.<String,Object>emptyMap(),
+			new BasicNamespace(template)
+		);
+	}
+
+	static void runCompileAllMacro() throws CompileException {
+		List<Module> modules = ModuleManager.getGenericModules();
+		Program program = Program.getInstance(modules);
+		runCompileAllMacro(program);
+	}
+
+	static void workgroupTest() throws CompileException {
+		List<Module> modules = ModuleManager.getGenericModules();
+		compileAll(Program.getInstance(modules));
+		logger.info("----- workgroup -----");
+		modules.add(WorkgroupModule.INSTANCE);
+		compileAll(Program.getInstance(modules));
+	}
+
+	public static void main(String[] args) {
+		Log4j.initForConsole();
+		Init.nop();
+		try {
+			if( args.length==1 && args[0].equals("mem") ) {
+				memTest();
+			} else {
+//System.in.read();
+				compileAll();
+//				workgroupTest();
+//				runCompileAllMacro();
+//System.out.println("done");
+//System.in.read();
+			}
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+		System.exit(0);
+	}
+
+}