ruby-debian 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/Makefile +47 -0
  2. data/README +55 -0
  3. data/TODO +29 -0
  4. data/bin/dpkg-checkdeps +163 -0
  5. data/bin/dpkg-ruby +148 -0
  6. data/debian/changelog +310 -0
  7. data/debian/compat +1 -0
  8. data/debian/control +56 -0
  9. data/debian/copyright +26 -0
  10. data/debian/dirs +2 -0
  11. data/debian/manpages +0 -0
  12. data/debian/ruby-debian.docs +3 -0
  13. data/debian/ruby-debian.examples +1 -0
  14. data/debian/ruby-debian.manpages +2 -0
  15. data/debian/rules +15 -0
  16. data/debian/source/format +1 -0
  17. data/examples/ONE_LINER +39 -0
  18. data/examples/dpkg.rb +95 -0
  19. data/examples/list_packages.rb +38 -0
  20. data/examples/unmet_packages.rb +39 -0
  21. data/ext/debian_version/Version.cpp +43 -0
  22. data/ext/debian_version/extconf.rb +7 -0
  23. data/lib/debian.rb +1063 -0
  24. data/lib/debian/ar.rb +159 -0
  25. data/lib/debian/utils.rb +111 -0
  26. data/man/dpkg-checkdeps.1 +102 -0
  27. data/man/dpkg-ruby.1 +99 -0
  28. data/t/d/available +492 -0
  29. data/t/d/non-US_sid_Sources +32 -0
  30. data/t/d/non-US_sid_i386_Packages +50 -0
  31. data/t/d/sid_Sources +287 -0
  32. data/t/d/sid_i386_Packages +456 -0
  33. data/t/d/status +324 -0
  34. data/t/d/w3m-ssl_0.2.1-1.f +24 -0
  35. data/t/d/w3m-ssl_0.2.1-2.dsc +12 -0
  36. data/t/d/w3m-ssl_0.2.1-2.f +24 -0
  37. data/t/d/w3m_0.2.1-1.dsc +12 -0
  38. data/t/d/w3m_0.2.1-1.f +21 -0
  39. data/t/d/w3m_0.2.1-2.dsc +12 -0
  40. data/t/d/w3m_0.2.1-2.f +21 -0
  41. data/t/d/w3m_met_list +83 -0
  42. data/t/testall.rb +50 -0
  43. data/t/testar.rb +59 -0
  44. data/t/testarchives.rb +277 -0
  45. data/t/testdeb.rb +239 -0
  46. data/t/testdep.rb +70 -0
  47. data/t/testdepterm.rb +140 -0
  48. data/t/testdepunmet.rb +71 -0
  49. data/t/testdpkg.rb +197 -0
  50. data/t/testdpkgdeb.rb +83 -0
  51. data/t/testdsc.rb +49 -0
  52. data/t/testfield.rb +155 -0
  53. data/t/testpackages.rb +138 -0
  54. data/t/testsources.rb +44 -0
  55. data/t/teststatus.rb +38 -0
  56. metadata +133 -0
