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
data/test/tc/entsel.rb ADDED
@@ -0,0 +1,110 @@
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_entsel < Test::RIO::TestCase
11
+ @@once = false
12
+ @@dirs = nil
13
+ DN = 'd'
14
+ OD = 'o'
15
+ def self.once
16
+ @@once = true
17
+ rio(DN).rmtree.mkpath.chdir {
18
+ mknd(3,3)
19
+ }
20
+ end
21
+ def setup
22
+ super
23
+ self.class.once unless @@once
24
+ @exp = rio(DN).all[]
25
+ @lev = []
26
+ @lev[1] = @exp.select{ |el| el.length == 3 }
27
+ @lev[2] = @exp.select{ |el| el.length == 5 }
28
+ @lev[3] = @exp.select{ |el| el.length == 7 }
29
+ @olev = []
30
+ @olev[1] = @lev[1].map{ |el| el.sub(/^d/,'o') }
31
+ @olev[2] = @lev[2].map{ |el| el.sub(/^d/,'o') }
32
+ @olev[3] = @lev[3].map{ |el| el.sub(/^d/,'o') }
33
+ end
34
+ include RIO_TestCase
35
+
36
+ def self.mknd(n,level)
37
+ return unless level > 0
38
+ dirs = (0...n).map{|i| rio(i.to_s).mkdir}
39
+ dirs.each{ |d|
40
+ d.chdir {
41
+ mknd(n,level-1)
42
+ }
43
+ }
44
+ end
45
+
46
+ def test_skipdirs_copy1
47
+ odir = rio(OD).delete!
48
+ rio(DN).skipdirs(1) > odir
49
+ assert_array_equal([],odir.all[])
50
+ end
51
+ def test_skipdirs_copy2
52
+ odir = rio(OD).delete!
53
+ rio(DN).skipdirs(2) > odir
54
+ assert_array_equal(@olev[1],odir.all[])
55
+ end
56
+ def test_skipdirs_copy3
57
+ odir = rio(OD).delete!
58
+ rio(DN).skipdirs(3) > odir
59
+ assert_array_equal(@olev[1]+@olev[2],odir.all[])
60
+ end
61
+ def test_dirs_copy1
62
+ odir = rio(OD).delete!
63
+ rio(DN).dirs(1) > odir
64
+ assert_array_equal(@olev[1],odir.all[])
65
+ end
66
+ def test_dirs_copy2
67
+ odir = rio(OD).delete!
68
+ rio(DN).dirs(0..2) > odir
69
+ assert_array_equal(@olev[1]+@olev[2],odir.all[])
70
+ end
71
+ def test_dirs_copy3
72
+ odir = rio(OD).delete!
73
+ rio(DN).dirs(2) > odir
74
+ assert_array_equal([],odir.all[])
75
+ end
76
+ def test_dirs_array
77
+ rios1 = rios2str(rio(DN).dirs(1).to_a)
78
+ assert_equal(@lev[1],rios1)
79
+ rios2 = rios2str(rio(DN).dirs(2).to_a)
80
+ assert_equal([],rios2)
81
+ rios3 = rios2str(rio(DN).dirs(3).to_a)
82
+ assert_equal([],rios3)
83
+ end
84
+ def test_skipdirs_array
85
+ rios1 = rios2str(rio(DN).skipdirs(1).to_a)
86
+ assert_array_equal([],rios1)
87
+ rios2 = rios2str(rio(DN).skipdirs(2).to_a)
88
+ assert_array_equal(@lev[1],rios2)
89
+ rios3 = rios2str(rio(DN).skipdirs(3).to_a)
90
+ assert_array_equal(@lev[1],rios3)
91
+ end
92
+ def test_all_skipdirs_array
93
+ rios1 = rios2str(rio(DN).all.skipdirs(1).to_a)
94
+ assert_array_equal(@lev[2]+@lev[3],rios1)
95
+ rios2 = rios2str(rio(DN).all.skipdirs(2).to_a)
96
+ assert_array_equal(@lev[1]+@lev[3],rios2)
97
+ rios3 = rios2str(rio(DN).all.skipdirs(3).to_a)
98
+ assert_array_equal(@lev[1]+@lev[2],rios3)
99
+ end
100
+ def test_all_dirs_array
101
+ rios1 = rios2str(rio(DN).all.dirs(1).to_a)
102
+ assert_equal(@lev[1],rios1)
103
+ rios2 = rios2str(rio(DN).all.dirs(2).to_a)
104
+ assert_equal(@lev[2],rios2)
105
+ rios3 = rios2str(rio(DN).all.dirs(3).to_a)
106
+ assert_equal(@lev[3],rios3)
107
+ end
108
+ def test_sel
109
+ end
110
+ end
data/test/tc/eq.rb ADDED
@@ -0,0 +1,101 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+ require 'rio'
7
+ require 'test/unit'
8
+ require 'test/unit/testsuite'
9
+
10
+ class TC_RIO_eq < Test::Unit::TestCase
11
+ def assert_case_equal(q,p,msg=nil)
12
+ begin
13
+ assert_block {
14
+ q === p
15
+ }
16
+ rescue Test::Unit::AssertionFailedError => e
17
+ raise e.exception("#{q.inspect}\n ===\n#{p.inspect}")
18
+ end
19
+ end
20
+ def assert_eq(q,p,msg=nil)
21
+ begin
22
+ assert_block {
23
+ q == p
24
+ }
25
+ rescue Test::Unit::AssertionFailedError => e
26
+ raise e.exception("#{q.inspect}\n ==\n(#{p.inspect})")
27
+ end
28
+ end
29
+ def assert_eql(q,p,msg=nil)
30
+ begin
31
+ assert_block {
32
+ q.eql?(p)
33
+ }
34
+ rescue Test::Unit::AssertionFailedError => e
35
+ raise e.exception("#{q.inspect}\n.eql?\n(#{p.inspect})")
36
+ end
37
+ end
38
+ def assert_not_eql(q,p,msg=nil)
39
+ begin
40
+ assert_block {
41
+ !q.eql?(p)
42
+ }
43
+ rescue Test::Unit::AssertionFailedError => e
44
+ raise e.exception("#{q.inspect}\n NOT eql?\n(#{p.inspect})")
45
+ end
46
+ end
47
+ def all_eq(q1,q2)
48
+ q = rio(q1)
49
+ z = rio(q2)
50
+
51
+ assert_eq(q,z)
52
+ assert_case_equal(q,z,"===")
53
+ assert_case_equal(q,q2,"===")
54
+ end
55
+
56
+ def test_eq
57
+ s_dir = ''
58
+ #$trace_states = true
59
+ rio(%w/qp eq/).rmtree.mkpath.chdir do
60
+ q1 = 'q'
61
+ q2 = 'q'
62
+ all_eq(q1,q2)
63
+ #$trace_states = true
64
+ all_eq(?-,'stdio:')
65
+
66
+
67
+ dir = rio('dir')
68
+ all_eq(rio('dir'),dir)
69
+ all_eq(dir,rio('dir'))
70
+ all_eq(rio('dir'),'dir')
71
+ all_eq(dir,'dir')
72
+
73
+ # p rio('dir') == 'dir'
74
+
75
+ # f = ::File.open('dir/f1')
76
+ # p rio(f).to_s
77
+ # r2 = rio(?_,f)
78
+ # p dir.to_s,dir.to_rl
79
+ # p rio(f) == r2
80
+
81
+ # p rio(?-).to_s
82
+ # p rio(?-).to_rl
83
+ # p rio(??).to_s
84
+ # p rio(??,'rio','/tmp').to_s
85
+ # p rio(?$).to_s
86
+ # p rio(?=).to_s
87
+ # p rio('tcp://localhost:systime').to_s
88
+ # p rio('rio:tcp://:systime').to_s
89
+ # p rio('rio:tcp://:systime').rl.rl
90
+ # p rio('http://ruby-doc.org/').to_s
91
+ # require 'uri'
92
+ # u = URI('http://ruby-doc.org/')
93
+ # p rio(u).to_s
94
+ # p rio(u).rl.rl
95
+ # p rio('file:///tmp/zippy.tmp').to_s
96
+ # p rio('file:///tmp/zippy.tmp').rl.rl
97
+ # p rio('./-').to_s
98
+ # p rio('-').to_s
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,69 @@
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_RIO_expand_path < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+
15
+ end
16
+
17
+ def setup
18
+ super
19
+ self.class.once unless @@once
20
+ end
21
+
22
+ def test_expand_path_from_cwd
23
+ require 'tmpdir'
24
+
25
+ tmp = rio(::Dir.tmpdir)
26
+ tmp.chdir do
27
+ rel = rio('groovy')
28
+ exp = rio(tmp,rel)
29
+ ans = rel.expand_path
30
+ assert_kind_of(RIO::Rio,ans)
31
+ assert_equal(exp,ans)
32
+ end
33
+ end
34
+
35
+ def test_expand_path_from_base_rio
36
+ srel = 'groovy'
37
+ sbase = '/tmp'
38
+ rel = rio(srel)
39
+ base = rio(sbase)
40
+ exp = File.expand_path(srel,sbase)
41
+ ans = rel.expand_path(base)
42
+ assert_kind_of(RIO::Rio,ans)
43
+ assert_equal(exp,ans)
44
+ end
45
+
46
+ def test_expand_path_from_base_string
47
+ srel = 'groovy'
48
+ sbase = '/tmp'
49
+ rel = rio(srel)
50
+ base = rio(sbase)
51
+ exp = File.expand_path(srel,sbase)
52
+ ans = rel.expand_path(sbase)
53
+ assert_kind_of(RIO::Rio,ans)
54
+ assert_equal(exp,ans)
55
+ end
56
+
57
+ def test_expand_path_from_tilde
58
+ return if $mswin32
59
+ srel = 'groovy'
60
+ sbase = '~'
61
+ rel = rio(srel)
62
+ base = rio(sbase)
63
+ exp = File.expand_path(srel,sbase)
64
+ ans = rel.expand_path(sbase)
65
+ assert_kind_of(RIO::Rio,ans)
66
+ assert_equal(exp,ans)
67
+ end
68
+
69
+ end
data/test/tc/ext.rb ADDED
@@ -0,0 +1,136 @@
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
+ class TC_ext < Test::RIO::TestCase
10
+ @@once = false
11
+ def self.once
12
+ @@once = true
13
+
14
+ end
15
+
16
+ def setup
17
+ super
18
+ self.class.once unless @@once
19
+
20
+ end
21
+
22
+ # def test_mvdir
23
+ # rio('a').rmtree.mkpath
24
+ # rio('a/b').mkpath
25
+ # rio('a/c').mkpath
26
+ # rio('a/b/f').touch
27
+ # rio('a/b/f').rename('a/c')
28
+ # rio('a/b/d').mkdir
29
+ # rio('a/b/d').rename('a/c')
30
+ # assert(rio('a/c/f').exist?)
31
+ # assert(rio('a/c/d').exist?)
32
+ # end
33
+ def test_change_ext_in_dir
34
+ rio('ch').rmtree.mkpath
35
+ rio('ch/0.a').touch
36
+ rio('ch/1.a').touch
37
+ rio('ch/0.b').touch
38
+ rio('ch/1.b').touch
39
+ rio('ch/0.c').touch
40
+ rio('ch/1.c').touch
41
+ rio('ch').files('*.a') do |file|
42
+ new_file = file.dup
43
+ new_file.extname = '.x'
44
+ file.rename(new_file)
45
+ end
46
+ assert(rio('ch/0.x').exist?)
47
+ assert(rio('ch/1.x').exist?)
48
+ $trace_states = false
49
+ rio('ch').files('*.b') do |file|
50
+ file.rename.extname = '.y'
51
+ end
52
+ assert(rio('ch/0.y').exist?)
53
+ assert(rio('ch/1.y').exist?)
54
+ rio('ch').rename.files('*.c') do |file|
55
+ file.extname = '.z'
56
+ end
57
+ assert(rio('ch/0.z').exist?)
58
+ assert(rio('ch/1.z').exist?)
59
+ end
60
+ def test_change_tgz
61
+ rio('tgz').rmtree.mkpath
62
+ rio('tgz/dir').mkdir
63
+ rio('tgz/dir/z.tar.gz').touch
64
+ rio('tgz/z.tar.gz').touch
65
+
66
+ rio('tgz').rename.all.files('*.tar.gz') do |gzfile|
67
+ gzfile.ext('.tar.gz').extname = '.tgz'
68
+ end
69
+ assert(rio('tgz/dir/z.tgz').exist?)
70
+ assert(rio('tgz/z.tgz').exist?)
71
+ end
72
+ def test_ext
73
+ ario = rio('afile.tar.gz').touch
74
+ $trace_states = false
75
+ ario.rename!('cfile.tgz')
76
+ # ario.ext('.tar.gz').basename = 'bfile'
77
+ end
78
+ def test_basename
79
+ s_dir = ''
80
+ adir = rio(%w/adir asubdir/).rmtree.mkpath
81
+ fname = 'afile';
82
+ ename = '.aext';
83
+ wname = fname+ename;
84
+ afile = rio(adir,fname+ename)
85
+
86
+ assert_equal(ename, afile.ext?)
87
+ assert_equal(fname, afile.basename.to_s)
88
+ assert_equal(fname, afile.ext.basename.to_s)
89
+ assert_equal(ename, afile.ext?)
90
+ assert_equal(wname, afile.ext('.j').basename.to_s)
91
+ assert_equal('.j', afile.ext?)
92
+ assert_equal(wname, afile.basename('.j').to_s)
93
+ assert_equal('.j', afile.ext?)
94
+ assert_equal(wname, afile.ext('').basename.to_s)
95
+ assert_equal('', afile.ext?)
96
+ assert_equal(fname, afile.basename(nil).to_s)
97
+ assert_equal(ename, afile.ext?)
98
+ assert_equal(wname, afile.noext.basename.to_s)
99
+ assert_equal('', afile.ext?)
100
+ end
101
+ def test_pathutil
102
+ path = rio(%w/dir1 sd1 f1.txt/)
103
+ ext1 = path.extname
104
+ assert_equal('.txt',ext1)
105
+ bn2 = path.basename('.txt')
106
+ assert_equal('f1',bn2.to_s)
107
+ dn1 = path.dirname
108
+ assert_equal('dir1/sd1',dn1.to_s)
109
+
110
+ abs0 = ::File.expand_path(path.to_s)
111
+ abs1 = path.abs
112
+ assert_equal(abs0,abs1.to_s)
113
+ abs2 = rio(RIO.cwd,path.dirname,path.basename(path.extname).to_s+path.extname).to_s
114
+ assert_equal(abs0,abs2.to_s)
115
+ end
116
+ def test_documented_example
117
+ ario = rio('afile.txt')
118
+ assert_equal('.txt',ario.ext?)
119
+ assert_equal('afile',ario.ext('.txt').basename)
120
+ assert_equal('.txt',ario.ext?)
121
+ assert_equal('afile.txt',ario.ext('.zip').basename)
122
+ assert_equal('.zip',ario.ext?)
123
+ assert_equal('afile.txt',ario.basename('.tar'))
124
+ assert_equal('.tar',ario.ext?)
125
+ assert_equal('afile',ario.ext.basename)
126
+ assert_equal('.txt',ario.ext?)
127
+ assert_equal('afile.txt',ario.noext.basename)
128
+ assert_equal('',ario.ext?)
129
+
130
+ ario = rio('afile.tar.gz')
131
+ assert_equal('.gz',ario.ext?)
132
+ assert_equal('afile.tar',ario.basename)
133
+ assert_equal('afile',ario.ext('.tar.gz').basename)
134
+ assert_equal('.tar.gz',ario.ext?)
135
+ end
136
+ end
data/test/tc/fileno.rb ADDED
@@ -0,0 +1,94 @@
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_fileno < 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 fileno/) 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
+
36
+ def test_fileno_like_IO
37
+ rio('fileno').delete!.mkpath.chdir
38
+
39
+ frio = mkalinesfile(5,'frio')
40
+ rio('fruby') < frio
41
+
42
+ fruby = File.open('fruby');
43
+ p fruby.fileno
44
+ p frio.fileno
45
+ p rio('-').fileno
46
+
47
+ ario = mkalinesfile(2,'ario')
48
+ ario = rio('ario').a
49
+ p ario.sync?
50
+ ario.puts("Hey")
51
+ p ario.sync?
52
+ p ario.ioh.sync
53
+ $trace_states = true
54
+ ario.fsync
55
+ $trace_states = false
56
+ p ario.sync?
57
+ ario.sync.puts("HOHO")
58
+ p ario.sync?
59
+ p ario.ioh.sync
60
+ ario.nosync
61
+ p ario.sync?
62
+ p ario.ioh.sync
63
+ ario.ioh.sync = true
64
+ p ario.ioh.sync
65
+ p ario.sync?
66
+ p ario.ioh.sync
67
+
68
+
69
+ # assert_equal(fruby.pos,frio.pos)
70
+ # assert_equal(fruby.fileno,frio.fileno)
71
+ # assert_equal(line = fruby.readline,frio.readline)
72
+
73
+ # assert_equal(fruby.pos,frio.pos)
74
+ # assert_equal(fruby.fileno,frio.fileno)
75
+ # assert_equal(line = fruby.readline,frio.readline)
76
+
77
+ # fruby.pos += line.length
78
+ # frio.pos += line.length
79
+
80
+ # assert_equal(fruby.pos,frio.pos)
81
+ # assert_equal(fruby.fileno,frio.fileno)
82
+ # assert_equal(line = fruby.readline,frio.readline)
83
+
84
+
85
+ rio('..').chdir
86
+
87
+
88
+
89
+
90
+ end
91
+
92
+
93
+
94
+ end