qwikdoc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/CHANGES +3 -0
  4. data/COPYING +340 -0
  5. data/Gemfile +3 -0
  6. data/README.md +10 -0
  7. data/Rakefile +10 -0
  8. data/TextFormattingRules +137 -0
  9. data/TextFormattingRules.ja +143 -0
  10. data/bin/qwikdoc +34 -0
  11. data/lib/qwik_doc.rb +15 -0
  12. data/lib/qwik_doc/hack.rb +184 -0
  13. data/qwikdoc.gemspec +26 -0
  14. data/spec/qwik_doc_spec.rb +305 -0
  15. data/spec/spec_helper.rb +12 -0
  16. data/vendor/qwik/Makefile +63 -0
  17. data/vendor/qwik/Rakefile +17 -0
  18. data/vendor/qwik/act-aa.rb +83 -0
  19. data/vendor/qwik/act-archive.rb +386 -0
  20. data/vendor/qwik/act-attach.rb +304 -0
  21. data/vendor/qwik/act-backup.rb +236 -0
  22. data/vendor/qwik/act-basic.rb +325 -0
  23. data/vendor/qwik/act-book.rb +161 -0
  24. data/vendor/qwik/act-calc.rb +371 -0
  25. data/vendor/qwik/act-charset.rb +251 -0
  26. data/vendor/qwik/act-christel.rb +112 -0
  27. data/vendor/qwik/act-chronology.rb +149 -0
  28. data/vendor/qwik/act-code.rb +155 -0
  29. data/vendor/qwik/act-comment.rb +554 -0
  30. data/vendor/qwik/act-config.rb +49 -0
  31. data/vendor/qwik/act-counter.rb +125 -0
  32. data/vendor/qwik/act-day.rb +96 -0
  33. data/vendor/qwik/act-describe.rb +135 -0
  34. data/vendor/qwik/act-diary.rb +109 -0
  35. data/vendor/qwik/act-edit.rb +317 -0
  36. data/vendor/qwik/act-embed-html.rb +296 -0
  37. data/vendor/qwik/act-emode.rb +150 -0
  38. data/vendor/qwik/act-event.rb +187 -0
  39. data/vendor/qwik/act-file.rb +303 -0
  40. data/vendor/qwik/act-files.rb +771 -0
  41. data/vendor/qwik/act-getpass.rb +295 -0
  42. data/vendor/qwik/act-history.rb +136 -0
  43. data/vendor/qwik/act-html.rb +204 -0
  44. data/vendor/qwik/act-httpauth.rb +147 -0
  45. data/vendor/qwik/act-include.rb +142 -0
  46. data/vendor/qwik/act-interwiki.rb +189 -0
  47. data/vendor/qwik/act-isearch.rb +109 -0
  48. data/vendor/qwik/act-keywords.rb +137 -0
  49. data/vendor/qwik/act-lang.rb +81 -0
  50. data/vendor/qwik/act-license.rb +63 -0
  51. data/vendor/qwik/act-list.rb +287 -0
  52. data/vendor/qwik/act-login.rb +410 -0
  53. data/vendor/qwik/act-logout.rb +60 -0
  54. data/vendor/qwik/act-mail.rb +159 -0
  55. data/vendor/qwik/act-map.rb +292 -0
  56. data/vendor/qwik/act-md5.rb +42 -0
  57. data/vendor/qwik/act-mdlb.rb +741 -0
  58. data/vendor/qwik/act-media.rb +416 -0
  59. data/vendor/qwik/act-member.rb +157 -0
  60. data/vendor/qwik/act-menu.rb +142 -0
  61. data/vendor/qwik/act-metadata.rb +323 -0
  62. data/vendor/qwik/act-mlsubmitform.rb +49 -0
  63. data/vendor/qwik/act-monitor.rb +167 -0
  64. data/vendor/qwik/act-new.rb +418 -0
  65. data/vendor/qwik/act-pagelist.rb +248 -0
  66. data/vendor/qwik/act-password.rb +145 -0
  67. data/vendor/qwik/act-plan.rb +210 -0
  68. data/vendor/qwik/act-povray.rb +230 -0
  69. data/vendor/qwik/act-presen.rb +380 -0
  70. data/vendor/qwik/act-redirect.rb +133 -0
  71. data/vendor/qwik/act-ring.rb +1071 -0
  72. data/vendor/qwik/act-rrefs.rb +255 -0
  73. data/vendor/qwik/act-ruby.rb +116 -0
  74. data/vendor/qwik/act-sample.rb +170 -0
  75. data/vendor/qwik/act-save.rb +295 -0
  76. data/vendor/qwik/act-schedule.rb +374 -0
  77. data/vendor/qwik/act-search.rb +180 -0
  78. data/vendor/qwik/act-searchwords.rb +51 -0
  79. data/vendor/qwik/act-sendpass.rb +83 -0
  80. data/vendor/qwik/act-site.rb +89 -0
  81. data/vendor/qwik/act-sitebackup.rb +419 -0
  82. data/vendor/qwik/act-sitelog.rb +118 -0
  83. data/vendor/qwik/act-smil.rb +299 -0
  84. data/vendor/qwik/act-status.rb +220 -0
  85. data/vendor/qwik/act-style.rb +608 -0
  86. data/vendor/qwik/act-table.rb +263 -0
  87. data/vendor/qwik/act-tableform.rb +241 -0
  88. data/vendor/qwik/act-tag.rb +103 -0
  89. data/vendor/qwik/act-text.rb +70 -0
  90. data/vendor/qwik/act-textarea.rb +164 -0
  91. data/vendor/qwik/act-theme.rb +346 -0
  92. data/vendor/qwik/act-toc.rb +112 -0
  93. data/vendor/qwik/act-typekey.rb +198 -0
  94. data/vendor/qwik/act-under-const.rb +94 -0
  95. data/vendor/qwik/act-webservice.rb +321 -0
  96. data/vendor/qwik/act-wema.rb +558 -0
  97. data/vendor/qwik/act-wysiwyg.rb +238 -0
  98. data/vendor/qwik/action.rb +325 -0
  99. data/vendor/qwik/autoreload.rb +98 -0
  100. data/vendor/qwik/bench-bench.rb +28 -0
  101. data/vendor/qwik/bench-emode.rb +47 -0
  102. data/vendor/qwik/bench-format-xml.rb +70 -0
  103. data/vendor/qwik/bench-large-table.rb +62 -0
  104. data/vendor/qwik/bench-md5.rb +14 -0
  105. data/vendor/qwik/bench-module-session.rb +19 -0
  106. data/vendor/qwik/bench-page.rb +50 -0
  107. data/vendor/qwik/bench-s-md5.rb +28 -0
  108. data/vendor/qwik/bench-session.rb +25 -0
  109. data/vendor/qwik/bench-textformat.rb +31 -0
  110. data/vendor/qwik/catalog-factory.rb +91 -0
  111. data/vendor/qwik/catalog-ja.rb +479 -0
  112. data/vendor/qwik/catalog-ml-ja.rb +145 -0
  113. data/vendor/qwik/check-act-monitor.rb +112 -0
  114. data/vendor/qwik/check-act-monitor2.rb +46 -0
  115. data/vendor/qwik/check-act-theme.rb +27 -0
  116. data/vendor/qwik/check-event.rb +112 -0
  117. data/vendor/qwik/check-event2.rb +55 -0
  118. data/vendor/qwik/check-htree-rexml.rb +77 -0
  119. data/vendor/qwik/check-htree.rb +51 -0
  120. data/vendor/qwik/check-libxml.rb +135 -0
  121. data/vendor/qwik/check-many-pages.rb +47 -0
  122. data/vendor/qwik/check-monitor.rb +33 -0
  123. data/vendor/qwik/check-observer.rb +67 -0
  124. data/vendor/qwik/check-server.rb +61 -0
  125. data/vendor/qwik/check-uuencode.rb +33 -0
  126. data/vendor/qwik/check-webdav.rb +65 -0
  127. data/vendor/qwik/check-xml-xpath.rb +27 -0
  128. data/vendor/qwik/common-backtrace.rb +94 -0
  129. data/vendor/qwik/common-basic.rb +111 -0
  130. data/vendor/qwik/common-condition.rb +142 -0
  131. data/vendor/qwik/common-error.rb +48 -0
  132. data/vendor/qwik/common-gettext.rb +50 -0
  133. data/vendor/qwik/common-javascript.rb +45 -0
  134. data/vendor/qwik/common-notice.rb +132 -0
  135. data/vendor/qwik/common-plain.rb +105 -0
  136. data/vendor/qwik/common-plugin.rb +111 -0
  137. data/vendor/qwik/common-res.rb +76 -0
  138. data/vendor/qwik/common-resolve.rb +92 -0
  139. data/vendor/qwik/common-send.rb +171 -0
  140. data/vendor/qwik/common-session.rb +139 -0
  141. data/vendor/qwik/common-surface.rb +261 -0
  142. data/vendor/qwik/common-url.rb +90 -0
  143. data/vendor/qwik/compat/Makefile +12 -0
  144. data/vendor/qwik/compat/add_load_path.rb +1 -0
  145. data/vendor/qwik/config.rb +299 -0
  146. data/vendor/qwik/db-b-backup.rb +142 -0
  147. data/vendor/qwik/db-backup.rb +184 -0
  148. data/vendor/qwik/db-berkeley.rb +306 -0
  149. data/vendor/qwik/db-filesystem.rb +305 -0
  150. data/vendor/qwik/db-indexer.rb +154 -0
  151. data/vendor/qwik/db-searchwords.rb +238 -0
  152. data/vendor/qwik/description-ja.rb +267 -0
  153. data/vendor/qwik/description.rb +256 -0
  154. data/vendor/qwik/dev-add-copyright.rb +23 -0
  155. data/vendor/qwik/dev-backup.rb +24 -0
  156. data/vendor/qwik/dev-bench.rb +175 -0
  157. data/vendor/qwik/dev-calctime.rb +52 -0
  158. data/vendor/qwik/dev-css-compressor.rb +60 -0
  159. data/vendor/qwik/dev-extract-catalog.rb +102 -0
  160. data/vendor/qwik/dev-js-compressor.rb +73 -0
  161. data/vendor/qwik/dev-release.rb +235 -0
  162. data/vendor/qwik/dev-replace.rb +353 -0
  163. data/vendor/qwik/dev-sendmail.rb +25 -0
  164. data/vendor/qwik/farm.rb +283 -0
  165. data/vendor/qwik/gettext.rb +56 -0
  166. data/vendor/qwik/group-cond.rb +157 -0
  167. data/vendor/qwik/group-config.rb +247 -0
  168. data/vendor/qwik/group-confirm.rb +147 -0
  169. data/vendor/qwik/group-db.rb +326 -0
  170. data/vendor/qwik/group-mail.rb +195 -0
  171. data/vendor/qwik/group-member.rb +307 -0
  172. data/vendor/qwik/group-sendmail.rb +231 -0
  173. data/vendor/qwik/group-site.rb +374 -0
  174. data/vendor/qwik/group-sweep.rb +63 -0
  175. data/vendor/qwik/group.rb +157 -0
  176. data/vendor/qwik/helper.rb +6 -0
  177. data/vendor/qwik/html-generator.rb +104 -0
  178. data/vendor/qwik/html-to-wabisabi.rb +149 -0
  179. data/vendor/qwik/htree-diff.rb +87 -0
  180. data/vendor/qwik/htree-format-xml.rb +57 -0
  181. data/vendor/qwik/htree-generator.rb +144 -0
  182. data/vendor/qwik/htree-get.rb +251 -0
  183. data/vendor/qwik/htree-html-generator.rb +179 -0
  184. data/vendor/qwik/htree-template.rb +263 -0
  185. data/vendor/qwik/htree-to-wabisabi.rb +171 -0
  186. data/vendor/qwik/loadlib.rb +79 -0
  187. data/vendor/qwik/logger.rb +115 -0
  188. data/vendor/qwik/mail-body.rb +171 -0
  189. data/vendor/qwik/mail-header.rb +474 -0
  190. data/vendor/qwik/mail-multipart.rb +193 -0
  191. data/vendor/qwik/mail-parse.rb +147 -0
  192. data/vendor/qwik/mail.rb +341 -0
  193. data/vendor/qwik/mailaddress.rb +83 -0
  194. data/vendor/qwik/mdlb-model.rb +81 -0
  195. data/vendor/qwik/mdlb-sample.rb +324 -0
  196. data/vendor/qwik/ml-catalog-factory.rb +27 -0
  197. data/vendor/qwik/ml-exception.rb +15 -0
  198. data/vendor/qwik/ml-generator.rb +28 -0
  199. data/vendor/qwik/ml-gettext.rb +137 -0
  200. data/vendor/qwik/ml-logger.rb +82 -0
  201. data/vendor/qwik/ml-memory.rb +65 -0
  202. data/vendor/qwik/ml-msg-validator.rb +86 -0
  203. data/vendor/qwik/ml-processor.rb +609 -0
  204. data/vendor/qwik/ml-quickml-server.rb +122 -0
  205. data/vendor/qwik/ml-sendmail.rb +0 -0
  206. data/vendor/qwik/ml-server.rb +107 -0
  207. data/vendor/qwik/ml-session.rb +348 -0
  208. data/vendor/qwik/ml-sweeper.rb +101 -0
  209. data/vendor/qwik/mock-logger.rb +65 -0
  210. data/vendor/qwik/mock-sendmail.rb +78 -0
  211. data/vendor/qwik/mock-socket.rb +82 -0
  212. data/vendor/qwik/modulobe.rb +406 -0
  213. data/vendor/qwik/mongrel-server.rb +72 -0
  214. data/vendor/qwik/page-files.rb +249 -0
  215. data/vendor/qwik/page-generate.rb +82 -0
  216. data/vendor/qwik/page-get.rb +262 -0
  217. data/vendor/qwik/page-images.rb +168 -0
  218. data/vendor/qwik/page-put.rb +128 -0
  219. data/vendor/qwik/page-rrefs.rb +154 -0
  220. data/vendor/qwik/page-title.rb +0 -0
  221. data/vendor/qwik/page-wikidb.rb +234 -0
  222. data/vendor/qwik/page.rb +67 -0
  223. data/vendor/qwik/pages.rb +444 -0
  224. data/vendor/qwik/parse-plugin.rb +249 -0
  225. data/vendor/qwik/parser-emode.rb +116 -0
  226. data/vendor/qwik/parser-inline.rb +273 -0
  227. data/vendor/qwik/parser.rb +350 -0
  228. data/vendor/qwik/password.rb +183 -0
  229. data/vendor/qwik/periodic.rb +79 -0
  230. data/vendor/qwik/qp.rb +56 -0
  231. data/vendor/qwik/qwik-service.rb +341 -0
  232. data/vendor/qwik/qwik.rb +5 -0
  233. data/vendor/qwik/qwikweb-adduser.rb +34 -0
  234. data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
  235. data/vendor/qwik/qwikweb-incgen.rb +28 -0
  236. data/vendor/qwik/qwikweb-makesite.rb +41 -0
  237. data/vendor/qwik/qwikweb-server.rb +44 -0
  238. data/vendor/qwik/qwikweb-showpassword.rb +26 -0
  239. data/vendor/qwik/qwikweb-watchlog.rb +67 -0
  240. data/vendor/qwik/request-path.rb +304 -0
  241. data/vendor/qwik/request-ua.rb +76 -0
  242. data/vendor/qwik/request-webrick.rb +81 -0
  243. data/vendor/qwik/request.rb +91 -0
  244. data/vendor/qwik/resolve-tdiary.rb +292 -0
  245. data/vendor/qwik/resolve.rb +121 -0
  246. data/vendor/qwik/response.rb +228 -0
  247. data/vendor/qwik/server-memory.rb +57 -0
  248. data/vendor/qwik/server-webrick.rb +102 -0
  249. data/vendor/qwik/server.rb +252 -0
  250. data/vendor/qwik/site-config.rb +149 -0
  251. data/vendor/qwik/site-db.rb +136 -0
  252. data/vendor/qwik/site-event.rb +162 -0
  253. data/vendor/qwik/site-files.rb +86 -0
  254. data/vendor/qwik/site-group.rb +103 -0
  255. data/vendor/qwik/site-index.rb +47 -0
  256. data/vendor/qwik/site-log.rb +64 -0
  257. data/vendor/qwik/site-member.rb +230 -0
  258. data/vendor/qwik/site-monitor.rb +97 -0
  259. data/vendor/qwik/site-pages.rb +62 -0
  260. data/vendor/qwik/site-plan.rb +139 -0
  261. data/vendor/qwik/site-report.rb +282 -0
  262. data/vendor/qwik/site-resolve.rb +230 -0
  263. data/vendor/qwik/site-rrefs.rb +18 -0
  264. data/vendor/qwik/site-search.rb +180 -0
  265. data/vendor/qwik/site-timeline.rb +153 -0
  266. data/vendor/qwik/site-url.rb +189 -0
  267. data/vendor/qwik/site.rb +76 -0
  268. data/vendor/qwik/smil-time.rb +105 -0
  269. data/vendor/qwik/smtp-session.rb +331 -0
  270. data/vendor/qwik/template-generator.rb +149 -0
  271. data/vendor/qwik/template.rb +85 -0
  272. data/vendor/qwik/test-common.rb +10 -0
  273. data/vendor/qwik/test-ml-info.rb +225 -0
  274. data/vendor/qwik/test-module-ml.rb +142 -0
  275. data/vendor/qwik/test-module-path.rb +110 -0
  276. data/vendor/qwik/test-module-public.rb +70 -0
  277. data/vendor/qwik/test-module-server.rb +98 -0
  278. data/vendor/qwik/test-module-session.rb +264 -0
  279. data/vendor/qwik/test-module-suite.rb +91 -0
  280. data/vendor/qwik/test-ms-applemail.rb +59 -0
  281. data/vendor/qwik/test-ms-attach.rb +174 -0
  282. data/vendor/qwik/test-ms-basic.rb +40 -0
  283. data/vendor/qwik/test-ms-close.rb +35 -0
  284. data/vendor/qwik/test-ms-confirm.rb +75 -0
  285. data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
  286. data/vendor/qwik/test-ms-japanese.rb +97 -0
  287. data/vendor/qwik/test-ms-jfilename.rb +82 -0
  288. data/vendor/qwik/test-ms-large.rb +58 -0
  289. data/vendor/qwik/test-ms-member.rb +103 -0
  290. data/vendor/qwik/test-ms-multipart.rb +84 -0
  291. data/vendor/qwik/test-ms-org.rb +129 -0
  292. data/vendor/qwik/test-ms-plan.rb +130 -0
  293. data/vendor/qwik/test-ms-post.rb +53 -0
  294. data/vendor/qwik/test-ms-quopri.rb +76 -0
  295. data/vendor/qwik/test-sub-quopri.rb +45 -0
  296. data/vendor/qwik/test-submit-base64.rb +59 -0
  297. data/vendor/qwik/test-submit-forward.rb +61 -0
  298. data/vendor/qwik/test-submit-html-mail.rb +52 -0
  299. data/vendor/qwik/test-submit-japanese.rb +135 -0
  300. data/vendor/qwik/test-submit-jfilename.rb +144 -0
  301. data/vendor/qwik/test-submit-uuencode.rb +71 -0
  302. data/vendor/qwik/test-suite-all.rb +8 -0
  303. data/vendor/qwik/test-suite-basic.rb +9 -0
  304. data/vendor/qwik/test-suite-ml.rb +9 -0
  305. data/vendor/qwik/test-typekey.rb +64 -0
  306. data/vendor/qwik/testunit.rb +45 -0
  307. data/vendor/qwik/tokenizer-inline.rb +294 -0
  308. data/vendor/qwik/tokenizer.rb +332 -0
  309. data/vendor/qwik/typekey.rb +160 -0
  310. data/vendor/qwik/util-basic.rb +135 -0
  311. data/vendor/qwik/util-charset.rb +332 -0
  312. data/vendor/qwik/util-css.rb +56 -0
  313. data/vendor/qwik/util-csv-tokenizer.rb +113 -0
  314. data/vendor/qwik/util-filename.rb +112 -0
  315. data/vendor/qwik/util-pathname.rb +202 -0
  316. data/vendor/qwik/util-pid.rb +58 -0
  317. data/vendor/qwik/util-safe.rb +67 -0
  318. data/vendor/qwik/util-sendmail.rb +273 -0
  319. data/vendor/qwik/util-string.rb +203 -0
  320. data/vendor/qwik/util-time.rb +125 -0
  321. data/vendor/qwik/util-webrick.rb +176 -0
  322. data/vendor/qwik/version.rb +11 -0
  323. data/vendor/qwik/wabisabi-basic.rb +163 -0
  324. data/vendor/qwik/wabisabi-diff.rb +130 -0
  325. data/vendor/qwik/wabisabi-format-xml.rb +310 -0
  326. data/vendor/qwik/wabisabi-generator.rb +262 -0
  327. data/vendor/qwik/wabisabi-index.rb +174 -0
  328. data/vendor/qwik/wabisabi-table.rb +212 -0
  329. data/vendor/qwik/wabisabi-template.rb +295 -0
  330. data/vendor/qwik/wabisabi-to-htree.rb +111 -0
  331. data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
  332. data/vendor/qwik/wabisabi-traverse.rb +207 -0
  333. data/vendor/qwik/wabisabi-validator.rb +116 -0
  334. data/vendor/qwik/wabisabi.rb +5 -0
  335. metadata +416 -0
