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,176 @@
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_symlink < 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 symlink/) 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 setup
23
+ #$trace_states = true
24
+ @cwd = ::Dir.getwd
25
+ tdir.mkpath.chdir
26
+ end
27
+ def teardown
28
+ ::Dir.chdir @cwd
29
+ end
30
+ def check_link(lnk,dst)
31
+ assert(lnk.symlink?, "symlink?")
32
+ assert_equal('link',lnk.ftype)
33
+ assert_equal(dst.exist?,lnk.exist?)
34
+ if dst.exist?
35
+ assert_equal(dst.contents,lnk.contents)
36
+ end
37
+ end
38
+ def compare_links(exp,ans)
39
+ assert_equal(exp.exist?,ans.exist?)
40
+ assert_equal(exp.symlink?,ans.symlink?)
41
+ assert_equal(exp.ftype,ans.ftype)
42
+ assert_equal(exp.readlink.to_s,ans.readlink.to_s)
43
+ end
44
+ def test_File_symlink_nopath_exist
45
+ dir = rio('d0').delete!.mkpath
46
+ mkafile(dir,'f0')
47
+ dir.chdir
48
+ #$trace_states = true
49
+
50
+ file = rio('f0')
51
+ lruby = rio('lruby')
52
+ assert(file.exist?)
53
+
54
+ ::File.symlink(file.to_s,lruby.delete.to_s)
55
+ check_link(lruby,file)
56
+
57
+ lrio = rio('lrio')
58
+ file.symlink( lrio.delete )
59
+ check_link(lrio,file)
60
+
61
+ compare_links(lruby,lrio)
62
+ rio('..').chdir
63
+ end
64
+ def test_File_symlink_nopath_noexist
65
+ dir = rio('d1').delete!.mkpath
66
+ dir.chdir
67
+
68
+ #$trace_states = true
69
+
70
+ file = rio('f1')
71
+ assert_equal(false,file.exist?)
72
+
73
+ lruby = rio('lruby')
74
+ ::File.symlink(file.to_s,lruby.delete.to_s)
75
+ check_link(lruby,file)
76
+
77
+ lrio = rio('lrio')
78
+ file.symlink( lrio.delete )
79
+ check_link(lrio,file)
80
+
81
+ compare_links(lruby,lrio)
82
+
83
+ rio('..').chdir
84
+ end
85
+ def test_xmp
86
+ rio('xmpdir').delete!.mkpath
87
+ rio('xmpdir/afile').touch
88
+ ::File.symlink('xmpdir/afile','xmpdir/alink1') # creates 'xmpdir/alink1 => xmpdir/afile'
89
+ assert_equal(false,::File.exist?('xmpdir/alink1'))
90
+ rio('xmpdir/afile').symlink('xmpdir/alink2') # creates 'xmpdir/alink2 => afile'
91
+ assert(::File.exist?('xmpdir/alink2'))
92
+ end
93
+ def test_relative_paths
94
+ dir = rio('adir').delete!.mkpath
95
+ afile1 = mkafile(dir,'afile1')
96
+
97
+ alink1 = rio('adir/alink1').delete
98
+ afile1.symlink(alink1)
99
+ check_link(alink1,afile1)
100
+
101
+ alink2 = rio('alink2').delete
102
+ afile1.symlink(alink2)
103
+ check_link(alink2,afile1)
104
+
105
+ afile2 = mkafile('afile2')
106
+ alink3 = rio('adir/alink3').delete
107
+ afile2.symlink(alink3)
108
+ check_link(alink3,afile2)
109
+
110
+ alink4 = rio('alink4').delete
111
+ afile2.symlink(alink4)
112
+ check_link(alink4,afile2)
113
+
114
+ end
115
+ def test_symlink_path_exist
116
+ dir = rio('d2').delete!.mkpath
117
+ mkafile(dir,'f2')
118
+ #$trace_states = true
119
+
120
+ file = rio(dir,'f2')
121
+ assert(file.exist?)
122
+
123
+ lrio = rio(dir,'lrio')
124
+ file.symlink( lrio.delete )
125
+ check_link(lrio,file)
126
+
127
+ end
128
+ def test_symlink_path_noexist
129
+ dir = rio('d3').delete!.mkpath
130
+ #$trace_states = true
131
+
132
+ file = rio(dir,'f3')
133
+ assert_equal(false,file.exist?,"file does not exist")
134
+
135
+ lrio = rio(dir,'lrio')
136
+ file.symlink( lrio.delete )
137
+ check_link(lrio,file)
138
+
139
+ end
140
+ def test_destdir
141
+ rio('destdir').delete!.mkpath.chdir
142
+
143
+ file = mkafile('f0')
144
+ dir = rio('d0').delete!.mkpath
145
+ #$trace_states = true
146
+
147
+ file.symlink(dir)
148
+ expl = rio(dir,file)
149
+ check_link(expl,file)
150
+
151
+ rio('..').chdir
152
+ end
153
+ def test_eexist
154
+ rio('eexist').delete!.mkpath.chdir
155
+
156
+ file = mkafile('f0')
157
+ dir = rio('d0').delete!.mkpath
158
+ expl = rio(dir,file).touch
159
+
160
+ #$trace_states = true
161
+ assert_raise(Errno::EEXIST) {
162
+ file.symlink(dir)
163
+ }
164
+ expl = rio('l0').touch
165
+ assert_raise(Errno::EEXIST) {
166
+ file.symlink('l0')
167
+ }
168
+ expl = rio('l1').delete
169
+ file.symlink(expl)
170
+ assert_raise(Errno::EEXIST) {
171
+ file.symlink(expl)
172
+ }
173
+
174
+ rio('..').chdir
175
+ end
176
+ end
@@ -0,0 +1,348 @@
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_symlink0 < 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 symlink0/) 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 setup
23
+ #$trace_states = true
24
+ @cwd = ::Dir.getwd
25
+ tdir.mkpath.chdir
26
+ end
27
+ def teardown
28
+ ::Dir.chdir @cwd
29
+ end
30
+ def check_link(lnk,dst)
31
+ assert(lnk.symlink?, "symlink?")
32
+ assert_equal('link',lnk.ftype)
33
+ assert_equal(dst.exist?,lnk.exist?)
34
+ if dst.exist?
35
+ assert_equal(dst.contents,lnk.contents)
36
+ end
37
+ end
38
+ def compare_links(exp,ans)
39
+ assert_equal(exp.exist?,ans.exist?)
40
+ assert_equal(exp.symlink?,ans.symlink?)
41
+ assert_equal(exp.ftype,ans.ftype)
42
+ assert_equal(exp.readlink.to_s,ans.readlink.to_s)
43
+ end
44
+ def test_delete_file
45
+ rio('delete_file').delete!.mkpath.chdir
46
+
47
+ file = mkafile('f0')
48
+ link = rio('l0')
49
+ file.symlink(link)
50
+
51
+ assert(file.exist?)
52
+ assert(link.exist?)
53
+ assert(link.symlink?)
54
+
55
+ link.delete
56
+ assert(file.file?,"deleted link, file still exists")
57
+ assert!(link.exist?,"link is deleted")
58
+ assert!(link.symlink?,"link is gone")
59
+
60
+ file.symlink(link)
61
+ assert(file.file?,"file exists")
62
+ assert(link.exist?,"link exists")
63
+ assert(link.symlink?,"link is a symlink")
64
+
65
+ file.delete
66
+ assert!(file.exist?,"file deleted")
67
+ assert!(link.exist?,"file deleted, link.exist? returns false")
68
+ assert(link.symlink?,"file deleted, link is a symlink")
69
+
70
+ link.touch
71
+ assert(file.exist?,"link.touch creates a file")
72
+ assert(file.file?,"link.touch creates a file")
73
+
74
+ file.unlink
75
+ assert!(file.exist?,"file.unlink file deleted")
76
+ assert!(link.exist?,"file.unlink file deleted, link.exist? returns false")
77
+ assert(link.symlink?,"file unlink file deleted, link is a symlink")
78
+
79
+ link.touch
80
+ assert(file.exist?,"link.touch creates a file")
81
+ assert(file.file?,"link.touch creates a file")
82
+
83
+ file.delete
84
+ assert!(file.exist?,"file deleted")
85
+ assert!(link.exist?,"file deleted, link.exist? returns false")
86
+ assert(link.symlink?,"file deleted, link is a symlink")
87
+
88
+ # link.mkdir
89
+ # assert(file.exist?,"link.mkdir creates a directory")
90
+ # assert(file.directory?,"link.mkdir creates a directory")
91
+
92
+
93
+ rio('..').chdir
94
+ end
95
+ def test_delete_dir
96
+ rio('delete_dir').delete!.mkpath.chdir
97
+
98
+ dir = rio('d0').mkdir
99
+ link = rio('l0')
100
+ dir.symlink(link)
101
+
102
+ assert(dir.exist?)
103
+ assert(link.exist?)
104
+ assert(link.symlink?)
105
+
106
+ dir.delete
107
+ assert!(dir.exist?,"dir deleted")
108
+ assert!(link.exist?,"dir deleted, link.exist? returns false")
109
+ assert(link.symlink?,"dir deleted, link is a symlink")
110
+
111
+ link.mkdir
112
+ assert(dir.exist?,"link.mkdir creates a directory")
113
+ assert(dir.directory?,"link.mkdir creates a directory")
114
+ assert(link.exist?,"link.mkdir, link.exist? returns false")
115
+ assert(link.symlink?,"link.mkdir, link is a symlink")
116
+
117
+ # link.delete
118
+ link.delete!
119
+ assert!(link.exist?,"link.delete! deletes link")
120
+ assert(dir.exist?,"link.delete! deletes link, directory still exists")
121
+ assert(dir.directory?,"link.delete! deletes link, not directory")
122
+ #File.delete(link.to_s)
123
+ dir.symlink(link)
124
+ link.delete
125
+ assert!(link.exist?,"link.delete deletes link")
126
+ assert(dir.exist?,"link.delete deletes link, directory still exists")
127
+ assert(dir.directory?,"link.delete deletes link, not directory")
128
+
129
+ dir.symlink(link)
130
+ link.unlink
131
+ assert!(link.exist?,"link.unlink deletes link")
132
+ assert(dir.exist?,"link.unlink deletes link, directory still exists")
133
+ assert(dir.directory?,"link.unlink deletes link, not directory")
134
+
135
+ rio('..').chdir
136
+ end
137
+ def test_create
138
+ rio('create').delete!.mkpath.chdir
139
+
140
+ file = mkafile('f0')
141
+ link = rio('l0')
142
+ file.symlink(link)
143
+
144
+ assert(file.exist?)
145
+ assert(link.exist?)
146
+ assert(link.symlink?)
147
+ file.delete
148
+ assert!(file.exist?)
149
+ assert!(link.exist?)
150
+ assert(link.symlink?)
151
+
152
+ begin
153
+ afile = rio('fruby')
154
+ alink = rio('alink')
155
+
156
+ ::FileUtils.touch(afile.to_s)
157
+ assert(afile.exist?)
158
+ assert(afile.file?)
159
+
160
+ ::File.symlink(afile.to_s,alink.delete.to_s)
161
+ check_link(alink,afile)
162
+ assert(afile.file?)
163
+ assert(alink.exist?)
164
+ assert(alink.symlink?)
165
+ assert(alink.file?)
166
+
167
+ ::File.delete(afile.to_s)
168
+ assert!(afile.exist?)
169
+ assert!(alink.exist?)
170
+ assert!(alink.file?)
171
+ assert(alink.symlink?)
172
+
173
+ ::FileUtils.touch(alink)
174
+ assert(afile.file?,"created a file via a symlink")
175
+ assert(alink.exist?,"created a file via a symlink, link exists")
176
+ assert(alink.symlink?,"created a file via a symlink, link is a symlink")
177
+ assert(alink.file?,"created a file via a symlink, link is a file")
178
+
179
+ ::File.delete(afile.to_s)
180
+ assert!(afile.exist?)
181
+ assert(alink.symlink?)
182
+
183
+ rlink = ::File.readlink(alink.to_s)
184
+ assert_equal(afile.to_s,rlink.to_s)
185
+
186
+ ::FileUtils.touch(rlink)
187
+ assert(afile.file?,"created a file via a readlink/symlink")
188
+ assert(alink.exist?,"created a file via a readlink/symlink, link exists")
189
+ assert(alink.symlink?,"created a file via a readlink/symlink, link is a symlink")
190
+ assert(alink.file?,"created a file via a readlink/symlink, link is a file")
191
+ end
192
+
193
+ begin
194
+ adir = rio('druby')
195
+ alink = rio('ldruby')
196
+
197
+ ::Dir.mkdir(adir.to_s)
198
+ assert(adir.exist?)
199
+ assert(adir.dir?)
200
+
201
+ ::File.symlink(adir.to_s,alink.delete.to_s)
202
+
203
+ begin
204
+ assert(adir.dir?)
205
+ assert(alink.exist?)
206
+ assert(alink.symlink?)
207
+ assert(alink.dir?)
208
+
209
+ assert_raise(Errno::EEXIST) {
210
+ ::Dir.mkdir(alink.to_s)
211
+ }
212
+ end
213
+
214
+ ::Dir.delete(adir.to_s)
215
+
216
+ begin
217
+ assert!(adir.exist?)
218
+ assert!(alink.exist?)
219
+ assert!(alink.dir?)
220
+ assert(alink.symlink?)
221
+
222
+ assert_raise(Errno::EEXIST) {
223
+ ::Dir.mkdir(alink.to_s)
224
+ }
225
+ end
226
+
227
+ begin
228
+ assert!(adir.exist?)
229
+ assert!(alink.exist?)
230
+ assert!(alink.dir?)
231
+ assert(alink.symlink?)
232
+
233
+ rlink = ::File.readlink(alink.to_s)
234
+ assert_equal(adir.to_s,rlink.to_s)
235
+
236
+ ::Dir.mkdir(rlink)
237
+ assert(adir.dir?,"created a dir via a readlink/symlink")
238
+ assert(alink.exist?,"created a dir via a readlink/symlink, link exists")
239
+ assert(alink.symlink?,"created a dir via a readlink/symlink, link is a symlink")
240
+ assert(alink.dir?,"created a dir via a readlink/symlink, link is a file")
241
+ end
242
+
243
+ end
244
+
245
+ begin
246
+ adir = rio('drio')
247
+ alink = rio('ldrio')
248
+
249
+ adir.mkdir
250
+ assert(adir.exist?)
251
+ assert(adir.dir?)
252
+
253
+ adir.symlink(alink.delete)
254
+
255
+ begin
256
+ assert(adir.dir?)
257
+ assert(alink.exist?)
258
+ assert(alink.symlink?)
259
+ assert(alink.dir?)
260
+
261
+ assert_nothing_raised(Errno::EEXIST) {
262
+ adir.mkdir
263
+ }
264
+ end
265
+
266
+ adir.delete
267
+
268
+ begin
269
+ assert!(adir.exist?)
270
+ assert!(alink.exist?)
271
+ assert!(alink.dir?)
272
+ assert(alink.symlink?)
273
+ #$trace_states = true
274
+ assert_nothing_raised(Errno::EEXIST) {
275
+ alink.mkdir
276
+ }
277
+ #$trace_states = false
278
+ assert(adir.dir?,"created a dir via a symlink")
279
+ assert(alink.exist?,"created a dir via a symlink, link exists")
280
+ assert(alink.symlink?,"created a dir via a symlink, link is a symlink")
281
+ assert(alink.dir?,"created a dir via a symlink, link is a directory")
282
+
283
+ end
284
+
285
+ adir.delete
286
+
287
+ begin
288
+ assert!(adir.exist?)
289
+ assert!(alink.exist?)
290
+ assert!(alink.dir?)
291
+ assert(alink.symlink?)
292
+
293
+ rlink = alink.readlink
294
+ assert_equal(adir.to_s,rlink.to_s)
295
+
296
+ rlink.mkdir
297
+ assert(adir.dir?,"created a dir via a readlink/symlink")
298
+ assert(alink.exist?,"created a dir via a readlink/symlink, link exists")
299
+ assert(alink.symlink?,"created a dir via a readlink/symlink, link is a symlink")
300
+ assert(alink.dir?,"created a dir via a readlink/symlink, link is a directory")
301
+ end
302
+
303
+ end
304
+
305
+ begin
306
+ afile = rio('frio')
307
+ alink = rio('lrio')
308
+
309
+ afile.touch
310
+ assert(afile.exist?)
311
+ assert(afile.file?)
312
+
313
+ afile.symlink(alink.delete)
314
+ check_link(alink,afile)
315
+ assert(afile.file?)
316
+ assert(alink.exist?)
317
+ assert(alink.symlink?)
318
+ assert(alink.file?)
319
+
320
+ afile.delete
321
+ assert!(afile.exist?)
322
+ assert!(alink.exist?)
323
+ assert!(alink.file?)
324
+ assert(alink.symlink?)
325
+
326
+ alink.touch
327
+ assert(afile.file?,"created a file via a symlink")
328
+ assert(alink.exist?,"created a file via a symlink, link exists")
329
+ assert(alink.symlink?,"created a file via a symlink, link is a symlink")
330
+ assert(alink.file?,"created a file via a symlink, link is a file")
331
+
332
+ afile.delete
333
+ assert!(afile.exist?)
334
+ assert(alink.symlink?)
335
+
336
+ rlink = alink.readlink
337
+ assert_equal(afile.to_s,rlink.to_s)
338
+
339
+ rlink.touch
340
+ assert(afile.file?,"created a file via a readlink/symlink")
341
+ assert(alink.exist?,"created a file via a readlink/symlink, link exists")
342
+ assert(alink.symlink?,"created a file via a readlink/symlink, link is a symlink")
343
+ assert(alink.file?,"created a file via a readlink/symlink, link is a file")
344
+ end
345
+
346
+ rio('..').chdir
347
+ end
348
+ end