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/edf.rb ADDED
@@ -0,0 +1,81 @@
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_edf < Test::Unit::TestCase
12
+ def tdir() rio(%w/qp edf/) end
13
+ def assert!(a,msg="negative assertion")
14
+ assert((!(a)),msg)
15
+ end
16
+ def smap(a) a.map{|el| el.to_s} 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
+ unless @once
30
+ @once = true
31
+ tdir.delete!.mkpath.chdir do
32
+ mkafile('f1.txt')
33
+ mkafile('f2.asc')
34
+ rio('d0').mkdir
35
+ rio('d1').mkdir.chdir do
36
+ mkafile('f0.txt')
37
+ end
38
+ rio('d2').mkdir.chdir do
39
+ mkafile('f1.asc')
40
+ mkafile('f1.txt')
41
+ mkafile('f2.txt')
42
+ rio('d3').mkdir.chdir do
43
+ mkafile('f0.txt')
44
+ mkafile('f2.txt')
45
+ mkafile('f1.txt')
46
+ end
47
+ end
48
+ end
49
+ end
50
+ @cwd = ::Dir.getwd
51
+ tdir.mkpath.chdir
52
+ end
53
+ def teardown
54
+ ::Dir.chdir @cwd
55
+ end
56
+
57
+ def test_basic
58
+
59
+ ans = rio('d2').files[]
60
+ p smap(ans)
61
+ ans.clear
62
+ $trace_states = false
63
+ rio('d2').files(/\.txt$/).each { |ent| ans << ent }
64
+ $trace_states = false
65
+
66
+ p smap(ans)
67
+
68
+ ans = rio('d2').files(/\.txt$/)[]
69
+ p smap(ans)
70
+
71
+ ans = rio('d2').files[/\.txt$/]
72
+ p smap(ans)
73
+
74
+ ans = rio('d2').files('*.txt')[]
75
+ p smap(ans)
76
+
77
+ ans = rio('d2').files['*.txt']
78
+ p smap(ans)
79
+
80
+ end
81
+ end
data/test/tc/empty.rb ADDED
@@ -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
+
10
+ class TC_empty < Test::RIO::TestCase
11
+ @@once = false
12
+
13
+ require 'tc/programs_util'
14
+ include Test::RIO::Programs
15
+
16
+ def self.once
17
+ @@once = true
18
+
19
+ rio('d0').rmtree.mkpath
20
+ rio('d1').rmtree.mkpath.chdir {
21
+ rio('file').touch
22
+ }
23
+ rio('f0').delete!.touch
24
+ rio('f1').puts!("a nonempty file\n")
25
+ end
26
+ def setup
27
+ super
28
+ self.class.once unless @@once
29
+ end
30
+ def test_file_empty
31
+ assert(rio('d0').empty?)
32
+ end
33
+ def test_file_not_empty
34
+ assert!(rio('d1').empty?)
35
+ end
36
+ def test_dir_empty
37
+ assert(rio('f0').empty?)
38
+ end
39
+ def test_dir_not_empty
40
+ assert!(rio('f1').empty?)
41
+ end
42
+ def test_ps_empty
43
+ assert(rio(?-,PROG['list_dir'] + ' d0').empty?)
44
+ end
45
+ def test_ps_not_empty
46
+ assert!(rio(?-,PROG['list_dir'] + ' d1').empty?)
47
+ end
48
+ def test_dev_null_empty
49
+ assert(rio(nil).empty?)
50
+ end
51
+ end
@@ -0,0 +1,129 @@
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_emptyriodir < Test::RIO::TestCase
11
+ include RIO_TestCase
12
+ @@once = false
13
+ def self.once
14
+ @@once = true
15
+ rio('adir').mkdir.chdir {
16
+ rio('a.rb').touch
17
+ rio('b.rb').touch
18
+ rio('c.txt').touch
19
+ }
20
+ rio('d.rb').touch
21
+ rio('e.txt').touch
22
+ rio('f.d').mkdir
23
+ end
24
+
25
+ def setup
26
+ super
27
+ self.class.once unless @@once
28
+ end
29
+
30
+ def test_ss
31
+
32
+ dotans = rio('.')[]
33
+ empans = rio[]
34
+ assert_array_equal(dotans,empans)
35
+
36
+ dotans = rio('.')['*.rb']
37
+ empans = rio['*.rb']
38
+ assert_array_equal(dotans,empans)
39
+
40
+ end
41
+
42
+ def test_each
43
+
44
+ dotans = []
45
+ empans = []
46
+ rio('.').each{ |el| dotans << el }
47
+ rio.each{ |el| empans << el }
48
+ assert_array_equal(dotans,empans)
49
+
50
+ dotans = []
51
+ empans = []
52
+ rio('.').entries('*.rb') { |el| dotans << el }
53
+ rio.entries('*.rb') { |el| empans << el }
54
+ assert_array_equal(dotans,empans)
55
+ end
56
+
57
+ def test_read
58
+ dotans = []
59
+ empans = []
60
+ dotrio = rio('.')
61
+ emprio = rio
62
+ while s = dotrio.read do dotans << s end
63
+ while s = emprio.read do empans << s end
64
+ assert_array_equal(dotans,empans)
65
+ end
66
+
67
+ def test_get
68
+ dotans = []
69
+ empans = []
70
+ dotrio = rio('.')
71
+ emprio = rio
72
+ while s = dotrio.get do dotans << s end
73
+ while s = emprio.get do empans << s end
74
+ assert_array_equal(dotans,empans)
75
+
76
+ dotans = []
77
+ empans = []
78
+ dotrio = rio('.').entries('*.d')
79
+ emprio = rio.entries('*.d')
80
+ while s = dotrio.get do dotans << s end
81
+ while s = emprio.get do empans << s end
82
+ assert_array_equal(dotans,empans)
83
+
84
+ end
85
+
86
+ def test_skip
87
+
88
+ dotans = rio('.').skip[]
89
+ empans = rio.skip[]
90
+ assert_array_equal(dotans,empans)
91
+
92
+ dotans = rio('.').skip['*.rb']
93
+ empans = rio.skip['*.rb']
94
+ assert_array_equal(dotans,empans)
95
+
96
+ end
97
+
98
+ def test_dirs
99
+
100
+ dotans = rio('.').dirs[]
101
+ empans = rio.dirs[]
102
+ assert_array_equal(dotans,empans)
103
+
104
+ dotans = rio('.').dirs['*.d']
105
+ empans = rio.dirs['*.d']
106
+ assert_array_equal(dotans,empans)
107
+
108
+ end
109
+
110
+
111
+ def test_getwd
112
+ dotans = rio('.').getwd
113
+ empans = rio.getwd
114
+ assert_array_equal(dotans,empans)
115
+ end
116
+
117
+ def test_rmdir
118
+ rio('empty.d').delete!.mkdir.chdir {
119
+ assert_raise(RIO::Exception::CantHandle) { rio.rmdir }
120
+ }
121
+ end
122
+
123
+ def test_rmtree
124
+ rio('empty.d').delete!.mkdir.chdir {
125
+ assert_raise(RIO::Exception::CantHandle) { rio.rmtree }
126
+ }
127
+ end
128
+
129
+ end
data/test/tc/entary.rb ADDED
@@ -0,0 +1,227 @@
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_entary < Test::Unit::TestCase
11
+ def smap(a) a.map { |el| el.to_s } end
12
+ def tdir() rio(%w/qp entary/) end
13
+ def mkafile(*args)
14
+ file = rio(*args)
15
+ file < (0..1).map { |i| "L#{i}:#{file.to_s}\n" }
16
+ file
17
+ end
18
+ def setup()
19
+ $trace_states = false
20
+ rio('qp/entary').delete!.mkpath.chdir do
21
+ rio('d0').mkpath.chdir do
22
+ rio('q1') < (0..1).map { |i| "L#{i}:d0/q1\n" }
23
+ rio('q2') < (0..1).map { |i| "L#{i}:d0/q2\n" }
24
+ rio('d1').mkdir.chdir do
25
+ rio('q1') < (0..1).map { |i| "L#{i}:d0/d1/q1\n" }
26
+ rio('q2') < (0..1).map { |i| "L#{i}:d0/d1/q2\n" }
27
+ rio('d1').mkdir.chdir do
28
+ rio('q1') < (0..1).map { |i| "L#{i}:d0/d1/d1/q1\n" }
29
+ rio('q2') < (0..1).map { |i| "L#{i}:d0/d1/d1/q2\n" }
30
+ end
31
+ rio('d2').mkdir
32
+ end
33
+ rio('d2').mkdir
34
+ end
35
+ end
36
+ end
37
+ def test_entary_nofile
38
+ ds = %w[d0/q1 d0/q2 d0/d1 d0/d2 d0/d1/q1 d0/d1/q2 d0/d1/d1 d0/d1/d1/q1 d0/d1/d1/q2]
39
+ return unless $supports_symlink
40
+ rio('qp/entary').chdir do
41
+ begin
42
+ rio('d1').delete!.mkpath.chdir do
43
+ rio('q1') < (0..1).map { |i| "L#{i}:d1/q1\n" }
44
+ rio('q2') < (0..1).map { |i| "L#{i}:d1/q2\n" }
45
+ rio('q1').symlink('lq1')
46
+ rio('d1').mkdir
47
+ rio('d1').symlink('ld1')
48
+ rio('d2').mkdir
49
+ end
50
+ ds = %w[d1/q1 d1/q2 d1/d1 d1/d2 d1/lq1 d1/ld1]
51
+ begin
52
+ ans = rio('d1').files[]
53
+ exp = ds.select { |el| el =~ /q\d$/ }
54
+ assert_equal(exp.sort,smap(ans).sort)
55
+
56
+ ans = rio('d1').dirs[]
57
+ exp = ds.select { |el| el =~ /d\d$/ }
58
+ assert_equal(exp.sort,smap(ans).sort)
59
+
60
+ ans = rio('d1').entries[]
61
+ exp = ds.select { |el| el =~ /(l)?[qd]\d$/ }
62
+ assert_equal(exp.sort,smap(ans).sort)
63
+ end
64
+ begin
65
+ rio('d1/q1').delete
66
+ ds = ds.reject { |el| el =~ %r|^d1/q1$| }
67
+
68
+ ans = rio('d1').files[]
69
+ exp = ds.select { |el| el =~ /q2$/ }
70
+ assert_equal(exp.sort,smap(ans).sort)
71
+
72
+ ans = rio('d1').dirs[]
73
+ exp = ds.select { |el| el =~ /d\d$/ }
74
+ assert_equal(exp.sort,smap(ans).sort)
75
+
76
+ ans = rio('d1').entries[]
77
+ exp = ds.select { |el| el =~ /(l)?[qd]\d$/ }
78
+ assert_equal(exp.sort,smap(ans).sort)
79
+ end
80
+ begin
81
+ rio('d1/d1').delete
82
+ ds = ds.reject { |el| el =~ %r|^d1/d11$| }
83
+
84
+ ans = rio('d1').files[]
85
+ exp = ds.select { |el| el =~ /q2$/ }
86
+ assert_equal(exp.sort,smap(ans).sort)
87
+
88
+ ans = rio('d1').dirs[]
89
+ exp = ds.select { |el| el =~ /d2$/ }
90
+ assert_equal(exp.sort,smap(ans).sort)
91
+
92
+ ans = rio('d1').entries[]
93
+ exp = ds.select { |el| el =~ /l[qd]1$/ or el =~ /[qd]2$/ }
94
+ assert_equal(exp.sort,smap(ans).sort)
95
+ end
96
+
97
+ end
98
+ end
99
+ end
100
+ def test_entary_nofile_symlink
101
+ ds = %w[d0/q1 d0/q2 d0/d1 d0/d2 d0/d1/q1 d0/d1/q2 d0/d1/d1 d0/d1/d1/q1 d0/d1/d1/q2]
102
+ return unless $supports_symlink
103
+ rio('qp/entary').chdir do
104
+ begin
105
+ rio('d1').delete!.mkpath.chdir do
106
+ rio('q1') < (0..1).map { |i| "L#{i}:d1/q1\n" }
107
+ rio('q2') < (0..1).map { |i| "L#{i}:d1/q2\n" }
108
+ rio('q1').symlink('lq1')
109
+ rio('d1').mkdir
110
+ rio('d1').symlink('ld1')
111
+ rio('d2').mkdir
112
+ end
113
+ ds = %w[d1/q1 d1/q2 d1/d1 d1/d2 d1/lq1 d1/ld1]
114
+
115
+ begin
116
+ ans = rio('d1').files[/1/]
117
+ exp = ds.select { |el| el =~ /q1$/ }
118
+ assert_equal(exp.sort,smap(ans).sort)
119
+
120
+ ans = rio('d1').dirs[/1/]
121
+ exp = ds.select { |el| el =~ /d1$/ }
122
+ assert_equal(exp.sort,smap(ans).sort)
123
+
124
+ ans = rio('d1').entries[/1/]
125
+ exp = ds.select { |el| el =~ /(l)?[qd]1$/ }
126
+ assert_equal(exp.sort,smap(ans).sort)
127
+ end
128
+
129
+ begin
130
+ rio('d1/q1').delete
131
+ ds = ds.reject { |el| el =~ %r|^d1/q1$| }
132
+
133
+ ans = rio('d1').files[/1/]
134
+ exp = []
135
+ assert_equal(exp.sort,smap(ans).sort)
136
+
137
+ ans = rio('d1').dirs[/1/]
138
+ exp = ds.select { |el| el =~ /d1$/ }
139
+ assert_equal(exp.sort,smap(ans).sort)
140
+
141
+ ans = rio('d1').entries[/1/]
142
+ exp = ds.select { |el| el =~ /(l)?[qd]1$/ }
143
+ assert_equal(exp.sort,smap(ans).sort)
144
+ end
145
+ begin
146
+ rio('d1/d1').delete
147
+ ds = ds.reject { |el| el =~ %r|^d1/d11$| }
148
+
149
+ ans = rio('d1').files[/1/]
150
+ exp = []
151
+ assert_equal(exp.sort,smap(ans).sort)
152
+
153
+ ans = rio('d1').dirs[/1/]
154
+ exp = []
155
+ assert_equal(exp.sort,smap(ans).sort)
156
+
157
+ ans = rio('d1').entries[/1/]
158
+ exp = ds.select { |el| el =~ /l[qd]1$/ }
159
+ assert_equal(exp.sort,smap(ans).sort)
160
+ end
161
+
162
+ end
163
+ end
164
+ end
165
+ def test_entary
166
+ ds = %w[d0/q1 d0/q2 d0/d1 d0/d2 d0/d1/q1 d0/d1/q2 d0/d1/d1 d0/d1/d1/q1 d0/d1/d1/q2]
167
+ rio('qp/entary').chdir do
168
+ begin
169
+ ans = []
170
+ exp = []
171
+ rio('d0').dirs.files.each { |ent| exp << ent }
172
+
173
+ ans.clear
174
+ rio('d0').entries.each { |ent| ans << ent }
175
+ assert_equal(smap(exp).sort,smap(ans).sort)
176
+
177
+ ans.clear
178
+ rio('d0').entries { |ent| ans << ent }
179
+ assert_equal(smap(exp).sort,smap(ans).sort)
180
+
181
+ ans = rio('d0').entries[]
182
+ assert_equal(smap(exp).sort,smap(ans).sort)
183
+
184
+ end
185
+
186
+ begin
187
+ ans = []
188
+ exp = []
189
+ rio('d0').dirs(/1/).files(/1/).each { |ent| exp << ent }
190
+
191
+ ans.clear
192
+ rio('d0').entries(/1/).each { |ent| ans << ent }
193
+ assert_equal(smap(exp).sort,smap(ans).sort)
194
+
195
+ ans.clear
196
+ rio('d0').entries(/1/) { |ent| ans << ent }
197
+ assert_equal(smap(exp).sort,smap(ans).sort)
198
+
199
+ ans = rio('d0').entries[/1/]
200
+ assert_equal(smap(exp).sort,smap(ans).sort)
201
+
202
+ ans = rio('d0')[/1/]
203
+ assert_equal(smap(exp).sort,smap(ans).sort)
204
+
205
+ end
206
+
207
+ begin
208
+ ans = []
209
+ exp = []
210
+ rio('d0').entries(/1/).each { |ent| exp << ent }
211
+ rio('d0').files.each { |ent| exp << ent unless exp.include?(ent)}
212
+
213
+ ans.clear
214
+ rio('d0').entries(/1/).files.each { |ent| ans << ent }
215
+ assert_equal(smap(exp).sort,smap(ans).sort)
216
+
217
+ ans = rio('d0').files.entries[/1/]
218
+ assert_equal(smap(exp).sort,smap(ans).sort)
219
+
220
+ ans = rio('d0').entries(/1/).files[]
221
+ assert_equal(smap(exp).sort,smap(ans).sort)
222
+
223
+ end
224
+
225
+ end
226
+ end
227
+ end