@@ -0,0 +1,129 @@
1
+ #
2
+ # Copyright (C) 2002-2004 Satoru Takabayashi <satoru@namazu.org>
3
+ # Copyright (C) 2003-2006 Kouichirou Eto
4
+ # All rights reserved.
5
+ # This is free software with ABSOLUTELY NO WARRANTY.
6
+ #
7
+ # You can redistribute it and/or modify it under the terms of
8
+ # the GNU General Public License version 2.
9
+ #
10
+
11
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
12
+ require 'qwik/ml-session'
13
+ require 'qwik/test-module-ml'
14
+ require 'qwik/test-module-path'
15
+ require 'qwik/mock-logger'
16
+ require 'qwik/mock-socket'
17
+ require 'qwik/mock-sendmail'
18
+ $test = true
19
+
20
+ class TestMLSessionOriginal < Test::Unit::TestCase
21
+ def setup
22
+ config = {
23
+ # Debug.
24
+ :verbose_mode => true, # *TEST*
25
+
26
+ # ML server config.
27
+ :sweep_interval => 10, # *TEST*
28
+ :allowable_error_interval => 3, # *TEST*
29
+ :auto_unsubscribe_count => 3, # *TEST*
30
+ :confirm_ml_creation => false, # *TEST*
31
+
32
+ # Config for each group.
33
+ :max_members => 2,
34
+ :max_mail_length => 10 * 1024, # *TEST*
35
+ :ml_life_time => 170, # *TEST*
36
+ :ml_alert_time => 160, # *TEST*
37
+
38
+ # Files and directories.
39
+ :sites_dir => '.', # *TEST*
40
+ :ml_pid_file => 'quickml.pid', # *TEST*
41
+ :log_dir => '.',
42
+ }
43
+
44
+ config[:logger] = QuickML::MockLogger.new
45
+
46
+ @config = Qwik::Config.new
47
+ @config.update(config)
48
+ QuickML::ServerMemory.init_mutex(@config)
49
+ QuickML::ServerMemory.init_catalog(@config)
50
+
51
+ @dir = './test/'.path
52
+ @dir.teardown
53
+ @dir.rmtree if @dir.directory?
54
+ @dir.rmdir if @dir.directory?
55
+ end
56
+
57
+ def test_dummy
58
+ end
59
+
60
+ def nu_test_basic
61
+ socket = QuickML::MockSocket.new
62
+ c = @config
63
+ session = QuickML::Session.new(c, c.logger, c.catalog, socket)
64
+ session.start
65
+ ok_eq(['220 localhost ESMTP QuickML'], socket.result)
66
+
67
+ socket = QuickML::MockSocket.new('HELO')
68
+ c = @config
69
+ session = QuickML::Session.new(c, c.logger, c.catalog, socket)
70
+ session.start
71
+ ok_eq(['220 localhost ESMTP QuickML'], socket.result)
72
+
73
+ socket = QuickML::MockSocket.new('HELO localhost')
74
+ c = @config
75
+ session = QuickML::Session.new(c, c.logger, c.catalog, socket)
76
+ session.start
77
+ ok_eq(['220 localhost ESMTP QuickML',
78
+ '250 localhost'], socket.result)
79
+
80
+ res = send_normal_mail 'alice@example.net'
81
+ ok_eq(['220 localhost ESMTP QuickML',
82
+ '250 localhost',
83
+ '250 ok',
84
+ '250 ok',
85
+ '354 send the mail data, end with .',
86
+ '250 ok',
87
+ '221 Bye'], res)
88
+ end
89
+
90
+ def send_normal_mail(from)
91
+ sendmail(from, 'test@example.com', 'test') { 'test' }
92
+ end
93
+
94
+ def ok_log(ar, range=nil)
95
+ logs = @config.logger.get_log
96
+ logs = logs[range] if range
97
+ ok_eq(ar, logs)
98
+ end
99
+
100
+ def test_session
101
+ #sleep 180 # automatic ML deletion
102
+ # finish
103
+ end
104
+
105
+ def sendmail(from, to, subject, cc=nil)
106
+ message = yield
107
+ contents = []
108
+ contents << "To: #{to}\n"
109
+ contents << "From: #{from}\n"
110
+ contents << "Subject: #{subject}\n"
111
+ contents << "Cc: #{cc}\n" if cc
112
+ contents << "\n" if /\n\z/ !~ message
113
+ contents << message
114
+ inputs = <<'EOT'
115
+ HELO localhost
116
+ MAIL FROM: #{from}
117
+ RCPT TO: #{to}
118
+ DATA
119
+ #{contents.join}
120
+ .
121
+ QUIT
122
+ EOT
123
+ socket = QuickML::MockSocket.new(inputs)
124
+ c = @config
125
+ session = QuickML::Session.new(c, c.logger, c.catalog, socket)
126
+ session.start
127
+ return socket.result
128
+ end
129
+ end
@@ -0,0 +1,130 @@
1
+ # -*- coding: shift_jis -*-
2
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
3
+ # This is free software with ABSOLUTELY NO WARRANTY.
4
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
5
+
6
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
7
+ require 'qwik/ml-session'
8
+ require 'qwik/test-module-ml'
9
+
10
+ if $0 == __FILE__
11
+ $test = true
12
+ end
13
+
14
+ class TestMSPlan < Test::Unit::TestCase
15
+ include TestModuleML
16
+
17
+ def test_plan
18
+ send_normal_mail 'bob@example.net'
19
+ logs = @ml_config.logger.get_log
20
+ eq '[test]: New ML by bob@example.net', logs[0]
21
+
22
+ # Bob send a mail with a date tag.
23
+ #res = sm('[1970-01-15] t') { 't' }
24
+ res = sm('plan_19700115') { 't' }
25
+ ok_log '[test]: QwikPost: plan_19700115
26
+ [test:2]: Send:'
27
+ page = @site['plan_19700115']
28
+ eq "* plan_19700115
29
+ {{mail(bob@example.net,0)
30
+ t
31
+ }}
32
+ ", page.load
33
+
34
+ # test_footer
35
+ eq "* Plan
36
+ - [01-15] plan_19700115
37
+ http://example.com/test/plan_19700115.html
38
+ ", @site.get_footer(Time.at(0))
39
+
40
+ # Bob send a mail.
41
+ res = sm('tt') { 't' }
42
+ ok_log ['[test]: QwikPost: tt', '[test:3]: Send:']
43
+ eq "--
44
+ archive-> http://example.com/test/tt.html
45
+ ML-> test@q.example.com
46
+
47
+ * Plan
48
+ - [01-15] plan_19700115
49
+ http://example.com/test/plan_19700115.html", $ml_sm.buffer[-9..-3].join("\n")
50
+
51
+ page = @site['tt']
52
+ eq "* tt
53
+ {{mail(bob@example.net,0)
54
+ t
55
+ }}
56
+ ", page.load
57
+ end
58
+
59
+ def test_plan2
60
+ send_normal_mail('bob@example.net')
61
+ eq '[test]: New ML by bob@example.net', @ml_config.logger.get_log[0]
62
+
63
+ # Bob send a mail with a date tag.
64
+ res = sm('plan_19700115') { 't' }
65
+ ok_log("[test]: QwikPost: plan_19700115\n[test:2]: Send:")
66
+ page = @site['plan_19700115']
67
+ eq "* plan_19700115
68
+ {{mail(bob@example.net,0)
69
+ t
70
+ }}
71
+ ", page.load
72
+
73
+ # Bob send the same mail again.msame a same mail with a date tag.
74
+ res = sm('plan_19700115') { 't' }
75
+ ok_log "[test]: QwikPost: plan_19700115\n[test:3]: Send:"
76
+ page = @site['plan_19700115']
77
+ eq "* plan_19700115
78
+ {{mail(bob@example.net,0)
79
+ t
80
+ }}
81
+ {{mail(bob@example.net,0)
82
+ t
83
+ }}
84
+ ", page.load
85
+
86
+ # test_footer
87
+ eq "* Plan
88
+ - [01-15] plan_19700115
89
+ http://example.com/test/plan_19700115.html
90
+ ", @site.get_footer(Time.at(0))
91
+ end
92
+
93
+ def test_plan_japanese
94
+ send_normal_mail('bob@example.net')
95
+ logs = @ml_config.logger.get_log
96
+ eq '[test]: New ML by bob@example.net', logs[0]
97
+
98
+ # Bob send a mail with a date tag.
99
+ res = sm('plan_19700115') { '��' }
100
+ ok_log "[test]: QwikPost: plan_19700115\n[test:2]: Send:"
101
+ page = @site['plan_19700115']
102
+ eq "* plan_19700115
103
+ {{mail(bob@example.net,0)
104
+ ��
105
+ }}
106
+ ", page.load
107
+
108
+ # test_footer
109
+ eq "* Plan
110
+ - [01-15] plan_19700115
111
+ http://example.com/test/plan_19700115.html
112
+ ", @site.get_footer(Time.at(0))
113
+
114
+ # Bob send a mail.
115
+ res = sm('����') { '����' }
116
+ ok_log "[test]: QwikPost: 1\n[test:3]: Send:"
117
+ str = $ml_sm.buffer[-12..-3].join("\n")
118
+ eq '
119
+ ����
120
+
121
+ --
122
+ archive-> http://example.com/test/1.html
123
+ ML-> test@q.example.com
124
+
125
+ * Plan
126
+ - [01-15] plan_19700115
127
+ http://example.com/test/plan_19700115.html'.set_sourcecode_charset.to_mail_charset,
128
+ str
129
+ end
130
+ end
@@ -0,0 +1,53 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/ml-session'
7
+ require 'qwik/test-module-ml'
8
+
9
+ if $0 == __FILE__
10
+ $test = true
11
+ end
12
+
13
+ class TestMSPost < Test::Unit::TestCase
14
+ include TestModuleML
15
+
16
+ def test_post_1
17
+ logs = @ml_config.logger.get_log
18
+
19
+ send_normal_mail 'bob@example.net' # Bob creates a new ML.
20
+ logs = @ml_config.logger.get_log
21
+
22
+ eq nil, @site['1']
23
+ send_normal_mail 'bob@example.net'
24
+ ok_log ['[test]: QwikPost: test', '[test:2]: Send:']
25
+ eq 'test', @site['test'].get_title
26
+ eq "* test\n{{mail(bob@example.net,0)\ntest\n}}\n{{mail(bob@example.net,0)\ntest\n}}\n", @site['test'].load
27
+
28
+ send_normal_mail 'bob@example.net'
29
+ eq "* test\n{{mail(bob@example.net,0)\ntest\n}}\n{{mail(bob@example.net,0)\ntest\n}}\n{{mail(bob@example.net,0)\ntest\n}}\n", @site['test'].load
30
+ end
31
+
32
+ def test_submit_3
33
+ send_normal_mail 'bob@example.net'
34
+
35
+ sendmail('bob@example.net', 'test@q.example.com', 'Another mail.') {
36
+ "MIME-Version: 1.0
37
+ Content-Transfer-Encoding: 7bit
38
+ Content-Type: text/plain; charset=\"ISO-2022-JP\"
39
+
40
+ This is also a test.
41
+ " }
42
+ eq 'Another mail.', @site['1'].get_title
43
+ eq "* Another mail.\n{{mail(bob@example.net,0)
44
+ This is also a test.\n}}\n", @site['1'].load
45
+ end
46
+
47
+ def test_submit_4
48
+ send_normal_mail 'bob@example.net' # Bob creates a new ML.
49
+ sendmail('bob@example.net', 'test@q.example.com', 'a') { 'b' }
50
+ eq 'a', @site['a'].get_title
51
+ eq "* a\n{{mail(bob@example.net,0)\nb\n}}\n", @site['a'].load
52
+ end
53
+ end
@@ -0,0 +1,76 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/ml-session'
7
+ require 'qwik/test-module-ml'
8
+
9
+ if $0 == __FILE__
10
+ $test = true
11
+ end
12
+
13
+ class TestMSQuotedPrintable < Test::Unit::TestCase
14
+ include TestModuleML
15
+
16
+ def test_all
17
+ send_normal_mail('bob@example.net')
18
+ ok_log(['[test]: New ML by bob@example.net',
19
+ '[test]: Add: bob@example.net',
20
+ '[test]: QwikPost: test'], 0..2)
21
+
22
+ sendmail('[qwik-users:217] Gmail=?iso-2022-jp?B?GyRCJCwbKEJKSVMbJEIlKCVzJTMhPCVHJSMbKEI=?=
23
+ =?iso-2022-jp?B?GyRCJXMlMCRLO0VNTUpROTkbKEI=?=',
24
+ 'user@gmail.com', 'test@example.com') {
25
+ 'Content-Type: text/plain; charset=ISO-2022-JP
26
+ Content-Transfer-Encoding: quoted-printable
27
+
28
+ =1B$B$3$s$K$A$O!#=1B(B
29
+
30
+ --=20
31
+ user
32
+ ' }
33
+
34
+ # ok_eq('quoted-printable', mail['Content-Transfer-Encoding'])
35
+ # ok_eq('Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX',
36
+ # mail.get_clean_subject)
37
+ # ok_eq("����ɂ��́B\n\n-- \nuser\n".set_sourcecode_charset.to_mail_charset, mail.decoded_body)
38
+ =begin
39
+ page = @site['1']
40
+ ok_eq('Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX', page.get_title)
41
+ ok_eq("* Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX\n{{mail(user@gmail.com,0)\n����ɂ��́B\n\n-- \nuser\n}}\n", page.load)
42
+
43
+ page = @site['1']
44
+ ok_eq('�e�X�g', page.get_title)
45
+ ok_eq("* �e�X�g\n{{mail(bob@example.net,0)\n}}\n", page.get)
46
+ # ok_eq(true, @site.files('1').exist?('1x1.png'))
47
+ =end
48
+ end
49
+
50
+ def nutest_all
51
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
52
+ qml.setup_test_config
53
+ mail = post_mail(qml) {
54
+ 'Date: Mon, 3 Feb 2001 12:34:56 +0900
55
+ From: user@gmail.com
56
+ To: test@example.com
57
+ Subject: [qwik-users:217] Gmail=?iso-2022-jp?B?GyRCJCwbKEJKSVMbJEIlKCVzJTMhPCVHJSMbKEI=?=
58
+ =?iso-2022-jp?B?GyRCJXMlMCRLO0VNTUpROTkbKEI=?=
59
+ Content-Type: text/plain; charset=ISO-2022-JP
60
+ Content-Transfer-Encoding: quoted-printable
61
+
62
+ =1B$B$3$s$K$A$O!#=1B(B
63
+
64
+ --=20
65
+ user
66
+ ' }
67
+ ok_eq('quoted-printable', mail['Content-Transfer-Encoding'])
68
+ ok_eq('[qwik-users:217] Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX'.set_sourcecode_charset.to_mail_charset, mail['Subject'])
69
+ ok_eq('Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX',
70
+ mail.get_clean_subject)
71
+ ok_eq("����ɂ��́B\n\n-- \nuser\n".set_sourcecode_charset.to_mail_charset, mail.decoded_body)
72
+ page = @site['1']
73
+ ok_eq('Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX', page.get_title)
74
+ ok_eq("* Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX\n{{mail(user@gmail.com,0)\n����ɂ��́B\n\n-- \nuser\n}}\n", page.load)
75
+ end
76
+ end
@@ -0,0 +1,45 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/test-module-ml'
7
+
8
+ if $0 == __FILE__
9
+ require 'qwik/server-memory'
10
+ require 'qwik/farm'
11
+ require 'qwik/group-site'
12
+ require 'qwik/group'
13
+ $test = true
14
+ end
15
+
16
+ class TestSubmitQuotedPrintable < Test::Unit::TestCase
17
+ include TestModuleML
18
+
19
+ def test_all
20
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
21
+ qml.setup_test_config
22
+ mail = post_mail(qml) {
23
+ 'Date: Mon, 3 Feb 2001 12:34:56 +0900
24
+ From: user@gmail.com
25
+ To: test@example.com
26
+ Subject: [qwik-users:217] Gmail=?iso-2022-jp?B?GyRCJCwbKEJKSVMbJEIlKCVzJTMhPCVHJSMbKEI=?=
27
+ =?iso-2022-jp?B?GyRCJXMlMCRLO0VNTUpROTkbKEI=?=
28
+ Content-Type: text/plain; charset=ISO-2022-JP
29
+ Content-Transfer-Encoding: quoted-printable
30
+
31
+ =1B$B$3$s$K$A$O!#=1B(B
32
+
33
+ --=20
34
+ user
35
+ ' }
36
+ ok_eq('quoted-printable', mail['Content-Transfer-Encoding'])
37
+ ok_eq('[qwik-users:217] Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX'.set_sourcecode_charset.to_mail_charset, mail['Subject'])
38
+ # ok_eq('Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX',
39
+ # mail.get_clean_subject)
40
+ ok_eq("����ɂ��́B\n\n-- \nuser\n".set_sourcecode_charset.to_mail_charset, mail.decoded_body)
41
+ page = @site['1']
42
+ ok_eq('Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX', page.get_title)
43
+ # ok_eq("* Gmail��JIS�G���R�[�f�B���O�Ɏd�l�ύX\n{{mail(user@gmail.com,0)\n����ɂ��́B\n\n-- \nuser\n}}\n", page.load)
44
+ end
45
+ end
@@ -0,0 +1,59 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/test-module-ml'
7
+
8
+ if $0 == __FILE__
9
+ $test = true
10
+ end
11
+
12
+ class TestSubmitBase64 < Test::Unit::TestCase
13
+ include TestModuleML
14
+
15
+ def test_all
16
+ group = QuickML::Group.new(@ml_config, 'test@example.com')
17
+ group.setup_test_config
18
+
19
+ str =
20
+ "Date: Thu, 14 Apr 2005 21:22:30 +0900
21
+ From: bob@example.net
22
+ To: test@example.com
23
+ User-Agent: Wanderlust/2.10.0 (Venus) SEMI/1.14.4 (Hosorogi) FLIM/1.14.4
24
+ (=?ISO-8859-4?Q?Kashiharajing=FE-mae?=) APEL/10.4 Emacs/21.3
25
+ (i386-pc-linux-gnu) MULE/5.0 (SAKAKI)
26
+ MIME-Version: 1.0 (generated by SEMI 1.14.4 - 'Hosorogi')
27
+ Content-Type: multipart/mixed;
28
+ boundary=\"Multipart_Thu_Apr_14_21:22:30_2005-1\"
29
+ Subject: This is an inline test.
30
+
31
+ --Multipart_Thu_Apr_14_21:22:30_2005-1
32
+ Content-Type: text/plain; charset=ISO-2022-JP
33
+
34
+ �T���v��.jpg��Y�t���Ă݂܂��B
35
+ --Multipart_Thu_Apr_14_21:22:30_2005-1
36
+ Content-Type: image/jpeg
37
+ Content-Disposition: inline; filename=\"sample.jpg\"
38
+ Content-Transfer-Encoding: base64
39
+
40
+ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4//8/AAX+Av4zEpUU
41
+ AAAAAElFTkSuQmCC
42
+
43
+ "
44
+ mail = QuickML::Mail.generate { str }
45
+
46
+ group.site_post(mail, true)
47
+ page = @site['1']
48
+ # $KCODE = 's'
49
+ ok_eq('This is an inline test.', page.get_title)
50
+ ok_eq("* This is an inline test.
51
+ {{mail(bob@example.net,0)
52
+ �T���v��.jpg��Y�t���Ă݂܂��B
53
+
54
+ {{file(sample.jpg)}}
55
+ }}
56
+ ", page.load)
57
+ ok_eq(true, @site.files(page.key).exist?('sample.jpg'))
58
+ end
59
+ end