view src/nabble/view/web/template/CompileTest.java @ 47:72765b66e2c3

remove mailing list code
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 18 Jun 2021 17:44:24 -0600
parents cc5b7d515580
children
line wrap: on
line source

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" };
		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" });
		testEmails("workgroup");
/*
		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);
	}

}