rio 0.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 (395) hide show
  1. data/COPYING +340 -0
  2. data/ChangeLog +755 -0
  3. data/README +65 -0
  4. data/RUNME.1st.rb +75 -0
  5. data/Rakefile +312 -0
  6. data/VERSION +1 -0
  7. data/doc/README_MSWIN32.txt +39 -0
  8. data/doc/RELEASE_NOTES +130 -0
  9. data/doc/generators/template/html/rio.rb +895 -0
  10. data/doc/rdoc/classes/Kernel.html +181 -0
  11. data/doc/rdoc/classes/Kernel.src/M000183.html +18 -0
  12. data/doc/rdoc/classes/RIO.html +508 -0
  13. data/doc/rdoc/classes/RIO.src/M000001.html +18 -0
  14. data/doc/rdoc/classes/RIO.src/M000002.html +18 -0
  15. data/doc/rdoc/classes/RIO.src/M000003.html +18 -0
  16. data/doc/rdoc/classes/RIO/Doc.html +138 -0
  17. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +1031 -0
  18. data/doc/rdoc/classes/RIO/Doc/INTRO.html +1116 -0
  19. data/doc/rdoc/classes/RIO/Doc/MISC.html +443 -0
  20. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +325 -0
  21. data/doc/rdoc/classes/RIO/Rio.html +6333 -0
  22. data/doc/rdoc/classes/RIO/Rio.src/M000004.html +18 -0
  23. data/doc/rdoc/classes/RIO/Rio.src/M000005.html +20 -0
  24. data/doc/rdoc/classes/RIO/Rio.src/M000006.html +27 -0
  25. data/doc/rdoc/classes/RIO/Rio.src/M000007.html +27 -0
  26. data/doc/rdoc/classes/RIO/Rio.src/M000008.html +16 -0
  27. data/doc/rdoc/classes/RIO/Rio.src/M000009.html +18 -0
  28. data/doc/rdoc/classes/RIO/Rio.src/M000010.html +20 -0
  29. data/doc/rdoc/classes/RIO/Rio.src/M000011.html +16 -0
  30. data/doc/rdoc/classes/RIO/Rio.src/M000012.html +16 -0
  31. data/doc/rdoc/classes/RIO/Rio.src/M000013.html +16 -0
  32. data/doc/rdoc/classes/RIO/Rio.src/M000014.html +16 -0
  33. data/doc/rdoc/classes/RIO/Rio.src/M000015.html +16 -0
  34. data/doc/rdoc/classes/RIO/Rio.src/M000016.html +16 -0
  35. data/doc/rdoc/classes/RIO/Rio.src/M000017.html +16 -0
  36. data/doc/rdoc/classes/RIO/Rio.src/M000018.html +16 -0
  37. data/doc/rdoc/classes/RIO/Rio.src/M000019.html +16 -0
  38. data/doc/rdoc/classes/RIO/Rio.src/M000020.html +16 -0
  39. data/doc/rdoc/classes/RIO/Rio.src/M000021.html +16 -0
  40. data/doc/rdoc/classes/RIO/Rio.src/M000022.html +16 -0
  41. data/doc/rdoc/classes/RIO/Rio.src/M000023.html +16 -0
  42. data/doc/rdoc/classes/RIO/Rio.src/M000024.html +16 -0
  43. data/doc/rdoc/classes/RIO/Rio.src/M000025.html +16 -0
  44. data/doc/rdoc/classes/RIO/Rio.src/M000026.html +16 -0
  45. data/doc/rdoc/classes/RIO/Rio.src/M000027.html +16 -0
  46. data/doc/rdoc/classes/RIO/Rio.src/M000028.html +16 -0
  47. data/doc/rdoc/classes/RIO/Rio.src/M000029.html +16 -0
  48. data/doc/rdoc/classes/RIO/Rio.src/M000030.html +16 -0
  49. data/doc/rdoc/classes/RIO/Rio.src/M000031.html +16 -0
  50. data/doc/rdoc/classes/RIO/Rio.src/M000032.html +16 -0
  51. data/doc/rdoc/classes/RIO/Rio.src/M000033.html +16 -0
  52. data/doc/rdoc/classes/RIO/Rio.src/M000034.html +16 -0
  53. data/doc/rdoc/classes/RIO/Rio.src/M000035.html +16 -0
  54. data/doc/rdoc/classes/RIO/Rio.src/M000036.html +16 -0
  55. data/doc/rdoc/classes/RIO/Rio.src/M000037.html +16 -0
  56. data/doc/rdoc/classes/RIO/Rio.src/M000038.html +16 -0
  57. data/doc/rdoc/classes/RIO/Rio.src/M000039.html +16 -0
  58. data/doc/rdoc/classes/RIO/Rio.src/M000040.html +16 -0
  59. data/doc/rdoc/classes/RIO/Rio.src/M000041.html +16 -0
  60. data/doc/rdoc/classes/RIO/Rio.src/M000042.html +16 -0
  61. data/doc/rdoc/classes/RIO/Rio.src/M000043.html +16 -0
  62. data/doc/rdoc/classes/RIO/Rio.src/M000044.html +16 -0
  63. data/doc/rdoc/classes/RIO/Rio.src/M000045.html +16 -0
  64. data/doc/rdoc/classes/RIO/Rio.src/M000046.html +16 -0
  65. data/doc/rdoc/classes/RIO/Rio.src/M000047.html +16 -0
  66. data/doc/rdoc/classes/RIO/Rio.src/M000048.html +16 -0
  67. data/doc/rdoc/classes/RIO/Rio.src/M000049.html +16 -0
  68. data/doc/rdoc/classes/RIO/Rio.src/M000050.html +16 -0
  69. data/doc/rdoc/classes/RIO/Rio.src/M000051.html +16 -0
  70. data/doc/rdoc/classes/RIO/Rio.src/M000052.html +16 -0
  71. data/doc/rdoc/classes/RIO/Rio.src/M000053.html +16 -0
  72. data/doc/rdoc/classes/RIO/Rio.src/M000054.html +16 -0
  73. data/doc/rdoc/classes/RIO/Rio.src/M000055.html +16 -0
  74. data/doc/rdoc/classes/RIO/Rio.src/M000056.html +16 -0
  75. data/doc/rdoc/classes/RIO/Rio.src/M000057.html +16 -0
  76. data/doc/rdoc/classes/RIO/Rio.src/M000058.html +16 -0
  77. data/doc/rdoc/classes/RIO/Rio.src/M000059.html +16 -0
  78. data/doc/rdoc/classes/RIO/Rio.src/M000060.html +16 -0
  79. data/doc/rdoc/classes/RIO/Rio.src/M000061.html +16 -0
  80. data/doc/rdoc/classes/RIO/Rio.src/M000062.html +16 -0
  81. data/doc/rdoc/classes/RIO/Rio.src/M000063.html +16 -0
  82. data/doc/rdoc/classes/RIO/Rio.src/M000064.html +16 -0
  83. data/doc/rdoc/classes/RIO/Rio.src/M000065.html +16 -0
  84. data/doc/rdoc/classes/RIO/Rio.src/M000066.html +16 -0
  85. data/doc/rdoc/classes/RIO/Rio.src/M000067.html +16 -0
  86. data/doc/rdoc/classes/RIO/Rio.src/M000068.html +16 -0
  87. data/doc/rdoc/classes/RIO/Rio.src/M000069.html +16 -0
  88. data/doc/rdoc/classes/RIO/Rio.src/M000070.html +16 -0
  89. data/doc/rdoc/classes/RIO/Rio.src/M000071.html +16 -0
  90. data/doc/rdoc/classes/RIO/Rio.src/M000072.html +16 -0
  91. data/doc/rdoc/classes/RIO/Rio.src/M000073.html +16 -0
  92. data/doc/rdoc/classes/RIO/Rio.src/M000074.html +16 -0
  93. data/doc/rdoc/classes/RIO/Rio.src/M000075.html +16 -0
  94. data/doc/rdoc/classes/RIO/Rio.src/M000076.html +16 -0
  95. data/doc/rdoc/classes/RIO/Rio.src/M000077.html +16 -0
  96. data/doc/rdoc/classes/RIO/Rio.src/M000078.html +16 -0
  97. data/doc/rdoc/classes/RIO/Rio.src/M000079.html +16 -0
  98. data/doc/rdoc/classes/RIO/Rio.src/M000080.html +16 -0
  99. data/doc/rdoc/classes/RIO/Rio.src/M000081.html +16 -0
  100. data/doc/rdoc/classes/RIO/Rio.src/M000082.html +16 -0
  101. data/doc/rdoc/classes/RIO/Rio.src/M000083.html +16 -0
  102. data/doc/rdoc/classes/RIO/Rio.src/M000084.html +16 -0
  103. data/doc/rdoc/classes/RIO/Rio.src/M000085.html +16 -0
  104. data/doc/rdoc/classes/RIO/Rio.src/M000086.html +16 -0
  105. data/doc/rdoc/classes/RIO/Rio.src/M000087.html +16 -0
  106. data/doc/rdoc/classes/RIO/Rio.src/M000088.html +16 -0
  107. data/doc/rdoc/classes/RIO/Rio.src/M000089.html +16 -0
  108. data/doc/rdoc/classes/RIO/Rio.src/M000090.html +16 -0
  109. data/doc/rdoc/classes/RIO/Rio.src/M000091.html +16 -0
  110. data/doc/rdoc/classes/RIO/Rio.src/M000092.html +16 -0
  111. data/doc/rdoc/classes/RIO/Rio.src/M000093.html +16 -0
  112. data/doc/rdoc/classes/RIO/Rio.src/M000094.html +16 -0
  113. data/doc/rdoc/classes/RIO/Rio.src/M000095.html +16 -0
  114. data/doc/rdoc/classes/RIO/Rio.src/M000096.html +16 -0
  115. data/doc/rdoc/classes/RIO/Rio.src/M000097.html +16 -0
  116. data/doc/rdoc/classes/RIO/Rio.src/M000098.html +16 -0
  117. data/doc/rdoc/classes/RIO/Rio.src/M000099.html +16 -0
  118. data/doc/rdoc/classes/RIO/Rio.src/M000100.html +16 -0
  119. data/doc/rdoc/classes/RIO/Rio.src/M000101.html +16 -0
  120. data/doc/rdoc/classes/RIO/Rio.src/M000102.html +16 -0
  121. data/doc/rdoc/classes/RIO/Rio.src/M000103.html +16 -0
  122. data/doc/rdoc/classes/RIO/Rio.src/M000104.html +16 -0
  123. data/doc/rdoc/classes/RIO/Rio.src/M000105.html +16 -0
  124. data/doc/rdoc/classes/RIO/Rio.src/M000106.html +16 -0
  125. data/doc/rdoc/classes/RIO/Rio.src/M000107.html +16 -0
  126. data/doc/rdoc/classes/RIO/Rio.src/M000108.html +16 -0
  127. data/doc/rdoc/classes/RIO/Rio.src/M000109.html +16 -0
  128. data/doc/rdoc/classes/RIO/Rio.src/M000110.html +16 -0
  129. data/doc/rdoc/classes/RIO/Rio.src/M000111.html +16 -0
  130. data/doc/rdoc/classes/RIO/Rio.src/M000112.html +16 -0
  131. data/doc/rdoc/classes/RIO/Rio.src/M000113.html +16 -0
  132. data/doc/rdoc/classes/RIO/Rio.src/M000114.html +16 -0
  133. data/doc/rdoc/classes/RIO/Rio.src/M000115.html +16 -0
  134. data/doc/rdoc/classes/RIO/Rio.src/M000116.html +16 -0
  135. data/doc/rdoc/classes/RIO/Rio.src/M000117.html +16 -0
  136. data/doc/rdoc/classes/RIO/Rio.src/M000118.html +16 -0
  137. data/doc/rdoc/classes/RIO/Rio.src/M000119.html +16 -0
  138. data/doc/rdoc/classes/RIO/Rio.src/M000120.html +16 -0
  139. data/doc/rdoc/classes/RIO/Rio.src/M000121.html +16 -0
  140. data/doc/rdoc/classes/RIO/Rio.src/M000122.html +16 -0
  141. data/doc/rdoc/classes/RIO/Rio.src/M000123.html +16 -0
  142. data/doc/rdoc/classes/RIO/Rio.src/M000124.html +16 -0
  143. data/doc/rdoc/classes/RIO/Rio.src/M000125.html +16 -0
  144. data/doc/rdoc/classes/RIO/Rio.src/M000126.html +16 -0
  145. data/doc/rdoc/classes/RIO/Rio.src/M000127.html +16 -0
  146. data/doc/rdoc/classes/RIO/Rio.src/M000128.html +16 -0
  147. data/doc/rdoc/classes/RIO/Rio.src/M000129.html +16 -0
  148. data/doc/rdoc/classes/RIO/Rio.src/M000130.html +16 -0
  149. data/doc/rdoc/classes/RIO/Rio.src/M000131.html +16 -0
  150. data/doc/rdoc/classes/RIO/Rio.src/M000132.html +16 -0
  151. data/doc/rdoc/classes/RIO/Rio.src/M000133.html +16 -0
  152. data/doc/rdoc/classes/RIO/Rio.src/M000134.html +16 -0
  153. data/doc/rdoc/classes/RIO/Rio.src/M000135.html +16 -0
  154. data/doc/rdoc/classes/RIO/Rio.src/M000136.html +16 -0
  155. data/doc/rdoc/classes/RIO/Rio.src/M000137.html +16 -0
  156. data/doc/rdoc/classes/RIO/Rio.src/M000138.html +16 -0
  157. data/doc/rdoc/classes/RIO/Rio.src/M000139.html +16 -0
  158. data/doc/rdoc/classes/RIO/Rio.src/M000140.html +16 -0
  159. data/doc/rdoc/classes/RIO/Rio.src/M000141.html +16 -0
  160. data/doc/rdoc/classes/RIO/Rio.src/M000142.html +16 -0
  161. data/doc/rdoc/classes/RIO/Rio.src/M000143.html +16 -0
  162. data/doc/rdoc/classes/RIO/Rio.src/M000144.html +16 -0
  163. data/doc/rdoc/classes/RIO/Rio.src/M000145.html +16 -0
  164. data/doc/rdoc/classes/RIO/Rio.src/M000146.html +16 -0
  165. data/doc/rdoc/classes/RIO/Rio.src/M000147.html +16 -0
  166. data/doc/rdoc/classes/RIO/Rio.src/M000148.html +16 -0
  167. data/doc/rdoc/classes/RIO/Rio.src/M000149.html +16 -0
  168. data/doc/rdoc/classes/RIO/Rio.src/M000150.html +16 -0
  169. data/doc/rdoc/classes/RIO/Rio.src/M000151.html +16 -0
  170. data/doc/rdoc/classes/RIO/Rio.src/M000152.html +16 -0
  171. data/doc/rdoc/classes/RIO/Rio.src/M000153.html +16 -0
  172. data/doc/rdoc/classes/RIO/Rio.src/M000154.html +16 -0
  173. data/doc/rdoc/classes/RIO/Rio.src/M000155.html +16 -0
  174. data/doc/rdoc/classes/RIO/Rio.src/M000156.html +16 -0
  175. data/doc/rdoc/classes/RIO/Rio.src/M000157.html +16 -0
  176. data/doc/rdoc/classes/RIO/Rio.src/M000158.html +16 -0
  177. data/doc/rdoc/classes/RIO/Rio.src/M000159.html +16 -0
  178. data/doc/rdoc/classes/RIO/Rio.src/M000160.html +16 -0
  179. data/doc/rdoc/classes/RIO/Rio.src/M000161.html +16 -0
  180. data/doc/rdoc/classes/RIO/Rio.src/M000162.html +16 -0
  181. data/doc/rdoc/classes/RIO/Rio.src/M000163.html +16 -0
  182. data/doc/rdoc/classes/RIO/Rio.src/M000164.html +16 -0
  183. data/doc/rdoc/classes/RIO/Rio.src/M000165.html +16 -0
  184. data/doc/rdoc/classes/RIO/Rio.src/M000166.html +16 -0
  185. data/doc/rdoc/classes/RIO/Rio.src/M000167.html +16 -0
  186. data/doc/rdoc/classes/RIO/Rio.src/M000168.html +16 -0
  187. data/doc/rdoc/classes/RIO/Rio.src/M000169.html +16 -0
  188. data/doc/rdoc/classes/RIO/Rio.src/M000170.html +16 -0
  189. data/doc/rdoc/classes/RIO/Rio.src/M000171.html +16 -0
  190. data/doc/rdoc/classes/RIO/Rio.src/M000172.html +16 -0
  191. data/doc/rdoc/classes/RIO/Rio.src/M000173.html +16 -0
  192. data/doc/rdoc/classes/RIO/Rio.src/M000174.html +16 -0
  193. data/doc/rdoc/classes/RIO/Rio.src/M000175.html +16 -0
  194. data/doc/rdoc/classes/RIO/Rio.src/M000176.html +16 -0
  195. data/doc/rdoc/classes/RIO/Rio.src/M000177.html +16 -0
  196. data/doc/rdoc/classes/RIO/Rio.src/M000178.html +16 -0
  197. data/doc/rdoc/classes/RIO/Rio.src/M000179.html +16 -0
  198. data/doc/rdoc/classes/RIO/Rio.src/M000180.html +16 -0
  199. data/doc/rdoc/classes/RIO/Rio.src/M000181.html +16 -0
  200. data/doc/rdoc/classes/RIO/Rio.src/M000182.html +16 -0
  201. data/doc/rdoc/created.rid +1 -0
  202. data/doc/rdoc/files/README.html +215 -0
  203. data/doc/rdoc/files/lib/rio/constructor_rb.html +142 -0
  204. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +135 -0
  205. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +135 -0
  206. data/doc/rdoc/files/lib/rio/doc/MISC_rb.html +135 -0
  207. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +135 -0
  208. data/doc/rdoc/files/lib/rio/if/basic_rb.html +135 -0
  209. data/doc/rdoc/files/lib/rio/if/dir_rb.html +135 -0
  210. data/doc/rdoc/files/lib/rio/if/file_rb.html +135 -0
  211. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +135 -0
  212. data/doc/rdoc/files/lib/rio/if/grande_rb.html +135 -0
  213. data/doc/rdoc/files/lib/rio/if/internal_rb.html +135 -0
  214. data/doc/rdoc/files/lib/rio/if/methods_rb.html +135 -0
  215. data/doc/rdoc/files/lib/rio/if/path_rb.html +135 -0
  216. data/doc/rdoc/files/lib/rio/if/stream_rb.html +135 -0
  217. data/doc/rdoc/files/lib/rio/if/test_rb.html +135 -0
  218. data/doc/rdoc/files/lib/rio/kernel_rb.html +142 -0
  219. data/doc/rdoc/files/lib/rio_rb.html +153 -0
  220. data/doc/rdoc/fr_class_index.html +34 -0
  221. data/doc/rdoc/fr_file_index.html +44 -0
  222. data/doc/rdoc/fr_method_index.html +210 -0
  223. data/doc/rdoc/index.html +24 -0
  224. data/doc/rdoc/rdoc-style.css +384 -0
  225. data/doc/rfc1738.txt +1403 -0
  226. data/doc/rfc959.txt +3933 -0
  227. data/ex/colx.rb +6 -0
  228. data/ex/findinruby +19 -0
  229. data/ex/findruby +11 -0
  230. data/ex/prompt.rb +25 -0
  231. data/ex/rgb.txt.gz +0 -0
  232. data/ex/riocat +35 -0
  233. data/ex/riogunzip +31 -0
  234. data/ex/riogzip +24 -0
  235. data/ex/tolf +11 -0
  236. data/lib/rio.rb +163 -0
  237. data/lib/rio/abstract_method.rb +57 -0
  238. data/lib/rio/argv.rb +57 -0
  239. data/lib/rio/arrayio.rb +199 -0
  240. data/lib/rio/arycopy.rb +44 -0
  241. data/lib/rio/assert.rb +115 -0
  242. data/lib/rio/base.rb +59 -0
  243. data/lib/rio/constructor.rb +183 -0
  244. data/lib/rio/context.rb +117 -0
  245. data/lib/rio/context/chomp.rb +53 -0
  246. data/lib/rio/context/closeoneof.rb +50 -0
  247. data/lib/rio/context/cxx.rb +67 -0
  248. data/lib/rio/context/dir.rb +92 -0
  249. data/lib/rio/context/gzip.rb +51 -0
  250. data/lib/rio/context/methods.rb +196 -0
  251. data/lib/rio/context/stream.rb +170 -0
  252. data/lib/rio/cp.rb +305 -0
  253. data/lib/rio/cxdir.rb +79 -0
  254. data/lib/rio/dir.rb +145 -0
  255. data/lib/rio/doc.rb +45 -0
  256. data/lib/rio/doc/HOWTO.rb +691 -0
  257. data/lib/rio/doc/INTRO.rb +579 -0
  258. data/lib/rio/doc/MISC.rb +257 -0
  259. data/lib/rio/doc/SYNOPSIS.rb +170 -0
  260. data/lib/rio/entrysel.rb +162 -0
  261. data/lib/rio/exception.rb +42 -0
  262. data/lib/rio/exception/copy.rb +98 -0
  263. data/lib/rio/exception/open.rb +62 -0
  264. data/lib/rio/exception/state.rb +74 -0
  265. data/lib/rio/ext.rb +62 -0
  266. data/lib/rio/ext/csv.rb +261 -0
  267. data/lib/rio/factory.rb +236 -0
  268. data/lib/rio/file.rb +77 -0
  269. data/lib/rio/filter/chomp.rb +61 -0
  270. data/lib/rio/filter/closeoneof.rb +103 -0
  271. data/lib/rio/filter/gzip.rb +58 -0
  272. data/lib/rio/ftp.rb +275 -0
  273. data/lib/rio/ftp/conn.rb +167 -0
  274. data/lib/rio/ftp/ioh.rb +88 -0
  275. data/lib/rio/grande.rb +126 -0
  276. data/lib/rio/handle.rb +101 -0
  277. data/lib/rio/if.rb +53 -0
  278. data/lib/rio/if/basic.rb +64 -0
  279. data/lib/rio/if/dir.rb +362 -0
  280. data/lib/rio/if/file.rb +57 -0
  281. data/lib/rio/if/fileordir.rb +247 -0
  282. data/lib/rio/if/grande.rb +510 -0
  283. data/lib/rio/if/internal.rb +53 -0
  284. data/lib/rio/if/methods.rb +612 -0
  285. data/lib/rio/if/path.rb +413 -0
  286. data/lib/rio/if/stream.rb +599 -0
  287. data/lib/rio/if/test.rb +219 -0
  288. data/lib/rio/impl/path.rb +82 -0
  289. data/lib/rio/ioh.rb +137 -0
  290. data/lib/rio/iomode.rb +96 -0
  291. data/lib/rio/kernel.rb +47 -0
  292. data/lib/rio/local.rb +63 -0
  293. data/lib/rio/match.rb +51 -0
  294. data/lib/rio/matchrecord.rb +254 -0
  295. data/lib/rio/open3.rb +69 -0
  296. data/lib/rio/ops/create.rb +78 -0
  297. data/lib/rio/ops/dir.rb +302 -0
  298. data/lib/rio/ops/either.rb +117 -0
  299. data/lib/rio/ops/file.rb +94 -0
  300. data/lib/rio/ops/path.rb +292 -0
  301. data/lib/rio/ops/stream.rb +84 -0
  302. data/lib/rio/ops/stream/input.rb +237 -0
  303. data/lib/rio/ops/stream/output.rb +96 -0
  304. data/lib/rio/ops/stream/read.rb +84 -0
  305. data/lib/rio/ops/stream/write.rb +58 -0
  306. data/lib/rio/ops/symlink.rb +70 -0
  307. data/lib/rio/path.rb +117 -0
  308. data/lib/rio/path/reset.rb +70 -0
  309. data/lib/rio/record.rb +59 -0
  310. data/lib/rio/rectype.rb +86 -0
  311. data/lib/rio/rl/base.rb +147 -0
  312. data/lib/rio/rl/builder.rb +166 -0
  313. data/lib/rio/rl/ioi.rb +66 -0
  314. data/lib/rio/rl/path.rb +141 -0
  315. data/lib/rio/rl/uri.rb +118 -0
  316. data/lib/rio/scheme/aryio.rb +89 -0
  317. data/lib/rio/scheme/cmdio.rb +74 -0
  318. data/lib/rio/scheme/fd.rb +65 -0
  319. data/lib/rio/scheme/ftp.rb +73 -0
  320. data/lib/rio/scheme/http.rb +81 -0
  321. data/lib/rio/scheme/path.rb +100 -0
  322. data/lib/rio/scheme/stderr.rb +56 -0
  323. data/lib/rio/scheme/stdio.rb +71 -0
  324. data/lib/rio/scheme/strio.rb +82 -0
  325. data/lib/rio/scheme/sysio.rb +61 -0
  326. data/lib/rio/scheme/tcp.rb +74 -0
  327. data/lib/rio/scheme/tempfile.rb +104 -0
  328. data/lib/rio/state.rb +209 -0
  329. data/lib/rio/state/error.rb +73 -0
  330. data/lib/rio/stream.rb +181 -0
  331. data/lib/rio/stream/base.rb +50 -0
  332. data/lib/rio/stream/duplex.rb +76 -0
  333. data/lib/rio/stream/open.rb +203 -0
  334. data/lib/rio/symantics.rb +46 -0
  335. data/lib/rio/to_rio.rb +57 -0
  336. data/lib/rio/uri/file.rb +145 -0
  337. data/lib/rio/version.rb +52 -0
  338. data/setup.rb +1331 -0
  339. data/test/1.rb +14 -0
  340. data/test/mswin32.rb +28 -0
  341. data/test/once.rb +7 -0
  342. data/test/runtests.rb +12 -0
  343. data/test/runtests_gem.rb +15 -0
  344. data/test/tc/abs.rb +349 -0
  345. data/test/tc/all.rb +42 -0
  346. data/test/tc/cd1.rb +116 -0
  347. data/test/tc/clearsel.rb +69 -0
  348. data/test/tc/closeoncopy.rb +91 -0
  349. data/test/tc/closeoneof.rb +194 -0
  350. data/test/tc/copy-from.rb +183 -0
  351. data/test/tc/copy-to.rb +94 -0
  352. data/test/tc/copy.rb +72 -0
  353. data/test/tc/copyarray.rb +191 -0
  354. data/test/tc/copydest.rb +50 -0
  355. data/test/tc/copydir.rb +192 -0
  356. data/test/tc/copydirlines.rb +124 -0
  357. data/test/tc/copylines.rb +40 -0
  358. data/test/tc/copynonex.rb +121 -0
  359. data/test/tc/create.rb +104 -0
  360. data/test/tc/csv.rb +229 -0
  361. data/test/tc/dir.rb +79 -0
  362. data/test/tc/dirautoclose.rb +70 -0
  363. data/test/tc/dirent.rb +180 -0
  364. data/test/tc/dirss.rb +84 -0
  365. data/test/tc/each.rb +111 -0
  366. data/test/tc/each_break.rb +241 -0
  367. data/test/tc/edf.rb +82 -0
  368. data/test/tc/entary.rb +230 -0
  369. data/test/tc/eq.rb +101 -0
  370. data/test/tc/expand_path.rb +94 -0
  371. data/test/tc/ext.rb +115 -0
  372. data/test/tc/fileno.rb +95 -0
  373. data/test/tc/getrec.rb +140 -0
  374. data/test/tc/lineno.rb +197 -0
  375. data/test/tc/lines.rb +66 -0
  376. data/test/tc/methods.rb +185 -0
  377. data/test/tc/misc.rb +473 -0
  378. data/test/tc/nolines.rb +205 -0
  379. data/test/tc/noqae.rb +873 -0
  380. data/test/tc/once.rb +6 -0
  381. data/test/tc/overload.rb +137 -0
  382. data/test/tc/pa.rb +159 -0
  383. data/test/tc/pathop.rb +63 -0
  384. data/test/tc/paths.rb +147 -0
  385. data/test/tc/qae.rb +494 -0
  386. data/test/tc/qae_riovar.rb +500 -0
  387. data/test/tc/records.rb +69 -0
  388. data/test/tc/rename.rb +224 -0
  389. data/test/tc/rename_assign.rb +48 -0
  390. data/test/tc/sub.rb +49 -0
  391. data/test/tc/symlink.rb +177 -0
  392. data/test/tc/symlink0.rb +298 -0
  393. data/test/tc/symlink1.rb +115 -0
  394. data/test/tc/testcase.rb +152 -0
  395. metadata +461 -0
