0
|
1 package nabble.view.web.template;
|
|
2
|
|
3 import nabble.model.Init;
|
|
4 import nabble.modules.ModuleManager;
|
|
5 import nabble.modules.hacks.HacksModule;
|
|
6 import nabble.modules.workgroup.WorkgroupModule;
|
|
7 import nabble.naml.compiler.CompileException;
|
|
8 import nabble.naml.compiler.Module;
|
|
9 import nabble.naml.compiler.Program;
|
|
10 import nabble.naml.compiler.Template;
|
|
11 import nabble.naml.compiler.TemplatePrintWriter;
|
|
12 import nabble.naml.namespaces.BasicNamespace;
|
|
13 import nabble.utils.Log4j;
|
|
14 import org.slf4j.Logger;
|
|
15 import org.slf4j.LoggerFactory;
|
|
16
|
|
17 import java.util.ArrayList;
|
|
18 import java.util.Collections;
|
|
19 import java.util.List;
|
|
20
|
|
21
|
|
22 public final class CompileTest {
|
|
23 private static final Logger logger = LoggerFactory.getLogger(CompileTest.class);
|
|
24
|
|
25 private static final List<Program> keepInMemory = new ArrayList<Program>();
|
|
26
|
|
27 private static void test0(Program program,String macroName,Class<?>... classes) throws CompileException {
|
|
28 if( program.getTemplate( macroName, classes ) == null )
|
|
29 throw new RuntimeException("macro '"+macroName+"' not found");
|
|
30 }
|
|
31
|
|
32 public static void test(Program program,String macroName,Class<?>... classes) throws CompileException {
|
|
33 Class<?>[] a = new Class<?>[classes.length+2];
|
|
34 a[0] = BasicNamespace.class;
|
|
35 a[1] = NabbleNamespace.class;
|
|
36 System.arraycopy(classes,0,a,2,classes.length);
|
|
37 test0(program,macroName,a);
|
|
38 }
|
|
39
|
|
40 static void compileTopic(Program program) throws CompileException {
|
|
41 CompileTest.test( program, "topic", ServletNamespace.class );
|
|
42 CompileTest.test( program, "classic_blog_topic", ServletNamespace.class );
|
|
43 CompileTest.test( program, "list_blog_topic", ServletNamespace.class );
|
|
44 CompileTest.test( program, "threaded_blog_topic", ServletNamespace.class );
|
|
45 CompileTest.test( program, "classic_forum_topic", ServletNamespace.class );
|
|
46 CompileTest.test( program, "list_forum_topic", ServletNamespace.class );
|
|
47 CompileTest.test( program, "threaded_forum_topic", ServletNamespace.class );
|
|
48 }
|
|
49
|
|
50 static void compileAll(Program program) throws CompileException {
|
|
51 runCompileAllMacro(program);
|
|
52 }
|
|
53
|
|
54 static void compileAll() throws CompileException {
|
|
55 Program program;
|
|
56
|
|
57 program = Program.getInstance(ModuleManager.getGenericModules());
|
|
58 compileAll(program);
|
|
59
|
|
60 logger.info("----- Tweak: more_ads -----");
|
|
61 testModule("more_ads", new String[] { "topic", "view_standard", "view_topics", "view_mixed", "view_board", "view_category" });
|
|
62
|
|
63 logger.info("----- Tweak: PPC -----");
|
|
64 testModule("ppc", new String[] { "manage_subscribers" });
|
|
65
|
|
66 logger.info("----- Tweak: Вайнах -----");
|
|
67 testModule("banhax", new String[] { "view_news", "view_gallery" });
|
|
68
|
|
69 logger.info("----- Tweak: PedXing -----");
|
|
70 testModule("pedxing", new String[] { "atom_topics_by_popularity", "topic" });
|
|
71
|
|
72 logger.info("----- Tweak: Jonaspm -----");
|
|
73 testModule("jonaspm", new String[] { "view_news" });
|
|
74
|
|
75 logger.info("----- Tweak: Animeron -----");
|
|
76 testModule("animeron", new String[] { "user_profile", "topic" });
|
|
77
|
|
78 logger.info("----- Tweak: Blackcow -----");
|
|
79 testModule("blackcow", HacksModule.INSTANCE, new String[] { "topic" });
|
|
80
|
|
81 logger.info("----- Languages -----");
|
|
82 String[] langMacros = new String[] { "topic", "view_app", "user_nodes", "send bookmark email", "post_by_email_page" };
|
|
83 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" };
|
|
84 for (String lang : langModules) {
|
|
85 testModule(lang, langMacros);
|
|
86 testEmails(lang);
|
|
87 }
|
|
88
|
|
89 logger.info("----- Social -----");
|
|
90 testModule("social_dropdown_links", new String[] { "topic" });
|
|
91 testModule("social_google_plus_one", new String[] { "topic" });
|
|
92 testModule("social_facebook_like", new String[] { "topic" });
|
|
93 testModule("social_tweet", new String[] { "topic" });
|
|
94
|
|
95 logger.info("----- Content -----");
|
|
96 testModule("content_noindex", new String[] { "topic", "view_standard", "view_topics", "view_mixed" });
|
|
97 testModule("content_open_links_in_new_window", new String[] { "topic" });
|
|
98 testModule("content_smart_cache", new String[] { "view_app" });
|
|
99 testModule("content_news_summary", new String[] { "view_app", "view_news" });
|
|
100
|
|
101 logger.info("----- Email -----");
|
|
102 testModule("email_registration_notification", new String[] { "finish_registration_page" });
|
|
103
|
|
104 logger.info("----- Workgroup -----");
|
|
105 testModule("workgroup", new String[] { "view_app", "topic", "new_topic", "reply" });
|
|
106 /*
|
|
107 logger.info("----- Poll -----");
|
|
108 testModule("poll", new String[] { "new_topic", "reply", "edit_post", "topic", "change_permissions" });
|
|
109 testEmails("poll");
|
|
110 */
|
|
111 }
|
|
112
|
|
113 private static void testModule(String moduleName, String[] macros) throws CompileException {
|
|
114 testModule(moduleName, null, macros);
|
|
115 }
|
|
116
|
|
117 private static void testModule(String moduleName, Module module, String[] macros) throws CompileException {
|
|
118 List<Module> modules = ModuleManager.getGenericModules();
|
|
119 modules.add( ModuleManager.getModule(moduleName) );
|
|
120 if (module != null)
|
|
121 modules.add(module);
|
|
122 Program program = Program.getInstance(modules);
|
|
123 for (String macro: macros) {
|
|
124 if ("topic".equals(macro))
|
|
125 compileTopic(program);
|
|
126 else
|
|
127 CompileTest.test( program, macro, ServletNamespace.class );
|
|
128 }
|
|
129 }
|
|
130
|
|
131 private static void testEmails(String moduleName) throws CompileException {
|
|
132 List<Module> modules = ModuleManager.getGenericModules();
|
|
133 modules.add( ModuleManager.getModule(moduleName) );
|
|
134 Program program = Program.getInstance(modules);
|
|
135 CompileTest.test( program, "notify_subscribers", NodeNamespace.class );
|
|
136 CompileTest.test( program, "digest email", NodeList.class, SubscriptionNamespace.class );
|
|
137 }
|
|
138
|
|
139 static void memTest() throws Exception {
|
|
140 logger.info("memTest");
|
|
141 System.in.read();
|
|
142
|
|
143 Program program;
|
|
144
|
|
145 program = Program.getInstance(ModuleManager.getGenericModules());
|
|
146 keepInMemory.add(program);
|
|
147 compileAll(program);
|
|
148
|
|
149 List<Module> modules = ModuleManager.getGenericModules();
|
|
150
|
|
151 logger.info("----- Tweak: PPC -----");
|
|
152 modules = ModuleManager.getGenericModules();
|
|
153 modules.add( ModuleManager.getModule("ppc") );
|
|
154 program = Program.getInstance(modules);
|
|
155 keepInMemory.add(program);
|
|
156 compileAll(program);
|
|
157
|
|
158 logger.info("----- Tweak: Вайнах -----");
|
|
159 modules = ModuleManager.getGenericModules();
|
|
160 modules.add( ModuleManager.getModule("banhax") );
|
|
161 program = Program.getInstance(modules);
|
|
162 keepInMemory.add(program);
|
|
163 compileAll(program);
|
|
164
|
|
165 logger.info("----- Tweak: PedXing -----");
|
|
166 modules = ModuleManager.getGenericModules();
|
|
167 modules.add( ModuleManager.getModule("pedxing") );
|
|
168 program = Program.getInstance(modules);
|
|
169 keepInMemory.add(program);
|
|
170 compileAll(program);
|
|
171
|
|
172 logger.info("----- Tweak: Jonaspm -----");
|
|
173 modules = ModuleManager.getGenericModules();
|
|
174 modules.add( ModuleManager.getModule("jonaspm") );
|
|
175 program = Program.getInstance(modules);
|
|
176 keepInMemory.add(program);
|
|
177 compileAll(program);
|
|
178
|
|
179 logger.info("----- Tweak: Animeron -----");
|
|
180 modules = ModuleManager.getGenericModules();
|
|
181 modules.add( ModuleManager.getModule("animeron") );
|
|
182 program = Program.getInstance(modules);
|
|
183 keepInMemory.add(program);
|
|
184 compileAll(program);
|
|
185
|
|
186 logger.info("----- Tweak: Blackcow -----");
|
|
187 modules = ModuleManager.getGenericModules();
|
|
188 modules.add(HacksModule.INSTANCE);
|
|
189 modules.add( ModuleManager.getModule("blackcow") );
|
|
190 program = Program.getInstance(modules);
|
|
191 keepInMemory.add(program);
|
|
192 compileAll(program);
|
|
193
|
|
194 System.out.println("done");
|
|
195 System.in.read();
|
|
196 }
|
|
197
|
|
198 static void runCompileAllMacro(Program program) throws CompileException {
|
|
199 Template template = program.getTemplate( "compile_all", BasicNamespace.class );
|
|
200 template.run( TemplatePrintWriter.NULL, Collections.<String,Object>emptyMap(),
|
|
201 new BasicNamespace(template)
|
|
202 );
|
|
203 }
|
|
204
|
|
205 static void runCompileAllMacro() throws CompileException {
|
|
206 List<Module> modules = ModuleManager.getGenericModules();
|
|
207 Program program = Program.getInstance(modules);
|
|
208 runCompileAllMacro(program);
|
|
209 }
|
|
210
|
|
211 static void workgroupTest() throws CompileException {
|
|
212 List<Module> modules = ModuleManager.getGenericModules();
|
|
213 compileAll(Program.getInstance(modules));
|
|
214 logger.info("----- workgroup -----");
|
|
215 modules.add(WorkgroupModule.INSTANCE);
|
|
216 compileAll(Program.getInstance(modules));
|
|
217 }
|
|
218
|
|
219 public static void main(String[] args) {
|
|
220 Log4j.initForConsole();
|
|
221 Init.nop();
|
|
222 try {
|
|
223 if( args.length==1 && args[0].equals("mem") ) {
|
|
224 memTest();
|
|
225 } else {
|
|
226 //System.in.read();
|
|
227 compileAll();
|
|
228 // workgroupTest();
|
|
229 // runCompileAllMacro();
|
|
230 //System.out.println("done");
|
|
231 //System.in.read();
|
|
232 }
|
|
233 } catch(Exception e) {
|
|
234 e.printStackTrace();
|
|
235 }
|
|
236 System.exit(0);
|
|
237 }
|
|
238
|
|
239 }
|