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,91 @@
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
+ require 'optparse'
6
+
7
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
8
+ $test = true # Set $test before require 'qwik/test-common'
9
+ require 'qwik/test-common'
10
+
11
+ class TestSuite
12
+ def self.main(argv)
13
+ testsuite = self.new
14
+ testsuite.run(argv)
15
+ end
16
+
17
+ def run(argv)
18
+ @suite = 'basic'
19
+
20
+ optionparser = OptionParser.new {|opts|
21
+ opts.banner = 'Usage: test-suite.rb [options]'
22
+ opts.separator ''
23
+ opts.separator 'Specific options:'
24
+ opts.on('-b', '--[no-]basic', 'Run basic test suite.') {|a|
25
+ @suite = 'basic'
26
+ }
27
+ opts.on('-a', '--[no-]all', 'Run all test suite.') {|a|
28
+ @suite = 'all'
29
+ }
30
+ opts.separator ''
31
+ opts.separator 'Common options:'
32
+ opts.on_tail('-h', '--help', 'Show this message') {
33
+ puts opts
34
+ exit
35
+ }
36
+ }
37
+ optionparser.parse!(argv)
38
+
39
+ case @suite
40
+ when 'basic'
41
+ test_suite_basic
42
+ when 'ml'
43
+ test_suite_ml
44
+ when 'all'
45
+ test_suite_all
46
+ end
47
+ end
48
+
49
+ def test_suite_basic
50
+ load_by_loadlib('qwik/test-module-*.rb')
51
+ test_suite_ml
52
+ test_suite_web
53
+ end
54
+
55
+ def test_suite_web
56
+ load_by_loadlib('qwik/common-*.rb')
57
+ load_by_loadlib('qwik/act-*.rb')
58
+ end
59
+
60
+ def test_suite_ml
61
+ load_by_loadlib('qwik/test-module-ml.rb')
62
+ load_by_loadlib('qwik/ml-*.rb')
63
+ load_by_loadlib('qwik/group-*.rb')
64
+ load_by_loadlib('qwik/mail-*.rb')
65
+ load_by_loadlib('qwik/test-ml-*.rb')
66
+ load_by_loadlib('qwik/test-submit-*.rb')
67
+ load_by_loadlib('qwik/test-ms-*.rb')
68
+ end
69
+
70
+ def test_suite_all
71
+ test_suite_basic
72
+ test_suite_extra
73
+ end
74
+
75
+ def test_suite_extra
76
+ load_by_loadlib('qwik/check-*.rb')
77
+ end
78
+
79
+ def test_suite_benchmark
80
+ #load_files('bench')
81
+ load_by_loadlib('qwik/bench-*.rb')
82
+ end
83
+
84
+ def load_by_loadlib(arg)
85
+ Qwik::LoadLibrary.load_libs_here(arg)
86
+ end
87
+ end
88
+
89
+ if $0 == __FILE__
90
+ TestSuite.main(ARGV)
91
+ 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/ml-session'
7
+ require 'qwik/test-module-ml'
8
+
9
+ if $0 == __FILE__
10
+ $test = true
11
+ end
12
+
13
+ class TestMSAppleMail < Test::Unit::TestCase
14
+ include TestModuleML
15
+
16
+ def test_all
17
+ send_normal_mail('bob@example.net') # Bob creates a new ML.
18
+ sendmail('bob@example.net', 'test@q.example.com', 'Apple Mail') {
19
+ "Mime-Version: 1.0 (Apple Message framework v623)
20
+ Content-Type: multipart/mixed; boundary=Apple-Mail-1-134582006
21
+ Subject: Apple Mail
22
+
23
+ --Apple-Mail-1-134582006
24
+ Content-Transfer-Encoding: 7bit
25
+ Content-Type: text/plain;
26
+ charset=ISO-2022-JP;
27
+ format=flowed
28
+
29
+ I attach a file using Apple Mail.
30
+ --Apple-Mail-1-134582006
31
+ Content-Transfer-Encoding: base64
32
+ Content-Type: application/zip;
33
+ x-mac-type=5A495020;
34
+ x-unix-mode=0755;
35
+ x-mac-creator=53495421;
36
+ name=\"sounds.zip\"
37
+ Content-Disposition: attachment;
38
+ filename=sounds.zip
39
+
40
+ UEsDBBQAAAAAAHiWSDMAAAAAAAAAAAAAAAANAAAAMDUxMDA3c291bmRzL1BLAwQUAAAACAB4lkgz
41
+ dW5kcy91bnJlYWwvZ25kX3YzLmFpZlBLBQYAAAAAEQARAMEEAACdHAYAAAA=
42
+
43
+ --Apple-Mail-1-134582006--
44
+ "
45
+ }
46
+ eq 'Apple Mail', @site['1'].get_title
47
+ eq "* Apple Mail
48
+ {{mail(bob@example.net,0)
49
+ I attach a file using Apple Mail.
50
+
51
+ {{file(sounds.zip)}}
52
+ }}
53
+ ",
54
+ @site['1'].load
55
+
56
+ files = @site.files('1')
57
+ eq true, files.exist?('sounds.zip')
58
+ end
59
+ end
@@ -0,0 +1,174 @@
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 TestMSAttach < Test::Unit::TestCase
14
+ include TestModuleML
15
+
16
+ def test_submit_multipart
17
+ send_normal_mail('bob@example.net') # Bob creates a new ML.
18
+ sendmail('bob@example.net', 'test@q.example.com', 'multipart test') {
19
+ "MIME-Version: 1.0
20
+ Content-Type: multipart/mixed; boundary=\"boundary\"
21
+ Content-Transfer-Encoding: 7bit
22
+
23
+ --boundary
24
+ Content-Type: text/plain; charset=\"ascii\"
25
+ Content-Transfer-Encoding: 7bit
26
+
27
+ test1
28
+
29
+ --boundary
30
+ Content-Type: text/plain; charset=\"ascii\"
31
+ Content-Transfer-Encoding: 7bit
32
+
33
+ test2
34
+
35
+ --boundary--
36
+ " }
37
+ eq 'multipart test', @site['1'].get_title
38
+ eq "* multipart test
39
+ {{mail(bob@example.net,0)
40
+ test1
41
+
42
+ test2
43
+ }}
44
+ ", @site["1"].load
45
+ end
46
+
47
+ def test_submit_with_text
48
+ send_normal_mail('bob@example.net') # Bob creates a new ML.
49
+ str =
50
+ "Message-Id: <nosuchmessageid@example.com>
51
+ MIME-Version: 1.0
52
+ Content-Type: multipart/mixed; boundary=\"------_4119D7487CCF04869008_MULTIPART_MIXED_\"
53
+ Content-Transfer-Encoding: 7bit
54
+
55
+ --------_4119D7487CCF04869008_MULTIPART_MIXED_
56
+ Content-Type: text/plain; charset='ISO-2022-JP'
57
+ Content-Transfer-Encoding: 7bit
58
+
59
+ test
60
+ --------_4119D7487CCF04869008_MULTIPART_MIXED_
61
+ Content-Type: application/octet-stream; name=\"t.txt\"
62
+ Content-Disposition: attachment;
63
+ filename=\"t.txt\"
64
+ Content-Transfer-Encoding: base64
65
+
66
+ dGVzdA0K
67
+
68
+ --------_4119D7487CCF04869008_MULTIPART_MIXED_
69
+ "
70
+ sm('text file attach test') { str }
71
+ page = @site.get_by_title('text file attach test')
72
+ eq 'text file attach test', page.get_title
73
+ eq '1', page.key
74
+ eq "* text file attach test
75
+ {{mail(bob@example.net,0)
76
+ test
77
+
78
+ {{file(t.txt)}}
79
+ }}
80
+ ", page.load
81
+ files = @site.files('1')
82
+ eq true, files.exist?('t.txt')
83
+ #eq './test/1.files/t.txt', files.path('t.txt').to_s
84
+ eq '.test/data/test/1.files/t.txt', files.path('t.txt').to_s
85
+ str = files.path('t.txt').read
86
+ eq "test\r\n", str
87
+
88
+ # The same mail is sent to the ML again.
89
+ sm('text file attach test') { str }
90
+ end
91
+
92
+ # FIXME: abandon...
93
+ def nu
94
+ eq "* text file attach test
95
+ {{mail(bob@example.net,0)
96
+ test
97
+
98
+ {{file(t.txt)}}
99
+ }}
100
+ {{mail(bob@example.net,0)
101
+ test
102
+
103
+ {{file(1-t.txt)}}
104
+ }}
105
+ ", page.load
106
+ eq true, @site.files(page.key).exist?('1-t.txt')
107
+
108
+ # Once again.
109
+ group.site_post(mail, true)
110
+ page = @site.get_by_title('text file attach test')
111
+ eq "* text file attach test
112
+ {{mail(bob@example.net,0)
113
+ test
114
+
115
+ {{file(t.txt)}}
116
+ }}
117
+ {{mail(bob@example.net,0)
118
+ test
119
+
120
+ {{file(1-t.txt)}}
121
+ }}
122
+ {{mail(bob@example.net,0)
123
+ test
124
+
125
+ {{file(2-t.txt)}}
126
+ }}
127
+ ", page.load
128
+ eq true, @site.files(page.key).exist?('2-t.txt')
129
+ end
130
+
131
+ def nutest_submit_with_image
132
+ group = QuickML::Group.new(@ml_config, 'test@example.com')
133
+ group.setup_test_config
134
+
135
+ mail = QuickML::Mail.generate {
136
+ "Date: Sun, 01 Aug 2004 12:34:56 +0900
137
+ From: Test User <bob@example.net>
138
+ To: test@example.com
139
+ Subject: Attach Test
140
+ Cc: guest@example.com
141
+ MIME-Version: 1.0
142
+ Content-Type: multipart/mixed; boundary=\"------_410DDC04C7AD046D3600_MULTIPART_MIXED_\"
143
+ Content-Transfer-Encoding: 7bit
144
+
145
+ --------_410DDC04C7AD046D3600_MULTIPART_MIXED_
146
+ Content-Type: text/plain; charset=\"ascii\"
147
+ Content-Transfer-Encoding: 7bit
148
+
149
+ This is a test.
150
+ --------_410DDC04C7AD046D3600_MULTIPART_MIXED_
151
+ Content-Type: image/png; name=\"1x1.png\"
152
+ Content-Disposition: attachment;
153
+ filename=\"1x1.png\"
154
+ Content-Transfer-Encoding: base64
155
+
156
+ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4//8/AAX+Av4zEpUU
157
+ AAAAAElFTkSuQmCC
158
+
159
+ --------_410DDC04C7AD046D3600_MULTIPART_MIXED_--
160
+ " }
161
+
162
+ group.site_post(mail, true)
163
+ eq 'Attach Test', @site['1'].get_title
164
+ eq "* Attach Test
165
+ {{mail(bob@example.net,0)
166
+ This is a test.
167
+
168
+ {{file(1x1.png)}}
169
+ }}
170
+ ",
171
+ @site['1'].load
172
+ eq true, @site.files('1').exist?('1x1.png')
173
+ end
174
+ end
@@ -0,0 +1,40 @@
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 TestMSBasic < Test::Unit::TestCase
14
+ include TestModuleML
15
+
16
+ def test_all
17
+ logs = @ml_config.logger.get_log
18
+
19
+ # Bob send a mail to create a new ML.
20
+ send_normal_mail('bob@example.net')
21
+ ok_log(['[test]: New ML by bob@example.net',
22
+ '[test]: Add: bob@example.net',
23
+ '[test]: QwikPost: test',
24
+ '[test:1]: Send:'])
25
+
26
+ # Bob send a mail.
27
+ send_normal_mail('bob@example.net')
28
+ ok_log(['[test]: QwikPost: test', '[test:2]: Send:'])
29
+
30
+ # Alice send a mail, but the mail is rejected.
31
+ send_normal_mail('alice@example.net')
32
+ ok_log(['[test]: Reject: alice@example.net'])
33
+
34
+ # The ML is closed.
35
+ unsubscribe('bob@example.net')
36
+ ok_log(['[test]: Remove: bob@example.net',
37
+ '[test]: ML Closed',
38
+ '[test]: Unsubscribe: bob@example.net'])
39
+ end
40
+ end
@@ -0,0 +1,35 @@
1
+ #
2
+ # Copyright (C) 2003-2006 Kouichirou Eto
3
+ # All rights reserved.
4
+ # This is free software with ABSOLUTELY NO WARRANTY.
5
+ #
6
+ # You can redistribute it and/or modify it under the terms of
7
+ # the GNU General Public License version 2.
8
+ #
9
+
10
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
11
+ require 'qwik/ml-session'
12
+ require 'qwik/test-module-ml'
13
+
14
+ if $0 == __FILE__
15
+ $test = true
16
+ end
17
+
18
+ class TestMSClose < Test::Unit::TestCase
19
+ include TestModuleML
20
+
21
+ def test_close
22
+ # Alice create a new ML.
23
+ send_normal_mail('alice@example.net')
24
+ ok_log(["[test]: New ML by alice@example.net",
25
+ "[test]: Add: alice@example.net",
26
+ "[test]: QwikPost: test",
27
+ "[test:1]: Send:"])
28
+
29
+ # Alice unsubscrive from the ML. The ML will be closed.
30
+ unsubscribe('alice@example.net')
31
+ ok_log(["[test]: Remove: alice@example.net",
32
+ "[test]: ML Closed",
33
+ "[test]: Unsubscribe: alice@example.net"])
34
+ end
35
+ end
@@ -0,0 +1,75 @@
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 TestMSConfirm < Test::Unit::TestCase
14
+ include TestModuleML
15
+
16
+ def test_session_with_confirm
17
+ $quickml_config.instance_eval {
18
+ @config[:confirm_ml_creation] = true
19
+ }
20
+
21
+ # Bob tries to create a new ML.
22
+ send_normal_mail('bob@example.net')
23
+ logs = @ml_config.logger.get_log
24
+ ok_eq("[test]: New ML by bob@example.net", logs[0])
25
+ if Regexp.new(Regexp.escape("[test]: Send confirmation: ")+
26
+ "(confirm\\+\\d+\\+test@q\\.example\\.com)"+
27
+ Regexp.escape(' bob@example.net')) =~ logs[1]
28
+ confirmation_to = $1
29
+ end
30
+
31
+ ok_eq(true, @site.unconfirmed?, 'Before reply, unconfirmed? must be true.')
32
+
33
+ # Bob replies the confirmation mail.
34
+ send_confirmation_mail('bob@example.net', confirmation_to)
35
+ ok_log(["[test]: Add: bob@example.net",
36
+ "[test]: QwikPost: test",
37
+ "[test:1]: Send:",
38
+ "[test]: Accept confirmation: test@q.example.com"])
39
+
40
+ ok_eq(false, @site.unconfirmed?, 'After reply, unconfirmed? must be false.')
41
+
42
+ # Bob send a mail.
43
+ send_normal_mail('bob@example.net')
44
+ ok_log(["[test]: QwikPost: test", "[test:2]: Send:"])
45
+
46
+ page = @site['test']
47
+ ok_eq("* test
48
+ {{mail(bob@example.net,0)
49
+ test
50
+ }}
51
+ {{mail(bob@example.net,0)
52
+ test
53
+ }}
54
+ ",
55
+ page.load)
56
+
57
+ # Alice send a mail, but the mail is rejected.
58
+ send_normal_mail('alice@example.net')
59
+ ok_log(["[test]: Reject: alice@example.net"])
60
+
61
+ # The ML is closed.
62
+ unsubscribe('bob@example.net')
63
+ ok_log(["[test]: Remove: bob@example.net",
64
+ "[test]: ML Closed",
65
+ "[test]: Unsubscribe: bob@example.net"])
66
+
67
+ $quickml_config.instance_eval {
68
+ @config[:confirm_ml_creation] = false
69
+ }
70
+ end
71
+
72
+ def send_confirmation_mail(from, to)
73
+ sendmail(from, to, 'confirm') { 'confirm' }
74
+ end
75
+ end