@@ -0,0 +1,50 @@
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
+
9
+ class TC_RIO_copydest < Test::Unit::TestCase
10
+ def test_copydest
11
+ qp = RIO.rio('qp')
12
+ rio(qp,'test_copydest').rmtree.mkpath.chdir {
13
+ expary = ["Line0\n","Line1\n","Line2\n"]
14
+ line = expary.to_s
15
+ src = rio('src').print!(line)
16
+
17
+ ary = Array.new
18
+ $trace_states = false
19
+ rio('src') > ary
20
+ $trace_states = false
21
+ assert_equal(expary,ary)
22
+
23
+ rio('src') > ary
24
+ assert_equal(expary,ary)
25
+ rio('src') >> ary
26
+ assert_equal(expary+expary,ary)
27
+
28
+ a0 = ["Zippy0\n"]
29
+ rio('dst0') < a0
30
+ assert_equal(a0,rio('dst0').to_a)
31
+
32
+ a1 = ["Zippy1\n"]
33
+ rio('dst0') << a1
34
+ assert_equal(a0+a1,rio('dst0').to_a)
35
+ a2 = a0 + a1 + [ rio('src') ]
36
+ rio('dst2') < a2
37
+ assert_equal(a0+a1+expary,rio('dst2').to_a)
38
+ a3 = [ "Lastline\n" ]
39
+ rio('dst2') << a3
40
+ assert_equal(a0+a1+expary+a3,rio('dst2').to_a)
41
+
42
+ lA,lT,lZ = "lineA\n","ALineOfText\n","lineZ\n"
43
+
44
+ rio('src1').puts!(lT)
45
+ rio('src1') < [lT]
46
+ assert_equal([lT],rio('src1').to_a)
47
+
48
+ }
49
+ end
50
+ end
@@ -0,0 +1,192 @@
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
+ require 'extensions/symbol'
11
+ require 'tc/testcase'
12
+
13
+ class TC_copydir < Test::RIO::TestCase
14
+ @@once = false
15
+ def self.once
16
+ @@once = true
17
+
18
+ rio('d0').rmtree.mkpath
19
+ rio('d0/d2').rmtree.mkpath
20
+ rio('d0/d3').rmtree.mkpath
21
+ rio('d0/d4').rmtree.mkpath
22
+ rio('d0/d2/d3').rmtree.mkpath
23
+ rio('d0/d2/d5').rmtree.mkpath
24
+ rio('d0/d3/d6').rmtree.mkpath
25
+ rio('d1').rmtree.mkpath
26
+ rio('d1/d8').rmtree.mkpath
27
+ make_lines_file(1,'d1/f0')
28
+ make_lines_file(2,'d1/f1')
29
+ make_lines_file(1,'d0/f0')
30
+ make_lines_file(2,'d0/f1')
31
+ make_lines_file(1,'d0/d2/f0')
32
+ make_lines_file(2,'d0/d2/f1')
33
+ make_lines_file(1,'d0/d3/d6/f0')
34
+ make_lines_file(2,'d0/d3/d6/f1')
35
+ end
36
+ def setup
37
+ super
38
+ self.class.once unless @@once
39
+
40
+ @d0 = rio('d0/')
41
+ @d1 = rio('d1/')
42
+ @d2 = rio('d0/d2/')
43
+ @f0 = rio('d0/f0')
44
+ @f1 = rio('d0/f1')
45
+ @f2 = rio('d0/d2/f2')
46
+ @f3 = rio('d0/d2/f3')
47
+ end
48
+ def assert_dirs_equal(exp,d,msg="")
49
+ exp.each do |ent|
50
+ ds = rio(d,ent.filename)
51
+ assert(ds.exist?,"entry '#{ds}' exists")
52
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
53
+ case
54
+ when ent.file?
55
+ assert(ds.file?,"entry is a file")
56
+ assert_equal(ent[],ds[],"file has same contents")
57
+ when ent.dir?
58
+ assert_dirs_equal(ent,ds,"subdirectories are the same")
59
+ end
60
+ end
61
+ end
62
+ def assert_rios_equal(exp,ans,msg="")
63
+ case
64
+ when exp.file?
65
+ assert(ans.file?,"entry is a file")
66
+ assert_equal(exp.readlines,ans.readlines,"file has same contents")
67
+ when exp.dir?
68
+ assert(ans.dir?,"entry is a dir")
69
+ assert_dirs_equal(exp,ans,"directories are the same")
70
+ end
71
+ end
72
+ def assert_skel_equal(exp,d,msg="")
73
+ exp.each do |ent|
74
+ next unless ent.dir?
75
+ ds = rio(d,ent.filename)
76
+ assert(ds.exist?,"entry '#{ds}' exists")
77
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
78
+ case
79
+ when ent.dir?
80
+ assert_skel_equal(ent,ds,"subdirectories are the same")
81
+ end
82
+ end
83
+ end
84
+ def test_basic
85
+ dst = rio('dst').delete!.mkpath
86
+ dst < @d0
87
+
88
+ assert_dirs_equal(@d0,rio(dst,@d0.filename),"basic copy")
89
+ end
90
+ def test_dirs_only
91
+ dst = rio('dirs_only').delete!.mkpath
92
+ dst < @d0.dirs
93
+ assert_skel_equal(@d0,rio(dst,@d0.filename),"copy dirs only")
94
+ end
95
+ def test_files_only
96
+ dst = rio('files_only').delete!.mkpath
97
+ src = rio(@d0).files
98
+ dst < src
99
+ exp = @d0.files[]
100
+ dd = rio(dst,@d0.filename)
101
+ ans = dd.map { |e| e.rel(dst) }
102
+ assert_array_equal(exp,ans,"copy files only")
103
+ end
104
+ def test_files_dirs
105
+ dst = rio('files_dirs').delete!.mkpath
106
+ src = rio(@d0).files.dirs
107
+ dst < src
108
+ assert_dirs_equal(@d0,rio(dst,@d0.filename),"copy files dirs")
109
+ end
110
+ def test_dirs_somefiles
111
+ dst = rio('dirs_somefiles').delete!
112
+ src = rio(@d0).files(/0/).dirs
113
+ #$trace_states = true
114
+ src > dst
115
+ $trace_states = false
116
+ ans = dst.all.map { |e| e.rel(dst) }
117
+ exp = rio(@d0).all.map { |e| e.rel(@d0) }.select { |e| e !~ /f[^0]$/ }
118
+ assert_array_equal(exp,ans,"dirs somefiles")
119
+
120
+ end
121
+ def test_somedirs_somefiles
122
+ dst = rio('somedirs_somefiles').delete!
123
+ src = rio(@d0).files(/0/).dirs('d[36]')
124
+ src > dst
125
+ ans = smap(dst.all[].map { |e| e.rel(dst) })
126
+ exp = %w[d3 d3/d6 d3/d6/f0 f0]
127
+ assert_array_equal(exp,ans)
128
+ end
129
+ def test_nonex_ri
130
+ dst = rio('nonex_ri').delete!
131
+ assert!(dst.exist?)
132
+ src = rio(@d1)
133
+ src > dst
134
+ assert_dirs_equal(src,dst,"nonex ri")
135
+ end
136
+ def test_nonex_le
137
+ dst = rio('nonex_le').delete!
138
+ assert!(dst.exist?)
139
+ src = rio(@d1)
140
+ dst < src
141
+ assert_dirs_equal(src,dst,"nonex le")
142
+ end
143
+ def test_files_a_dir
144
+ dst = rio('files_a_di').delete!.mkpath
145
+ dst < @d0.files[]
146
+ assert_array_equal(%w[f0 f1],dst.map { |el| el.rel(dst) })
147
+ end
148
+ def test_files_a_file
149
+ dst = rio('files_a_fi').delete!.touch
150
+ dst < @d0.files[]
151
+ exp = %w[f0 f1].inject([]) { |lines,f| lines + rio(@d0,f).readlines }
152
+ assert_equal(exp,dst.readlines)
153
+ end
154
+ def test_files_a_nonex
155
+ dst = rio('files_a_nonex').delete!
156
+ src = @d0[]
157
+ assert_kind_of(::Array,src)
158
+ dst < src
159
+ assert(dst.dir?)
160
+ assert_equal(smap(src.map { |el| el.rel(@d0) }),smap(dst.map { |el| el.rel(dst) }))
161
+ src.each do |el|
162
+ assert_rios_equal(el,rio(dst,el.filename))
163
+ end
164
+ assert_rios_equal(@d0,dst)
165
+ end
166
+ def test_files_a_nonex_files
167
+ dst = rio('files_a_nonex_files').delete!
168
+ src = @d0.files[]
169
+ assert_kind_of(::Array,src)
170
+ dst < src
171
+ assert(dst.dir?)
172
+ assert_equal(smap(src.map { |el| el.rel(@d0) }),smap(dst.map { |el| el.rel(dst) }))
173
+ src.each do |el|
174
+ assert_rios_equal(el,rio(dst,el.filename))
175
+ end
176
+ # assert_dirs_equal(src,dst,"array of files to nonex")
177
+ end
178
+ def test_files_a_nonex_lines
179
+ dst = rio('files_a_nonex_l').delete!
180
+ src = @d0.lines[]
181
+ assert_kind_of(::Array,src)
182
+ dst < src
183
+ assert(dst.file?)
184
+ assert_equal(src,dst.readlines)
185
+ end
186
+ def test_tofile
187
+ dst = rio('dst').delete!.touch
188
+ assert_raise(Errno::ENOTDIR) {
189
+ @d0 > dst
190
+ }
191
+ end
192
+ end
@@ -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 'test/unit'
9
+ require 'test/unit/testsuite'
10
+ require 'extensions/symbol'
11
+ require 'tc/testcase'
12
+
13
+ class TC_copydirlines < Test::RIO::TestCase
14
+ @@once = false
15
+ def self.once
16
+ @@once = true
17
+ rio('d0').rmtree.mkpath
18
+ rio('d0/d2').rmtree.mkpath
19
+ rio('d0/d3').rmtree.mkpath
20
+ rio('d0/d4').rmtree.mkpath
21
+ rio('d0/d2/d3').rmtree.mkpath
22
+ rio('d0/d2/d5').rmtree.mkpath
23
+ rio('d0/d3/d6').rmtree.mkpath
24
+ rio('d1').rmtree.mkpath
25
+ rio('d1/d8').rmtree.mkpath
26
+ make_lines_file(3,'d1/f0')
27
+ make_lines_file(2,'d1/f1')
28
+ make_lines_file(3,'d0/f0')
29
+ make_lines_file(2,'d0/f1')
30
+ make_lines_file(3,'d0/d2/f0')
31
+ make_lines_file(2,'d0/d2/f1')
32
+ make_lines_file(3,'d0/d3/d6/f0')
33
+ make_lines_file(2,'d0/d3/d6/f1')
34
+ end
35
+ def setup
36
+ super
37
+ self.class.once unless @@once
38
+
39
+ @d0 = rio('d0')
40
+ @d1 = rio('d1')
41
+ @d2 = rio('d0/d2')
42
+ @f0 = rio('d0/f0')
43
+ @f1 = rio('d0/f1')
44
+ @f2 = rio('d0/d2/f2')
45
+ @f3 = rio('d0/d2/f3')
46
+ end
47
+ def assert_dirs_equal(exp,d,msg="")
48
+ exp.each do |ent|
49
+ ds = rio(d,ent.filename)
50
+ assert(ds.exist?,"entry '#{ds}' exists")
51
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
52
+ case
53
+ when ent.file?
54
+ assert(ds.file?,"entry is a file")
55
+ assert_equal(ent[],ds[],"file has same contents")
56
+ when ent.dir?
57
+ assert_dirs_equal(ent,ds,"subdirectories are the same")
58
+ end
59
+ end
60
+ end
61
+ def assert_rios_equal(exp,ans,msg="")
62
+ case
63
+ when exp.file?
64
+ assert(ans.file?,"entry is a file")
65
+ assert_equal(exp.readlines,ans.readlines,"file has same contents")
66
+ when exp.dir?
67
+ assert(ans.dir?,"entry is a dir")
68
+ assert_dirs_equal(exp,ans,"directories are the same")
69
+ end
70
+ end
71
+ def assert_skel_equal(exp,d,msg="")
72
+ exp.each do |ent|
73
+ next unless ent.dir?
74
+ ds = rio(d,ent.filename)
75
+ assert(ds.exist?,"entry '#{ds}' exists")
76
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
77
+ case
78
+ when ent.dir?
79
+ assert_skel_equal(ent,ds,"subdirectories are the same")
80
+ end
81
+ end
82
+ end
83
+ def ztest_basic
84
+ dst = rio('dst').delete!.mkpath
85
+ dst < @d0
86
+
87
+ assert_dirs_equal(@d0,rio(dst,@d0.filename),"basic copy")
88
+ end
89
+ def test_files
90
+ dst = rio('files').delete!.mkdir
91
+ src = rio(@d1).files.lines(0)
92
+ #$trace_states = true
93
+ src > dst
94
+ src.dup.files.each do |file|
95
+ assert_equal(file[0],rio(dst,file).to_a)
96
+ end
97
+ end
98
+ def test_files2
99
+ dst = rio('files').delete!.mkdir
100
+ src = rio(@d1).files.lines(0)
101
+ #$trace_states = true
102
+ dst < src
103
+ src.dup.files.each do |file|
104
+ assert_equal(file[0],rio(dst,file).to_a)
105
+ end
106
+ end
107
+ def test_array
108
+ src = rio(@d1).files.lines
109
+ exp = src.to_a
110
+ dst = []
111
+ src > dst
112
+ assert_equal(exp,dst)
113
+ src >> dst
114
+ assert_equal(exp+exp,dst)
115
+ end
116
+ def ztest_somedirs_somefiles
117
+ dst = rio('somedirs_somefiles').delete!
118
+ src = rio(@d0).files(/0/).dirs('d[36]')
119
+ src > dst
120
+ ans = smap(dst.all[].map { |e| e.rel(dst) })
121
+ exp = %w[d3 d3/d6 d3/d6/f0 f0]
122
+ assert_array_equal(exp,ans)
123
+ end
124
+ end
@@ -0,0 +1,40 @@
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
+ class TC_RIO_copylines < Test::Unit::TestCase
9
+ def test_copylines
10
+ qp = RIO.rio('qp')
11
+ rio(qp,'test_copylines').rmtree.mkpath.chdir {
12
+ str = 'peter piper picked a peck of pickled peppers'
13
+ words = str.split(/\s+/)
14
+ line = words.map { |w| w+"\n" }.join('')
15
+ src = rio('src').print!(line)
16
+
17
+ #$trace_states = true
18
+ out = rio('$')
19
+ rio('src').chomp.lines(/^[^p]/) > out
20
+ out.close
21
+ $trace_states = false
22
+ assert_equal('aof',out.contents)
23
+
24
+ out < rio('src').lines(/^[^p]/)
25
+ assert_equal("a\nof\n",out.contents)
26
+
27
+ aout = Array.new
28
+ rio('src').chomp.lines(1,4..6) > aout
29
+ assert_equal(%w{piper peck of pickled},aout)
30
+
31
+ out < rio('src').chomp.lines(0..1)
32
+ assert_equal("peterpiper",out.contents)
33
+
34
+ rio('src').chomp.lines(0..1) > aout
35
+ assert_equal(%w{peter piper},aout)
36
+ rio('src').chomp.lines(0..1) >> aout
37
+ assert_equal(%w{peter piper peter piper},aout)
38
+ }
39
+ end
40
+ end
@@ -0,0 +1,121 @@
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
+ require 'extensions/symbol'
11
+ require 'tc/testcase'
12
+
13
+ class TC_copynonex < Test::RIO::TestCase
14
+ @@once = false
15
+ def self.once
16
+ @@once = true
17
+ rio('d0').rmtree.mkpath
18
+ rio('d0/d2').rmtree.mkpath
19
+ rio('d0/d3').rmtree.mkpath
20
+ rio('d0/d4').rmtree.mkpath
21
+ rio('d0/d2/d3').rmtree.mkpath
22
+ rio('d0/d2/d5').rmtree.mkpath
23
+ rio('d0/d3/d6').rmtree.mkpath
24
+ rio('d1').rmtree.mkpath
25
+ rio('d1/d8').rmtree.mkpath
26
+ make_lines_file(1,'d1/f0')
27
+ make_lines_file(2,'d1/f1')
28
+ make_lines_file(1,'d0/f0')
29
+ make_lines_file(2,'d0/f1')
30
+ make_lines_file(1,'d0/d2/f0')
31
+ make_lines_file(2,'d0/d2/f1')
32
+ make_lines_file(1,'d0/d3/d6/f0')
33
+ make_lines_file(2,'d0/d3/d6/f1')
34
+ end
35
+ def setup
36
+ super
37
+ self.class.once unless @@once
38
+
39
+ @d0 = rio('d0')
40
+ @d1 = rio('d1')
41
+ @d2 = rio('d0/d2')
42
+ @f0 = rio('d0/f0')
43
+ @f1 = rio('d0/f1')
44
+ @f2 = rio('d0/d2/f2')
45
+ @f3 = rio('d0/d2/f3')
46
+ end
47
+ def assert_dirs_equal(exp,d,msg="")
48
+ exp.each do |ent|
49
+ ds = rio(d,ent.filename)
50
+ assert(ds.exist?,"entry '#{ds}' exists")
51
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
52
+ case
53
+ when ent.file?
54
+ assert(ds.file?,"entry is a file")
55
+ assert_equal(ent[],ds[],"file has same contents")
56
+ when ent.dir?
57
+ assert_dirs_equal(ent,ds,"subdirectories are the same")
58
+ end
59
+ end
60
+ end
61
+ def assert_rios_equal(exp,ans,msg="")
62
+ case
63
+ when exp.file?
64
+ assert(ans.file?,"entry is a file")
65
+ assert_equal(exp.readlines,ans.readlines,"file has same contents")
66
+ when exp.dir?
67
+ assert(ans.dir?,"entry is a dir")
68
+ assert_dirs_equal(exp,ans,"directories are the same")
69
+ end
70
+ end
71
+ def assert_skel_equal(exp,d,msg="")
72
+ exp.each do |ent|
73
+ next unless ent.dir?
74
+ ds = rio(d,ent.filename)
75
+ assert(ds.exist?,"entry '#{ds}' exists")
76
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
77
+ case
78
+ when ent.dir?
79
+ assert_skel_equal(ent,ds,"subdirectories are the same")
80
+ end
81
+ end
82
+ end
83
+ def test_nonex_right_sel
84
+ dst = rio('nonex_ri_sel').delete!
85
+ assert!(dst.exist?)
86
+ src = rio(@d1)
87
+ src.files(/0/) > dst
88
+ p src,dst
89
+ # p smap(dst[])
90
+ # p smap(src.lines[0])
91
+ #assert_dirs_equal(src,dst,"nonex ri")
92
+ end
93
+ def test_nonex_right_dir
94
+ dst = rio('nonex_ri').delete!
95
+ assert!(dst.exist?)
96
+ src = rio(@d1)
97
+ src > dst
98
+ assert_dirs_equal(src,dst,"nonex ri")
99
+ end
100
+ def test_nonex_left_dir
101
+ dst = rio('nonex_le').delete!
102
+ assert!(dst.exist?)
103
+ src = rio(@d1)
104
+ dst < src
105
+ assert_dirs_equal(src,dst,"nonex le")
106
+ end
107
+ def test_nonex_right_file
108
+ dst = rio('nonex_ri_f').delete!
109
+ assert!(dst.exist?)
110
+ src = rio(@f1)
111
+ src > dst
112
+ assert_rios_equal(src,dst,"nonex ri")
113
+ end
114
+ def test_nonex_left_file
115
+ dst = rio('nonex_le_f').delete!
116
+ assert!(dst.exist?)
117
+ src = rio(@f1)
118
+ dst < src
119
+ assert_rios_equal(src,dst,"nonex le")
120
+ end
121
+ end