Mercurial Hosting > nabble
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); + } + +}