ruby-debian 0.3.8

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 (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,239 @@
1
+ require 'runit/testcase'
2
+ require 'runit/cui/testrunner'
3
+
4
+ $:.unshift("../lib")
5
+ require '../lib/debian.rb'
6
+
7
+ class TestDebian__Deb < RUNIT::TestCase
8
+
9
+ def setup
10
+ @deb = [Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join("")),
11
+ Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join("")),
12
+ Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-1.f").join("")),
13
+ Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))]
14
+ end
15
+
16
+ def test_package
17
+ assert_equals("w3m", @deb[0].package)
18
+ assert_equals("w3m", @deb[1].package)
19
+ assert_equals("w3m-ssl", @deb[2].package)
20
+ assert_equals("w3m-ssl", @deb[3].package)
21
+ end
22
+
23
+ def test_provides
24
+ assert_equals(['www-browser'], @deb[0].provides)
25
+ assert_equals(['www-browser'], @deb[1].provides)
26
+ assert_equals(['www-browser'], @deb[2].provides)
27
+ assert_equals(['www-browser'], @deb[3].provides)
28
+ end
29
+
30
+ def test_source
31
+ assert_equals("w3m", @deb[0].package)
32
+ assert_equals("w3m", @deb[1].package)
33
+ assert_equals("w3m-ssl", @deb[2].package)
34
+ assert_equals("w3m-ssl", @deb[3].package)
35
+ end
36
+
37
+ def test_unmet
38
+ p = Debian::Packages.new("d/w3m_met_list")
39
+ puts @deb[0].unmet(p)
40
+ assert_equals([], @deb[0].unmet(p))
41
+ end
42
+
43
+ def test_version
44
+ assert_equals("0.2.1-1", @deb[0].version)
45
+ assert_equals("0.2.1-2", @deb[1].version)
46
+ assert_equals("0.2.1-1", @deb[2].version)
47
+ assert_equals("0.2.1-2", @deb[3].version)
48
+ end
49
+
50
+ def test_status
51
+ assert_equals("not-installed", @deb[0].status)
52
+ end
53
+
54
+ def test_selection
55
+ assert_equals("unknown", @deb[0].selection)
56
+ end
57
+
58
+ def test_description
59
+ assert_equals("WWW browsable pager with excellent tables/frames support",
60
+ @deb[0].description)
61
+ end
62
+
63
+ def test_unknown?
64
+ assert(@deb[0].unknown?)
65
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
66
+ "Status: unknown ok not-installed\n"].join(""))
67
+ assert(d.unknown?)
68
+ end
69
+ def test_install?
70
+ assert(! @deb[0].installed?)
71
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
72
+ "Status: install ok installed\n"].join(""))
73
+ assert(d.install?)
74
+ end
75
+ def test_hold?
76
+ assert(! @deb[0].hold?)
77
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
78
+ "Status: hold ok installed\n"].join(""))
79
+ assert(d.hold?)
80
+ end
81
+ def test_deinstall?
82
+ assert(! @deb[0].deinstall?)
83
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
84
+ "Status: deinstall ok not-installed\n"].join(""))
85
+ assert(d.deinstall?)
86
+ end
87
+ def test_remove?
88
+ assert(! @deb[0].remove?)
89
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
90
+ "Status: deinstall ok not-installed\n"].join(""))
91
+ assert(d.remove?)
92
+ end
93
+ def test_purge?
94
+ assert(! @deb[0].purge?)
95
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
96
+ "Status: purge ok not-installed\n"].join(""))
97
+ assert(d.purge?)
98
+ end
99
+ def test_not_installed?
100
+ assert(@deb[0].not_installed?)
101
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
102
+ "Status: unknown ok not-installed\n"].join(""))
103
+ assert(d.not_installed?)
104
+ end
105
+ def test_purged?
106
+ assert(@deb[0].purged?)
107
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
108
+ "Status: unknown ok not-installed\n"].join(""))
109
+ assert(d.purged?)
110
+ end
111
+ def test_unpacked?
112
+ assert(! @deb[0].unpacked?)
113
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
114
+ "Status: install ok unpacked\n"].join(""))
115
+ assert(d.unpacked?)
116
+ end
117
+ def test_half_configured?
118
+ assert(! @deb[0].half_configured?)
119
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
120
+ "Status: install reinstreq half-configured\n"].join(""))
121
+ assert(d.half_configured?)
122
+ end
123
+ def test_intalled?
124
+ assert(! @deb[0].installed?)
125
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
126
+ "Status: install ok installed\n"].join(""))
127
+ assert(d.installed?)
128
+ end
129
+ def test_half_installed?
130
+ assert(! @deb[0].half_installed?)
131
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
132
+ "Status: install reinstreq half-installed\n"].join(""))
133
+ assert(d.half_installed?)
134
+ end
135
+ def test_config_files?
136
+ assert(! @deb[0].config_files?)
137
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
138
+ "Status: install ok config-files\n"].join(""))
139
+ assert(d.config_files?)
140
+ end
141
+ def test_config_only?
142
+ assert(! @deb[0].config_only?)
143
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
144
+ "Status: install ok config-files\n"].join(""))
145
+ assert(d.config_only?)
146
+ end
147
+ def test_removed?
148
+ assert(@deb[0].removed?)
149
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
150
+ "Status: install ok config-files\n"].join(""))
151
+ assert(d.removed?)
152
+ end
153
+ def test_need_fix?
154
+ assert(! @deb[0].need_fix?)
155
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
156
+ "Status: install reinstreq half-installed\n"].join(""))
157
+ assert(d.need_fix?)
158
+ end
159
+ def test_need_action?
160
+ assert(! @deb[0].need_action?)
161
+ d = Debian::Deb.new([IO.readlines("d/w3m_0.2.1-1.f"),
162
+ "Status: install ok not-installed\n"].join(""))
163
+ assert(d.need_action?)
164
+ end
165
+
166
+ def test_ok?
167
+ assert(@deb[0].ok?)
168
+ end
169
+
170
+ def check_apt_cache
171
+ @ruby = Dir["/var/cache/apt/archives/ruby_1.6*.deb"]
172
+ if @ruby.empty?
173
+ assert_fail("no ruby package in /var/cache/apt/archives")
174
+ end
175
+ end
176
+ def test_filename=()
177
+ check_apt_cache
178
+ @ruby.each {|df|
179
+ d = Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join(""))
180
+ d.filename = df
181
+ assert_equals(df, d.filename)
182
+ }
183
+ end
184
+
185
+ def test_controlFile
186
+ # tested by controlData?
187
+ end
188
+ def test_controlData
189
+ check_apt_cache
190
+ @ruby.each {|df|
191
+ deb = Debian::DpkgDeb.load(df)
192
+ oc = IO.popen("dpkg -f #{df}") {|fp| fp.readlines.join("")}
193
+ assert_equals(oc, deb.controlData)
194
+ om = IO.popen("dpkg -I #{df} md5sums") {|fp| fp.readlines.join("") }
195
+ assert_equals(om, deb.controlData("md5sums"))
196
+ }
197
+ end
198
+ def test_dataFile
199
+ # tested by dataData?
200
+ end
201
+ def test_dataData
202
+ check_apt_cache
203
+ @ruby.each {|df|
204
+ deb = Debian::DpkgDeb.load(df)
205
+ oc = IO.popen("dpkg --fsys-tarfile #{df}|tar xfO - '*/copyright'") {|fp|
206
+ fp.readlines.join("")
207
+ }
208
+ assert_equals(oc, deb.dataData('copyright'))
209
+ }
210
+ end
211
+ def test_sys_tarfile
212
+ check_apt_cache
213
+ @ruby.each {|df|
214
+ deb = Debian::DpkgDeb.load(df)
215
+ os = IO.popen("dpkg --fsys-tarfile #{df}") {|fp|
216
+ fp.readlines.join("")
217
+ }
218
+ ts = deb.sys_tarfile {|fp| fp.readlines.join("") }
219
+ assert_equals(os, ts)
220
+ }
221
+ end
222
+
223
+ # def test_s_new
224
+ #
225
+ # end
226
+
227
+ end
228
+
229
+ if $0 == __FILE__
230
+ if ARGV.size == 0
231
+ suite = TestDebian__Deb.suite
232
+ else
233
+ suite = RUNIT::TestSuite.new
234
+ ARGV.each do |testmethod|
235
+ suite.add_test(TestDebian__Deb.new(testmethod))
236
+ end
237
+ end
238
+ RUNIT::CUI::TestRunner.run(suite)
239
+ end
@@ -0,0 +1,70 @@
1
+ require 'runit/testcase'
2
+ require 'runit/cui/testrunner'
3
+
4
+ $:.unshift("../lib")
5
+ require '../lib/debian.rb'
6
+
7
+ class TestDebian__Dep < RUNIT::TestCase
8
+
9
+ def setup
10
+ @dep = [Debian::Dep.new("w3m", 'Depends'),
11
+ Debian::Dep.new("w3m | w3m-ssl", 'Depends'),
12
+ Debian::Dep.new("w3m (>= 0.2.1-2) | w3m-ssl (>= 0.2.1-2)",
13
+ 'Recommends'),
14
+ Debian::Dep.new("www-browser", "Suggests")]
15
+ end
16
+
17
+ def test_satisfy?
18
+ deb = [Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join("")),
19
+ Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join("")),
20
+ Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-1.f").join("")),
21
+ Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))]
22
+ assert(@dep[0].satisfy?(deb[0]))
23
+ assert(@dep[0].satisfy?(deb[1]))
24
+ assert(!(@dep[0].satisfy?(deb[2])))
25
+ assert(!(@dep[0].satisfy?(deb[3])))
26
+
27
+ assert(@dep[1].satisfy?(deb[0]))
28
+ assert(@dep[1].satisfy?(deb[1]))
29
+ assert(@dep[1].satisfy?(deb[2]))
30
+ assert(@dep[1].satisfy?(deb[3]))
31
+
32
+ assert(!(@dep[2].satisfy?(deb[0])))
33
+ assert(@dep[2].satisfy?(deb[1]))
34
+ assert(!(@dep[2].satisfy?(deb[2])))
35
+ assert(@dep[2].satisfy?(deb[3]))
36
+ end
37
+
38
+ def test_to_s
39
+ assert_equals("Depends w3m", @dep[0].to_s)
40
+ assert_equals("Depends w3m | w3m-ssl", @dep[1].to_s)
41
+ assert_equals("Recommends w3m (>= 0.2.1-2) | w3m-ssl (>= 0.2.1-2)",
42
+ @dep[2].to_s)
43
+ end
44
+
45
+ def test_unmet
46
+ p = Debian::Packages.new("d/w3m_met_list")
47
+ assert_equals([], @dep[0].unmet(p)) # w3m
48
+ assert_equals([], @dep[1].unmet(p)) # w3m | w3m-ssl
49
+ assert_equals([], @dep[2].unmet(p))
50
+ # w3m (>= 0.2.1-2) | w3m-ssl (>= 0.2.1-2)
51
+ assert_equals([], @dep[3].unmet(p)) # www-browser
52
+ end
53
+
54
+ # def test_s_new
55
+ #
56
+ # end
57
+
58
+ end
59
+
60
+ if $0 == __FILE__
61
+ if ARGV.size == 0
62
+ suite = TestDebian__Dep.suite
63
+ else
64
+ suite = RUNIT::TestSuite.new
65
+ ARGV.each do |testmethod|
66
+ suite.add_test(TestDebian__Dep.new(testmethod))
67
+ end
68
+ end
69
+ RUNIT::CUI::TestRunner.run(suite)
70
+ end
@@ -0,0 +1,140 @@
1
+ require 'runit/testcase'
2
+ require 'runit/cui/testrunner'
3
+
4
+ $:.unshift("../lib")
5
+ require '../lib/debian.rb'
6
+
7
+ class TestDebian__Dep__Term < RUNIT::TestCase
8
+
9
+ def setup
10
+ @dep = [Debian::Dep::Term.new('w3m'),
11
+ Debian::Dep::Term.new('w3m', '<<', '0.2.1-2'),
12
+ Debian::Dep::Term.new('w3m', '<=', '0.2.1-2'),
13
+ Debian::Dep::Term.new('w3m', '=', '0.2.1-2'),
14
+ Debian::Dep::Term.new('w3m', '>=', '0.2.1-2'),
15
+ Debian::Dep::Term.new('w3m', '>>', '0.2.1-2'),
16
+ Debian::Dep::Term.new('w3m', '==', '0.2.1-2'),
17
+ Debian::Dep::Term.new('www-browser')]
18
+ end
19
+ def test_EQUAL # '=='
20
+ assert_equals(Debian::Dep::Term.new('w3m'), @dep[0])
21
+ assert_equals(Debian::Dep::Term.new('w3m', '<<', '0.2.1-2'), @dep[1])
22
+ end
23
+
24
+ def test_op
25
+ assert_equals("", @dep[0].op)
26
+ assert_equals("<<", @dep[1].op)
27
+ assert_equals("<=", @dep[2].op)
28
+ assert_equals("=", @dep[3].op)
29
+ assert_equals(">=", @dep[4].op)
30
+ assert_equals(">>", @dep[5].op)
31
+ end
32
+
33
+ def test_package
34
+ assert_equals("w3m", @dep[0].package)
35
+ assert_equals("w3m", @dep[1].package)
36
+ end
37
+
38
+ def test_satisfy?
39
+ @deb = [Debian::Deb.new(IO.readlines("d/w3m_0.2.1-1.f").join("")),
40
+ Debian::Deb.new(IO.readlines("d/w3m_0.2.1-2.f").join("")),
41
+ Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-1.f").join("")),
42
+ Debian::Deb.new(IO.readlines("d/w3m-ssl_0.2.1-2.f").join(""))]
43
+ # w3m
44
+ assert(@dep[0].satisfy?(@deb[0]))
45
+ assert(@dep[0].satisfy?(@deb[1]))
46
+ assert(!(@dep[0].satisfy?(@deb[2])))
47
+ assert(!(@dep[0].satisfy?(@deb[3])))
48
+
49
+ # w3m << 0.2.1-2
50
+ assert(@dep[1].satisfy?(@deb[0]))
51
+ assert(!(@dep[1].satisfy?(@deb[1])))
52
+ assert(!(@dep[1].satisfy?(@deb[2])))
53
+ assert(!(@dep[1].satisfy?(@deb[3])))
54
+
55
+ # w3m <= 0.2.1-2
56
+ assert(@dep[2].satisfy?(@deb[0]))
57
+ assert(@dep[2].satisfy?(@deb[1]))
58
+ assert(!(@dep[2].satisfy?(@deb[2])))
59
+ assert(!(@dep[2].satisfy?(@deb[3])))
60
+
61
+ # w3m = 0.2.1-2
62
+ assert(!(@dep[3].satisfy?(@deb[0])))
63
+ assert(@dep[3].satisfy?(@deb[1]))
64
+ assert(!(@dep[3].satisfy?(@deb[2])))
65
+ assert(!(@dep[3].satisfy?(@deb[3])))
66
+
67
+ # w3m >= 0.2.1-2
68
+ assert(!(@dep[4].satisfy?(@deb[0])))
69
+ assert(@dep[4].satisfy?(@deb[1]))
70
+ assert(!(@dep[4].satisfy?(@deb[2])))
71
+ assert(!(@dep[4].satisfy?(@deb[3])))
72
+
73
+ # w3m >> 0.2.1-2
74
+ assert(!(@dep[5].satisfy?(@deb[0])))
75
+ assert(!(@dep[5].satisfy?(@deb[1])))
76
+ assert(!(@dep[5].satisfy?(@deb[2])))
77
+ assert(!(@dep[5].satisfy?(@deb[3])))
78
+
79
+ # w3m == 0.2.1-2
80
+ assert_exception(Debian::DepError) { @dep[6].satisfy?(@deb[0])}
81
+ assert_exception(Debian::DepError) { @dep[6].satisfy?(@deb[1])}
82
+ assert_exception(Debian::DepError) { @dep[6].satisfy?(@deb[2])}
83
+ assert_exception(Debian::DepError) { @dep[6].satisfy?(@deb[3])}
84
+
85
+ # www-browser (provides test)
86
+ assert(@dep[7].satisfy?(@deb[0]))
87
+ assert(@dep[7].satisfy?(@deb[1]))
88
+ assert(@dep[7].satisfy?(@deb[2]))
89
+ assert(@dep[7].satisfy?(@deb[3]))
90
+ end
91
+
92
+ def test_to_s
93
+ assert_equals("w3m", @dep[0].to_s)
94
+ assert_equals("w3m (<< 0.2.1-2)", @dep[1].to_s)
95
+ assert_equals("w3m (<= 0.2.1-2)", @dep[2].to_s)
96
+ assert_equals("w3m (= 0.2.1-2)", @dep[3].to_s)
97
+ assert_equals("w3m (>= 0.2.1-2)", @dep[4].to_s)
98
+ assert_equals("w3m (>> 0.2.1-2)", @dep[5].to_s)
99
+ end
100
+
101
+ def test_unmet
102
+ p = Debian::Packages.new("d/w3m_met_list")
103
+ assert_equals([], @dep[0].unmet(p)) # w3m
104
+ assert_equals([Debian::Dep::Unmet.new(@dep[1], p['w3m'])],
105
+ @dep[1].unmet(p)) # w3m << 0.2.1-2
106
+ assert_equals([], @dep[2].unmet(p)) # w3m <= 0.2.1-2
107
+ assert_equals([], @dep[3].unmet(p)) # w3m = 0.2.1-2
108
+ assert_equals([], @dep[4].unmet(p)) # w3m >= 0.2.1-2
109
+ assert_equals([Debian::Dep::Unmet.new(@dep[5], p['w3m'])],
110
+ @dep[5].unmet(p)) # w3m >> 0.2.1-2
111
+ assert_equals([], @dep[7].unmet(p)) # www-browser
112
+ end
113
+
114
+ def test_version
115
+ assert_equals("", @dep[0].version)
116
+ assert_equals("0.2.1-2", @dep[1].version)
117
+ assert_equals("0.2.1-2", @dep[2].version)
118
+ assert_equals("0.2.1-2", @dep[3].version)
119
+ assert_equals("0.2.1-2", @dep[4].version)
120
+ assert_equals("0.2.1-2", @dep[5].version)
121
+ assert_equals("0.2.1-2", @dep[6].version)
122
+ end
123
+
124
+ # def test_s_new
125
+ #
126
+ # end
127
+
128
+ end
129
+
130
+ if $0 == __FILE__
131
+ if ARGV.size == 0
132
+ suite = TestDebian__Dep__Term.suite
133
+ else
134
+ suite = RUNIT::TestSuite.new
135
+ ARGV.each do |testmethod|
136
+ suite.add_test(TestDebian__Dep__Term.new(testmethod))
137
+ end
138
+ end
139
+ RUNIT::CUI::TestRunner.run(suite)
140
+ end