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/pathop.rb ADDED
@@ -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
+
10
+ class TC_pathop < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ rio('d0').rmtree.mkpath
15
+ rio('d0/d2').rmtree.mkpath
16
+ rio('d0/d3').rmtree.mkpath
17
+ rio('d0/d4').rmtree.mkpath
18
+ rio('d0/d2/d3').rmtree.mkpath
19
+ rio('d0/d2/d5').rmtree.mkpath
20
+ rio('d0/d3/d6').rmtree.mkpath
21
+ rio('d1').rmtree.mkpath
22
+ rio('d1/d8').rmtree.mkpath
23
+ make_lines_file(1,'d1/f0')
24
+ make_lines_file(2,'d1/f1')
25
+ make_lines_file(1,'d0/f0')
26
+ make_lines_file(2,'d0/f1')
27
+ make_lines_file(1,'d0/d2/f0')
28
+ make_lines_file(2,'d0/d2/f1')
29
+ make_lines_file(1,'d0/d3/d6/f0')
30
+ make_lines_file(2,'d0/d3/d6/f1')
31
+ end
32
+ def setup
33
+ super
34
+ self.class.once unless @@once
35
+
36
+ @d0 = rio('d0')
37
+ @d1 = rio('d1')
38
+ @d2 = @d0/'d2'
39
+ @f0 = @d0/'f0'
40
+ @f1 = @d0/'f1'
41
+ @f2 = @d0/'d2'/'f2'
42
+ @f3 = @d0/'d2'/'f3'
43
+
44
+ end
45
+ def test_p1
46
+ src = rio(@d1)
47
+ dst = []
48
+ puts @f3
49
+ p File.split('/qe/pi/')
50
+ end
51
+ def test_p2
52
+ p1 = rio('p1')
53
+ p2 = rio('p2')
54
+ p3 = p1.join(p2)
55
+ puts p1,p3
56
+ p3 = p1.join!(p2)
57
+ puts p1,p3
58
+
59
+ end
60
+ end
data/test/tc/paths.rb ADDED
@@ -0,0 +1,145 @@
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_paths < Test::Unit::TestCase
11
+ def smap(a) a.map { |el| el.to_s } end
12
+ def pmap(a)
13
+ a.sort
14
+ end
15
+ def gmap(io)
16
+ smap(io.to_a).sort
17
+ end
18
+
19
+ def test_paths
20
+ s_dir = ''
21
+ tdir = rio(%w/qp test_paths/)
22
+ tdir.rmtree.mkpath.chdir {
23
+ rio(%w/dir0 dir00 dir000/).mkpath
24
+ rio(%w/dir1 dir10 dir000/).mkpath
25
+ rio(%w/dir1 dir10 dir100/).mkpath
26
+ rio(%w/dir1 dir11/).mkpath
27
+ rio(%w/dir1 f0.txt/).touch
28
+ rio(%w/dir1 dir10 f0.txt/).touch
29
+ rio(%w/dir1 dir10 f1.txt/).touch
30
+ rio(%w/dir1 dir10 f2.emp/).touch
31
+ rio(%w/f0.txt/).touch
32
+ rio(%w/dir1 dir10 dir000 f100.txt/).touch
33
+ }
34
+
35
+ tdir.chdir {
36
+ io = rio('dir1')
37
+ exp = %w{ dir1/dir10 dir1/dir11 dir1/f0.txt}
38
+ assert_equal(pmap(exp), gmap(io))
39
+ io = rio('dir1').dirs
40
+ exp = %w{ dir1/dir10 dir1/dir11}
41
+ assert_equal(pmap(exp), gmap(io))
42
+
43
+ io = rio('dir1').files
44
+ exp = %w{ dir1/f0.txt}
45
+ assert_equal(pmap(exp), gmap(io))
46
+
47
+ io = rio('dir1').dirs("*1")
48
+ exp = %w{ dir1/dir11}
49
+ assert_equal(pmap(exp), gmap(io))
50
+
51
+ io = rio('dir1').glob('**/*.txt')
52
+ exp = %w{dir1/f0.txt dir1/dir10/f0.txt dir1/dir10/f1.txt dir1/dir10/dir000/f100.txt}
53
+ assert_equal(pmap(exp), gmap(io))
54
+
55
+ rio('dir1').chdir {
56
+ io = rio('dir10').files('*.txt')
57
+ exp = %w{ dir10/f0.txt dir10/f1.txt}
58
+ assert_equal(pmap(exp), gmap(io))
59
+
60
+ io = rio('dir10').files('*.txt')
61
+ exp = %w{ dir10/f0.txt dir10/f1.txt}
62
+ assert_equal(pmap(exp), gmap(io))
63
+ }
64
+ }
65
+ tdir.chdir {
66
+ rio('dir1').chdir {
67
+ io = rio('dir10').files('*.txt')
68
+ exp = %w{ dir10/f0.txt dir10/f1.txt}
69
+ assert_equal(pmap(exp), gmap(io))
70
+
71
+ io = rio('dir10').glob("**/*.txt")
72
+ exp = %w{ dir10/f0.txt dir10/f1.txt dir10/dir000/f100.txt}
73
+ assert_equal(pmap(exp), gmap(io))
74
+
75
+ io = rio('dir10').all.files('*.txt')
76
+ exp = %w{ dir10/f0.txt dir10/f1.txt dir10/dir000/f100.txt}
77
+ assert_equal(pmap(exp), gmap(io))
78
+
79
+ io = rio('dir10').all.files
80
+ exp = %w{ dir10/f0.txt dir10/f1.txt dir10/f2.emp dir10/dir000/f100.txt}
81
+ assert_equal(pmap(exp), gmap(io))
82
+ }
83
+ }
84
+ tdir.chdir {
85
+ io = rio('dir1').all.dirs
86
+ exp = %w{ dir1/dir10 dir1/dir10/dir000 dir1/dir11 dir1/dir10/dir100 }
87
+ assert_equal(pmap(exp), gmap(io))
88
+
89
+ io = rio('dir1').all.dirs('*0')
90
+ exp = %w{ dir1/dir10 dir1/dir10/dir100 dir1/dir10/dir000}
91
+ assert_equal(pmap(exp), gmap(io))
92
+
93
+ io = rio('dir1').glob('**/*100*')
94
+ exp = %w{ dir1/dir10/dir100 dir1/dir10/dir000/f100.txt}
95
+ assert_equal(pmap(exp), gmap(io))
96
+ }
97
+ tdir.chdir {
98
+ io = rio('dir1').all.dirs('*0')
99
+ exp = %w{ dir1/dir10 dir1/dir10/dir100 dir1/dir10/dir000}
100
+ assert_equal(pmap(exp), gmap(io))
101
+
102
+ io = rio('dir1').glob('*1')
103
+ exp = %w{ dir1/dir11 }
104
+ assert_equal(pmap(exp), gmap(io))
105
+
106
+ io = rio('dir1').glob('**/*1')
107
+ exp = %w{ dir1/dir11 }
108
+ assert_equal(pmap(exp), gmap(io))
109
+
110
+ $trace_states = true
111
+ io = rio('dir1').recurse('*0')
112
+ exp = %w[dir1/dir10 dir1/dir10/dir000 dir1/dir10/dir100 dir1/dir11 dir1/f0.txt dir1/dir10/f0.txt dir1/dir10/f1.txt
113
+ dir1/dir10/f2.emp dir1/dir10/dir000/f100.txt]
114
+ $trace_states = false
115
+ assert_equal(pmap(exp), gmap(io))
116
+
117
+ io = rio('dir1').recurse('*1')
118
+ exp = %w{ dir1/dir11 dir1/dir10 dir1/f0.txt}
119
+ assert_equal(pmap(exp), gmap(io))
120
+
121
+ io = rio('dir1').recurse('*1').files
122
+ exp = %w{ dir1/f0.txt }
123
+ assert_equal(pmap(exp), gmap(io))
124
+
125
+ io = rio('dir1').recurse('*1').dirs
126
+ exp = %w{ dir1/dir11 dir1/dir10 }
127
+ assert_equal(pmap(exp), gmap(io))
128
+
129
+ io = rio('dir1').recurse('*1').dirs('*1')
130
+ exp = %w{ dir1/dir11 }
131
+ assert_equal(pmap(exp), gmap(io))
132
+
133
+ io = rio('dir1').recurse('*0').files
134
+ exp = %w[dir1/f0.txt dir1/dir10/f0.txt dir1/dir10/f1.txt
135
+ dir1/dir10/f2.emp dir1/dir10/dir000/f100.txt]
136
+ assert_equal(pmap(exp), gmap(io))
137
+
138
+ io = rio('dir1').recurse('*0').files(/f\d\..../)
139
+ exp = %w[dir1/f0.txt dir1/dir10/f0.txt dir1/dir10/f1.txt
140
+ dir1/dir10/f2.emp ]
141
+ assert_equal(pmap(exp), gmap(io))
142
+
143
+ }
144
+ end
145
+ end
data/test/tc/pid.rb ADDED
@@ -0,0 +1,31 @@
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_pid < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup
16
+ super
17
+ end
18
+ def test_likeio
19
+ cmd = 'ruby -v'
20
+ ios = File.popen(cmd)
21
+ assert(ios.pid)
22
+ ios_lines = ios.readlines
23
+
24
+ ior = rio(?-,cmd)
25
+ assert(ior.pid)
26
+ ior_lines = ior.readlines
27
+
28
+ assert_equal(ios_lines,ior_lines)
29
+ end
30
+
31
+ end
data/test/tc/piper.rb ADDED
@@ -0,0 +1,143 @@
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 'rio/piper'
10
+
11
+ class TC_piper < Test::RIO::TestCase
12
+ @@once = false
13
+ @@dname = 'd'
14
+ @@fnames = ['f0','f1','f2','g0','g1']
15
+
16
+ require 'tc/programs_util'
17
+ include Test::RIO::Programs
18
+
19
+ def self.once
20
+ @@once = true
21
+ rio(@@dname).rmtree.mkpath.chdir {
22
+ @@fnames.each { |fn|
23
+ make_lines_file(2,fn)
24
+ }
25
+ }
26
+ end
27
+ def setup
28
+ super
29
+ self.class.once unless @@once
30
+ end
31
+
32
+ def checkit(exp,*args)
33
+ args.push(out = rio(?").chomp)
34
+ rp = RIO::Piper::Base.new(*args)
35
+ rp.run
36
+ assert_equal(exp,out[])
37
+ rp = RIO::Piper::Base.new(*args)
38
+ rp.run
39
+ assert_equal(exp,out[])
40
+ rp.run
41
+ assert_equal(exp,out[])
42
+ end
43
+
44
+ def test_cmd_out
45
+ ls = rio(?-,PROG['list_dir'])
46
+ checkit([@@dname],ls)
47
+ end
48
+
49
+ def test_cmd_out2
50
+ ls = rio(?-,PROG['list_dir']+' d')
51
+ checkit(@@fnames,ls)
52
+ end
53
+
54
+ def test_cmd_cmd_out
55
+ ls = rio(?-,PROG['list_dir']+' d')
56
+ grep = rio(?-,PROG['find_lines']+' 1').w!
57
+ checkit(@@fnames.select { |s| s =~ /1/ },ls,grep)
58
+ end
59
+
60
+ def test_cmd_cmd_cmd_out
61
+ ls = rio(?-,PROG['list_dir']+' d')
62
+ grep = rio(?-,PROG['find_lines']+' 1').w!
63
+ grep2 = rio(?-,PROG['find_lines']+' g').w!
64
+ checkit(@@fnames.select { |s| s =~ /g1/ },ls,grep,grep2)
65
+ end
66
+
67
+ def test_cmd_cmd_cmd_cmd_out
68
+ ls = rio(?-,PROG['list_dir']+' d')
69
+ grep = rio(?-,PROG['find_lines']+' 1').w!
70
+ grep2 = rio(?-,PROG['find_lines']+' g').w!
71
+ wc = rio(?-,PROG['count_lines']).w!
72
+
73
+ checkit(["1"],ls,grep,grep2,wc)
74
+ end
75
+ def test_piper_out
76
+ ls = rio(?-,PROG['list_dir']+' d')
77
+ grep = rio(?-,PROG['find_lines']+' 1').w!
78
+ rp1 = RIO::Piper::Base.new(ls,grep)
79
+ checkit(@@fnames.select { |s| s =~ /1/ },rp1)
80
+ end
81
+
82
+ def test_piper_cmd_out
83
+ ls = rio(?-,PROG['list_dir']+' d')
84
+ grep = rio(?-,PROG['find_lines']+' 1').w!
85
+ rp1 = RIO::Piper::Base.new(ls,grep)
86
+ grep2 = rio(?-,PROG['find_lines']+' g').w!
87
+ checkit(@@fnames.select { |s| s =~ /g1/ },rp1,grep2)
88
+ end
89
+
90
+ def test_cmd_piper_out
91
+ ls = rio(?-,PROG['list_dir']+' d')
92
+ grep = rio(?-,PROG['find_lines']+' 1').w!
93
+ grep2 = rio(?-,PROG['find_lines']+' g').w!
94
+ rp1 = RIO::Piper::Base.new(grep,grep2)
95
+ checkit(@@fnames.select { |s| s =~ /g1/ },ls,rp1)
96
+ end
97
+
98
+ def test_piper_piper_out
99
+ ls = rio(?-,PROG['list_dir']+' d')
100
+ grep = rio(?-,PROG['find_lines']+' 1').w!
101
+ grep2 = rio(?-,PROG['find_lines']+' g').w!
102
+ wc = rio(?-,PROG['count_lines']).w!
103
+ rp1 = RIO::Piper::Base.new(ls,grep)
104
+ rp2 = RIO::Piper::Base.new(grep2,wc)
105
+ checkit(["1"],rp1,rp2)
106
+ end
107
+
108
+ def test_file_out
109
+ f = rio('d/f2')
110
+ checkit(rio('d/f2').chomp[],f)
111
+ end
112
+
113
+ def test_file_cmd_out
114
+ f = rio('d/f2')
115
+ grep = rio(?-,PROG['find_lines']+' 2').w!
116
+ checkit(rio('d/f2').chomp[/2/],f,grep)
117
+ end
118
+
119
+ def test_file_cmd_cmd_out
120
+ f = rio('d/f2')
121
+ grep = rio(?-,PROG['find_lines']+' 2').w!
122
+ grep2 = rio(?-,PROG['find_lines']+' 0').w!
123
+ checkit(rio('d/f2').chomp[/0/],f,grep,grep2)
124
+ end
125
+
126
+ def test_file_cmd_cmd_cmd_out
127
+ f = rio('d/f2')
128
+ grep = rio(?-,PROG['find_lines']+' 2').w!
129
+ grep2 = rio(?-,PROG['find_lines']+' 0').w!
130
+ wc = rio(?-,PROG['count_lines']).w!
131
+ checkit(["1"],f,grep,grep2,wc)
132
+ end
133
+
134
+
135
+ def test_file_piper_out
136
+ f = rio('d/f2')
137
+ grep = rio(?-,PROG['find_lines']+' 2').w!
138
+ grep2 = rio(?-,PROG['find_lines']+' 0').w!
139
+ rp1 = RIO::Piper::Base.new(grep,grep2)
140
+ checkit(rio('d/f2').chomp[/0/],f,rp1)
141
+ end
142
+
143
+ end
@@ -0,0 +1,24 @@
1
+
2
+ module Test
3
+ module RIO
4
+ module Programs
5
+ TEST_BIN_DIR = File.expand_path(Dir.pwd+'/bin')
6
+
7
+ XPROGS = {
8
+ 'count_lines' => 'wc -l',
9
+ 'find_lines' => 'grep',
10
+ 'list_dir' => 'ls',
11
+ }
12
+ RPROGS = {
13
+ 'count_lines' => "ruby #{TEST_BIN_DIR}/count_lines.rb",
14
+ 'find_lines' => "ruby #{TEST_BIN_DIR}/find_lines.rb",
15
+ 'list_dir' => "ruby #{TEST_BIN_DIR}/list_dir.rb",
16
+ }
17
+ PROG = {
18
+ 'count_lines' => ($mswin32 ? RPROGS['count_lines'] : XPROGS['count_lines']),
19
+ 'find_lines' => ($mswin32 ? RPROGS['find_lines'] : XPROGS['find_lines']),
20
+ 'list_dir' => ($mswin32 ? RPROGS['list_dir'] : XPROGS['list_dir']),
21
+ }
22
+ end
23
+ end
24
+ end
data/test/tc/qae.rb ADDED
@@ -0,0 +1,493 @@
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_qae < Test::Unit::TestCase
12
+ @@tdir = rio(%w/qp qae/)
13
+ @@once = false
14
+
15
+ def smap(a) a.map { |el| el.to_s } end
16
+ def setup
17
+ s_dir = ''
18
+ #$trace_states = true
19
+ unless @@once
20
+ @@once = true
21
+ @@tdir.rmtree.mkpath.chdir do
22
+ rio('d0').mkpath.chdir {
23
+ rio('d2').mkpath
24
+ rio('d1').mkpath.chdir {
25
+ rio('d2').mkpath.chdir {
26
+ rio('d1').mkpath.chdir {
27
+ rio('q1') < (0..1).map { |i| "L#{i}:d0/d1/d2/d1/q1\n" }
28
+ rio('q2') < (0..1).map { |i| "L#{i}:d0/d1/d2/d1/q2\n" }
29
+ }
30
+ rio('q1') < (0..1).map { |i| "L#{i}:d0/d1/d2/q1\n" }
31
+ }
32
+ }
33
+ rio('q1') < (0..1).map { |i| "L#{i}:d0/q1\n" }
34
+ rio('q2') < (0..1).map { |i| "L#{i}:d0/q2\n" }
35
+ }
36
+
37
+ rio('d1').mkpath.chdir {
38
+ rio('d1').mkpath.chdir {
39
+ rio('q1') < (0..1).map { |i| "L#{i}:d1/d1/q1\n" }
40
+ rio('q2') < (0..1).map { |i| "L#{i}:d1/d1/q2\n" }
41
+ }
42
+ rio('d2').mkpath.chdir {
43
+ rio('d1').mkpath.chdir {
44
+ rio('q1') < (0..1).map { |i| "L#{i}:d1/d2/d1/q1\n" }
45
+ rio('q2') < (0..1).map { |i| "L#{i}:d1/d2/d1/q2\n" }
46
+ }
47
+ rio('d2').mkpath
48
+ }
49
+ rio('d3').mkpath.chdir {
50
+ rio('d1').mkpath.chdir {
51
+ rio('q1') < (0..1).map { |i| "L#{i}:d1/d3/d1/q1\n" }
52
+ rio('d1').mkpath
53
+ }
54
+ rio('q1') < (0..1).map { |i| "L#{i}:d1/d3/q1\n" }
55
+ }
56
+ }
57
+ end
58
+ end
59
+ end
60
+
61
+ def test_qae_fs_lines
62
+ rio('qp/qae').chdir do
63
+ begin
64
+ begin
65
+ ans = []
66
+ rio('d0').files.each { |f|
67
+ f.each { |el|
68
+ ans << el
69
+ }
70
+ }
71
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
72
+ assert_equal(exp.sort,smap(ans).sort)
73
+ end
74
+
75
+ begin
76
+ ans = []
77
+ rio('d0').files.lines.each { |el| ans << el }
78
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
79
+ assert_equal(exp.sort,smap(ans).sort)
80
+ end
81
+
82
+ begin
83
+ ans = []
84
+ rio('d0').lines.files.each { |el| ans << el }
85
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
86
+ assert_equal(exp.sort,smap(ans).sort)
87
+ end
88
+
89
+ begin
90
+ ans = []
91
+ rio('d0').files.lines(/L1/).each { |el| ans << el }
92
+ exp = ["L1:d0/q1\n","L1:d0/q2\n"]
93
+ assert_equal(exp.sort,smap(ans).sort)
94
+ end
95
+
96
+ begin
97
+ ans = []
98
+ rio('d0').lines(/L1/).files.each { |el| ans << el }
99
+ exp = ["L1:d0/q1\n","L1:d0/q2\n"]
100
+ assert_equal(exp.sort,smap(ans).sort)
101
+ end
102
+
103
+ begin
104
+ ans = []
105
+ rio('d0').lines.each { |el| ans << el }
106
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
107
+ assert_equal(exp.sort,smap(ans).sort)
108
+ end
109
+
110
+ begin
111
+ ans = []
112
+ rio('d0').lines(/L1/).each { |el| ans << el }
113
+ exp = ["L1:d0/q1\n","L1:d0/q2\n"]
114
+ assert_equal(exp.sort,smap(ans).sort)
115
+ end
116
+
117
+ end
118
+ end
119
+ end
120
+
121
+ def test_qae_fs_lines_ss
122
+ rio('qp/qae').chdir do
123
+ begin
124
+ begin
125
+ ans = []
126
+ rio('d0').files.each { |f|
127
+ f.each { |el|
128
+ ans << el
129
+ }
130
+ }
131
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
132
+ assert_equal(exp.sort,smap(ans).sort)
133
+ end
134
+
135
+ begin
136
+ ans = rio('d0').files.lines[]
137
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
138
+ assert_equal(exp.sort,smap(ans).sort)
139
+ end
140
+
141
+ begin
142
+ ans = rio('d0').lines.files[]
143
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
144
+ assert_equal(exp.sort,smap(ans).sort)
145
+ end
146
+
147
+ begin
148
+ ans = rio('d0').files.lines[/L1/]
149
+ exp = ["L1:d0/q1\n","L1:d0/q2\n"]
150
+ assert_equal(exp.sort,smap(ans).sort)
151
+ end
152
+
153
+ begin
154
+ ans = rio('d0').lines(/L1/).files[]
155
+ exp = ["L1:d0/q1\n","L1:d0/q2\n"]
156
+ assert_equal(exp.sort,smap(ans).sort)
157
+ end
158
+
159
+ begin
160
+ ans = rio('d0').lines[]
161
+ exp = ["L0:d0/q1\n","L1:d0/q1\n","L0:d0/q2\n","L1:d0/q2\n"]
162
+ assert_equal(exp.sort,smap(ans).sort)
163
+ end
164
+
165
+ begin
166
+ ans = rio('d0').lines[/L1/]
167
+ exp = ["L1:d0/q1\n","L1:d0/q2\n"]
168
+ assert_equal(exp.sort,smap(ans).sort)
169
+ end
170
+
171
+ end
172
+ end
173
+ end
174
+
175
+ def test_qae_chomp
176
+ rio('qp/qae').chdir do
177
+ begin
178
+ begin
179
+ ans = []
180
+ rio('d0/q1').each { |el|
181
+ ans << el
182
+ }
183
+ exp = ["L0:d0/q1\n","L1:d0/q1\n"]
184
+ assert_equal(exp,ans)
185
+ end
186
+
187
+ begin
188
+ ans = []
189
+ rio('d0/q1').chomp.each { |el|
190
+ ans << el
191
+ }
192
+ exp = ["L0:d0/q1","L1:d0/q1"]
193
+ assert_equal(exp,ans)
194
+ end
195
+
196
+ end
197
+ end
198
+ end
199
+
200
+ def test_qae_fs_nest
201
+ ds = ['d1/d1','d1/d2','d1/d1/q1','d1/d1/q2','d1/d2/d1','d1/d2/d1/q1','d1/d2/d1/q2','d1/d2/d2',
202
+ 'd1/d3','d1/d3/d1','d1/d3/q1','d1/d3/d1/q1','d1/d3/d1/d1']
203
+ rio('qp/qae').chdir do
204
+ begin
205
+ begin
206
+ ans = []
207
+ rio('d1').dirs.each { |dir|
208
+ dir.each { |ent|
209
+ ans << ent
210
+ }
211
+ }
212
+ exp = ds.select { |el| el =~ %r|^d1/d\d/.\d$| }
213
+ assert_equal(smap(exp).sort,smap(ans).sort)
214
+ end
215
+
216
+ begin
217
+ ans = []
218
+ rio('d1').dirs.each { |dir|
219
+ dir.dirs.each { |ent|
220
+ ans << ent
221
+ }
222
+ }
223
+ exp = ds.select { |el| el =~ %r|^d1/d\d/d\d$| }
224
+ assert_equal(smap(exp).sort,smap(ans).sort)
225
+ end
226
+
227
+ begin
228
+ ans = []
229
+ rio('d1').dirs.each { |dir|
230
+ dir.dirs(/1/).each { |ent|
231
+ ans << ent
232
+ }
233
+ }
234
+ exp = ds.select { |el| el =~ %r|^d1/d\d/d1$| }
235
+ assert_equal(smap(exp).sort,smap(ans).sort)
236
+ end
237
+
238
+ begin
239
+ ans = []
240
+ rio('d1').dirs.each { |dir|
241
+ dir.all.dirs.each { |ent|
242
+ ans << ent
243
+ }
244
+ }
245
+ exp = ds.select { |el| el =~ %r|^d1/d\d/| && el =~ %r|d\d$|}
246
+ assert_equal(smap(exp).sort,smap(ans).sort)
247
+ end
248
+
249
+ begin
250
+ ans = []
251
+ rio('d1').dirs.each { |dir|
252
+ dir.all.dirs(/1/).each { |ent|
253
+ ans << ent
254
+ }
255
+ }
256
+ exp = ds.select { |el| el =~ %r|^d1/d\d/| && el =~ %r|d1$|}
257
+ assert_equal(smap(exp).sort,smap(ans).sort)
258
+ end
259
+
260
+
261
+ begin
262
+ ans = []
263
+ rio('d1').dirs.each { |dir|
264
+ dir.files.each { |ent|
265
+ ans << ent
266
+ }
267
+ }
268
+ exp = ds.select { |el| el =~ %r|^d1/d\d/q\d$| }
269
+ assert_equal(smap(exp).sort,smap(ans).sort)
270
+ end
271
+
272
+ begin
273
+ ans = []
274
+ rio('d1').dirs.each { |dir|
275
+ dir.files(/1/).each { |ent|
276
+ ans << ent
277
+ }
278
+ }
279
+ exp = ds.select { |el| el =~ %r|^d1/d\d/q1$| }
280
+ assert_equal(smap(exp).sort,smap(ans).sort)
281
+ end
282
+
283
+ begin
284
+ ans = []
285
+ rio('d1').dirs.each { |dir|
286
+ dir.all.files.each { |ent|
287
+ ans << ent
288
+ }
289
+ }
290
+ exp = ds.select { |el| el =~ %r|^d1/d\d/| && el =~ %r|q\d$|}
291
+ assert_equal(smap(exp).sort,smap(ans).sort)
292
+ end
293
+
294
+ begin
295
+ ans = []
296
+ rio('d1').dirs.each { |dir|
297
+ dir.all.files(/1/).each { |ent|
298
+ ans << ent
299
+ }
300
+ }
301
+ exp = ds.select { |el| el =~ %r|^d1/d\d/| && el =~ %r|q1$|}
302
+ assert_equal(smap(exp).sort,smap(ans).sort)
303
+ end
304
+
305
+ end
306
+ end
307
+ end
308
+
309
+ def test_qae_fs_all
310
+ ds = ['d0/d1','d0/d2','d0/q1','d0/q2','d0/d1/d2','d0/d1/d2/d1','d0/d1/d2/q1','d0/d1/d2/d1/q1','d0/d1/d2/d1/q2']
311
+ rio('qp/qae').chdir do
312
+ begin
313
+ begin
314
+ ans = []
315
+ rio('d0').all.each { |el| ans << el }
316
+ exp = ds.dup
317
+ assert_equal(exp.sort,smap(ans).sort)
318
+ end
319
+
320
+ end
321
+
322
+ begin
323
+ begin
324
+ ans = []
325
+ rio('d0').all.files.dirs.each { |el| ans << el }
326
+ exp = ds.select { |el| el =~ /[qd]\d$/ }
327
+ assert_equal(exp.sort,smap(ans).sort)
328
+ end
329
+
330
+ begin
331
+ ans = []
332
+ rio('d0').all.files(/1/).dirs.each { |el| ans << el }
333
+ exp = ds.select { |el| el =~ /(d\d|q1)$/ }
334
+ assert_equal(exp.sort,smap(ans).sort)
335
+ end
336
+
337
+ begin
338
+ ans = []
339
+ rio('d0').all.files.dirs(/1/).each { |el| ans << el }
340
+ exp = ds.select { |el| el =~ /(q\d|d1)$/ }
341
+ assert_equal(exp.sort,smap(ans).sort)
342
+ end
343
+
344
+ begin
345
+ ans = []
346
+ rio('d0').all.files(/1/).dirs(/1/).each { |el| ans << el }
347
+ exp = ds.select { |el| el =~ /[qd]1$/ }
348
+ assert_equal(exp.sort,smap(ans).sort)
349
+ end
350
+
351
+ end
352
+
353
+ begin
354
+ begin
355
+ ans = []
356
+ rio('d0').all.files.each { |el| ans << el }
357
+ exp = ds.select { |el| el =~ /q\d$/ }
358
+ assert_equal(exp.sort,smap(ans).sort)
359
+ end
360
+
361
+ begin
362
+ ans = []
363
+ rio('d0').all.files(/1/).each { |el| ans << el }
364
+ exp = ds.select { |el| el =~ /q1$/ }
365
+ assert_equal(exp.sort,smap(ans).sort)
366
+ end
367
+
368
+ begin
369
+ ans = []
370
+ rio('d0').all.files('*1').each { |el| ans << el }
371
+ exp = ds.select { |el| el =~ /q1$/ }
372
+ assert_equal(exp.sort,smap(ans).sort)
373
+ end
374
+
375
+ end
376
+
377
+ begin
378
+ begin
379
+ ans = []
380
+ rio('d0').all.dirs.each { |el| ans << el }
381
+ exp = ds.reject { |el| el =~ /q\d$/ }
382
+ assert_equal(exp.sort,smap(ans).sort)
383
+ end
384
+
385
+ begin
386
+ ans = []
387
+ rio('d0').all.dirs(/1/).each { |el| ans << el }
388
+ exp = ds.select { |el| el =~ /d1$/ }
389
+ assert_equal(exp.sort,smap(ans).sort)
390
+ end
391
+
392
+ begin
393
+ ans = []
394
+ rio('d0').all.dirs('*1').each { |el| ans << el }
395
+ exp = ds.select { |el| el =~ /d1$/ }
396
+ assert_equal(exp.sort,smap(ans).sort)
397
+ end
398
+
399
+ end
400
+ end
401
+ end
402
+ def test_qae_fs
403
+ rio('qp/qae').chdir do
404
+ begin
405
+ begin
406
+ ans = []
407
+ rio('d0').each { |el| ans << el }
408
+ exp = ['d0/d1','d0/d2','d0/q1','d0/q2']
409
+ assert_equal(exp.sort,smap(ans).sort)
410
+ end
411
+
412
+ end
413
+
414
+
415
+ begin
416
+ begin
417
+ ans = []
418
+ rio('d0').files.each { |el| ans << el }
419
+ exp = ['d0/q1','d0/q2']
420
+ assert_equal(exp.sort,smap(ans).sort)
421
+ end
422
+
423
+ begin
424
+ ans = []
425
+ rio('d0').files(/1/).each { |el| ans << el }
426
+ exp = ['d0/q1']
427
+ assert_equal(exp.sort,smap(ans).sort)
428
+ end
429
+
430
+ begin
431
+ ans = []
432
+ rio('d0').files('*1').each { |el| ans << el }
433
+ exp = ['d0/q1']
434
+ assert_equal(exp.sort,smap(ans).sort)
435
+ end
436
+
437
+ end
438
+
439
+ begin
440
+ begin
441
+ ans = []
442
+ rio('d0').dirs.each { |el| ans << el }
443
+ exp = ['d0/d1','d0/d2']
444
+ assert_equal(exp.sort,smap(ans).sort)
445
+ end
446
+
447
+ begin
448
+ ans = []
449
+ rio('d0').dirs(/1/).each { |el| ans << el }
450
+ exp = ['d0/d1']
451
+ assert_equal(exp.sort,smap(ans).sort)
452
+ end
453
+
454
+ begin
455
+ ans = []
456
+ rio('d0').dirs('*1').each { |el| ans << el }
457
+ exp = ['d0/d1']
458
+ assert_equal(exp.sort,smap(ans).sort)
459
+ end
460
+ end
461
+ begin
462
+ begin
463
+ ans = []
464
+ rio('d0').files.dirs.each { |el| ans << el }
465
+ exp = ['d0/d1','d0/d2','d0/q1','d0/q2']
466
+ assert_equal(exp.sort,smap(ans).sort)
467
+ end
468
+
469
+ begin
470
+ ans = []
471
+ rio('d0').files(/1/).dirs.each { |el| ans << el }
472
+ exp = ['d0/d1','d0/d2','d0/q1']
473
+ assert_equal(exp.sort,smap(ans).sort)
474
+ end
475
+
476
+ begin
477
+ ans = []
478
+ rio('d0').files.dirs(/1/).each { |el| ans << el }
479
+ exp = ['d0/d1','d0/q1','d0/q2']
480
+ assert_equal(exp.sort,smap(ans).sort)
481
+ end
482
+
483
+ begin
484
+ ans = []
485
+ rio('d0').files(/1/).dirs(/1/).each { |el| ans << el }
486
+ exp = ['d0/d1','d0/q1']
487
+ assert_equal(exp.sort,smap(ans).sort)
488
+ end
489
+
490
+ end
491
+ end
492
+ end
493
+ end