vcs 0.2.148 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/AUTHORS +6 -0
  2. data/NEWS +9 -0
  3. data/README +82 -0
  4. data/Rakefile +7 -72
  5. data/SPEC.dyn.yml +10 -0
  6. data/SPEC.gemspec +14 -0
  7. data/SPEC.yml +39 -0
  8. data/bin/vcs +18 -16
  9. data/lib/vcs/changelog.rb +164 -0
  10. data/lib/vcs/conflict.rb +21 -0
  11. data/{src → lib/vcs}/cvs.rb +1 -1
  12. data/{src → lib/vcs}/diff.rb +2 -2
  13. data/lib/vcs/diffstat.rb +28 -0
  14. data/lib/vcs/edit.rb +16 -0
  15. data/{src → lib/vcs}/last_changed_date.rb +3 -5
  16. data/{src → lib/vcs}/mail.rb +4 -4
  17. data/lib/vcs/message.rb +79 -0
  18. data/{src → lib/vcs}/mycommit.rb +15 -15
  19. data/{src → lib/vcs}/news.rb +6 -6
  20. data/{src → lib/vcs}/prcs.rb +1 -1
  21. data/{src → lib/vcs}/revision.rb +3 -4
  22. data/lib/vcs/script.rb +19 -0
  23. data/{src → lib/vcs}/status.rb +1 -1
  24. data/{src → lib/vcs}/svn.rb +3 -5
  25. data/lib/vcs/url.rb +16 -0
  26. data/lib/vcs/vcs.rb +279 -0
  27. metadata +52 -150
  28. data/TODO +0 -19
  29. data/doc/jamis.rb +0 -564
  30. data/ruby_ex/abstract.rb +0 -254
  31. data/ruby_ex/abstract_node.rb +0 -85
  32. data/ruby_ex/algorithms/simulated_annealing.rb +0 -140
  33. data/ruby_ex/array_each_pair.rb +0 -18
  34. data/ruby_ex/ask.rb +0 -101
  35. data/ruby_ex/attributed_class.rb +0 -302
  36. data/ruby_ex/cache.rb +0 -373
  37. data/ruby_ex/checkout.rb +0 -12
  38. data/ruby_ex/choose.rb +0 -271
  39. data/ruby_ex/commands.rb +0 -18
  40. data/ruby_ex/commands/command.rb +0 -401
  41. data/ruby_ex/commands/datas.rb +0 -16
  42. data/ruby_ex/commands/datas/data.rb +0 -33
  43. data/ruby_ex/commands/datas/factory.rb +0 -66
  44. data/ruby_ex/commands/factory.rb +0 -66
  45. data/ruby_ex/commands/helpers.rb +0 -67
  46. data/ruby_ex/commands/pipe.rb +0 -64
  47. data/ruby_ex/commands/runners.rb +0 -17
  48. data/ruby_ex/commands/runners/exec.rb +0 -49
  49. data/ruby_ex/commands/runners/fork.rb +0 -97
  50. data/ruby_ex/commands/runners/runner.rb +0 -107
  51. data/ruby_ex/commands/seq.rb +0 -27
  52. data/ruby_ex/config_file.rb +0 -96
  53. data/ruby_ex/const_regexp.rb +0 -59
  54. data/ruby_ex/daemon.rb +0 -134
  55. data/ruby_ex/diff.rb +0 -667
  56. data/ruby_ex/dlogger.rb +0 -62
  57. data/ruby_ex/drb/dispatcher.rb +0 -252
  58. data/ruby_ex/drb/dispatcher_server_test.rb +0 -29
  59. data/ruby_ex/drb/drb_observable.rb +0 -97
  60. data/ruby_ex/drb/drb_observable_pool.rb +0 -27
  61. data/ruby_ex/drb/drb_service.rb +0 -43
  62. data/ruby_ex/drb/drb_undumped_attributes.rb +0 -55
  63. data/ruby_ex/drb/drb_undumped_indexed_object.rb +0 -54
  64. data/ruby_ex/drb/insecure_protected_methods.rb +0 -103
  65. data/ruby_ex/drb/session_client_test.rb +0 -40
  66. data/ruby_ex/drb/session_manager.rb +0 -246
  67. data/ruby_ex/drb/session_server.rb +0 -53
  68. data/ruby_ex/dtime.rb +0 -143
  69. data/ruby_ex/dumpable_proc.rb +0 -63
  70. data/ruby_ex/exception.rb +0 -32
  71. data/ruby_ex/filetype.rb +0 -229
  72. data/ruby_ex/fileutils_ex.rb +0 -44
  73. data/ruby_ex/fold.rb +0 -58
  74. data/ruby_ex/generate_id.rb +0 -44
  75. data/ruby_ex/hookable.rb +0 -262
  76. data/ruby_ex/hooker.rb +0 -54
  77. data/ruby_ex/inactive_timeout.rb +0 -137
  78. data/ruby_ex/indexed_node.rb +0 -66
  79. data/ruby_ex/io_marshal.rb +0 -100
  80. data/ruby_ex/ioo.rb +0 -194
  81. data/ruby_ex/labeled_node.rb +0 -63
  82. data/ruby_ex/logger_observer.rb +0 -23
  83. data/ruby_ex/md5sum.rb +0 -66
  84. data/ruby_ex/mktemp.rb +0 -208
  85. data/ruby_ex/module/attr_once.rb +0 -36
  86. data/ruby_ex/module/autoload_tree.rb +0 -75
  87. data/ruby_ex/module/hierarchy.rb +0 -335
  88. data/ruby_ex/module/instance_method_visibility.rb +0 -73
  89. data/ruby_ex/module_ex.rb +0 -11
  90. data/ruby_ex/node.rb +0 -80
  91. data/ruby_ex/object_monitor.rb +0 -145
  92. data/ruby_ex/object_monitor_activity.rb +0 -33
  93. data/ruby_ex/observable.rb +0 -140
  94. data/ruby_ex/observable_pool.rb +0 -293
  95. data/ruby_ex/orderedhash.rb +0 -252
  96. data/ruby_ex/pathname_ex.rb +0 -152
  97. data/ruby_ex/pp_hierarchy.rb +0 -29
  98. data/ruby_ex/pseudo_cache.rb +0 -190
  99. data/ruby_ex/queue.rb +0 -56
  100. data/ruby_ex/random_generators.rb +0 -25
  101. data/ruby_ex/random_generators/random_generator.rb +0 -31
  102. data/ruby_ex/random_generators/ruby.rb +0 -23
  103. data/ruby_ex/safe_eval.rb +0 -348
  104. data/ruby_ex/sendmail.rb +0 -215
  105. data/ruby_ex/service_manager.rb +0 -121
  106. data/ruby_ex/session/administrable.rb +0 -120
  107. data/ruby_ex/session/client.rb +0 -153
  108. data/ruby_ex/session/const.rb +0 -18
  109. data/ruby_ex/session/dispatcher.rb +0 -184
  110. data/ruby_ex/session/error.rb +0 -21
  111. data/ruby_ex/session/fetchable.rb +0 -57
  112. data/ruby_ex/session/fetcher.rb +0 -62
  113. data/ruby_ex/session/hookable.rb +0 -26
  114. data/ruby_ex/session/profile.rb +0 -110
  115. data/ruby_ex/session/server.rb +0 -582
  116. data/ruby_ex/session/test/administrable_test.rb +0 -337
  117. data/ruby_ex/session/test/basic_test.rb +0 -523
  118. data/ruby_ex/session/test/dispatcher_test.rb +0 -409
  119. data/ruby_ex/session/test/fetchable_test.rb +0 -119
  120. data/ruby_ex/session/test/sub_server_test.rb +0 -188
  121. data/ruby_ex/shuffle.rb +0 -30
  122. data/ruby_ex/spring.rb +0 -136
  123. data/ruby_ex/spring_set.rb +0 -137
  124. data/ruby_ex/string_ex.rb +0 -28
  125. data/ruby_ex/symtbl.rb +0 -106
  126. data/ruby_ex/synflow.rb +0 -474
  127. data/ruby_ex/test/unit/ui/yaml/testrunner.rb +0 -164
  128. data/ruby_ex/thread_mutex.rb +0 -10
  129. data/ruby_ex/timeout_ex.rb +0 -81
  130. data/ruby_ex/top_down.rb +0 -73
  131. data/ruby_ex/trace.rb +0 -26
  132. data/ruby_ex/uri/druby.rb +0 -81
  133. data/ruby_ex/uri/file.rb +0 -65
  134. data/ruby_ex/uri/ftp_ex.rb +0 -37
  135. data/ruby_ex/uri/http_ex.rb +0 -43
  136. data/ruby_ex/uri/ssh.rb +0 -92
  137. data/ruby_ex/uri/svn.rb +0 -118
  138. data/ruby_ex/uri_ex.rb +0 -45
  139. data/ruby_ex/verbose_object.rb +0 -30
  140. data/ruby_ex/version.rb +0 -66
  141. data/ruby_ex/yaml/basenode_ext.rb +0 -63
  142. data/ruby_ex/yaml/chop_header.rb +0 -23
  143. data/ruby_ex/yaml/transform.rb +0 -449
  144. data/ruby_ex/yaml/yregexpath.rb +0 -76
  145. data/src/ask.rb +0 -101
  146. data/src/changelog.rb +0 -117
  147. data/src/conflict.rb +0 -20
  148. data/src/diffstat.rb +0 -42
  149. data/src/message.rb +0 -64
  150. data/src/reply-mail.rb +0 -14
  151. data/src/tools.rb +0 -22
  152. data/src/vcs.rb +0 -176
