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,11 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ # reads from standard input and writes the number
4
+ # of lines to standard output
5
+ # used to test cmdpipe Rios
6
+
7
+ $:.unshift File.expand_path(File.dirname(__FILE__)+'/../../lib/')
8
+
9
+ require 'rio'
10
+ rio(?-).puts(rio(?-)[].size)
11
+
@@ -0,0 +1,13 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ # reads from standard input and writes the number
4
+ # of lines to standard output
5
+ # used to test cmdpipe Rios
6
+
7
+ $:.unshift File.expand_path(File.dirname(__FILE__)+'/../../lib/')
8
+ require 'rio'
9
+
10
+ search_re = ARGV.shift
11
+ print rio(?-).lines[/#{search_re}/]
12
+
13
+
@@ -0,0 +1,14 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ # reads from standard input and writes the number
4
+ # of lines to standard output
5
+ # used to test cmdpipe Rios
6
+
7
+ $:.unshift File.expand_path(File.dirname(__FILE__)+'/../../lib/')
8
+ require 'rio'
9
+
10
+ dir = ARGV.shift || '.'
11
+ rio(dir).chdir {
12
+ puts rio[]
13
+ }
14
+
data/test/ftp/all.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'test/unit'
2
+ require 'tc/testcase'
3
+
4
+ #require 'tc/yaml'
5
+ require 'ftp/anon_read'
6
+ require 'ftp/anon_write'
7
+ require 'ftp/anon_misc'
8
+ require 'ftp/anon_special'
9
+ require 'ftp/ftp2ftp'
@@ -0,0 +1,36 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp_copy_data < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+
16
+ def self.once
17
+ @@once = true
18
+ end
19
+ def setup
20
+ super
21
+ self.class.once unless @@once
22
+ FS_RWROOT.entries { |ent| ent.delete! }
23
+ end
24
+
25
+ def test_copy_string
26
+ exp = "a string\n"
27
+ ario = rio(FTP_RWROOT,'file0') < exp
28
+ assert_equal(exp,ario.contents)
29
+ end
30
+ def test_copy_array
31
+ exp = (0..1).map{|n| "Line #{n}\n"}
32
+ ario = rio(FTP_RWROOT,'file0') < exp
33
+ assert_equal(exp,ario[])
34
+ end
35
+ end
36
+
@@ -0,0 +1,124 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp_anon_misc < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+
16
+ ALLENTS = [FTP_RWROOT/'f0',d0=FTP_RWROOT/'d0',d0/'f1',d1=d0/'d1',d1/'f2']
17
+ def self.once
18
+ @@once = true
19
+ end
20
+ def setup
21
+ super
22
+ self.class.once unless @@once
23
+ ALLENTS.reverse.each do |ent|
24
+ if ent.filename =~ /f/
25
+ ent.rm
26
+ else
27
+ ent.rmdir
28
+ end
29
+ end
30
+ #FS_RWROOT.entries { |ent| ent.delete! }
31
+ end
32
+
33
+ def test_dir
34
+ ftproot = rio(FTPROOT)
35
+ ftproot.chdir
36
+ assert_equal('/',ftproot.getwd)
37
+ assert_equal(ftproot,ftproot.cwd)
38
+
39
+ rwdir = rio(FTP_RWROOT).chdir
40
+ assert_equal(FTP_RWROOT,rwdir.cwd)
41
+ end
42
+ def test_mkdir
43
+ rwdir = rio(FTP_RWROOT)
44
+ rio(rwdir,'dir1').rmdir
45
+ rio(rwdir,'dir0').rmdir
46
+ rwdir.chdir
47
+ assert_equal(FTP_RWROOT.to_s,rwdir.cwd.to_s)
48
+ rio(rwdir,'dir0').mkdir
49
+ assert_equal(smap([FTP_RWROOT/'dir0']),smap(FTP_RWROOT.entries[/^dir/]))
50
+ end
51
+ def test_rmdir
52
+ rwdir = rio(FTP_RWROOT)
53
+ rio(rwdir,'dir1').rmdir
54
+ rio(rwdir,'dir0').rmdir
55
+ rio(rwdir,'dir1').mkdir
56
+ assert_equal(smap([FTP_RWROOT/'dir1']),smap(FTP_RWROOT.entries[/^dir/]))
57
+ rio(rwdir,'dir1').rmdir
58
+ assert_equal(smap([]),smap(FTP_RWROOT.entries[/^dir/]))
59
+ end
60
+ def test_rm
61
+ rwdir = rio(FTP_RWROOT)
62
+ locfile = rio('locfile').touch
63
+ locfile > rwdir
64
+ remfile = rwdir/locfile
65
+ assert(remfile.file?)
66
+ remfile.delete
67
+ assert!(remfile.exist?)
68
+ end
69
+ def test_rename_file
70
+ rwdir = rio(FTP_RWROOT)
71
+ locfile = rio('locfile').touch
72
+ locfile > rwdir
73
+ remfile = rwdir/locfile
74
+ assert(remfile.file?)
75
+ remfile_new = rwdir/'remfile'
76
+ remfile.rename(remfile_new)
77
+ assert(remfile_new.file?)
78
+ assert!(remfile.exist?)
79
+ end
80
+ def test_rename_dir
81
+ rwdir = rio(FTP_RWROOT)
82
+ locdir = rio('locdir').mkdir
83
+ locdir > rwdir
84
+ remdir = rwdir/locdir
85
+ assert(remdir.dir?)
86
+ remdir_new = rwdir/'remdir'
87
+ remdir.rename(remdir_new)
88
+ assert(remdir_new.dir?)
89
+ assert!(remdir.exist?)
90
+ end
91
+ def test_test
92
+ file = FTP_ROROOT/'f0'
93
+ assert(file.file?)
94
+ assert(file.exist?)
95
+ assert!(file.dir?)
96
+ dir = FTP_ROROOT/'d0'
97
+ assert!(dir.file?)
98
+ assert(dir.exist?)
99
+ assert(dir.dir?)
100
+ nada = FTP_ROROOT/'nada'
101
+ assert!(nada.file?)
102
+ assert!(nada.exist?)
103
+ assert!(nada.dir?)
104
+ end
105
+ def test_size
106
+ file = FTP_ROROOT/'f0'
107
+ dir = FTP_ROROOT/'d0'
108
+ nada = FTP_ROROOT/'nada'
109
+ assert(file.size)
110
+ assert_raise(::Net::FTPPermError) { dir.size }
111
+ assert_raise(::Net::FTPPermError) { nada.size }
112
+ end
113
+
114
+ def test_mtime
115
+ file = FTP_ROROOT/'f0'
116
+ dir = FTP_ROROOT/'d0'
117
+ nada = FTP_ROROOT/'nada'
118
+ assert(file.mtime)
119
+ assert_raise(::Net::FTPPermError) { dir.mtime }
120
+ assert_raise(::Net::FTPPermError) { nada.mtime }
121
+ end
122
+
123
+ end
124
+
@@ -0,0 +1,105 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp_anon_read < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+ FTPRO = FTPROOT/'riotest/ro'
16
+ LOCENTS = [rio('f0'),d0=rio('d0'),d0/'f1',d1=d0/'d1',d1/'f2']
17
+ ALLENTS = [FTP_ROROOT/'f0',d0=FTP_ROROOT/'d0',d0/'f1',d1=d0/'d1',d1/'f2']
18
+
19
+ def self.once
20
+ @@once = true
21
+ end
22
+ def setup
23
+ super
24
+ self.class.once unless @@once
25
+ end
26
+ def test_read_file
27
+ f0 = FTP_ROROOT/'f0'
28
+ exp = ""
29
+ open(f0.to_s) { |fh| exp = fh.gets(nil) }
30
+ ans = rio(f0).contents
31
+ assert_equal(exp,ans)
32
+ end
33
+ def test_read_dir
34
+ ro = FTP_ROROOT.dup
35
+ exp = [ro/'f0',ro/'d0']
36
+ ans = rio(ro).to_a
37
+ assert_array_equal(exp,ans)
38
+ end
39
+ def test_read_dir_all
40
+ ro = FTP_ROROOT.dup
41
+ exp = ALLENTS
42
+ ans = rio(ro).all[]
43
+ assert_array_equal(exp,ans)
44
+ end
45
+ def test_read_dir_all_selected_by_name
46
+ ro = FTP_ROROOT.dup
47
+ exp = ALLENTS.select{ |f| f =~ /1$/ }
48
+ ans = ro.all['*1']
49
+ assert_array_equal(exp,ans)
50
+ end
51
+ def test_read_dir_all_files
52
+ ro = FTP_ROROOT.dup
53
+ exp = ALLENTS.select{ |f| f.file? }
54
+ ans = ro.all.files
55
+ assert_array_equal(exp,ans)
56
+ end
57
+ def test_read_dir_all_dirs
58
+ exp = ALLENTS.select{ |f| f.dir? }
59
+ ans = FTP_ROROOT.dup.all.dirs
60
+ assert_array_equal(exp,ans)
61
+ end
62
+ def test_cpfrom_file
63
+ rem = FTP_ROROOT/'f0'
64
+ #$trace_states = true
65
+ loc = rio('f0').delete
66
+ #$trace_states = false
67
+ loc < rem
68
+ #$trace_states = true
69
+ assert_equal(loc.contents,rem.contents)
70
+ #$trace_states = false
71
+ loc = rio('f0').delete
72
+ rem > loc
73
+ assert_equal(loc.contents,rem.contents)
74
+ end
75
+ def test_cpfrom_dir
76
+ rem = FTP_ROROOT/'d0'
77
+
78
+ loc = rio('d0').delete!
79
+ loc < rem
80
+ exp = LOCENTS.select{ |f| f =~ /d0/ } - [loc]
81
+ ans = loc.dup.all[]
82
+ assert_array_equal(exp,ans)
83
+
84
+ loc = rio('d0').delete!
85
+ rem > loc
86
+ exp = LOCENTS.select{ |f| f =~ /d0/ } - [loc]
87
+ ans = loc.dup.all[]
88
+ assert_array_equal(exp,ans)
89
+ end
90
+ def test_cpfrom_dir_select
91
+ rem = FTP_ROROOT/'d0'
92
+
93
+ loc = rio('d0').delete!
94
+ loc < rem.entries('*1')
95
+ exp = LOCENTS.select{ |f| f =~ /1$/ }
96
+ ans = loc.dup.all[]
97
+ assert_array_equal(exp,ans)
98
+
99
+ loc = rio('d0').delete!
100
+ rem.entries('*1') > loc
101
+ exp = LOCENTS.select{ |f| f =~ /1$/ }
102
+ ans = loc.dup.all[]
103
+ assert_array_equal(exp,ans)
104
+ end
105
+ end
@@ -0,0 +1,68 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp_anon_special < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+
16
+ def self.once
17
+ @@once = true
18
+ end
19
+ def setup
20
+ super
21
+ self.class.once unless @@once
22
+ FS_RWROOT.entries { |ent| ent.delete! }
23
+ end
24
+
25
+ def atest_mkpath
26
+ rwdir = rio(FTP_RWROOT)
27
+ tpath = rwdir/'d0'/'d1'/'d2'
28
+ tpath.mkpath
29
+ assert(tpath.dir?)
30
+ end
31
+ def test_rmtree
32
+ rwdir = rio(FTP_RWROOT)
33
+ tpath = rwdir/'d0'/'d1'/'d2'
34
+ tpath.mkpath
35
+ assert(tpath.dir?)
36
+ rwdir/'d0'/'f0' < "a file"
37
+ rwdir/'d0'/'d1'/'f1' < "a file"
38
+ d0 = rio(rwdir,'d0').rmtree
39
+ assert!(d0.exist?)
40
+ # tpath.mkpath
41
+ # assert(tpath.dir?)
42
+ # d0 = rio(rwdir,'d0').rmtree
43
+ # assert!(d0.exist?)
44
+ end
45
+ def atest_sel
46
+ rwdir = rio(FTP_RWROOT)
47
+ d0 = rwdir/'d0'
48
+ d1 = d0/'d1'
49
+ d2 = d1/'d2'
50
+ d2.mkpath
51
+ assert(d2.dir?)
52
+ f0 = rwdir/'d0'/'f0' < "a file"
53
+ f1 = rwdir/'d0'/'d1'/'f1' < "a file"
54
+
55
+ ans = rwdir.all['*0']
56
+ exp = [d0,f0]
57
+ assert_equal(smap(exp),smap(ans))
58
+
59
+ ans = rwdir.files[]
60
+ exp = [f1,f0]
61
+ assert_equal(smap(exp),smap(ans))
62
+
63
+ ans = rwdir.dirs[]
64
+ exp = [d0,d1,d2]
65
+ assert_equal(smap(exp),smap(ans))
66
+ end
67
+ end
68
+
@@ -0,0 +1,70 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp_anon_write < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+ #FTPROOT = rio('ftp://localhost/')
16
+ #FTPRW = FTPROOT/'riotest/rw'
17
+
18
+ SRCDIR = rio('src')
19
+ DSTDIR = rio('dst')
20
+ LOCENTS = [rio('f0'),d0=rio('d0'),d0/'f1',d1=d0/'d1',d1/'f2']
21
+ ALLENTS = [FTP_RWROOT/'f0',d0=FTP_RWROOT/'d0',d0/'f1',d1=d0/'d1',d1/'f2']
22
+ def self.once
23
+ @@once = true
24
+ dir = rio(SRCDIR).delete!
25
+ dir < rio(FS_ROROOT)
26
+ end
27
+ def setup
28
+ super
29
+ self.class.once unless @@once
30
+ ALLENTS.reverse.each do |ent|
31
+ if ent.filename =~ /f/
32
+ ent.rm
33
+ else
34
+ ent.rmdir
35
+ end
36
+ end
37
+ #FS_RWROOT.entries { |ent| ent.delete! }
38
+ end
39
+ def test_cp_file_to_dir
40
+ fname = 'f0'
41
+ loc = SRCDIR/fname
42
+ rem = FTP_RWROOT.dup
43
+ rem < loc
44
+ frem = rem/fname
45
+ assert_equal(loc.chomp[],frem.chomp[])
46
+ end
47
+ def test_cp_file_to_file
48
+ fname = 'f0'
49
+ loc = SRCDIR/fname
50
+ rem = FTP_RWROOT.dup/fname
51
+ rem < loc
52
+ assert_equal(loc.chomp[],rem.chomp[])
53
+ end
54
+ def test_cp_dir_left
55
+ dname = 'd0'
56
+ loc = SRCDIR/dname
57
+ rem = FTP_RWROOT.dup
58
+ rem < loc
59
+ assert_rios_equal(FS_RWROOT/dname,loc)
60
+ end
61
+ def test_cp_dir_right
62
+ dname = 'd0'
63
+ loc = SRCDIR/dname
64
+ rem = FTP_RWROOT.dup
65
+ loc > rem
66
+ assert_rios_equal(FS_RWROOT/dname,loc)
67
+ end
68
+
69
+
70
+ end