wishdev-rio 0.4.3.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 (296) hide show
  1. data/COPYING +341 -0
  2. data/README +81 -0
  3. data/Rakefile +281 -0
  4. data/build_doc.rb +94 -0
  5. data/doc/ANNOUNCE +159 -0
  6. data/doc/RELEASE_NOTES +308 -0
  7. data/doc/RIOIS +215 -0
  8. data/doc/generators/template/html/rio.css +428 -0
  9. data/doc/generators/template/html/rio.rb +523 -0
  10. data/doc/generators/template/html/ugly.rb +132 -0
  11. data/doc/pkg_def.rb +60 -0
  12. data/doc/rfc1738.txt +1403 -0
  13. data/doc/rfc959.txt +3933 -0
  14. data/ex/catcsv.rb +64 -0
  15. data/ex/colx.rb +8 -0
  16. data/ex/findinruby +15 -0
  17. data/ex/findruby +14 -0
  18. data/ex/passwd_report.rb +8 -0
  19. data/ex/prompt.rb +25 -0
  20. data/ex/rgb.txt.gz +0 -0
  21. data/ex/riocat +42 -0
  22. data/ex/riogunzip +31 -0
  23. data/ex/riogzip +24 -0
  24. data/ex/rioprompt.rb +10 -0
  25. data/ex/targz2zip +17 -0
  26. data/ex/tonl +10 -0
  27. data/lib/rio/abstract_method.rb +56 -0
  28. data/lib/rio/argv.rb +56 -0
  29. data/lib/rio/arycopy.rb +43 -0
  30. data/lib/rio/assert.rb +114 -0
  31. data/lib/rio/base.rb +56 -0
  32. data/lib/rio/callstr.rb +46 -0
  33. data/lib/rio/const.rb +51 -0
  34. data/lib/rio/construct.rb +50 -0
  35. data/lib/rio/constructor.rb +258 -0
  36. data/lib/rio/context/autoclose.rb +72 -0
  37. data/lib/rio/context/copying.rb +55 -0
  38. data/lib/rio/context/cxx.rb +66 -0
  39. data/lib/rio/context/dir.rb +120 -0
  40. data/lib/rio/context/gzip.rb +50 -0
  41. data/lib/rio/context/methods.rb +182 -0
  42. data/lib/rio/context/skip.rb +66 -0
  43. data/lib/rio/context/stream.rb +229 -0
  44. data/lib/rio/context.rb +117 -0
  45. data/lib/rio/cp.rb +370 -0
  46. data/lib/rio/def.rb +53 -0
  47. data/lib/rio/dir.rb +144 -0
  48. data/lib/rio/doc/EXAMPLES.rb +299 -0
  49. data/lib/rio/doc/HOWTO.rb +737 -0
  50. data/lib/rio/doc/INDEX.rb +311 -0
  51. data/lib/rio/doc/INTRO.rb +1068 -0
  52. data/lib/rio/doc/OPTIONAL.rb +130 -0
  53. data/lib/rio/doc/SYNOPSIS.rb +183 -0
  54. data/lib/rio/doc.rb +45 -0
  55. data/lib/rio/entrysel.rb +246 -0
  56. data/lib/rio/exception/copy.rb +97 -0
  57. data/lib/rio/exception/notimplemented.rb +57 -0
  58. data/lib/rio/exception/notsupported.rb +46 -0
  59. data/lib/rio/exception/open.rb +61 -0
  60. data/lib/rio/exception/state.rb +73 -0
  61. data/lib/rio/exception.rb +41 -0
  62. data/lib/rio/ext/csv.rb +351 -0
  63. data/lib/rio/ext/if.rb +45 -0
  64. data/lib/rio/ext/mp3info.rb +80 -0
  65. data/lib/rio/ext/splitlines.rb +253 -0
  66. data/lib/rio/ext/yaml/doc.rb +133 -0
  67. data/lib/rio/ext/yaml/tie.rb +149 -0
  68. data/lib/rio/ext/yaml.rb +164 -0
  69. data/lib/rio/ext/zipfile/fs.rb +116 -0
  70. data/lib/rio/ext/zipfile/rl.rb +251 -0
  71. data/lib/rio/ext/zipfile/rootdir.rb +117 -0
  72. data/lib/rio/ext/zipfile/state.rb +161 -0
  73. data/lib/rio/ext/zipfile/wrap.rb +204 -0
  74. data/lib/rio/ext/zipfile.rb +110 -0
  75. data/lib/rio/ext.rb +138 -0
  76. data/lib/rio/factory.rb +436 -0
  77. data/lib/rio/file.rb +118 -0
  78. data/lib/rio/filter/closeoneof.rb +103 -0
  79. data/lib/rio/filter/gzip.rb +70 -0
  80. data/lib/rio/filter.rb +94 -0
  81. data/lib/rio/fs/base.rb +41 -0
  82. data/lib/rio/fs/impl.rb +122 -0
  83. data/lib/rio/fs/native.rb +75 -0
  84. data/lib/rio/fs/stream.rb +61 -0
  85. data/lib/rio/fs/url.rb +63 -0
  86. data/lib/rio/ftp/conncache.rb +101 -0
  87. data/lib/rio/ftp/dir.rb +94 -0
  88. data/lib/rio/ftp/fs.rb +180 -0
  89. data/lib/rio/ftp/ftpfile.rb +20 -0
  90. data/lib/rio/grande.rb +97 -0
  91. data/lib/rio/handle.rb +100 -0
  92. data/lib/rio/if/basic.rb +64 -0
  93. data/lib/rio/if/csv.rb +76 -0
  94. data/lib/rio/if/dir.rb +157 -0
  95. data/lib/rio/if/file.rb +89 -0
  96. data/lib/rio/if/fileordir.rb +268 -0
  97. data/lib/rio/if/grande.rb +729 -0
  98. data/lib/rio/if/grande_entry.rb +379 -0
  99. data/lib/rio/if/grande_stream.rb +693 -0
  100. data/lib/rio/if/internal.rb +125 -0
  101. data/lib/rio/if/path.rb +462 -0
  102. data/lib/rio/if/rubyio.rb +681 -0
  103. data/lib/rio/if/string.rb +83 -0
  104. data/lib/rio/if/temp.rb +45 -0
  105. data/lib/rio/if/test.rb +282 -0
  106. data/lib/rio/if/yaml.rb +206 -0
  107. data/lib/rio/if.rb +64 -0
  108. data/lib/rio/ioh.rb +162 -0
  109. data/lib/rio/iomode.rb +109 -0
  110. data/lib/rio/ios/fail.rb +106 -0
  111. data/lib/rio/ios/generic.rb +119 -0
  112. data/lib/rio/ios/mode.rb +60 -0
  113. data/lib/rio/ios/null.rb +119 -0
  114. data/lib/rio/iowrap.rb +128 -0
  115. data/lib/rio/kernel.rb +54 -0
  116. data/lib/rio/local.rb +62 -0
  117. data/lib/rio/match.rb +53 -0
  118. data/lib/rio/matchrecord.rb +283 -0
  119. data/lib/rio/no_warn.rb +49 -0
  120. data/lib/rio/nullio.rb +159 -0
  121. data/lib/rio/open3.rb +68 -0
  122. data/lib/rio/ops/construct.rb +61 -0
  123. data/lib/rio/ops/create.rb +77 -0
  124. data/lib/rio/ops/dir.rb +346 -0
  125. data/lib/rio/ops/either.rb +134 -0
  126. data/lib/rio/ops/file.rb +102 -0
  127. data/lib/rio/ops/path.rb +296 -0
  128. data/lib/rio/ops/stream/input.rb +267 -0
  129. data/lib/rio/ops/stream/output.rb +100 -0
  130. data/lib/rio/ops/stream/read.rb +86 -0
  131. data/lib/rio/ops/stream/write.rb +57 -0
  132. data/lib/rio/ops/stream.rb +87 -0
  133. data/lib/rio/ops/symlink.rb +80 -0
  134. data/lib/rio/path/reset.rb +69 -0
  135. data/lib/rio/path.rb +129 -0
  136. data/lib/rio/piper/cp.rb +80 -0
  137. data/lib/rio/piper.rb +122 -0
  138. data/lib/rio/prompt.rb +66 -0
  139. data/lib/rio/rectype.rb +88 -0
  140. data/lib/rio/rl/base.rb +118 -0
  141. data/lib/rio/rl/builder.rb +117 -0
  142. data/lib/rio/rl/chmap.rb +66 -0
  143. data/lib/rio/rl/fs2url.rb +82 -0
  144. data/lib/rio/rl/ioi.rb +78 -0
  145. data/lib/rio/rl/path.rb +110 -0
  146. data/lib/rio/rl/pathmethods.rb +116 -0
  147. data/lib/rio/rl/uri.rb +200 -0
  148. data/lib/rio/rl/withpath.rb +296 -0
  149. data/lib/rio/scheme/aryio.rb +88 -0
  150. data/lib/rio/scheme/cmdio.rb +80 -0
  151. data/lib/rio/scheme/cmdpipe.rb +118 -0
  152. data/lib/rio/scheme/fd.rb +65 -0
  153. data/lib/rio/scheme/ftp.rb +141 -0
  154. data/lib/rio/scheme/http.rb +78 -0
  155. data/lib/rio/scheme/null.rb +55 -0
  156. data/lib/rio/scheme/path.rb +98 -0
  157. data/lib/rio/scheme/stderr.rb +55 -0
  158. data/lib/rio/scheme/stdio.rb +71 -0
  159. data/lib/rio/scheme/strio.rb +87 -0
  160. data/lib/rio/scheme/sysio.rb +63 -0
  161. data/lib/rio/scheme/tcp.rb +75 -0
  162. data/lib/rio/scheme/temp.rb +200 -0
  163. data/lib/rio/state/error.rb +72 -0
  164. data/lib/rio/state.rb +242 -0
  165. data/lib/rio/stream/base.rb +54 -0
  166. data/lib/rio/stream/duplex.rb +79 -0
  167. data/lib/rio/stream/open.rb +202 -0
  168. data/lib/rio/stream.rb +181 -0
  169. data/lib/rio/symantics.rb +45 -0
  170. data/lib/rio/tempdir.rb +132 -0
  171. data/lib/rio/to_rio/all.rb +39 -0
  172. data/lib/rio/to_rio/array.rb +39 -0
  173. data/lib/rio/to_rio/io.rb +40 -0
  174. data/lib/rio/to_rio/object.rb +42 -0
  175. data/lib/rio/to_rio/string.rb +40 -0
  176. data/lib/rio/to_rio.rb +67 -0
  177. data/lib/rio/uri/file.rb +198 -0
  178. data/lib/rio/util.rb +48 -0
  179. data/lib/rio/version.rb +51 -0
  180. data/lib/rio.rb +162 -0
  181. data/setup.rb +1360 -0
  182. data/test/bin/count_lines.rb +11 -0
  183. data/test/bin/find_lines.rb +13 -0
  184. data/test/bin/list_dir.rb +14 -0
  185. data/test/ftp/all.rb +9 -0
  186. data/test/ftp/anon_copy_data.rb +36 -0
  187. data/test/ftp/anon_misc.rb +124 -0
  188. data/test/ftp/anon_read.rb +105 -0
  189. data/test/ftp/anon_special.rb +68 -0
  190. data/test/ftp/anon_write.rb +70 -0
  191. data/test/ftp/ftp2ftp.rb +51 -0
  192. data/test/ftp/initftpfiles.rb +14 -0
  193. data/test/ftp/testdef.rb +55 -0
  194. data/test/gem_runtests.rb +15 -0
  195. data/test/http/all.rb +4 -0
  196. data/test/http/copy-from-http.rb +141 -0
  197. data/test/http/uri-meta.rb +72 -0
  198. data/test/lib/temp_server.rb +46 -0
  199. data/test/runalltests.rb +17 -0
  200. data/test/runftptests.rb +14 -0
  201. data/test/runhttp.rb +11 -0
  202. data/test/runhttptests.rb +14 -0
  203. data/test/runtests.rb +52 -0
  204. data/test/tc/abs.rb +355 -0
  205. data/test/tc/all.rb +80 -0
  206. data/test/tc/base.rb +31 -0
  207. data/test/tc/base2.rb +87 -0
  208. data/test/tc/cd1.rb +113 -0
  209. data/test/tc/clearsel.rb +68 -0
  210. data/test/tc/clone.rb +208 -0
  211. data/test/tc/closeoncopy.rb +102 -0
  212. data/test/tc/closeoneof.rb +194 -0
  213. data/test/tc/cmdpipe.rb +149 -0
  214. data/test/tc/copy-dir-samevar.rb +91 -0
  215. data/test/tc/copy-from.rb +129 -0
  216. data/test/tc/copy-to.rb +91 -0
  217. data/test/tc/copy.rb +74 -0
  218. data/test/tc/copyarray.rb +188 -0
  219. data/test/tc/copydest.rb +50 -0
  220. data/test/tc/copydir.rb +166 -0
  221. data/test/tc/copydirlines.rb +121 -0
  222. data/test/tc/copylines.rb +46 -0
  223. data/test/tc/copynonex.rb +118 -0
  224. data/test/tc/copysymlink.rb +39 -0
  225. data/test/tc/create.rb +114 -0
  226. data/test/tc/csv.rb +226 -0
  227. data/test/tc/csv2.rb +138 -0
  228. data/test/tc/csv_columns.rb +37 -0
  229. data/test/tc/csvutil.rb +56 -0
  230. data/test/tc/dir.rb +76 -0
  231. data/test/tc/dir_iter.rb +383 -0
  232. data/test/tc/dirautoclose.rb +67 -0
  233. data/test/tc/dirent.rb +178 -0
  234. data/test/tc/dirss.rb +81 -0
  235. data/test/tc/each.rb +111 -0
  236. data/test/tc/each_break.rb +243 -0
  237. data/test/tc/edf.rb +81 -0
  238. data/test/tc/empty.rb +51 -0
  239. data/test/tc/emptyriodir.rb +129 -0
  240. data/test/tc/entary.rb +227 -0
  241. data/test/tc/entsel.rb +110 -0
  242. data/test/tc/eq.rb +101 -0
  243. data/test/tc/expand_path.rb +69 -0
  244. data/test/tc/ext.rb +136 -0
  245. data/test/tc/fileno.rb +94 -0
  246. data/test/tc/files_select.rb +92 -0
  247. data/test/tc/get.rb +152 -0
  248. data/test/tc/getrec.rb +137 -0
  249. data/test/tc/gzip.rb +109 -0
  250. data/test/tc/io_each_byte.rb +60 -0
  251. data/test/tc/io_read.rb +80 -0
  252. data/test/tc/iometh.rb +149 -0
  253. data/test/tc/likeio.rb +116 -0
  254. data/test/tc/line_record_row.rb +51 -0
  255. data/test/tc/lineno.rb +196 -0
  256. data/test/tc/lines.rb +66 -0
  257. data/test/tc/misc.rb +432 -0
  258. data/test/tc/nolines.rb +204 -0
  259. data/test/tc/noqae.rb +879 -0
  260. data/test/tc/null.rb +45 -0
  261. data/test/tc/once.rb +6 -0
  262. data/test/tc/overload.rb +140 -0
  263. data/test/tc/pa.rb +158 -0
  264. data/test/tc/path_parts.rb +175 -0
  265. data/test/tc/pathop.rb +60 -0
  266. data/test/tc/paths.rb +145 -0
  267. data/test/tc/pid.rb +31 -0
  268. data/test/tc/piper.rb +143 -0
  269. data/test/tc/programs_util.rb +24 -0
  270. data/test/tc/qae.rb +493 -0
  271. data/test/tc/qae_riovar.rb +499 -0
  272. data/test/tc/readline.rb +30 -0
  273. data/test/tc/records.rb +68 -0
  274. data/test/tc/rename.rb +233 -0
  275. data/test/tc/rename_assign.rb +45 -0
  276. data/test/tc/riorl.rb +181 -0
  277. data/test/tc/route.rb +51 -0
  278. data/test/tc/selnosel.rb +33 -0
  279. data/test/tc/skip.rb +89 -0
  280. data/test/tc/skiplines.rb +71 -0
  281. data/test/tc/split.rb +28 -0
  282. data/test/tc/splitlines.rb +65 -0
  283. data/test/tc/splitpath.rb +83 -0
  284. data/test/tc/sub.rb +46 -0
  285. data/test/tc/symlink.rb +176 -0
  286. data/test/tc/symlink0.rb +348 -0
  287. data/test/tc/symlink1.rb +114 -0
  288. data/test/tc/synopsis.rb +75 -0
  289. data/test/tc/temp.rb +152 -0
  290. data/test/tc/tempdir.rb +60 -0
  291. data/test/tc/tempfile.rb +66 -0
  292. data/test/tc/testcase.rb +170 -0
  293. data/test/tc/tonl.rb +37 -0
  294. data/test/tc/truncate.rb +39 -0
  295. data/test/tc/yaml.rb +275 -0
  296. metadata +387 -0