@@ -1,252 +0,0 @@
1
- # AUTHOR
2
- # jan molic /mig/at/1984/dot/cz/
3
- # updated by: Nicolas Pouillard <ertai@lrde.epita.fr>
4
- #
5
- # DESCRIPTION
6
- # Override hash to make it creation order preserved.
7
- # This will be obsolete - it is better to use special OrderedHash class
8
- # than overriding.
9
- # Public domain.
10
- #
11
- # THANKS
12
- # Andrew Johnson for his suggestions and fixes of Hash[],
13
- # merge, to_a, inspect and shift
14
- #
15
- # USAGE
16
- # just require this file, examples are at the end
17
- # you can try to run this file (ruby orderedhash.rb)
18
- #
19
-
20
- # $LastChangedBy: ertai $
21
- # $Id: orderedhash.rb 152 2005-02-13 09:31:49Z ertai $
22
-
23
- module OrderedHash_ext
24
-
25
- def store ( a, b )
26
- @order.push a unless has_key? a
27
- super a,b
28
- end
29
-
30
- def []= ( a, b )
31
- @order.push a unless has_key? a
32
- super a,b
33
- end
34
-
35
- def == ( hsh2 )
36
- return false if !hsh2.respond_to? :order or @order != hsh2.order
37
- super hsh2
38
- end
39
-
40
- def clear
41
- @order = []
42
- super
43
- end
44
-
45
- def delete ( key )
46
- @order.delete key
47
- super
48
- end
49
-
50
- def each_key
51
- @order.each { |k| yield k }
52
- self
53
- end
54
-
55
- def each_value
56
- @order.each { |k| yield self[k] }
57
- self
58
- end
59
-
60
- def each
61
- @order.each { |k| yield(k, self[k]) }
62
- self
63
- end
64
-
65
- alias :each_pair :each
66
-
67
- def delete_if
68
- @order.clone.each do |k|
69
- delete k if yield(k, self[k])
70
- end
71
- self
72
- end
73
-
74
- def values
75
- ary = []
76
- @order.each { |k| ary << self[k] }
77
- ary
78
- end
79
-
80
- def keys
81
- @order
82
- end
83
-
84
- def invert
85
- hsh2 = self.class.new
86
- @order.each { |k| hsh2[self[k]] = k }
87
- hsh2
88
- end
89
-
90
- def reject ( &block )
91
- self.dup.delete_if(&block)
92
- end
93
-
94
- def reject! ( &block )
95
- hsh2 = reject(&block)
96
- self == hsh2 ? nil : hsh2
97
- end
98
-
99
- def replace ( hsh2 )
100
- @order = hsh2.keys
101
- super hsh2
102
- end
103
-
104
- def shift
105
- key = @order.first
106
- key ? [key,delete(key)] : super
107
- end
108
-
109
- def to_a
110
- ary = []
111
- each { |k,v| ary << [k,v] }
112
- ary
113
- end
114
-
115
- def to_s
116
- to_a.to_s
117
- end
118
-
119
- def update ( hsh2 )
120
- hsh2.each { |k,v| self[k] = v }
121
- self
122
- end
123
-
124
- def merge! ( hsh2 )
125
- hsh2.each { |k,v| self[k] = v }
126
- self
127
- end
128
-
129
- def merge ( hsh2 )
130
- self.dup.update(hsh2)
131
- end
132
-
133
- def select
134
- ary = []
135
- each { |k,v| ary << [k,v] if yield k,v }
136
- ary
137
- end
138
-
139
- def ordered?
140
- !@order.nil?
141
- end
142
-
143
- end # module OrderedHash_ext
144
-
145
-
146
- class OHash < Hash
147
-
148
- attr_accessor :order
149
-
150
- alias :unordered_keys :keys
151
-
152
- include OrderedHash_ext
153
-
154
- def initialize ( *a )
155
- @order = unordered_keys
156
- super
157
- end
158
-
159
- def self.[] ( *args )
160
- hsh = OHash.new
161
- if Hash === args[0]
162
- hsh.replace args[0]
163
- elsif (args.size % 2) != 0
164
- raise ArgumentError, "odd number of elements for Hash"
165
- else
166
- hsh[args.shift] = args.shift while args.size > 0
167
- end
168
- hsh
169
- end
170
-
171
- end # class OHash
172
-
173
-
174
- class Hash
175
-
176
- def ordered?
177
- false
178
- end
179
-
180
- end # class Hash
181
-
182
-
183
- if defined? TEST_MODE or __FILE__ == $0
184
-
185
- require 'test/unit'
186
- class OrderedHashTest < Test::Unit::TestCase
187
-
188
- def check_ordered ( h, ref )
189
- h.store(4,3)
190
- h.store(2,3)
191
- assert_equal(h.to_a, ref)
192
- end
193
-
194
- def test_ordered
195
- check_ordered(OHash.new, [[4, 3], [2, 3]])
196
- end
197
-
198
- def test_unorderd
199
- check_ordered(Hash.new, [[2, 3], [4, 3]])
200
- end
201
-
202
- def test_simply
203
- # You can do simply
204
- hsh = OHash.new
205
- hsh['z'] = 1
206
- hsh['a'] = 2
207
- hsh['c'] = 3
208
- assert_equal(hsh.keys, ['z','a','c'])
209
- end
210
-
211
- def test_preserve
212
- # or using OrderedHash[] method
213
- hsh = OHash['z', 1, 'a', 2, 'c', 3]
214
- hsh2 = OHash['a', 2, 'z', 1, 'c', 3]
215
- assert_equal(hsh.keys, ['z','a','c'])
216
- assert_not_equal(hsh, hsh2)
217
- end
218
-
219
- def test_dont_preserve
220
- # but this don't preserve order
221
- hsh = OHash['z'=>1, 'a'=>2, 'c'=>3]
222
- hsh2 = OHash['a'=>2, 'z'=>1, 'c'=>3]
223
- assert_equal(hsh, hsh2)
224
- end
225
-
226
- def test_unorderd_empty
227
- check_ordered({}, [[2, 3], [4, 3]])
228
- end
229
-
230
- def test_little_ordered
231
- a = (0..11).to_a
232
- h = OHash[*a]
233
- assert_equal(h.to_s, a.to_s)
234
- end
235
-
236
- def test_big_ordered
237
- a = (0..501).to_a
238
- h = OHash[*a]
239
- assert_equal(h.to_s, a.to_s)
240
- end
241
-
242
- def test_eql
243
- assert_nothing_raised { OHash.new == {} }
244
- assert_not_equal OHash.new, {}
245
- assert_equal OHash.new, OHash.new
246
- assert_equal OHash[1,2,3,4], OHash[1,2,3,4]
247
- assert_not_equal OHash[1,2,3,4], OHash[3,4,1,2]
248
- end
249
-
250
- end # OrderedHashTest
251
-
252
- end
@@ -1,152 +0,0 @@
1
- # Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved.
2
- # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
- # License: Gnu General Public License.
4
-
5
- # $LastChangedBy: ertai $
6
- # $Id: pathname_ex.rb 215 2005-05-08 10:58:49Z ertai $
7
-
8
-
9
- require 'pathname'
10
- require 'fileutils_ex'
11
-
12
-
13
- class Pathname
14
-
15
- def ensure_mkdir
16
- (mkdir) rescue Errno::EEXIST
17
- end
18
-
19
- def ensure_mkpath
20
- (mkpath) rescue Errno::EEXIST
21
- end
22
-
23
- def extsplit ( aChar='.' )
24
- raise ArgumentError, "#{aChar} is not just a char" if aChar.size != 1
25
- aChar = Regexp.escape(aChar)
26
- to_s =~ /^(.*?)(#{aChar}[^#{aChar}]*)?$/
27
- [Pathname.new($1), $2 || '']
28
- end
29
-
30
- def cp ( aPath )
31
- FileUtils.cp self.to_s, aPath.to_s
32
- end
33
-
34
- def cp_r ( aPath )
35
- FileUtils.cp_r self.to_s, aPath.to_s
36
- end
37
-
38
- def cp_rf ( aPath )
39
- FileUtils.cp_rf self.to_s, aPath.to_s
40
- end
41
-
42
- def rm
43
- FileUtils.rm self.to_s
44
- end
45
-
46
- def rm_r
47
- FileUtils.rm_r self.to_s
48
- end
49
-
50
- def rm_rf
51
- FileUtils.rm_rf self.to_s
52
- end
53
-
54
- def rm_f
55
- FileUtils.rm_f self.to_s
56
- end
57
-
58
- # Allow this kind of things:
59
- #
60
- # root = Pathname.new('/tmp/test')
61
- # foo, bar = 'foo', 'bar'
62
- #
63
- # ...
64
- #
65
- # (root/foo/bar).each_line do |line|
66
- # ...
67
- # end
68
- alias :/ :+
69
-
70
- def to_io
71
- @open_mode ||= 'r'
72
- open(@open_mode)
73
- end
74
-
75
- attr_accessor :open_mode
76
-
77
- module ShortCut
78
-
79
- # Allow to use this sort of constructions:
80
- #
81
- # `/path/to/a/file`.open do |f|
82
- # ...
83
- # end
84
- def ` ( path )
85
- Pathname.new(path)
86
- end
87
- end
88
-
89
- end # class Pathname
90
-
91
-
92
-
93
- class String
94
-
95
- def to_path
96
- Pathname.new(self)
97
- end
98
-
99
- end # class String
100
-
101
-
102
-
103
- #
104
- # Unit test suite
105
- #
106
- if defined? TEST_MODE or $0 == __FILE__
107
-
108
-
109
- require 'test/unit'
110
- require 'tempfile'
111
-
112
-
113
- class PathnameExTest < Test::Unit::TestCase
114
-
115
- #
116
- # Tests
117
- #
118
- def test_ensure_dir
119
- p = nil
120
- begin
121
- name = Tempfile.new('pathname')
122
- p = Pathname.new(name.path)
123
- name.delete
124
- assert(! p.directory?, 'no directory')
125
- assert_nothing_raised { p.ensure_mkdir }
126
- assert(p.directory?, 'directory')
127
- assert_nothing_raised { p.ensure_mkdir }
128
- assert(p.directory?, 'still directory')
129
- ensure
130
- p.rmdir unless p.nil?
131
- end
132
- end
133
-
134
- include Pathname::ShortCut
135
-
136
- def test_simple
137
- assert_equal([`path.ext1`, '.ext2'], `path.ext1.ext2`.extsplit)
138
- assert_equal([`path`, ''], `path`.extsplit)
139
- assert_equal([`path`, '.'], `path.`.extsplit)
140
- assert_equal([`path`, '-ext'], `path-ext`.extsplit('-'))
141
- assert_equal([`path-ext1`, '-ext2'], `path-ext1-ext2`.extsplit('-'))
142
- end
143
-
144
- def test_slash
145
- assert_equal(`path/to/a/file`, `path`/'to'/'a'/'file')
146
- path, to, a, file = `/path`, 'to', 'a', 'file'
147
- assert_equal(`/path/to/a/file`, path/to/a/file)
148
- end
149
-
150
- end # class PathnameExTest
151
-
152
- end
@@ -1,29 +0,0 @@
1
- # Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved.
2
- # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
- # License: Gnu General Public License.
4
-
5
- # $LastChangedBy: polrop $
6
- # $Id: hierarchy.rb 145 2005-01-30 14:16:14Z polrop $
7
-
8
-
9
- class Hash
10
-
11
- # Pretty print a hash symbolizing a class hierarchy.
12
- def pp_hierarchy(prefix=//, abstract=false)
13
- pp_hierarchy_rec('', prefix, abstract)
14
- end
15
-
16
- protected
17
- def pp_hierarchy_rec(indent, prefix, abstract)
18
- self.each do |k, v|
19
- k_str = k.to_s.sub(prefix, '')
20
- if abstract and k.abstract?
21
- puts "#{indent}/#{k_str}/"
22
- else
23
- puts "#{indent}#{k_str}"
24
- end
25
- v.pp_hierarchy_rec(indent + ' ', prefix, abstract)
26
- end
27
- end
28
-
29
- end # class Hash
@@ -1,190 +0,0 @@
1
- # Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved.
2
- # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
- # License: Gnu General Public License.
4
-
5
- # $LastChangedBy: ertai $
6
- # $Id: pseudo_cache.rb 186 2005-04-03 00:07:45Z ertai $
7
-
8
-
9
- require 'pathname'
10
- require 'md5'
11
-
12
- require 'md5sum'
13
-
14
-
15
- class PseudoCache
16
-
17
- #
18
- # Constants
19
- #
20
- DEFAULT_CACHE_REPOSITORY = '/var/cache/ruby_ex_cache'
21
-
22
- #
23
- # Constructor
24
- #
25
- def initialize(repository=DEFAULT_CACHE_REPOSITORY)
26
- @repository = check_repository(repository)
27
- end
28
-
29
- #
30
- # Methods
31
- #
32
- def get_key(name)
33
- Pathname.new(Digest::MD5.new(name).to_s)
34
- end
35
-
36
- def get_full_key(name)
37
- @repository + Digest::MD5.new(name).to_s
38
- end
39
-
40
- alias [] get_full_key
41
-
42
- def get_name(name)
43
- name = get_full_key(name) + 'name'
44
- name.open('r') { |f| return f.gets.chomp }
45
- end
46
-
47
- def get_md5sum(name)
48
- md5 = get_full_key(name) + 'md5sum'
49
- md5.open('r') { |f| return f.gets.chomp }
50
- end
51
-
52
- def present?(name)
53
- get_full_key(name).directory?
54
- end
55
-
56
- def up_to_date?(name, md5sum)
57
- (get_md5sum(name) == md5sum.to_s)
58
- end
59
-
60
- def add(name, &block)
61
- key = get_full_key(name)
62
- unless key.exist?
63
- key.mkdir
64
- (key + 'name').open('w') { |f| f.puts(name) }
65
- data = key + 'data'
66
- data.open('w', &block)
67
- (key + 'md5sum').open('w') { |f| f.puts(File.md5sum(data).to_s) }
68
- end
69
- key
70
- end
71
-
72
- def read(name, &block)
73
- key = get_full_key(name)
74
- (key + 'data').open(&block)
75
- key
76
- end
77
-
78
- def del(name)
79
- key = get_full_key(name)
80
- key.rmtree if key.exist?
81
- key
82
- end
83
-
84
- def replace(name, new_name, &block)
85
- add(new_name, &block)
86
- del(name)
87
- end
88
-
89
- def each(&block)
90
- @repository.each_entry do |p|
91
- next if p.to_s =~ /^\./
92
- (@repository + p + 'name').open('r') { |f| block[f.gets.chomp] }
93
- end
94
- end
95
-
96
- def clear
97
- @repository.rmtree
98
- end
99
-
100
- def create
101
- @repository.mkdir
102
- end
103
-
104
- def recreate
105
- clear
106
- create
107
- end
108
-
109
- protected
110
- def check_repository(repository)
111
- repo = Pathname.new(repository)
112
- unless (repo.directory? and
113
- repo.writable? and
114
- repo.readable? and
115
- repo.executable?)
116
- raise(ArgumentError, "`#{repository}' - bad repository")
117
- end
118
- repo
119
- end
120
-
121
- end # class PseudoCache
122
-
123
-
124
- #
125
- # Unit test suite
126
- #
127
- if defined? TEST_MODE or __FILE__ == $0
128
-
129
- require 'test/unit/ui/yaml/testrunner'
130
- require 'mktemp'
131
-
132
-
133
- class PseudoCacheTest < Test::Unit::TestCase
134
-
135
- #
136
- # Tests
137
- #
138
- def test_simple
139
- Tempfile.mktemp('cache') do |repo|
140
- assert_raises(ArgumentError) { PseudoCache.new(repo) }
141
- repo.mkdir
142
- cache = nil
143
- assert_nothing_raised { cache = PseudoCache.new(repo) }
144
- assert_not_nil(cache)
145
- assert(! cache.present?('toto'))
146
- assert_raises(Errno::ENOENT) { cache.get_name('toto') }
147
- assert_raises(Errno::ENOENT) { cache.get_md5sum('toto') }
148
- assert_equal(cache['toto'],
149
- cache.add('toto') { |f| f.puts('toto'); f.puts('tata') })
150
- assert(cache.present?('toto'))
151
- assert_equal('toto', cache.get_name('toto'))
152
- cache.read('toto') do |f|
153
- assert_equal("toto\n", f.gets)
154
- assert_equal("tata\n", f.gets)
155
- assert(f.eof?)
156
- end
157
- assert(! cache.present?('tata'))
158
- assert(cache.present?('toto'))
159
- cache.replace('toto', 'tata') { |f| f.puts('foo'); f.puts('bar') }
160
- assert(! cache.present?('toto'))
161
- assert(cache.present?('tata'))
162
- cache.read('tata') do |f|
163
- assert_equal("foo\n", f.gets)
164
- assert_equal("bar\n", f.gets)
165
- assert(f.eof?)
166
- end
167
- assert_equal(cache.get_full_key('toto'),
168
- cache.add('toto') { |f| f.puts('toto'); f.puts('tata') })
169
- assert(cache.up_to_date?('toto', cache.get_md5sum('toto')))
170
- names = []
171
- cache.each { |p| names << p }
172
- assert_equal(2, names.size)
173
- names.sort!
174
- assert_equal('tata', names[0].to_s)
175
- assert_equal('toto', names[1].to_s)
176
- cache.del('toto')
177
- assert(! cache.present?('toto'))
178
- assert(cache.present?('tata'))
179
- cache.clear
180
- assert(! cache.present?('tata'))
181
- cache.create
182
- assert(! cache.present?('tata'))
183
- end
184
- end
185
-
186
- end # class PseudoCacheTest
187
-
188
-
189
- end
190
-