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,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_copy_from < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+
15
+ rio('d0').rmtree.mkpath
16
+ rio('d1').rmtree.mkpath
17
+ rio('d0/d2').rmtree.mkpath
18
+ make_lines_file(1,'d0/f0')
19
+ make_lines_file(2,'d0/f1')
20
+ make_lines_file(3,'d1/f2')
21
+ make_lines_file(4,'d1/f3')
22
+ make_lines_file(5,'d0/d2/f4')
23
+ make_lines_file(6,'d0/d2/f5')
24
+ end
25
+ def setup
26
+ super
27
+ self.class.once unless @@once
28
+
29
+ @d0 = rio('d0')
30
+ @d2 = rio('d0/d2')
31
+ end
32
+ def cptest(src)
33
+ dst = rio('dst').delete!.mkpath
34
+ dst < src.clone
35
+ assert_rios_equal(src.clone,rio(dst,src.filename),"rio copy")
36
+ end
37
+
38
+ def test_string_file
39
+ ario = rio('ous').delete!.puts!("If you are seeing this, rio < string is broken")
40
+ str = "HelloWorld\n"
41
+ ario < str
42
+ assert(ario.closed?,"Rio closes after copy-from string")
43
+ assert_equal(str,ario.contents)
44
+ ario << str
45
+ assert_equal(str+str,ario.contents)
46
+ end
47
+
48
+ def test_arrayofstrings_file
49
+ ario = rio('oua').delete!.puts!("If you are seeing this, rio < array is broken")
50
+ str = "HelloWorld\n"
51
+ ario < [str]
52
+ assert_equal(str,ario.contents)
53
+ ario << [str]
54
+ assert_equal(str+str,ario.contents)
55
+ end
56
+
57
+
58
+ def test_string_dir
59
+ ario = rio('oud').delete!.mkdir
60
+ str = "HelloWorld"
61
+ drio = rio(str).delete!
62
+ assert_raise(Errno::ENOENT) { ario < str }
63
+ drio.touch
64
+ ario < str
65
+ assert(rio(ario,str).file?)
66
+ end
67
+
68
+ def test_arrayofstrings_dir
69
+ $trace_states = false
70
+ ario = rio('oup').delete!.mkdir
71
+ str = "HelloWorld"
72
+ drio = rio(str).delete!
73
+ assert_raise(Errno::ENOENT) { ario < [str] }
74
+ drio.touch
75
+ ario < [str]
76
+ assert(rio(ario,str).file?)
77
+ $trace_states = false
78
+ end
79
+
80
+ def test_string_nonex
81
+ ario = rio('oun').delete!
82
+ str = "HelloWorld\n"
83
+ ario < str
84
+ assert(ario.file?,"Copy from string creates a file")
85
+ assert_equal(str,ario.contents)
86
+ end
87
+
88
+ def test_arrayofstrings_nonex
89
+ ario = rio('oun').delete!
90
+ str = "HelloWorld\n"
91
+ ario < [str]
92
+ assert(ario.file?,"Copy from array of strings creates a file")
93
+ assert_equal(str,ario.contents)
94
+ end
95
+
96
+ def test_simple_rio0
97
+ cptest(rio(@d0))
98
+ end
99
+ def test_simple_rio2
100
+ cptest(rio(@d2))
101
+ end
102
+ def test_files_rio
103
+ cptest(rio(@d0).files('*[04]'))
104
+ end
105
+ def test_files_ary
106
+ dst = rio('dst').delete!.mkpath
107
+ dst < @d0.files[]
108
+ @d0.files.each do |ent|
109
+ assert_rios_equal(ent,rio(dst,ent.filename),"files rio copy")
110
+ end
111
+ end
112
+ def test_io_file
113
+ ario = rio('out').delete!.touch
114
+ iof = rio('d0/f1')
115
+ exp = iof.readlines
116
+ ios = ::File.new(iof.to_s,'r')
117
+ #$trace_states = true
118
+ ario < ios
119
+ $trace_states = false
120
+ ios.close
121
+ ans = ario.readlines
122
+ assert_equal(exp,ans)
123
+ end
124
+ def test_simple_ary
125
+ dst = rio('dst').delete!.mkpath
126
+ dst < @d0[]
127
+ assert_rios_equal(@d0,dst,"simple rio copy")
128
+ end
129
+ end
@@ -0,0 +1,91 @@
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_copy_to < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+
15
+ rio('d0').rmtree.mkpath
16
+ rio('d1').rmtree.mkpath
17
+ rio('d0/d2').rmtree.mkpath
18
+ make_lines_file(1,'d0/f0')
19
+ make_lines_file(2,'d0/f1')
20
+ make_lines_file(3,'d1/f2')
21
+ make_lines_file(4,'d1/f3')
22
+ make_lines_file(5,'d0/d2/f4')
23
+ make_lines_file(6,'d0/d2/f5')
24
+ end
25
+ def setup
26
+ super
27
+ self.class.once unless @@once
28
+
29
+ @d0 = rio('d0')
30
+ @d1 = rio('d1')
31
+ @d2 = rio('d0/d2')
32
+ end
33
+ def test_string
34
+ ario = rio('d0/f1')
35
+ exp = ario.contents
36
+ ans = "If you are seeing this, rio > string is broken"
37
+ ario > ans
38
+ assert_equal(exp,ans)
39
+ ario >> ans
40
+ assert_equal(exp+exp,ans)
41
+ end
42
+ def test_string_dir
43
+ ario = rio(@d0)
44
+ name = "GoofyGoofyGoofy"
45
+ rio(name).delete!
46
+ ario > name
47
+ assert_rios_equal(ario,rio(name))
48
+ end
49
+ def test_io_file
50
+ ario = rio('d0/f1')
51
+ iof = rio('anio').delete!
52
+ exp = ario.readlines
53
+ ios = ::File.new(iof.to_s,'w')
54
+ #$trace_states = true
55
+ ario > ios
56
+ $trace_states = false
57
+ ios.close
58
+ ans = rio(iof).readlines
59
+ assert_equal(exp,ans)
60
+ end
61
+ def test_io_file_f
62
+ ario = rio('out').delete!.touch
63
+ iof = rio('d0/f1')
64
+ exp = iof.readlines
65
+ ios = ::File.new(iof.to_s,'r')
66
+ #$trace_states = true
67
+ ario < ios
68
+ $trace_states = false
69
+ ios.close
70
+ ans = ario.readlines
71
+ assert_equal(exp,ans)
72
+ end
73
+ def test_array_file
74
+ ario = rio('d0/f1')
75
+ exp = ario.readlines
76
+ ans = ["If you are seeing this, rio > array is broken"]
77
+ ario > ans
78
+ assert_equal(exp,ans)
79
+ ario >> ans
80
+ assert_equal(exp+exp,ans)
81
+ end
82
+ def test_array_dir
83
+ ario = rio(@d0)
84
+ exp = @d0.to_a
85
+ ans = ["If you are seeing this, rio > array is broken"]
86
+ ario > ans
87
+ assert_equal(exp,ans)
88
+ ario >> ans
89
+ assert_equal(exp+exp,ans)
90
+ end
91
+ end
data/test/tc/copy.rb ADDED
@@ -0,0 +1,74 @@
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
+ #require 'tc_myfirsttests'
11
+ #require 'tc_moretestsbyme'
12
+ #require 'ts_anothersetoftests'
13
+
14
+ class TC_RIO_copy < Test::Unit::TestCase
15
+ def test_copy
16
+ require 'rio'
17
+ datadir = rio('qp/test_copy').rmtree.mkpath
18
+ inline = "Source Stuff\n"
19
+ src = rio(datadir,'src')
20
+ src.print(inline)
21
+ src.close
22
+ src = rio(datadir,'src')
23
+ dst1 = rio(datadir,'dst1')
24
+ src > dst1
25
+ dst2 = rio(datadir,'dst2').mkdir
26
+ src > dst2
27
+ sline = rio(datadir,'src').readline
28
+ l1 = rio(datadir,'dst1').readline
29
+ l2 = rio(datadir,'dst2/src').readline
30
+ assert_equal(inline,sline,'a message in an assertion')
31
+ assert_equal(inline,l1)
32
+ assert_equal(inline,l2)
33
+
34
+ # copy directories
35
+ sd1 = rio(datadir,'dir1/sd1').rmtree.mkpath
36
+ txt = "Hello f1.txt"
37
+ sd1.join('f1.txt').puts(txt).close
38
+ oline = rio(datadir,'dir1/sd1/f1.txt').readline
39
+
40
+ # dir2 = rio(datadir,'dir2').rmtree.mkpath
41
+ # sd1.copy_to(dir2)
42
+ # $trace_states = true
43
+ # nline = rio(datadir,'dir2/sd1/f1.txt').readline
44
+ # assert_equal(oline,nline)
45
+
46
+ # dir2 = rio(datadir,'dir2').rmtree.mkpath
47
+ # sd1 > dir2
48
+ # $trace_states = false
49
+ # nline = rio(datadir,'dir2/sd1/f1.txt').readline
50
+ # assert_equal(oline,nline)
51
+
52
+ # dir2 = rio(datadir,'dir2').rmtree.mkpath
53
+ # dir2 < rio(datadir,'dir1/sd1')
54
+ # nline = rio(datadir,'dir2/sd1/f1.txt').readline
55
+ # assert_equal(oline,nline)
56
+
57
+ # dir2 = rio(datadir,'dir2').rmtree.mkpath
58
+ # sd1 > dir2.to_s
59
+ # nline = rio(datadir,'dir2/sd1/f1.txt').readline
60
+ # assert_equal(oline,nline)
61
+
62
+ dir2 = rio(datadir,'dir2').rmtree.mkpath
63
+ dir2 < rio(datadir,'dir1/sd1').to_s
64
+ nline = rio(datadir,'dir2/sd1/f1.txt').readline
65
+ assert_equal(oline,nline)
66
+
67
+ end
68
+ end
69
+ __END__
70
+ require 'test/unit/ui/console/testrunner'
71
+ #Test::Unit::UI::Console::TestRunner.run(TC_RIO,Test::Unit::UI::SILENT)
72
+ #Test::Unit::UI::Console::TestRunner.run(TC_RIO,Test::Unit::UI::PROGRESS_ONLY)
73
+ #Test::Unit::UI::Console::TestRunner.run(TC_RIO_copy,Test::Unit::UI::NORMAL)
74
+ Test::Unit::UI::Console::TestRunner.run(TC_RIO_copy,Test::Unit::UI::VERBOSE)
@@ -0,0 +1,188 @@
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_copyarray < Test::Unit::TestCase
11
+ @@once = false
12
+ include RIO_TestCase
13
+ def setup()
14
+ super
15
+ unless @@once
16
+ @@once = true
17
+ rio('a').rmtree.mkpath
18
+ rio('b').rmtree.mkpath
19
+ lines_file(3,'a/f0')
20
+ lines_file(2,'a/f1')
21
+ end
22
+ @d = []; @f = []; @l = [];
23
+ @d[0] = rio('a/')
24
+ @d[1] = rio('b/')
25
+ @f[0] = rio('a/f0')
26
+ @f[1] = rio('a/f1')
27
+ @l[0] = @f[0].readlines
28
+ @l[1] = @f[1].readlines
29
+ end
30
+ def test_copyto_dir
31
+ out = rio('out').delete!.mkpath
32
+ out < @f[0]
33
+ assert(out.directory?)
34
+ assert(@f[0].closed?)
35
+ of = rio(out,@f[0].basename)
36
+ assert_equal(@l[0],of[])
37
+ end
38
+ def test_copyto_dir_a
39
+ out = rio('out').delete!.mkpath
40
+ out < @f
41
+ assert(out.directory?)
42
+ assert(@f[0].closed?)
43
+ assert(@f[1].closed?)
44
+ of = []
45
+ of[0] = rio(out,@f[0].basename)
46
+ of[1] = rio(out,@f[1].basename)
47
+ assert(of[0].file?)
48
+ assert(of[1].file?)
49
+ assert_equal(@l[0],of[0].to_a)
50
+ assert_equal(@l[1],of[1].to_a)
51
+ end
52
+ def test_copyto_dir_files
53
+ out = rio('out').delete!.mkpath
54
+ out < @d[0].files[]
55
+ assert(out.directory?)
56
+ assert(@f[0].closed?)
57
+ assert(@f[1].closed?)
58
+ of = []
59
+ of[0] = rio(out,@f[0].basename)
60
+ of[1] = rio(out,@f[1].basename)
61
+ assert(of[0].file?)
62
+ assert(of[1].file?)
63
+ assert_equal(@l[0],of[0].to_a)
64
+ assert_equal(@l[1],of[1].to_a)
65
+ end
66
+ def test_copyto_dir_dir_array
67
+ # p 'test_copyto_dir'
68
+ @d[1] < @d[0]
69
+ @d[1] < @d[0].files[]
70
+ assert_equal(@l[0],rio(@d[1],@f[0].basename).lines[])
71
+ assert_equal(@l[1],rio(@d[1],@f[1].basename).lines[])
72
+ assert_equal(@l[0],rio(@d[1],@f[0]).lines[])
73
+ assert_equal(@l[1],rio(@d[1],@f[1]).lines[])
74
+
75
+ out = rio('out').delete!.mkpath
76
+ assert(out[].empty?)
77
+ out < @d[1].entries[]
78
+ assert_equal(@l[0],rio(out,@f[0].basename).lines[])
79
+ assert_equal(@l[1],rio(out,@f[1].basename).lines[])
80
+ assert_equal(@l[0],rio(out,@f[0]).lines[])
81
+ assert_equal(@l[1],rio(out,@f[1]).lines[])
82
+
83
+ out = rio('out').delete!.mkpath
84
+ assert(out[].empty?)
85
+ out < @d[1].to_a
86
+ assert_equal(@l[0],rio(out,@f[0].basename).lines[])
87
+ assert_equal(@l[1],rio(out,@f[1].basename).lines[])
88
+ assert_equal(@l[0],rio(out,@f[0]).lines[])
89
+ assert_equal(@l[1],rio(out,@f[1]).lines[])
90
+
91
+ out = rio('out').delete!.mkpath
92
+ assert(out[].empty?)
93
+ out < @d[1][]
94
+ assert_equal(@l[0],rio(out,@f[0].basename).lines[])
95
+ assert_equal(@l[1],rio(out,@f[1].basename).lines[])
96
+ assert_equal(@l[0],rio(out,@f[0]).lines[])
97
+ assert_equal(@l[1],rio(out,@f[1]).lines[])
98
+
99
+ out = rio('out').delete!.mkpath
100
+ assert(out[].empty?)
101
+ inputdir = rio(@d[1])
102
+ out < inputdir[]
103
+ assert_equal(@l[0],rio(out,@f[0].basename).lines[])
104
+ assert_equal(@l[1],rio(out,@f[1].basename).lines[])
105
+ assert_equal(@l[0],rio(out,@f[0]).lines[])
106
+ assert_equal(@l[1],rio(out,@f[1]).lines[])
107
+
108
+ out = rio('out').delete!.mkpath
109
+ assert(out[].empty?)
110
+ inputdir = rio(@d[1])
111
+ out < inputdir[].map{|el| el.to_s}
112
+ assert_equal(@l[0],rio(out,@f[0].basename).lines[])
113
+ assert_equal(@l[1],rio(out,@f[1].basename).lines[])
114
+ assert_equal(@l[0],rio(out,@f[0]).lines[])
115
+ assert_equal(@l[1],rio(out,@f[1]).lines[])
116
+
117
+ end
118
+ def test_copyto_nonex_array_lines
119
+ # p 'test_copyto_dir'
120
+ @d[1] < @d[0]
121
+ @d[1] < @d[0].files[]
122
+ assert_equal(@l[0],rio(@d[1],@f[0].basename).lines[])
123
+ assert_equal(@l[1],rio(@d[1],@f[1].basename).lines[])
124
+ assert_equal(@l[0],rio(@d[1],@f[0]).lines[])
125
+ assert_equal(@l[1],rio(@d[1],@f[1]).lines[])
126
+
127
+ out = rio('out').delete!
128
+ assert!(out.exist?)
129
+ out < rio(@d[1]).lines[1]
130
+ assert_equal([@l[0][1],@l[1][1]],out[])
131
+
132
+ out = rio('out').delete!
133
+ assert!(out.exist?)
134
+ out < rio(@d[1]).all.lines[1]
135
+ assert_equal([@l[0][1],@l[1][1]] * 2,out[])
136
+
137
+ end
138
+ def test_copyto_file_array_lines
139
+ # p 'test_copyto_dir'
140
+ # FIX THIS CRAP
141
+ @d[1] < @d[0]
142
+ @d[1] < @d[0].files[]
143
+ assert_equal(@l[0],rio(@d[1],@f[0].basename).lines[])
144
+ assert_equal(@l[1],rio(@d[1],@f[1].basename).lines[])
145
+ assert_equal(@l[0],rio(@d[1],@f[0]).lines[])
146
+ assert_equal(@l[1],rio(@d[1],@f[1]).lines[])
147
+
148
+ out = rio('out').delete!.touch
149
+ assert(out.exist?)
150
+ out < rio(@d[1]).lines[1]
151
+ assert_equal([@l[0][1],@l[1][1]],out[])
152
+
153
+ out = rio('out').delete!.touch
154
+ assert(out.exist?)
155
+ out < rio(@d[1]).all.lines[1]
156
+ assert_equal([@l[0][1],@l[1][1]] * 2,out[])
157
+
158
+ end
159
+ def test_copyto_nonex
160
+ # p 'test_copyto_nonex'
161
+ out = rio('out').delete!
162
+ out < @f[0]
163
+ # p @f[0]
164
+ assert(out.file?)
165
+ assert(out.closed?)
166
+ assert(@f[0].closed?)
167
+ assert_equal(@l[0],out[])
168
+ end
169
+ def test_copyto_nonex_array
170
+ out = rio('out').delete!
171
+ #$trace_states = true
172
+ out < @f
173
+ $trace_states = false
174
+ assert(out.directory?)
175
+ assert_equal(smap(@f.map { |el| el.rel(@d[0]) }),smap(out.map { |el| el.rel(out) }))
176
+ assert_equal(@l[0],rio(out,@f[0].filename).to_a)
177
+ assert_equal(@l[1],rio(out,@f[1].filename).to_a)
178
+ #assert_equal(@l[0]+@l[1],out[])
179
+ end
180
+ def test_copyto_nonex_file_lines
181
+ #p 'test_copyto_nonex_a'
182
+ out = rio('out').delete!
183
+ out < @d[0].files.lines
184
+ assert(out.file?)
185
+ assert(out.closed?)
186
+ assert_equal(@l[0]+@l[1],out[])
187
+ end
188
+ end