@@ -0,0 +1,51 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp2ftp < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+
16
+ def self.once
17
+ @@once = true
18
+ end
19
+ def setup
20
+ super
21
+ self.class.once unless @@once
22
+ FS_RWROOT.entries { |ent| ent.delete! }
23
+ end
24
+ def test_cp_ro2rw_file1
25
+ fname = 'f0'
26
+ src = FTP_ROROOT/fname
27
+ dst = FTP_RWROOT/fname
28
+ dst < src
29
+ assert_equal(src.chomp[],dst.chomp[])
30
+ end
31
+ def test_cp_ro2rw_file2
32
+ fname = 'f0'
33
+ src = FTP_ROROOT/fname
34
+ dst = FTP_RWROOT
35
+ dst < src
36
+ fdst = dst/fname
37
+ assert_equal(src.chomp[],fdst.chomp[])
38
+ end
39
+ def test_cp_ro2rw_dir
40
+ fname = 'd0'
41
+ src = FTP_ROROOT/fname
42
+ dst = FTP_RWROOT
43
+ dst < src
44
+ ans = rio(FTP_RWROOT,fname).to_a
45
+ exp = rio(FTP_ROROOT,fname).to_a.map{ |s| s.sub('ro','rw') }
46
+
47
+ assert_equal(smap(exp),smap(ans))
48
+ end
49
+
50
+
51
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/local/bin/ruby
2
+ Dir.chdir File.dirname(__FILE__)
3
+ $devlib=File.expand_path('../../lib/')
4
+ $:.unshift $devlib unless $:[0] == $devlib
5
+ require 'rio'
6
+ $testlib = rio($devlib)
7
+ $testlib.filename = 'test'
8
+ $:.unshift $testlib.to_s
9
+
10
+ require 'ftp/testdef'
11
+ Test::RIO::FTP::init_test_files()
12
+
13
+
14
+ exit
@@ -0,0 +1,55 @@
1
+ require 'rio'
2
+
3
+ module Test
4
+ module RIO
5
+ module FTP
6
+ module Const
7
+ FTPUSER = 'ftp'
8
+
9
+ DRV = $mswin32 ? 'x:' : ''
10
+ FSROOT = rio("#{DRV}/srv/ftp")
11
+ #FSROOT = rio("../../srv/ftp")
12
+ #FTPHOST = '192.168.1.101'
13
+ FTPHOST = 'riotest.hopto.org'
14
+ #FTPHOST = 'localhost'
15
+ FTPROOT = rio("ftp://#{FTPHOST}/")
16
+
17
+ TESTDIR = rio('riotest')
18
+
19
+ RODIR = rio('ro')
20
+ RWDIR = rio('rw')
21
+ FTP_RWROOT = FTPROOT/TESTDIR/RWDIR
22
+ FTP_ROROOT = FTPROOT/TESTDIR/RODIR
23
+ FS_RWROOT = FSROOT/TESTDIR/RWDIR
24
+ FS_ROROOT = FSROOT/TESTDIR/RODIR
25
+ unless $mswin32
26
+ PASSWDFILE = '/etc/passwd'
27
+ UID,GID = rio(PASSWDFILE).lines[/^#{FTPUSER}/][0].split(':')[2..3].map{|strid| strid.to_i}
28
+ end
29
+ end
30
+ include Const
31
+ def init_test_files
32
+ fsdir = rio(FSROOT,TESTDIR).delete!.mkdir
33
+ rodir = rio(fsdir,RODIR).mkdir
34
+ rwdir = rio(fsdir,RWDIR).mkdir
35
+ f0 = rodir/'f0' < "File0\n"
36
+ d0 = rio(rodir,'d0').mkdir
37
+ f1 = rio(d0,'f1') < "File1\n"
38
+ d1 = rio(d0,'d1').mkdir
39
+ f2 = rio(d1,'f2') < "File2\n"
40
+ f0.chown(UID,GID).chmod(0555)
41
+ f1.chown(UID,GID).chmod(0555)
42
+ f2.chown(UID,GID).chmod(0555)
43
+ d1.chown(UID,GID).chmod(0555)
44
+ d0.chown(UID,GID).chmod(0555)
45
+ rodir.chown(UID,GID).chmod(0555)
46
+ rwdir.chown(UID,GID).chmod(0777)
47
+ fsdir.chown(UID,GID).chmod(0555)
48
+
49
+ puts rio(FSROOT,TESTDIR).all[]
50
+ end
51
+ module_function :init_test_files
52
+ end
53
+ end
54
+ end
55
+
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby
2
+ Dir.chdir File.dirname(__FILE__)
3
+ #$:.unshift File.expand_path('../lib/')
4
+
5
+ require 'rubygems'
6
+ require 'rio'
7
+
8
+
9
+ #require 'rio'
10
+ require 'test/unit'
11
+
12
+ require 'tc/all'
13
+ $trace_states = false
14
+ require 'test/unit/ui/console/testrunner'
15
+ #require 'test/unit/ui/tk/testrunner'
data/test/http/all.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'tc/testcase'
2
+
3
+ require 'http/copy-from-http'
4
+ require 'http/uri-meta'
@@ -0,0 +1,141 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_copy_from_http < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+
15
+ end
16
+ def setup
17
+ super
18
+ self.class.once unless @@once
19
+ end
20
+ RTHOST = ENV['RIO_TEST_HOST'] ||= 'localhost'
21
+ RTPORT = ENV['RIO_TEST_PORT'] || 80
22
+ RTHOSTPORT = "#{RTHOST}:#{RTPORT}"
23
+ RTDIR = 'riotest'
24
+ HWFILENAME = 'hw.html'
25
+ GZFILENAME = 'lines.txt.gz'
26
+ HWURL = "http://#{RTHOSTPORT}/#{RTDIR}/#{HWFILENAME}"
27
+ GZURL = "http://#{RTHOSTPORT}/#{RTDIR}/#{GZFILENAME}"
28
+ LOCALRTDIR = rio('../../srv/www/htdocs',RTDIR)
29
+ HWFILE = LOCALRTDIR/HWFILENAME
30
+ GZFILE = LOCALRTDIR/GZFILENAME
31
+
32
+
33
+ def cptest(src)
34
+ dst = rio('dst').delete!.mkpath
35
+ dst < src.clone
36
+ assert_rios_equal(src.clone,rio(dst,src.filename),"rio copy")
37
+ end
38
+
39
+ def test_gunzip_uri_rio
40
+ ans = rio(GZURL).gzip.contents
41
+ exp = rio(GZFILE).gzip.contents
42
+
43
+ assert_equal(exp,ans)
44
+ end
45
+ def test_gunzip_copy_uri_rio
46
+ ario = rio('out.txt').delete! < rio(GZURL).gzip
47
+ ans = rio(ario).contents
48
+ exp = rio(GZFILE).gzip.contents
49
+ assert_equal(exp,ans)
50
+ end
51
+
52
+ def test_uri_rio_to_file
53
+ ario = rio('outf').delete!.touch
54
+ url = HWURL
55
+ urio = rio(url)
56
+ ario < urio
57
+ exp = urio.contents
58
+ assert_equal(exp,ario.contents)
59
+ assert_equal(rio(HWFILE).contents,rio('outf').contents)
60
+ end
61
+
62
+ def test_uri_rio_to_file2
63
+ ario = rio('outf2').delete!.touch
64
+ url = HWURL
65
+ urio = rio(url)
66
+ urio > ario
67
+ exp = urio.contents
68
+ assert_equal(exp,ario.contents)
69
+ assert_equal(rio(HWFILE).contents,rio('outf2').contents)
70
+ end
71
+ def test_uri_rio_to_filex
72
+ ario = rio('outx').delete!
73
+ url = HWURL
74
+ urio = rio(url)
75
+ ario < urio
76
+ exp = urio.contents
77
+ assert_equal(exp,ario.contents)
78
+ assert_equal(rio(HWFILE).contents,rio('outx').contents)
79
+ end
80
+ def test_uri_rio_to_filex2
81
+ ario = rio('outx2').delete!
82
+ url = HWURL
83
+ urio = rio(url)
84
+ urio > ario
85
+ exp = urio.contents
86
+ assert_equal(exp,ario.contents)
87
+ assert_equal(rio(HWFILE).contents,rio('outx2').contents)
88
+ end
89
+ def test_uri_rio_to_dir
90
+ ario = rio('ud').delete!.mkdir
91
+ url = HWURL
92
+ urio = rio(url)
93
+ ario < urio
94
+ drio = rio(ario,urio.filename)
95
+ assert(drio.file?)
96
+ assert_equal(urio.contents,drio.contents)
97
+ assert_equal(rio(HWFILE).contents,drio.contents)
98
+ end
99
+ def test_uri_rio_to_dir2
100
+ ario = rio('ud2').delete!.mkdir
101
+ url = HWURL
102
+ urio = rio(url)
103
+ urio > ario
104
+ drio = rio(ario,urio.filename)
105
+ assert(drio.file?)
106
+ assert_equal(urio.contents,drio.contents)
107
+ assert_equal(rio(HWFILE).contents,drio.contents)
108
+ end
109
+ def test_uri_string_to_dir
110
+ ario = rio('uds').delete!.mkdir
111
+ url = HWURL
112
+ urio = rio(url)
113
+ #$trace_states = true
114
+ ario < url
115
+ $trace_states = false
116
+ drio = rio(ario,urio.filename)
117
+ assert(drio.file?)
118
+ assert(urio.contents,drio.contents)
119
+ end
120
+ def test_url_string_to_file
121
+ ario = rio('out').delete!.touch
122
+ url = HWURL
123
+ ario < url
124
+ exp = url
125
+ assert_equal(exp,ario.contents)
126
+ end
127
+ def test_url_array_to_file
128
+ ario = rio('out').delete!.touch
129
+ url = HWURL
130
+ ario < [url]
131
+ exp = url
132
+ assert_equal(exp,ario.contents)
133
+ end
134
+ def test_url_string_to_nonex
135
+ ario = rio('outz').delete!
136
+ url = HWURL
137
+ ario < url
138
+ exp = url
139
+ assert_equal(exp,ario.contents)
140
+ end
141
+ end
@@ -0,0 +1,72 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_uri_meta < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+
15
+ end
16
+ def setup
17
+ super
18
+ self.class.once unless @@once
19
+ end
20
+ RTHOST = ENV['RIO_TEST_HOST'] ||= 'localhost'
21
+ RTPORT = ENV['RIO_TEST_PORT'] || 80
22
+ RTHOSTPORT = "#{RTHOST}:#{RTPORT}"
23
+ RTDIR = 'riotest'
24
+ HWFILENAME = 'hw.html'
25
+ GZFILENAME = 'lines.txt.gz'
26
+ DRFILENAME = 'dir'
27
+ HWURL = "http://#{RTHOSTPORT}/#{RTDIR}/#{HWFILENAME}"
28
+ GZURL = "http://#{RTHOSTPORT}/#{RTDIR}/#{GZFILENAME}"
29
+ DRURL = "http://#{RTHOSTPORT}/#{RTDIR}/#{DRFILENAME}"
30
+ LOCALRTDIR = rio('../../srv/www/htdocs',RTDIR)
31
+ HWFILE = LOCALRTDIR/HWFILENAME
32
+ GZFILE = LOCALRTDIR/GZFILENAME
33
+ URLS = [HWURL,GZURL,DRURL]
34
+
35
+ def check_meta(r)
36
+ f = open(r.to_url)
37
+ [:content_type,:charset,:base_uri,:content_encoding,:last_modified].each do |sym|
38
+ exp = f.__send__(sym)
39
+ ans = r.__send__(sym)
40
+ assert_equal(exp,ans)
41
+ end
42
+ end
43
+
44
+ def test_meta_new()
45
+ URLS.each do |url|
46
+ check_meta(rio(url))
47
+ end
48
+ end
49
+
50
+ def test_meta_open()
51
+ URLS.each do |url|
52
+ check_meta(rio(url).open('r'))
53
+ end
54
+ end
55
+
56
+ def test_meta_read()
57
+ URLS.each do |url|
58
+ r = rio(url)
59
+ contents = r.contents
60
+ check_meta(r)
61
+ end
62
+ end
63
+
64
+ def test_meta_read_some()
65
+ URLS.each do |url|
66
+ r = rio(url)
67
+ str = r.gets
68
+ check_meta(r)
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,46 @@
1
+ require 'webrick'
2
+ require 'rio'
3
+
4
+
5
+ class TempServer
6
+ def initialize(server_config = {})
7
+ @logdir = rio('log').delete!.mkdir
8
+ @config = { :DocumentRoot => rio('srv/www/htdocs').abs,
9
+ :Logger => WEBrick::Log.new(@logdir/'server.log'),
10
+ :AccessLog => [[ @logdir/'access.log', WEBrick::AccessLog::COMBINED_LOG_FORMAT ]],
11
+ :Port => ENV['RIO_TEST_PORT'] || '8088',
12
+ }
13
+ @config.merge!(server_config)
14
+ ENV['RIO_TEST_PORT'] = @config[:Port]
15
+ @server = create_server(@config)
16
+ end
17
+ def self.run(*args)
18
+ new.run(*args)
19
+ end
20
+ def create_server(config = {})
21
+ server = WEBrick::HTTPServer.new(config)
22
+ yield server if block_given?
23
+ ['INT', 'TERM'].each {|signal|
24
+ trap(signal) {server.shutdown}
25
+ }
26
+ server
27
+ end
28
+ def run_progs(progs)
29
+ progs.each do |prog|
30
+ system("ruby #{prog}")
31
+ end
32
+ end
33
+ def run(*programs)
34
+ Thread.new(@server) { |srv|
35
+ srv.start
36
+ }
37
+ Thread.new(programs) { |progs|
38
+ #Thread.pass
39
+ run_progs(progs)
40
+ }.join()
41
+
42
+ Thread.new(@server) { |srv|
43
+ srv.shutdown
44
+ }
45
+ end
46
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby
2
+ Dir.chdir File.dirname(__FILE__)
3
+ $devlib=File.expand_path('../lib/')
4
+ $:.unshift $devlib unless $:[0] == $devlib
5
+
6
+ $mswin32 = (RUBY_PLATFORM =~ /mswin32/)
7
+
8
+ require 'rio'
9
+ require 'test/unit'
10
+
11
+ require 'tc/all'
12
+ require 'ftp/all'
13
+ $trace_states = false
14
+ require 'test/unit/ui/console/testrunner'
15
+ require 'lib/temp_server.rb'
16
+ TempServer.run('runhttptests.rb')
17
+ #require 'test/unit/ui/tk/testrunner'
@@ -0,0 +1,14 @@
1
+ !/usr/local/bin/ruby
2
+ Dir.chdir File.dirname(__FILE__)
3
+ $devlib=File.expand_path('../lib/')
4
+ $:.unshift $devlib unless $:[0] == $devlib
5
+
6
+ $mswin32 = (RUBY_PLATFORM =~ /mswin32/)
7
+
8
+ require 'rio'
9
+ require 'test/unit'
10
+
11
+ require 'ftp/all'
12
+ $trace_states = false
13
+ require 'test/unit/ui/console/testrunner'
14
+ #require 'test/unit/ui/tk/testrunner'
data/test/runhttp.rb ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/local/bin/ruby
2
+ Dir.chdir File.dirname(__FILE__)
3
+ $:.unshift File.expand_path('../lib/')
4
+
5
+ require 'rio'
6
+ require 'lib/temp_server'
7
+
8
+
9
+ TempServer.run('runhttptests.rb')
10
+
11
+ #threads.each { |aThread| aThread.join }