@@ -0,0 +1,83 @@
1
+ Package: w3m
2
+ Priority: optional
3
+ Section: text
4
+ Maintainer: Fumitoshi UKAI <ukai@debian.or.jp>
5
+ Version: 0.2.1-2
6
+ Provides: www-browser
7
+ Depends: libc6 (>= 2.2.2-2), libgc5, libgpmg1 (>= 1.14-16), libncurses5 (>= 5.2.20010310-1)
8
+ Suggests: w3m-ssl (>= 0.2.1-2), mime-support, menu (>> 1.5), w3m-el
9
+ Description: test
10
+ test
11
+
12
+ Package: libc6
13
+ Version: 2.2.2-4
14
+ Section: base
15
+ Priority: required
16
+ Architecture: i386
17
+ Maintainer: foo bar <foo@bar>
18
+ Description: dependency test
19
+ dependency test
20
+
21
+ Package: libgc5
22
+ Version: 1:5.3-2
23
+ Section: libs
24
+ Priority: optional
25
+ Architecture: i386
26
+ Maintainer: foo bar <foo@bar>
27
+ Description: dependency test
28
+ dependency test
29
+
30
+ Package: libgpmg1
31
+ Version: 1.19.3-6
32
+ Priority: optional
33
+ Section: libs
34
+ Maintainer: foo bar <foo@bar>
35
+ Description: dependency test
36
+ dependency test
37
+
38
+ Package: libncurses5
39
+ Version: 5.2.20010318-1
40
+ Priority: required
41
+ Section: base
42
+ Source: ncurses
43
+ Maintainer: foo bar <foo@bar>
44
+ Description: dependency test
45
+ dependency test
46
+
47
+ Package: w3m-ssl
48
+ Version: 0.2.1-2
49
+ Priority: optional
50
+ Section: non-US/main
51
+ Provides: www-browser
52
+ Maintainer: foo bar <foo@bar>
53
+ Description: suggested
54
+ suggested
55
+
56
+ Package: mime-support
57
+ Priority: standard
58
+ Section: net
59
+ Maintainer: foo bar <foo@bar>
60
+ Version: 3.10-1
61
+ Conffiles:
62
+ /etc/mime.types 413ba91dc187d2343949b12a3122da3b
63
+ /etc/mailcap 57a603451802f5bd47e89b2f426077fa
64
+ /etc/mailcap.order ba07e08a7fe3741d0b8339127963190e
65
+ Description: suggested
66
+ suggested
67
+
68
+ Package: menu
69
+ Priority: optional
70
+ Section: admin
71
+ Version: 2.1.5-7
72
+ Maintainer: foo bar <foo@bar>
73
+ Description: suggested
74
+ suggested
75
+
76
+ Package: w3m-el
77
+ Priority: optional
78
+ Section: web
79
+ Installed-Size: 532
80
+ Version: 0.2.150-2
81
+ Maintainer: foo bar <foo@bar>
82
+ Description: suggested
83
+ suggested
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/ruby -- # -*- ruby -*-
2
+
3
+ require 'runit/testsuite'
4
+ require 'runit/cui/testrunner'
5
+ require 'getoptlong'
6
+
7
+ $:.unshift("../lib")
8
+
9
+ opts = GetoptLong.new(
10
+ ['--output', '-o', GetoptLong::REQUIRED_ARGUMENT],
11
+ ['--quiet', '-q', GetoptLong::NO_ARGUMENT],
12
+ ['--help', '-h', GetoptLong::NO_ARGUMENT])
13
+
14
+ outfile = '-'
15
+ opts.each {|opt, val|
16
+ case opt
17
+ when "--output" then $stdout = open(val, "w"); outfile = val
18
+ when "--quiet" then RUNIT::CUI::TestRunner.quiet_mode = true
19
+ when "--help" then
20
+ $stderr.puts "usage: #{$0} [-o file] [-q] [-h]"
21
+ exit 1
22
+ end
23
+ }
24
+
25
+ Dir["test*.rb"].each {|t|
26
+ next if t == __FILE__
27
+ require t
28
+ }
29
+
30
+ suite = RUNIT::TestSuite.new
31
+ ObjectSpace.each_object(Class) {|klass|
32
+ if klass.ancestors.include?(RUNIT::TestCase)
33
+ suite.add_test(klass.suite)
34
+ end
35
+ }
36
+ RUNIT::CUI::TestRunner.run(suite)
37
+ if outfile != '-'
38
+ $stdout.close
39
+ IO.readlines(outfile).each {|line|
40
+ line.chomp!
41
+ if /^Errors:/ =~ line
42
+ $stderr.puts "#{line}: See more detail in #{outfile}"
43
+ elsif /^Failures:/ =~ line
44
+ $stderr.puts "#{line}: See more detail in #{outfile}"
45
+ elsif /^OK/ =~ line
46
+ $stderr.puts "#{line}"
47
+ end
48
+ }
49
+ end
50
+
@@ -0,0 +1,59 @@
1
+ require 'runit/testcase'
2
+ require 'runit/cui/testrunner'
3
+
4
+ $:.unshift("../lib")
5
+ require 'debian/ar'
6
+
7
+ class TestDebian__Ar < RUNIT::TestCase
8
+
9
+ def setup
10
+ @ruby = Dir["/var/cache/apt/archives/ruby_1.6*.deb"]
11
+ if @ruby.empty?
12
+ assert_fail("no ruby package in /var/cache/apt/archives")
13
+ end
14
+ end
15
+ def test_list
16
+ @ruby.each {|deb|
17
+ assert_equals(['debian-binary','control.tar.gz','data.tar.gz'],
18
+ Debian::Ar.new(deb).list.collect {|arf| arf.name })
19
+ }
20
+ end
21
+
22
+ def test_each_file
23
+ @ruby.each {|deb|
24
+ lists = ['debian-binary','control.tar.gz','data.tar.gz']
25
+ Debian::Ar.new(deb).each_file {|name,io|
26
+ assert_equals(lists[0], name)
27
+ if name == 'debian-binary'
28
+ assert_equals("2.0\n", io.read)
29
+ end
30
+ assert_equals(0, io.stat.uid)
31
+ assert_equals(0, io.stat.gid)
32
+ assert_equals(0100644, io.stat.mode)
33
+ lists.shift
34
+ }
35
+ }
36
+ end
37
+
38
+ def test_open
39
+ @ruby.each {|deb|
40
+ ar = Debian::Ar.new(deb)
41
+ assert_not_nil(ar.open("debian-binary"))
42
+ assert_equals("2.0\n", ar.open("debian-binary").read)
43
+ assert_not_nil(ar.open("control.tar.gz"))
44
+ assert_not_nil(ar.open("data.tar.gz"))
45
+ }
46
+ end
47
+ end
48
+
49
+ if $0 == __FILE__
50
+ if ARGV.size == 0
51
+ suite = TestDebian__Ar.suite
52
+ else
53
+ suite = RUNIT::TestSuite.new
54
+ ARGV.each do |testmethod|
55
+ suite.add_test(TestDebian__Ar.new(testmethod))
56
+ end
57
+ end
58
+ RUNIT::CUI::TestRunner.run(suite)
59
+ end
@@ -0,0 +1,277 @@
1
+ require 'runit/testcase'
2
+ require 'runit/cui/testrunner'
3
+
4
+ $:.unshift("../lib")
5
+
6
+ require '../lib/debian.rb'
7
+
8
+ class TArchives < Debian::Archives
9
+ def initialize(f = "")
10
+ @file = []
11
+ @lists = {}
12
+ if f != ""
13
+ @file.push(f)
14
+ @lists = Debian::Archives.parseArchiveFile(f) {|info|
15
+ Debian::Deb.new(info)
16
+ }
17
+ end
18
+ end
19
+ end
20
+
21
+ class TestDebian__Archives < RUNIT::TestCase
22
+
23
+ def setup
24
+ @ar = [TArchives.new("d/status"),
25
+ TArchives.new("d/available"),
26
+ TArchives.new("d/sid_i386_Packages"),
27
+ TArchives.new("d/non-US_sid_i386_Packages")]
28
+ end
29
+ def test_AND # '&'
30
+ ar = @ar[0] & @ar[1]
31
+ assert_equals('dpkg-ruby', ar['dpkg-ruby'].package)
32
+ assert_nil(ar['smtpfeed'])
33
+ assert_nil(@ar[0]['smtpfeed'])
34
+ assert_equals('smtpfeed', @ar[1]['smtpfeed'].package)
35
+ end
36
+
37
+ def test_AREF # '[]'
38
+ assert_equals("dpkg-ruby", @ar[0]['dpkg-ruby'].package)
39
+ assert_equals("auto-apt", @ar[1]['auto-apt'].package)
40
+ assert_equals("hotplug", @ar[2]['hotplug'].package)
41
+ assert_equals("w3mmee-ssl", @ar[3]['w3mmee-ssl'].package)
42
+ end
43
+
44
+ def test_ASET # '[]='
45
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join(""))
46
+ @ar[3]['w3m'] = deb
47
+ assert_equals(deb, @ar[3]['w3m'])
48
+ end
49
+
50
+ def test_LSHIFT # '<<'
51
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join(""))
52
+ ar = @ar[3] << deb
53
+ assert_equals(deb, ar['w3m'])
54
+ assert_nil(@ar[3]['w3m'])
55
+ ar = @ar[3] << nil
56
+ assert_nil(ar['w3m'])
57
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join(""))
58
+ ar = @ar[0] << deb
59
+ assert_equals('0.2.1-2', ar['w3m'].version)
60
+ end
61
+
62
+ def test_MINUS # '-'
63
+ ar = @ar[1] - @ar[0]
64
+ assert_nil(ar['dpkg-ruby'])
65
+ assert_equals('dpkg-ruby', @ar[1]['dpkg-ruby'].package)
66
+ assert_equals('dpkg-ruby', @ar[0]['dpkg-ruby'].package)
67
+ assert_equals('smtpfeed', ar['smtpfeed'].package)
68
+ end
69
+
70
+ def test_PLUS # '+'
71
+ ar = @ar[2] + @ar[3]
72
+ assert_equals('w3mmee-ssl', ar['w3mmee-ssl'].package)
73
+ assert_nil(@ar[2]['w3mmee-ssl'])
74
+ end
75
+
76
+ def test_RSHIFT # '>>'
77
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join(""))
78
+ ar = @ar[0] >> deb
79
+ assert_nil(ar['w3m'])
80
+ assert_equals('w3m', @ar[0]['w3m'].package)
81
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join(""))
82
+ ar = @ar[0] >> deb
83
+ assert_equals('w3m', ar['w3m'].package)
84
+ ar = @ar[0] >> nil
85
+ assert_equals('w3m', ar['w3m'].package)
86
+ end
87
+
88
+ def test_add
89
+ @ar[2].add(@ar[3])
90
+ assert_equals('w3mmee-ssl', @ar[2]['w3mmee-ssl'].package)
91
+ end
92
+
93
+ def test_delete
94
+ @ar[0].delete('w3m')
95
+ assert_nil(@ar[0]['w3m'])
96
+ end
97
+
98
+ def test_delete_if
99
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join(""))
100
+ @ar[0].delete_if {|p,d| d == deb }
101
+ assert_equals('w3m', @ar[0]['w3m'].package)
102
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join(""))
103
+ @ar[0].delete_if {|p,d| d == deb }
104
+ assert_nil(@ar[0]['w3m'])
105
+ end
106
+
107
+ def test_each
108
+ ps = ['w3mmee-ssl', 'w3m-ssl']
109
+ @ar[3].each {|p, d| ps.delete(p)}
110
+ assert(ps.empty?)
111
+ end
112
+
113
+ def test_each_key
114
+ ps = ['w3mmee-ssl', 'w3m-ssl']
115
+ @ar[3].each_key {|p| ps.delete(p)}
116
+ assert(ps.empty?)
117
+ end
118
+
119
+ def test_each_package
120
+ ds = [Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))]
121
+ @ar[3].each_package {|d| ds.delete(d)}
122
+ assert(ds.empty?)
123
+ end
124
+
125
+ def test_each_value
126
+ ds = [Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))]
127
+ @ar[3].each_package {|d| ds.delete(d)}
128
+ assert(ds.empty?)
129
+ end
130
+
131
+ def test_empty?
132
+ assert(!@ar[0].empty?)
133
+ ar = @ar[0] - @ar[0]
134
+ assert(ar.empty?)
135
+ end
136
+
137
+ def test_file
138
+ assert_equals(['d/status'], @ar[0].file)
139
+ assert_equals(['d/available'], @ar[1].file)
140
+ assert_equals(['d/sid_i386_Packages'], @ar[2].file)
141
+ assert_equals(['d/non-US_sid_i386_Packages'], @ar[3].file)
142
+ assert_equals(['d/status', 'd/available'], (@ar[0] + @ar[1]).file)
143
+ end
144
+
145
+ def test_has_key?
146
+ assert(@ar[0].has_key?('dpkg-ruby'))
147
+ assert(@ar[1].has_key?('auto-apt'))
148
+ assert(@ar[2].has_key?('hotplug'))
149
+ assert(@ar[3].has_key?('w3mmee-ssl'))
150
+ end
151
+
152
+ def test_has_value?
153
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))
154
+ assert(!@ar[2].has_value?(deb))
155
+ assert(@ar[3].has_value?(deb))
156
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-1.f").join(""))
157
+ assert(!(@ar[3].has_value?(deb)))
158
+ end
159
+
160
+ def test_include?
161
+ assert(@ar[0].include?('dpkg-ruby'))
162
+ assert(@ar[1].include?('auto-apt'))
163
+ assert(@ar[2].include?('hotplug'))
164
+ assert(@ar[3].include?('w3mmee-ssl'))
165
+ end
166
+
167
+ def test_indexes
168
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))
169
+ assert_equals([deb], @ar[3].indexes('w3m-ssl'))
170
+ end
171
+
172
+ def test_indices
173
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))
174
+ assert_equals([deb], @ar[3].indexes('w3m-ssl'))
175
+ end
176
+
177
+ def test_intersect
178
+ ar = @ar[0].class.new
179
+ ar.intersect(@ar[0], @ar[1])
180
+ assert_equals('dpkg-ruby', ar['dpkg-ruby'].package)
181
+ assert_nil(ar['smtpfeed'])
182
+ assert_equals('smtpfeed', @ar[1]['smtpfeed'].package)
183
+ end
184
+
185
+ def test_key?
186
+ assert(@ar[0].key?('dpkg-ruby'))
187
+ assert(@ar[1].key?('auto-apt'))
188
+ assert(@ar[2].key?('hotplug'))
189
+ assert(@ar[3].key?('w3mmee-ssl'))
190
+ end
191
+
192
+ def test_keys
193
+ ps = ['w3m-ssl', 'w3mmee-ssl'].sort
194
+ assert_equals(ps, @ar[3].keys.sort)
195
+ end
196
+
197
+ def test_length
198
+ assert_equals(18, @ar[0].length)
199
+ assert_equals(24, @ar[1].length)
200
+ assert_equals(21, @ar[2].length)
201
+ assert_equals(2, @ar[3].length)
202
+ end
203
+
204
+ def test_lists
205
+ assert_equals(['w3m-ssl', 'w3mmee-ssl'].sort, @ar[3].lists.keys.sort)
206
+ end
207
+
208
+ def test_package
209
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))
210
+ assert_nil(@ar[3].package('w3m'))
211
+ assert_equals(deb, @ar[3].package('w3m-ssl'))
212
+ end
213
+
214
+ def test_pkgnames
215
+ assert_equals(['w3m-ssl', 'w3mmee-ssl'].sort, @ar[3].pkgnames.sort)
216
+ end
217
+
218
+ def test_store
219
+ deb = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join(""))
220
+ @ar[3].store('w3m', deb)
221
+ assert_equals(deb, @ar[3]['w3m'])
222
+ end
223
+
224
+ def test_sub
225
+ @ar[1].sub(@ar[0])
226
+ assert_nil(@ar[1]['dpkg-ruby'])
227
+ assert_equals('dpkg-ruby', @ar[0]['dpkg-ruby'].package)
228
+ assert_equals('smtpfeed', @ar[1]['smtpfeed'].package)
229
+ end
230
+
231
+ def test_to_s
232
+ assert_equals("d/status", @ar[0].to_s)
233
+ assert_equals("d/available", @ar[1].to_s)
234
+ assert_equals("d/sid_i386_Packages", @ar[2].to_s)
235
+ assert_equals("d/non-US_sid_i386_Packages", @ar[3].to_s)
236
+ assert_equals("d/status+d/available", (@ar[0]+@ar[1]).to_s)
237
+ end
238
+
239
+ def test_value?
240
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))
241
+ assert(!@ar[2].has_value?(deb))
242
+ assert(@ar[3].has_value?(deb))
243
+ deb = Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-1.f").join(""))
244
+ assert(!(@ar[3].has_value?(deb)))
245
+ end
246
+
247
+ def test_values
248
+ ds = [Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))]
249
+ @ar[3].values.each {|d| ds.delete(d)}
250
+ assert(ds.empty?)
251
+ end
252
+
253
+ # def test_s_parse
254
+ #
255
+ # end
256
+
257
+ # def test_s_parseAptLine
258
+ #
259
+ # end
260
+
261
+ # def test_s_parseArchiveFile
262
+ #
263
+ # end
264
+
265
+ end
266
+
267
+ if $0 == __FILE__
268
+ if ARGV.size == 0
269
+ suite = TestDebian__Archives.suite
270
+ else
271
+ suite = RUNIT::TestSuite.new
272
+ ARGV.each do |testmethod|
273
+ suite.add_test(TestDebian__Archives.new(testmethod))
274
+ end
275
+ end
276
+ RUNIT::CUI::TestRunner.run(suite)
277
+ end