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,114 @@
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 'test/unit'
9
+ require 'test/unit/testsuite'
10
+
11
+ class TC_RIO_symlink1 < Test::Unit::TestCase
12
+ def assert!(a,msg="negative assertion")
13
+ assert((!(a)),msg)
14
+ end
15
+ def smap(a) a.map { |el| el.to_s } end
16
+ def tdir() rio(%w/qp symlink1/) end
17
+ def mkafile(*args)
18
+ file = rio(*args)
19
+ file < (0..1).map { |i| "L#{i}:#{file.to_s}\n" }
20
+ file
21
+ end
22
+ def mkalinesfile(n_lines,*args)
23
+ file = rio(*args)
24
+ file < (0...n_lines).map { |i| "L#{i}:#{file.to_s}\n" }
25
+ file
26
+ end
27
+ def setup
28
+ #$trace_states = true
29
+ @cwd = ::Dir.getwd
30
+ tdir.mkpath.chdir
31
+ end
32
+ def teardown
33
+ ::Dir.chdir @cwd
34
+ end
35
+ def test_lstat
36
+ rio('lstat').delete!.mkpath.chdir
37
+
38
+ file = mkalinesfile(100,'f0').symlink( link = rio('l0') )
39
+ assert(file.file?)
40
+ assert(link.file?)
41
+ assert(link.symlink?)
42
+
43
+ assert_equal(file.stat.size,link.stat.size)
44
+ assert_not_equal(file.stat.size,link.lstat.size)
45
+ assert_raise(RIO::Exception::CantHandle) {
46
+ file.lstat
47
+ }
48
+
49
+ rio('..').chdir
50
+ end
51
+ def test_stream
52
+ rio('stream').delete!.mkpath.chdir
53
+
54
+ file = mkalinesfile(10,'f0').symlink( link = rio('l0') )
55
+ assert(file.file?)
56
+ assert(link.file?)
57
+ assert(link.symlink?)
58
+ lines = file[]
59
+
60
+ rl = link.readlink
61
+ assert(link.file?)
62
+ assert(link.symlink?)
63
+ assert_equal(lines[0],link.getrec)
64
+ assert(link.open?)
65
+
66
+ assert_equal(rl.to_s,link.readlink.to_s)
67
+ assert(link.open?)
68
+ assert_equal(lines[1],link.getrec)
69
+
70
+ link.lstat
71
+ assert(link.open?)
72
+ assert_equal(lines[2],link.getrec)
73
+
74
+ link.stat
75
+ assert(link.open?)
76
+ assert_equal(lines[3],link.getrec)
77
+
78
+ link.delete
79
+ assert(link.closed?)
80
+ assert!(link.exist?)
81
+ assert!(link.symlink?)
82
+
83
+ rio('..').chdir
84
+ end
85
+ def test_readlink
86
+ rio('readlink').delete!.mkpath.chdir
87
+
88
+ file = mkafile('f0').symlink( link = rio('l0') )
89
+ assert(file.file?)
90
+ assert(link.file?)
91
+ assert(link.symlink?)
92
+
93
+ assert_equal(file,link.readlink)
94
+ assert_not_equal(file,link)
95
+ assert_raise(RIO::Exception::CantHandle) {
96
+ file.readlink
97
+ }
98
+
99
+ rio('..').chdir
100
+ end
101
+ def test_ftype
102
+ rio('ftype').delete!.mkpath.chdir
103
+
104
+ file = mkafile('f0').symlink( link = rio('l0') )
105
+ assert(file.file?)
106
+ assert(link.file?)
107
+ assert(link.symlink?)
108
+
109
+ assert_equal('file',file.ftype)
110
+ assert_equal('link',link.ftype)
111
+
112
+ rio('..').chdir
113
+ end
114
+ end
@@ -0,0 +1,75 @@
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_synopsis < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ rio('adir').rmtree.mkpath.chdir {
15
+ rio('f1.rb') < (0..6).map { |i| "L#{i}:adir/f1\n" }
16
+ rio('f2.rb') < (0..6).map { |i| "L#{i}:adir/f2\n" }
17
+ rio('d1').mkdir.chdir {
18
+ rio('g1.rb') < (0..20).map { |i| "L#{i}:adir/d1/g1\n" }
19
+ rio('g2.rb') < (0..20).map { |i| "L#{i}:adir/d1/g2\n" }
20
+ }
21
+ if $supports_symlink
22
+ rio('f1.rb').symlink('l1.rb')
23
+ rio('f2.rb').symlink('l2.rb')
24
+ end
25
+ }
26
+ end
27
+ def setup
28
+ super
29
+ self.class.once unless @@once
30
+ end
31
+
32
+ def test_iter1
33
+ exp = %w[f1 f2 l1 l2].map{|fb| rio('adir',fb +'.rb')}
34
+ ans = []
35
+ rio('adir').files('*.rb') { |ent| ans << ent }
36
+ assert_equal(exp,ans)
37
+ end
38
+ def test_ary1
39
+ exp = %w[f1 f2 l1 l2].map{|fb| rio('adir',fb +'.rb')}
40
+ ans = rio('adir').files['*.rb']
41
+ assert_equal(exp,ans)
42
+ end
43
+
44
+ def test_cp1
45
+ exp = %w[f1 f2 l1 l2].map{|fb| rio('bdir',fb +'.rb')}
46
+ rio('adir').files('*.rb') > rio('bdir').delete!
47
+ assert_equal(smap(exp),smap(rio('bdir').to_a))
48
+ end
49
+ def test_iter2
50
+ exp = %w[d1/g1 d1/g2 f1 f2 l1 l2].map{|fb| rio('adir',fb +'.rb')}
51
+ ans = []
52
+ rio('adir').all.files('*.rb') { |ent| ans << ent }
53
+ assert_equal(smap(exp),smap(ans))
54
+ end
55
+
56
+ def test_ary2
57
+ exp = %w[d1/g1 d1/g2 f1 f2 l1 l2].map{|fb| rio('adir',fb +'.rb')}
58
+ ans = rio('adir').all.files['*.rb']
59
+ assert_equal(smap(exp),smap(ans))
60
+ end
61
+
62
+ def test_gziplines
63
+ rio('gz1.rb.gz').gzip < rio('adir','f1.rb')
64
+ rio('gz1.rb.gz').gzip > rio('o.rb')
65
+ exp = (0..6).map { |i| "L#{i}:adir/f1\n" }
66
+ assert_equal(exp,rio('o.rb').to_a)
67
+ ans = rio('gz1.rb.gz').gzip[0..2]
68
+ assert_equal(exp[0..2],ans)
69
+ end
70
+ def test_ary_skip_symlink
71
+ exp = %w[f1 f2].map{|fb| rio('adir',fb +'.rb')}
72
+ ans = rio('adir').files('*.rb').skip[:symlink?]
73
+ assert_equal(exp,ans)
74
+ end
75
+ end
data/test/tc/temp.rb ADDED
@@ -0,0 +1,152 @@
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 'tmpdir'
10
+
11
+ class TC_temp < Test::RIO::TestCase
12
+ @@once = false
13
+ def self.once
14
+ @@once = true
15
+ end
16
+ def setup
17
+ super
18
+ self.class.once unless @@once
19
+ @tmpdir = ::Dir::tmpdir
20
+ @pfx = 'rio'
21
+ end
22
+
23
+ def pathinfo(ario)
24
+ [:scheme,:opaque,:path,:fspath,:to_s,:to_url,:to_uri].each do |sym|
25
+ puts "#{sym}: #{ario.__send__(sym)}"
26
+ end
27
+ end
28
+
29
+ def test_new
30
+ tmp = rio(??)
31
+ assert_equal('temp',tmp.scheme)
32
+ assert_equal(::Dir::tmpdir,tmp.dirname.to_s)
33
+ assert_match(/^rio/,tmp.filename.to_s)
34
+ end
35
+
36
+ def test_dir
37
+ tmp = rio(??).mkdir
38
+ assert(tmp.dir?)
39
+ assert_equal('file',tmp.scheme)
40
+ assert_equal(::Dir::tmpdir,tmp.dirname.to_s)
41
+ assert_match(/^rio/,tmp.filename.to_s)
42
+ tmp.close
43
+ end
44
+
45
+ def test_dir_chdir
46
+ rio(??).chdir { |tmp|
47
+ assert(tmp.dir?)
48
+ assert_equal('path',tmp.scheme)
49
+ assert_equal('.',tmp.dirname.to_s)
50
+ assert_equal('.',tmp.filename.to_s)
51
+ tmp.close
52
+ }
53
+ end
54
+ # def test_dir_chdir2
55
+ # tmp = rio(??).chdir
56
+ # assert(tmp.dir?)
57
+ # assert_equal('path',tmp.scheme)
58
+ # assert_equal('.',tmp.dirname.to_s)
59
+ # assert_equal('.',tmp.filename.to_s)
60
+ # tmp.close
61
+ # end
62
+ def test_dir_mkdir
63
+ tmp = rio(??).mkdir
64
+ assert(tmp.dir?)
65
+ assert_equal('file',tmp.scheme)
66
+ assert_equal(::Dir::tmpdir,tmp.dirname.to_s)
67
+ assert_match(/^rio/,tmp.filename.to_s)
68
+ tmp.close
69
+ end
70
+
71
+ def test_file
72
+ tmp = rio(??).file
73
+ assert(tmp.file?)
74
+ assert_equal('file',tmp.scheme)
75
+ assert_equal(::Dir::tmpdir,tmp.dirname.to_s)
76
+ assert_match(/^rio/,tmp.filename.to_s)
77
+ tmp.close
78
+ end
79
+
80
+ def test_dir_prefix
81
+ tmp = rio(??,'zippy').mkdir
82
+ assert(tmp.dir?)
83
+ assert_match(/^zippy/,tmp.filename.to_s)
84
+ assert_equal(::Dir::tmpdir,tmp.dirname.to_s)
85
+ tmp.close
86
+ end
87
+
88
+ def test_file_prefix
89
+ tmp = rio(??,'zippy').file
90
+ assert(tmp.file?)
91
+ assert_match(/^zippy/,tmp.filename.to_s)
92
+ assert_equal(::Dir::tmpdir,tmp.dirname.to_s)
93
+ tmp.close
94
+ end
95
+
96
+ def test_dir_tmpdir
97
+ rio('riotmpdir').delete!.mkdir
98
+ tmp = rio(??,'zippy','riotmpdir').mkdir
99
+ assert_match(/^zippy/,tmp.filename.to_s)
100
+ assert_match('riotmpdir',tmp.dirname.to_s)
101
+ tmp.close
102
+ end
103
+
104
+ def test_file_tmpdir
105
+ rio('riotmpdir').delete!.mkdir
106
+ tmp = rio(??,'zippy','riotmpdir').file
107
+ assert_match(/^zippy/,tmp.filename.to_s)
108
+ assert_match('riotmpdir',tmp.dirname.to_s)
109
+ tmp.close
110
+ end
111
+
112
+ def test_dir_prefix_url
113
+ tmp = rio('temp:zippy').mkdir
114
+ assert_match(/^zippy/,tmp.filename.to_s)
115
+ tmp.close
116
+ end
117
+
118
+ def test_file_prefix_url
119
+ tmp = rio('temp:zippy').file
120
+ assert_match(/^zippy/,tmp.filename.to_s)
121
+ tmp.close
122
+ end
123
+
124
+ def test_dir_tmpdir_url
125
+ rio('riotmpdir').delete!.mkdir
126
+ tmp = rio('temp:riotmpdir/zippy').mkdir
127
+ assert(tmp.dir?)
128
+ assert_match(/^zippy/,tmp.filename.to_s)
129
+ assert_match('riotmpdir',tmp.dirname.to_s)
130
+ tmp.close
131
+ end
132
+
133
+ def test_file_tmpdir_url
134
+ rio('riotmpdir').delete!.mkdir
135
+ tmp = rio('temp:riotmpdir/zippy').file
136
+ assert(tmp.file?)
137
+ assert_match(/^zippy/,tmp.filename.to_s)
138
+ assert_match('riotmpdir',tmp.dirname.to_s)
139
+ tmp.close
140
+ end
141
+
142
+ def test_file_write
143
+ rio('riotmpdir').delete!.mkdir
144
+ tmp = rio('temp:riotmpdir/zippy')
145
+ tmp.puts("Hello Tempfile")
146
+ assert(tmp.file?)
147
+ assert(tmp.open?)
148
+ tmp.close
149
+ end
150
+
151
+
152
+ end
@@ -0,0 +1,60 @@
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 'tmpdir'
10
+
11
+ class TC_tempdir < Test::RIO::TestCase
12
+ @@once = false
13
+ def self.once
14
+ @@once = true
15
+ end
16
+ def setup
17
+ super
18
+ self.class.once unless @@once
19
+ @tmpdir = ::Dir::tmpdir
20
+ @pfx = 'rio'
21
+ end
22
+
23
+ def pathinfo(ario)
24
+ [:scheme,:opaque,:path,:fspath,:to_s,:to_url,:to_uri].each do |sym|
25
+ puts "#{sym}: #{ario.__send__(sym)}"
26
+ end
27
+ end
28
+
29
+ def test_new
30
+ tmpdir = rio('tempdir:')
31
+ assert(tmpdir.dir?)
32
+ assert_equal(::Dir::tmpdir,tmpdir.dirname.to_s)
33
+ end
34
+
35
+ def test_prefix
36
+ tmpdir = rio('tempdir:','zippy')
37
+ assert_match(/^zippy/,tmpdir.filename.to_s)
38
+ end
39
+
40
+ def test_tmpdir
41
+ rio('riotmpdir').delete!.mkdir
42
+ tmpdir = rio('tempdir:','zippy','riotmpdir')
43
+ assert_match(/^zippy/,tmpdir.filename.to_s)
44
+ assert_match('riotmpdir',tmpdir.dirname.to_s)
45
+ end
46
+
47
+ def test_prefix_url
48
+ tmpdir = rio('tempdir:zippy')
49
+ assert_match(/^zippy/,tmpdir.filename.to_s)
50
+ end
51
+
52
+ def test_tmpdir_url
53
+ rio('riotmpdir').delete!.mkdir
54
+ tmpdir = rio('tempdir:riotmpdir/zippy')
55
+ assert_match(/^zippy/,tmpdir.filename.to_s)
56
+ assert_match('riotmpdir',tmpdir.dirname.to_s)
57
+ end
58
+
59
+
60
+ end
@@ -0,0 +1,66 @@
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 'tmpdir'
10
+
11
+ class TC_tempfile < Test::RIO::TestCase
12
+ @@once = false
13
+ def self.once
14
+ @@once = true
15
+ end
16
+ def setup
17
+ super
18
+ self.class.once unless @@once
19
+ @tmpdir = ::Dir::tmpdir
20
+ @pfx = 'rio'
21
+ end
22
+
23
+ def pathinfo(ario)
24
+ [:scheme,:opaque,:path,:fspath,:to_s,:to_url,:to_uri].each do |sym|
25
+ puts "#{sym}: #{ario.__send__(sym)}"
26
+ end
27
+ end
28
+
29
+ def test_io
30
+ str = "Hello Tempfile"
31
+ assert_equal(str,rio(??).puts(str).rewind.chomp.gets)
32
+ end
33
+
34
+ def test_rl_temp
35
+ str = "Hello Tempfile"
36
+ tmp = rio('temp:')
37
+ assert(tmp.closed?)
38
+ assert_equal(str,tmp.puts(str).rewind.chomp.gets)
39
+ end
40
+
41
+ def test_rl_tempfile
42
+ str = "Hello Tempfile"
43
+ #$trace_states = true
44
+ tmp = rio('tempfile:')
45
+ assert(tmp.closed?)
46
+ tmp.puts(str)
47
+ assert(tmp.open?)
48
+ assert_equal(str,tmp.rewind.chomp.gets)
49
+ end
50
+
51
+ def test_copy
52
+ str = "Hello World\n"
53
+
54
+ src = rio(?").print!(str)
55
+ ans = rio(?")
56
+
57
+ tmp = rio(??)
58
+ tmp < src
59
+ tmp.rewind
60
+ assert_equal(str,tmp.contents)
61
+ tmp.rewind
62
+ tmp > ans
63
+ assert_equal(str,ans.contents)
64
+ end
65
+
66
+ end