apt-pkg 0.4.0 → 0.5.0
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.
- checksums.yaml +5 -5
- data/History.md +23 -0
- data/LICENSE +1 -1
- data/README.md +13 -10
- data/ext/apt_pkg/apt-pkg.cpp +4 -7
- data/ext/apt_pkg/apt-pkg.h +1 -0
- data/ext/apt_pkg/pkgcache.cpp +121 -34
- data/lib/debian/apt_pkg.rb +3 -1
- data/lib/debian/apt_pkg/gem_version.rb +9 -0
- data/lib/debian/apt_pkg/package.rb +47 -0
- data/test/apt_pkg_cache_not_init_integration.rb +5 -4
- data/test/apt_pkg_configuration_test.rb +25 -31
- data/test/apt_pkg_test.rb +51 -47
- data/test/debian/apt_pkg/package_test.rb +56 -0
- data/test/debian/apt_pkg/pkg_cache_test.rb +114 -0
- metadata +13 -12
- data/lib/debian/apt_pkg/version.rb +0 -8
- data/test/apt_pkg_cache_test.rb +0 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 16cd206a5d9b3137497d05f937ef5b78fcac7aa6bd62e4177b73ef98ff0d917e
|
4
|
+
data.tar.gz: b0bcc23a93c8112321c890487ee385c7cede6da1b3179da4e5f0ebf11b723161
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e650327a185fca89e757e30659c8c61371e7d2950e47b72e463a6ed598da4656e7fcc2f831830acea7de9e045242636077746d9f692ab5ca55dc9f62182db56
|
7
|
+
data.tar.gz: 8ab515778e66c88f8b53f10d03d65e95db89db8061f166bd4235b2dd47f18433187162b645d663a8f38bcf937d06d4a7fbdd14391b887eafadc4652b35cad80c
|
data/History.md
CHANGED
@@ -1,4 +1,27 @@
|
|
1
1
|
|
2
|
+
0.5.0 / 2020-07-22
|
3
|
+
==================
|
4
|
+
|
5
|
+
* Debian::AptPkg::PkgCache.pkg_names deprecated
|
6
|
+
* Add all maintained Rubies on gitlab-ci
|
7
|
+
* Init listing packages on cache
|
8
|
+
* Quick fix gitlab ci
|
9
|
+
* Add .gitlab-ci.yml
|
10
|
+
* Rename lib/debian/apt_pkg/{version,gem_version}.rb
|
11
|
+
* Update README
|
12
|
+
* Tidy tests remove should
|
13
|
+
* Debian::AptPkg.init returns a boolean
|
14
|
+
* Fix mimitest warnings
|
15
|
+
* Remove cppcheck on CI version conflict
|
16
|
+
* Fix code lint
|
17
|
+
* Fix CI and update Rubies
|
18
|
+
* Fix libapt-pkg 2.1 compat
|
19
|
+
* Update apt-pkg deps
|
20
|
+
* Update doc Debian::AptPkg::InitError
|
21
|
+
* README: Bundler is not needed
|
22
|
+
* Use Debian::AptPkg::InitError instead of RuntimeError
|
23
|
+
* Fix rb_mDebianAptPkgCache name
|
24
|
+
|
2
25
|
0.4.0 / 2016-10-06
|
3
26
|
==================
|
4
27
|
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2014-
|
3
|
+
Copyright (c) 2014-2020 Laurent Arnoud <laurent@spkdev.net>
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
6
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# Ruby interface to apt-pkg
|
2
2
|
|
3
3
|
Goal of this project is to have a proper Ruby binding to APT like in
|
4
|
-
[Python](https://
|
4
|
+
[Python](https://tracker.debian.org/pkg/python-apt).
|
5
5
|
|
6
6
|
Currently install, remove packages commands are **not** implemented.
|
7
7
|
|
8
8
|
## INSTALL
|
9
9
|
|
10
|
-
```
|
10
|
+
```
|
11
11
|
apt install build-essential ruby-dev libapt-pkg-dev (>= 1.0)
|
12
12
|
gem install apt-pkg
|
13
13
|
```
|
@@ -27,6 +27,12 @@ Debian::AptPkg::PkgCache.update
|
|
27
27
|
|
28
28
|
# Search package by names
|
29
29
|
Debian::AptPkg::PkgCache.pkg_names("vim")
|
30
|
+
|
31
|
+
# List packages stored in the cache
|
32
|
+
Debian::AptPkg::PkgCache.packages
|
33
|
+
|
34
|
+
# List installed packages
|
35
|
+
Debian::AptPkg::PkgCache.packages.select {|pkg| pkg.is_installed }
|
30
36
|
```
|
31
37
|
|
32
38
|
[Documentation](http://www.rubydoc.info/gems/apt-pkg)
|
@@ -34,27 +40,24 @@ Debian::AptPkg::PkgCache.pkg_names("vim")
|
|
34
40
|
## BUILD
|
35
41
|
|
36
42
|
``` console
|
37
|
-
|
38
|
-
bundle install
|
39
|
-
bundle exec rake compile
|
43
|
+
rake compile
|
40
44
|
```
|
41
45
|
|
42
46
|
## TEST
|
43
47
|
|
44
48
|
``` console
|
45
|
-
|
49
|
+
rake test
|
46
50
|
```
|
47
51
|
|
48
52
|
## LICENSE
|
49
53
|
|
50
54
|
The MIT License
|
51
55
|
|
52
|
-
Copyright (c) 2014-
|
56
|
+
Copyright (c) 2014-2020 Laurent Arnoud <laurent@spkdev.net>
|
53
57
|
|
54
58
|
---
|
55
|
-
[](https://travis-ci.org/spk/ruby-apt-pkg)
|
56
60
|
[](https://rubygems.org/gems/apt-pkg)
|
57
61
|
[](http://www.rubydoc.info/gems/apt-pkg)
|
58
62
|
[](http://opensource.org/licenses/MIT "MIT")
|
59
|
-
[](https://github.com/spk/ruby-apt-pkg)
|
63
|
+
[](https://github.com/spk/ruby-apt-pkg)
|
data/ext/apt_pkg/apt-pkg.cpp
CHANGED
@@ -3,19 +3,18 @@
|
|
3
3
|
#include "pkgcache.h"
|
4
4
|
|
5
5
|
/*
|
6
|
-
* call-seq: init() ->
|
6
|
+
* call-seq: init() -> bool
|
7
7
|
*
|
8
8
|
* Shorthand for doing init_config() and init_system().
|
9
9
|
*
|
10
|
-
* Debian::AptPkg.init # =>
|
10
|
+
* Debian::AptPkg.init # => true
|
11
11
|
*
|
12
12
|
**/
|
13
13
|
static VALUE
|
14
14
|
init(VALUE self)
|
15
15
|
{
|
16
|
-
pkgInitConfig(*_config);
|
17
|
-
|
18
|
-
return Qnil;
|
16
|
+
int res = pkgInitConfig(*_config) && pkgInitSystem(*_config, _system);
|
17
|
+
return INT2BOOL(res);
|
19
18
|
}
|
20
19
|
|
21
20
|
/*
|
@@ -199,8 +198,6 @@ Init_apt_pkg()
|
|
199
198
|
{
|
200
199
|
VALUE rb_mDebian = rb_define_module("Debian");
|
201
200
|
VALUE rb_mDebianAptPkg = rb_define_module_under(rb_mDebian, "AptPkg");
|
202
|
-
VALUE rb_mDebianAptPkgConfiguration =
|
203
|
-
rb_define_module_under(rb_mDebianAptPkg, "Configuration");
|
204
201
|
|
205
202
|
rb_define_singleton_method(rb_mDebianAptPkg, "init",
|
206
203
|
RUBY_METHOD_FUNC(init), 0);
|
data/ext/apt_pkg/apt-pkg.h
CHANGED
data/ext/apt_pkg/pkgcache.cpp
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#include "pkgcache.h"
|
2
2
|
|
3
|
+
static VALUE e_mDebianAptPkgInitError, rb_cPackage, rb_cVersion;
|
4
|
+
|
3
5
|
/*
|
4
6
|
* private
|
5
7
|
*/
|
@@ -17,7 +19,8 @@ config_system_initialized()
|
|
17
19
|
* call-seq: gen_caches() -> bool
|
18
20
|
*
|
19
21
|
* Call the main cache generator.
|
20
|
-
*
|
22
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
23
|
+
* configured.
|
21
24
|
*
|
22
25
|
* Debian::AptPkg::PkgCache.gen_caches # => false
|
23
26
|
*
|
@@ -26,7 +29,7 @@ static VALUE
|
|
26
29
|
gen_caches(VALUE self)
|
27
30
|
{
|
28
31
|
if (!config_system_initialized()) {
|
29
|
-
rb_raise(
|
32
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
30
33
|
}
|
31
34
|
pkgCacheFile CacheFile;
|
32
35
|
int res = CacheFile.BuildCaches(NULL, true);
|
@@ -37,7 +40,8 @@ gen_caches(VALUE self)
|
|
37
40
|
* call-seq: update() -> bool
|
38
41
|
*
|
39
42
|
* Update the index files used by the cache.
|
40
|
-
*
|
43
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
44
|
+
* configured.
|
41
45
|
*
|
42
46
|
* Debian::AptPkg::PkgCache.update # => false
|
43
47
|
*
|
@@ -46,7 +50,7 @@ static VALUE
|
|
46
50
|
update(VALUE self)
|
47
51
|
{
|
48
52
|
if (!config_system_initialized()) {
|
49
|
-
rb_raise(
|
53
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
50
54
|
}
|
51
55
|
pkgCacheFile CacheFile;
|
52
56
|
// Get the source list
|
@@ -63,7 +67,8 @@ update(VALUE self)
|
|
63
67
|
* call-seq: is_multi_arch() -> bool
|
64
68
|
*
|
65
69
|
* An attribute determining whether the cache supports multi-arch.
|
66
|
-
*
|
70
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
71
|
+
* configured.
|
67
72
|
*
|
68
73
|
* Debian::AptPkg::PkgCache.is_multi_arch # => false
|
69
74
|
*
|
@@ -72,7 +77,7 @@ static VALUE
|
|
72
77
|
is_multi_arch(VALUE self)
|
73
78
|
{
|
74
79
|
if (!config_system_initialized()) {
|
75
|
-
rb_raise(
|
80
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
76
81
|
}
|
77
82
|
pkgCacheFile CacheFile;
|
78
83
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -83,11 +88,67 @@ is_multi_arch(VALUE self)
|
|
83
88
|
return INT2BOOL(res);
|
84
89
|
}
|
85
90
|
|
91
|
+
/*
|
92
|
+
* call-seq: packages() -> array, nil
|
93
|
+
*
|
94
|
+
* A list of Debian::AptPkg::Package objects stored in the cache
|
95
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
96
|
+
* configured.
|
97
|
+
*
|
98
|
+
* Debian::AptPkg::PkgCache.packages
|
99
|
+
*
|
100
|
+
**/
|
101
|
+
static VALUE
|
102
|
+
packages(int argc, VALUE *argv, VALUE self)
|
103
|
+
{
|
104
|
+
if (!config_system_initialized()) {
|
105
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
106
|
+
}
|
107
|
+
VALUE result = rb_ary_new();
|
108
|
+
pkgCacheFile CacheFile;
|
109
|
+
if (CacheFile.GetPkgCache() == 0) {
|
110
|
+
return Qnil;
|
111
|
+
}
|
112
|
+
for (pkgCache::PkgIterator Pkg = CacheFile.GetPkgCache()->PkgBegin(); not Pkg.end(); ++Pkg) {
|
113
|
+
VALUE current_version;
|
114
|
+
if (Pkg->CurrentVer == 0) {
|
115
|
+
current_version = Qnil;
|
116
|
+
} else {
|
117
|
+
current_version = rb_struct_new(rb_cVersion,
|
118
|
+
rb_str_new2(Pkg.CurrentVer().ParentPkg().Name()),
|
119
|
+
rb_str_new2(Pkg.CurrentVer().VerStr()),
|
120
|
+
rb_str_new2(Pkg.CurrentVer().Section()),
|
121
|
+
rb_str_new2(Pkg.CurrentVer().Arch()),
|
122
|
+
INT2FIX(Pkg.CurrentVer()->Size),
|
123
|
+
INT2FIX(Pkg.CurrentVer()->InstalledSize),
|
124
|
+
INT2FIX(Pkg.CurrentVer()->Hash),
|
125
|
+
INT2FIX(Pkg.CurrentVer()->ID),
|
126
|
+
INT2FIX(Pkg.CurrentVer()->Priority)
|
127
|
+
);
|
128
|
+
}
|
129
|
+
VALUE rb_cPackage_args[7];
|
130
|
+
rb_cPackage_args[0] = INT2FIX(Pkg->ID);
|
131
|
+
rb_cPackage_args[1] = rb_str_new2(Pkg.Name());
|
132
|
+
rb_cPackage_args[2] = rb_str_new2(Pkg.FullName().c_str());
|
133
|
+
rb_cPackage_args[3] = rb_str_new2(Pkg.Arch());
|
134
|
+
rb_cPackage_args[4] = INT2BOOL((Pkg->Flags & pkgCache::Flag::Essential) != 0);
|
135
|
+
rb_cPackage_args[5] = INT2BOOL((Pkg->Flags & pkgCache::Flag::Important) != 0);
|
136
|
+
rb_cPackage_args[6] = current_version;
|
137
|
+
rb_ary_push(result, rb_class_new_instance(7,
|
138
|
+
rb_cPackage_args,
|
139
|
+
rb_cPackage
|
140
|
+
));
|
141
|
+
}
|
142
|
+
return result;
|
143
|
+
}
|
144
|
+
|
86
145
|
/*
|
87
146
|
* call-seq: pkg_names() -> array, nil
|
88
147
|
*
|
148
|
+
* Deprecated and will removed in 0.6.0
|
89
149
|
* List the names of all packages in the system.
|
90
|
-
*
|
150
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
151
|
+
* configured.
|
91
152
|
*
|
92
153
|
* Debian::AptPkg::PkgCache.pkg_names('gcolor2') # => ["gcolor2"]
|
93
154
|
*
|
@@ -95,8 +156,10 @@ is_multi_arch(VALUE self)
|
|
95
156
|
static VALUE
|
96
157
|
pkg_names(int argc, VALUE *argv, VALUE self)
|
97
158
|
{
|
159
|
+
rb_warn("Debian::AptPkg::PkgCache.pkg_names is deprecated; " \
|
160
|
+
"use Debian::AptPkg::PkgCache.packages instead");
|
98
161
|
if (!config_system_initialized()) {
|
99
|
-
rb_raise(
|
162
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
100
163
|
}
|
101
164
|
if (argc > 1 || argc == 0) {
|
102
165
|
rb_raise(rb_eArgError, "You must give at least one search argument");
|
@@ -127,7 +190,8 @@ pkg_names(int argc, VALUE *argv, VALUE self)
|
|
127
190
|
* call-seq: package_count() -> int, nil
|
128
191
|
*
|
129
192
|
* The total number of packages available in the cache.
|
130
|
-
*
|
193
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
194
|
+
* configured.
|
131
195
|
*
|
132
196
|
* Debian::AptPkg::PkgCache.package_count # => 69511
|
133
197
|
*
|
@@ -136,7 +200,7 @@ static VALUE
|
|
136
200
|
package_count(VALUE self)
|
137
201
|
{
|
138
202
|
if (!config_system_initialized()) {
|
139
|
-
rb_raise(
|
203
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
140
204
|
}
|
141
205
|
pkgCacheFile CacheFile;
|
142
206
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -150,7 +214,8 @@ package_count(VALUE self)
|
|
150
214
|
* call-seq: version_count() -> int, nil
|
151
215
|
*
|
152
216
|
* The total number of package versions available in the cache.
|
153
|
-
*
|
217
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
218
|
+
* configured.
|
154
219
|
*
|
155
220
|
* Debian::AptPkg::PkgCache.version_count # => 84630
|
156
221
|
*
|
@@ -159,7 +224,7 @@ static VALUE
|
|
159
224
|
version_count(VALUE self)
|
160
225
|
{
|
161
226
|
if (!config_system_initialized()) {
|
162
|
-
rb_raise(
|
227
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
163
228
|
}
|
164
229
|
pkgCacheFile CacheFile;
|
165
230
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -173,7 +238,8 @@ version_count(VALUE self)
|
|
173
238
|
* call-seq: depends_count() -> int, nil
|
174
239
|
*
|
175
240
|
* The total number of dependencies stored in the cache.
|
176
|
-
*
|
241
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
242
|
+
* configured.
|
177
243
|
*
|
178
244
|
* Debian::AptPkg::PkgCache.depends_count # => 551983
|
179
245
|
*
|
@@ -182,7 +248,7 @@ static VALUE
|
|
182
248
|
depends_count(VALUE self)
|
183
249
|
{
|
184
250
|
if (!config_system_initialized()) {
|
185
|
-
rb_raise(
|
251
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
186
252
|
}
|
187
253
|
pkgCacheFile CacheFile;
|
188
254
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -196,7 +262,8 @@ depends_count(VALUE self)
|
|
196
262
|
* call-seq: package_file_count() -> int, nil
|
197
263
|
*
|
198
264
|
* The total number of packages files available.
|
199
|
-
*
|
265
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
266
|
+
* configured.
|
200
267
|
*
|
201
268
|
* Debian::AptPkg::PkgCache.package_file_count # => 17
|
202
269
|
*
|
@@ -205,7 +272,7 @@ static VALUE
|
|
205
272
|
package_file_count(VALUE self)
|
206
273
|
{
|
207
274
|
if (!config_system_initialized()) {
|
208
|
-
rb_raise(
|
275
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
209
276
|
}
|
210
277
|
pkgCacheFile CacheFile;
|
211
278
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -219,7 +286,8 @@ package_file_count(VALUE self)
|
|
219
286
|
* call-seq: ver_file_count() -> int, nil
|
220
287
|
*
|
221
288
|
* The total number of version and package file relations stored in the cache.
|
222
|
-
*
|
289
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
290
|
+
* configured.
|
223
291
|
*
|
224
292
|
* Debian::AptPkg::PkgCache.ver_file_count # => 11274
|
225
293
|
*
|
@@ -228,7 +296,7 @@ static VALUE
|
|
228
296
|
ver_file_count(VALUE self)
|
229
297
|
{
|
230
298
|
if (!config_system_initialized()) {
|
231
|
-
rb_raise(
|
299
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
232
300
|
}
|
233
301
|
pkgCacheFile CacheFile;
|
234
302
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -242,7 +310,8 @@ ver_file_count(VALUE self)
|
|
242
310
|
* call-seq: provides_count() -> int, nil
|
243
311
|
*
|
244
312
|
* The number of provided packages.
|
245
|
-
*
|
313
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
314
|
+
* configured.
|
246
315
|
*
|
247
316
|
* Debian::AptPkg::PkgCache.provides_count # => 69511
|
248
317
|
*
|
@@ -251,7 +320,7 @@ static VALUE
|
|
251
320
|
provides_count(VALUE self)
|
252
321
|
{
|
253
322
|
if (!config_system_initialized()) {
|
254
|
-
rb_raise(
|
323
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
255
324
|
}
|
256
325
|
pkgCacheFile CacheFile;
|
257
326
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -265,7 +334,8 @@ provides_count(VALUE self)
|
|
265
334
|
* call-seq: group_count() -> int, nil
|
266
335
|
*
|
267
336
|
* The number of groups in the cache.
|
268
|
-
*
|
337
|
+
* Raise `Debian::AptPkg::InitError` when config, system, cache is not
|
338
|
+
* configured.
|
269
339
|
*
|
270
340
|
* Debian::AptPkg::PkgCache.group_count # => 16730
|
271
341
|
*
|
@@ -274,7 +344,7 @@ static VALUE
|
|
274
344
|
group_count(VALUE self)
|
275
345
|
{
|
276
346
|
if (!config_system_initialized()) {
|
277
|
-
rb_raise(
|
347
|
+
rb_raise(e_mDebianAptPkgInitError, "System not initialized");
|
278
348
|
}
|
279
349
|
pkgCacheFile CacheFile;
|
280
350
|
pkgCache *Cache = CacheFile.GetPkgCache();
|
@@ -289,31 +359,48 @@ init_apt_pkg_pkgcache()
|
|
289
359
|
{
|
290
360
|
VALUE rb_mDebian = rb_define_module("Debian");
|
291
361
|
VALUE rb_mDebianAptPkg = rb_define_module_under(rb_mDebian, "AptPkg");
|
292
|
-
VALUE
|
362
|
+
VALUE rb_mDebianAptPkgCache = rb_define_module_under(rb_mDebianAptPkg,
|
293
363
|
"PkgCache");
|
364
|
+
e_mDebianAptPkgInitError = rb_define_class_under(rb_mDebianAptPkg,
|
365
|
+
"InitError",
|
366
|
+
rb_eRuntimeError);
|
367
|
+
rb_cPackage = rb_const_get_at(rb_mDebianAptPkg, rb_intern("Package"));
|
368
|
+
rb_cVersion = rb_struct_define_under(rb_mDebianAptPkg, "Version",
|
369
|
+
"parent_package_name",
|
370
|
+
"version_string",
|
371
|
+
"section",
|
372
|
+
"arch",
|
373
|
+
"size",
|
374
|
+
"installed_size",
|
375
|
+
"hash",
|
376
|
+
"id",
|
377
|
+
"priority",
|
378
|
+
NULL);
|
294
379
|
|
295
|
-
rb_define_singleton_method(
|
380
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "gen_caches",
|
296
381
|
RUBY_METHOD_FUNC(gen_caches), 0);
|
297
|
-
rb_define_singleton_method(
|
382
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "update",
|
298
383
|
RUBY_METHOD_FUNC(update), 0);
|
299
|
-
rb_define_singleton_method(
|
384
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "is_multi_arch",
|
300
385
|
RUBY_METHOD_FUNC(is_multi_arch), 0);
|
301
|
-
rb_define_singleton_method(
|
386
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "packages",
|
387
|
+
RUBY_METHOD_FUNC(packages), 0);
|
388
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "pkg_names",
|
302
389
|
RUBY_METHOD_FUNC(pkg_names), -1);
|
303
390
|
|
304
|
-
rb_define_singleton_method(
|
391
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "package_count",
|
305
392
|
RUBY_METHOD_FUNC(package_count), 0);
|
306
|
-
rb_define_singleton_method(
|
393
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "version_count",
|
307
394
|
RUBY_METHOD_FUNC(version_count), 0);
|
308
|
-
rb_define_singleton_method(
|
395
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "depends_count",
|
309
396
|
RUBY_METHOD_FUNC(depends_count), 0);
|
310
|
-
rb_define_singleton_method(
|
397
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache,
|
311
398
|
"package_file_count",
|
312
399
|
RUBY_METHOD_FUNC(package_file_count), 0);
|
313
|
-
rb_define_singleton_method(
|
400
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "ver_file_count",
|
314
401
|
RUBY_METHOD_FUNC(ver_file_count), 0);
|
315
|
-
rb_define_singleton_method(
|
402
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "provides_count",
|
316
403
|
RUBY_METHOD_FUNC(provides_count), 0);
|
317
|
-
rb_define_singleton_method(
|
404
|
+
rb_define_singleton_method(rb_mDebianAptPkgCache, "group_count",
|
318
405
|
RUBY_METHOD_FUNC(group_count), 0);
|
319
406
|
}
|
data/lib/debian/apt_pkg.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Debian::AptPkg::Package file
|
3
|
+
module Debian
|
4
|
+
# AptPkg base module
|
5
|
+
module AptPkg
|
6
|
+
# Debian::AptPkg::Package class
|
7
|
+
# Representation of a package in a cache
|
8
|
+
class Package
|
9
|
+
attr_accessor :id, :name, :full_name, :arch, :essential, :important,
|
10
|
+
:current_version
|
11
|
+
|
12
|
+
# Initialize the Package class
|
13
|
+
# @example
|
14
|
+
# new(id, name, full_name, arch, essential, important, current_version)
|
15
|
+
# @param [Integer] The numeric ID of the package
|
16
|
+
# @param [String] The name of the package
|
17
|
+
# @param [String] Get the full name of the package, including the
|
18
|
+
# architecture
|
19
|
+
# @param [String] The architecture of the package
|
20
|
+
# @param [Boolean] Boolean value determining whether the package is
|
21
|
+
# essential
|
22
|
+
# @param [Boolean] Boolean value determining whether the package has the
|
23
|
+
# 'important' flag set
|
24
|
+
# ('Important: yes' in the Packages file)
|
25
|
+
# @param [Version,NilClass] The version of the package currently installed
|
26
|
+
# or `nil`
|
27
|
+
# @return [Package] Package instance
|
28
|
+
def initialize(id, name, full_name, arch, essential, important, current_version)
|
29
|
+
@id = id
|
30
|
+
@name = name
|
31
|
+
@full_name = full_name
|
32
|
+
@arch = arch
|
33
|
+
@essential = essential
|
34
|
+
@important = important
|
35
|
+
@current_version = current_version
|
36
|
+
end
|
37
|
+
|
38
|
+
# Return `true` if the package is installed
|
39
|
+
# @return [Boolean]
|
40
|
+
def is_installed
|
41
|
+
return false unless current_version
|
42
|
+
|
43
|
+
true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,21 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'test_helper'
|
2
3
|
|
3
4
|
describe Debian::AptPkg::PkgCache do
|
4
5
|
describe 'not init' do
|
5
6
|
describe '.update' do
|
6
7
|
it 'can be called' do
|
7
|
-
lambda do
|
8
|
+
_(lambda do
|
8
9
|
Debian::AptPkg::PkgCache.update
|
9
|
-
end.must_raise
|
10
|
+
end).must_raise Debian::AptPkg::InitError
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
14
|
%i(package version depends package_file ver_file provides group).each do |m|
|
14
15
|
describe ".#{m}_count" do
|
15
16
|
it 'can be called' do
|
16
|
-
lambda do
|
17
|
+
_(lambda do
|
17
18
|
Debian::AptPkg::PkgCache.public_send("#{m}_count")
|
18
|
-
end.must_raise
|
19
|
+
end).must_raise Debian::AptPkg::InitError
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
@@ -7,78 +7,72 @@ describe Debian::AptPkg::Configuration do
|
|
7
7
|
|
8
8
|
it 'architectures return an array' do
|
9
9
|
arches = Debian::AptPkg::Configuration.architectures
|
10
|
-
arches.must_be_instance_of Array
|
11
|
-
arches.wont_be_empty
|
10
|
+
_(arches).must_be_instance_of Array
|
11
|
+
_(arches).wont_be_empty
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'languages return an array' do
|
15
15
|
all_langs = Debian::AptPkg::Configuration.languages
|
16
|
-
all_langs.must_be_instance_of Array
|
17
|
-
all_langs.wont_be_empty
|
16
|
+
_(all_langs).must_be_instance_of Array
|
17
|
+
_(all_langs).wont_be_empty
|
18
18
|
|
19
19
|
langs = Debian::AptPkg::Configuration.languages(false)
|
20
|
-
langs.must_be_instance_of Array
|
20
|
+
_(langs).must_be_instance_of Array
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'check_architecture' do
|
24
|
-
Debian::AptPkg::Configuration.check_architecture('all').must_equal true
|
24
|
+
_(Debian::AptPkg::Configuration.check_architecture('all')).must_equal true
|
25
25
|
|
26
26
|
arches = Debian::AptPkg::Configuration.architectures
|
27
27
|
c = Debian::AptPkg::Configuration.check_architecture(arches.first)
|
28
|
-
c.must_equal true
|
28
|
+
_(c).must_equal true
|
29
29
|
|
30
30
|
# http://buildd.debian-ports.org/status/fetch.php?pkg=ruby2.1&arch=m68k&ver=2.1.2-2&stamp=1400604298
|
31
|
-
Debian::AptPkg::Configuration.check_architecture('m68k').must_equal false
|
31
|
+
_(Debian::AptPkg::Configuration.check_architecture('m68k')).must_equal false
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'check_language' do
|
35
|
-
lambda do
|
35
|
+
_(lambda do
|
36
36
|
Debian::AptPkg::Configuration.check_language
|
37
|
-
end.must_raise ArgumentError
|
37
|
+
end).must_raise ArgumentError
|
38
38
|
|
39
39
|
langs = Debian::AptPkg::Configuration.languages
|
40
|
-
Debian::AptPkg::Configuration.check_language(langs.first).must_equal true
|
40
|
+
_(Debian::AptPkg::Configuration.check_language(langs.first)).must_equal true
|
41
41
|
|
42
42
|
c = Debian::AptPkg::Configuration.check_language('gallifreyan')
|
43
|
-
c.must_equal false
|
43
|
+
_(c).must_equal false
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'compressors return an array' do
|
47
47
|
cmps = Debian::AptPkg::Configuration.compressors
|
48
|
-
cmps.must_be_instance_of Array
|
49
|
-
cmps.wont_be_empty
|
50
|
-
cmps.must_include 'gz'
|
48
|
+
_(cmps).must_be_instance_of Array
|
49
|
+
_(cmps).wont_be_empty
|
50
|
+
_(cmps).must_include 'gz'
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'find configuration value' do
|
54
|
-
lambda do
|
54
|
+
_(lambda do
|
55
55
|
Debian::AptPkg::Configuration.config_find
|
56
|
-
end.must_raise ArgumentError
|
56
|
+
end).must_raise ArgumentError
|
57
57
|
|
58
|
-
Debian::AptPkg::Configuration
|
59
|
-
.config_find('Dir::Etc::main')
|
58
|
+
_(Debian::AptPkg::Configuration.config_find('Dir::Etc::main'))
|
60
59
|
.must_equal 'apt.conf'
|
61
|
-
Debian::AptPkg::Configuration
|
62
|
-
.config_find('Dir::Etc::netrc')
|
60
|
+
_(Debian::AptPkg::Configuration.config_find('Dir::Etc::netrc'))
|
63
61
|
.must_equal 'auth.conf'
|
64
|
-
Debian::AptPkg::Configuration
|
65
|
-
.config_find('Dir::Etc::parts')
|
62
|
+
_(Debian::AptPkg::Configuration.config_find('Dir::Etc::parts'))
|
66
63
|
.must_equal 'apt.conf.d'
|
67
|
-
Debian::AptPkg::Configuration
|
68
|
-
.config_find('Spk', 'DebianUser')
|
64
|
+
_(Debian::AptPkg::Configuration.config_find('Spk', 'DebianUser'))
|
69
65
|
.must_equal 'DebianUser'
|
70
66
|
end
|
71
67
|
|
72
68
|
it 'find file' do
|
73
|
-
lambda do
|
69
|
+
_(lambda do
|
74
70
|
Debian::AptPkg::Configuration.config_find_file
|
75
|
-
end.must_raise ArgumentError
|
71
|
+
end).must_raise ArgumentError
|
76
72
|
|
77
|
-
Debian::AptPkg::Configuration
|
78
|
-
.config_find_file('Dir::Etc::main')
|
73
|
+
_(Debian::AptPkg::Configuration.config_find_file('Dir::Etc::main'))
|
79
74
|
.must_equal '/etc/apt/apt.conf'
|
80
|
-
Debian::AptPkg::Configuration
|
81
|
-
.config_find_file('Dir::Etc::netrc')
|
75
|
+
_(Debian::AptPkg::Configuration.config_find_file('Dir::Etc::netrc'))
|
82
76
|
.must_equal '/etc/apt/auth.conf'
|
83
77
|
end
|
84
78
|
end
|
data/test/apt_pkg_test.rb
CHANGED
@@ -13,118 +13,122 @@ describe Debian::AptPkg do
|
|
13
13
|
refute_nil Debian::AptPkg::LIBAPT_PKG_VERSION
|
14
14
|
end
|
15
15
|
|
16
|
+
describe '.init' do
|
17
|
+
it 'returns a bool' do
|
18
|
+
_(Debian::AptPkg.init).must_equal true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
16
22
|
describe '.cmp_version' do
|
17
|
-
it '
|
18
|
-
Debian::AptPkg.cmp_version('1.1', '1.0').must_be :>, 0
|
19
|
-
Debian::AptPkg.cmp_version('1.0', '1.0').must_be :==, 0
|
20
|
-
Debian::AptPkg.cmp_version('1.0', '1.1').must_be :<, 0
|
23
|
+
it 'compare version' do
|
24
|
+
_(Debian::AptPkg.cmp_version('1.1', '1.0')).must_be :>, 0
|
25
|
+
_(Debian::AptPkg.cmp_version('1.0', '1.0')).must_be :==, 0
|
26
|
+
_(Debian::AptPkg.cmp_version('1.0', '1.1')).must_be :<, 0
|
21
27
|
end
|
22
28
|
end
|
23
29
|
|
24
30
|
describe '.check_dep' do
|
25
31
|
describe 'LessEq' do
|
26
|
-
it '
|
27
|
-
Debian::AptPkg.check_dep('1', '<=', '2').must_equal true
|
28
|
-
Debian::AptPkg.check_dep('2', '<=', '1').must_equal false
|
29
|
-
Debian::AptPkg.check_dep('1', '<=', '1').must_equal true
|
32
|
+
it 'compare Debian version' do
|
33
|
+
_(Debian::AptPkg.check_dep('1', '<=', '2')).must_equal true
|
34
|
+
_(Debian::AptPkg.check_dep('2', '<=', '1')).must_equal false
|
35
|
+
_(Debian::AptPkg.check_dep('1', '<=', '1')).must_equal true
|
30
36
|
end
|
31
37
|
end
|
32
38
|
|
33
39
|
describe 'GreaterEq' do
|
34
|
-
it '
|
35
|
-
Debian::AptPkg.check_dep('1', '>=', '2').must_equal false
|
36
|
-
Debian::AptPkg.check_dep('2', '>=', '1').must_equal true
|
37
|
-
Debian::AptPkg.check_dep('1', '>=', '1').must_equal true
|
40
|
+
it 'compare Debian version' do
|
41
|
+
_(Debian::AptPkg.check_dep('1', '>=', '2')).must_equal false
|
42
|
+
_(Debian::AptPkg.check_dep('2', '>=', '1')).must_equal true
|
43
|
+
_(Debian::AptPkg.check_dep('1', '>=', '1')).must_equal true
|
38
44
|
end
|
39
45
|
end
|
40
46
|
|
41
47
|
describe 'Less' do
|
42
|
-
it '
|
43
|
-
Debian::AptPkg.check_dep('1', '<', '2').must_equal true
|
44
|
-
Debian::AptPkg.check_dep('2', '<', '1').must_equal false
|
45
|
-
Debian::AptPkg.check_dep('1', '<', '1').must_equal false
|
48
|
+
it 'compare Debian version' do
|
49
|
+
_(Debian::AptPkg.check_dep('1', '<', '2')).must_equal true
|
50
|
+
_(Debian::AptPkg.check_dep('2', '<', '1')).must_equal false
|
51
|
+
_(Debian::AptPkg.check_dep('1', '<', '1')).must_equal false
|
46
52
|
end
|
47
53
|
end
|
48
54
|
|
49
55
|
describe 'Greater' do
|
50
|
-
it '
|
51
|
-
Debian::AptPkg.check_dep('1', '>', '2').must_equal false
|
52
|
-
Debian::AptPkg.check_dep('2', '>', '1').must_equal true
|
53
|
-
Debian::AptPkg.check_dep('1', '>', '1').must_equal false
|
56
|
+
it 'compare Debian version' do
|
57
|
+
_(Debian::AptPkg.check_dep('1', '>', '2')).must_equal false
|
58
|
+
_(Debian::AptPkg.check_dep('2', '>', '1')).must_equal true
|
59
|
+
_(Debian::AptPkg.check_dep('1', '>', '1')).must_equal false
|
54
60
|
end
|
55
61
|
end
|
56
62
|
|
57
63
|
describe 'Equals' do
|
58
|
-
it '
|
59
|
-
Debian::AptPkg.check_dep('1', '=', '2').must_equal false
|
60
|
-
Debian::AptPkg.check_dep('2', '=', '1').must_equal false
|
61
|
-
Debian::AptPkg.check_dep('1', '=', '1').must_equal true
|
64
|
+
it 'compare Debian version' do
|
65
|
+
_(Debian::AptPkg.check_dep('1', '=', '2')).must_equal false
|
66
|
+
_(Debian::AptPkg.check_dep('2', '=', '1')).must_equal false
|
67
|
+
_(Debian::AptPkg.check_dep('1', '=', '1')).must_equal true
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
65
71
|
describe 'NotEquals' do
|
66
|
-
it '
|
67
|
-
Debian::AptPkg
|
68
|
-
.check_dep('1', Debian::AptPkg::NOT_EQUALS, '2')
|
72
|
+
it 'compare Debian version' do
|
73
|
+
_(Debian::AptPkg.check_dep('1', Debian::AptPkg::NOT_EQUALS, '2'))
|
69
74
|
.must_equal true
|
70
|
-
Debian::AptPkg
|
71
|
-
.check_dep('2', Debian::AptPkg::NOT_EQUALS, '1')
|
75
|
+
_(Debian::AptPkg.check_dep('2', Debian::AptPkg::NOT_EQUALS, '1'))
|
72
76
|
.must_equal true
|
73
|
-
Debian::AptPkg
|
74
|
-
.check_dep('1', Debian::AptPkg::NOT_EQUALS, '1')
|
77
|
+
_(Debian::AptPkg.check_dep('1', Debian::AptPkg::NOT_EQUALS, '1'))
|
75
78
|
.must_equal false
|
76
79
|
end
|
77
80
|
end
|
78
81
|
|
79
82
|
describe 'Errors' do
|
80
|
-
it '
|
81
|
-
lambda do
|
83
|
+
it 'raise argument error with bad comparison' do
|
84
|
+
_(lambda do
|
82
85
|
Debian::AptPkg.check_dep('1', 'bad', '2')
|
83
|
-
end.must_raise ArgumentError
|
86
|
+
end).must_raise ArgumentError
|
84
87
|
end
|
85
88
|
end
|
86
89
|
end
|
87
90
|
|
88
91
|
describe '.uri_to_filename' do
|
89
|
-
it '
|
90
|
-
Debian::AptPkg
|
91
|
-
.uri_to_filename('http://debian.org/index.html')
|
92
|
+
it 'return a filename which can be used to store the file' do
|
93
|
+
_(Debian::AptPkg.uri_to_filename('http://debian.org/index.html'))
|
92
94
|
.must_equal 'debian.org_index.html'
|
93
95
|
end
|
94
96
|
end
|
95
97
|
|
96
98
|
describe '.upstream_version' do
|
97
99
|
it 'Return the upstream version for the Debian package version' do
|
98
|
-
Debian::AptPkg.upstream_version('3.4.15-1+b1').must_equal '3.4.15'
|
100
|
+
_(Debian::AptPkg.upstream_version('3.4.15-1+b1')).must_equal '3.4.15'
|
99
101
|
end
|
100
102
|
end
|
101
103
|
|
102
104
|
describe '.time_to_str' do
|
103
105
|
it 'Format a given duration in human-readable manner' do
|
104
|
-
Debian::AptPkg.time_to_str(3601).must_equal '1h 0min 1s'
|
106
|
+
_(Debian::AptPkg.time_to_str(3601)).must_equal '1h 0min 1s'
|
105
107
|
end
|
106
108
|
end
|
107
109
|
|
108
110
|
describe '.size_to_str' do
|
109
111
|
it 'Return a string describing the size in a human-readable manner' do
|
110
|
-
Debian::AptPkg.size_to_str(10_000).must_equal '10.0 k'
|
112
|
+
_(Debian::AptPkg.size_to_str(10_000)).must_equal '10.0 k'
|
111
113
|
end
|
112
114
|
end
|
113
115
|
|
114
116
|
describe '.string_to_bool' do
|
115
117
|
it 'Parse the string input and return a boolean' do
|
116
|
-
Debian::AptPkg.string_to_bool('yes').must_equal true
|
117
|
-
Debian::AptPkg.string_to_bool('no').must_equal false
|
118
|
-
Debian::AptPkg.string_to_bool('no-recognized').must_equal false
|
118
|
+
_(Debian::AptPkg.string_to_bool('yes')).must_equal true
|
119
|
+
_(Debian::AptPkg.string_to_bool('no')).must_equal false
|
120
|
+
_(Debian::AptPkg.string_to_bool('no-recognized')).must_equal false
|
119
121
|
end
|
120
122
|
end
|
121
123
|
|
122
124
|
describe '.check_domain_list' do
|
123
125
|
it 'See if the host name given by host is one of the domains given' do
|
124
|
-
Debian::AptPkg.check_domain_list('alioth.debian.org',
|
125
|
-
|
126
|
-
|
127
|
-
|
126
|
+
_(Debian::AptPkg.check_domain_list('alioth.debian.org',
|
127
|
+
'debian.net,debian.org'))
|
128
|
+
.must_equal true
|
129
|
+
_(Debian::AptPkg.check_domain_list('git.debian.org',
|
130
|
+
'spkdev.net'))
|
131
|
+
.must_equal false
|
128
132
|
end
|
129
133
|
end
|
130
134
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../../test_helper'
|
3
|
+
|
4
|
+
describe Debian::AptPkg::Package do
|
5
|
+
let(:id) { 42 }
|
6
|
+
let(:pkg_name) { "ed" }
|
7
|
+
let(:full_name) { "ed:i386" }
|
8
|
+
let(:arch) { "i386" }
|
9
|
+
let(:essential) { false }
|
10
|
+
let(:important) { false }
|
11
|
+
let(:current_version) { nil }
|
12
|
+
|
13
|
+
describe '.new' do
|
14
|
+
describe 'with correct number of arguments' do
|
15
|
+
it 'can initialize a Package class' do
|
16
|
+
Debian::AptPkg::Package.new(id, pkg_name, full_name, arch,
|
17
|
+
essential, important, current_version)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'with wrong number of arguments' do
|
22
|
+
it 'cannot initialize a Package class' do
|
23
|
+
_(lambda do
|
24
|
+
Debian::AptPkg::Package.new(id, pkg_name, full_name, arch,
|
25
|
+
essential, important)
|
26
|
+
end).must_raise ArgumentError
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#is_installed' do
|
32
|
+
subject do
|
33
|
+
Debian::AptPkg::Package.new(id, pkg_name, full_name, arch,
|
34
|
+
essential, important,
|
35
|
+
current_version).is_installed
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'when current_version is present' do
|
39
|
+
let(:current_version) do
|
40
|
+
Debian::AptPkg::Version.new("ed", "1", "editors", "i386", 0, 0, 0, 0, 4)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'returns true' do
|
44
|
+
_(subject).must_equal true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'when current_version is not present' do
|
49
|
+
let(:current_version) { nil }
|
50
|
+
|
51
|
+
it 'returns false' do
|
52
|
+
_(subject).must_equal false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../../test_helper'
|
3
|
+
|
4
|
+
describe Debian::AptPkg::PkgCache do
|
5
|
+
before :all do
|
6
|
+
Debian::AptPkg.init
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.update' do
|
10
|
+
it 'can be called' do
|
11
|
+
Debian::AptPkg::PkgCache.update
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '.gen_caches' do
|
16
|
+
it 'return boolean' do
|
17
|
+
if Process.uid == 0
|
18
|
+
_(Debian::AptPkg::PkgCache.gen_caches).must_equal true
|
19
|
+
else
|
20
|
+
_(Debian::AptPkg::PkgCache.gen_caches).must_equal false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.is_multi_arch' do
|
26
|
+
it 'can be called' do
|
27
|
+
Debian::AptPkg::PkgCache.is_multi_arch
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '.packages' do
|
32
|
+
it 'returns an array of Package' do
|
33
|
+
packages = Debian::AptPkg::PkgCache.packages
|
34
|
+
_(packages).must_be_kind_of Array
|
35
|
+
_(packages.first).must_be_kind_of Debian::AptPkg::Package
|
36
|
+
libapt = packages.find { |pkg| pkg.name == 'libapt-pkg-dev' }
|
37
|
+
_(libapt.id).must_be_kind_of Numeric
|
38
|
+
_(libapt.name).must_equal 'libapt-pkg-dev'
|
39
|
+
_(libapt.full_name).must_match(/libapt-pkg-dev:(\w)/)
|
40
|
+
_(libapt.arch).must_match(/(\w)/)
|
41
|
+
_([true, false]).must_include libapt.essential
|
42
|
+
_([true, false]).must_include libapt.important
|
43
|
+
_(libapt.current_version).must_be_kind_of Debian::AptPkg::Version
|
44
|
+
_(libapt.current_version.parent_package_name).must_equal libapt.name
|
45
|
+
_(libapt.current_version.version_string).must_be_kind_of String
|
46
|
+
_(libapt.current_version.section).must_equal 'libdevel'
|
47
|
+
_(libapt.current_version.arch).must_equal libapt.arch
|
48
|
+
_(libapt.current_version.size).must_be_kind_of Numeric
|
49
|
+
_(libapt.current_version.installed_size).must_be_kind_of Numeric
|
50
|
+
_(libapt.current_version.hash).must_be_kind_of Numeric
|
51
|
+
_(libapt.current_version.id).must_be_kind_of Numeric
|
52
|
+
_(libapt.current_version.priority).must_be_kind_of Numeric
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '.pkg_names' do
|
57
|
+
it 'is deprecated' do
|
58
|
+
out, err = capture_io do
|
59
|
+
Debian::AptPkg::PkgCache.pkg_names('libapt-pkg-dev')
|
60
|
+
end
|
61
|
+
_(out).must_equal ''
|
62
|
+
regexp = /warning:\sDebian::AptPkg::PkgCache\.pkg_names\sis\sdeprecated;\s
|
63
|
+
use\sDebian::AptPkg::PkgCache\.packages\sinstead/x
|
64
|
+
_(err).must_match(regexp)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'no argument' do
|
68
|
+
_(lambda do
|
69
|
+
capture_io do
|
70
|
+
Debian::AptPkg::PkgCache.pkg_names
|
71
|
+
end
|
72
|
+
end).must_raise ArgumentError
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'nil argument' do
|
76
|
+
_(lambda do
|
77
|
+
capture_io do
|
78
|
+
Debian::AptPkg::PkgCache.pkg_names(nil)
|
79
|
+
end
|
80
|
+
end).must_raise ArgumentError
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'blank argument' do
|
84
|
+
_(lambda do
|
85
|
+
capture_io do
|
86
|
+
Debian::AptPkg::PkgCache.pkg_names('')
|
87
|
+
end
|
88
|
+
end).must_raise ArgumentError
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'be filtered' do
|
92
|
+
capture_io do
|
93
|
+
search = Debian::AptPkg::PkgCache.pkg_names('vim')
|
94
|
+
# CI specific cache can not be present
|
95
|
+
unless search.nil? || search.empty?
|
96
|
+
_(search).must_include 'vim'
|
97
|
+
_(search).must_include 'vim-nox'
|
98
|
+
_(search).must_include 'vim-gtk'
|
99
|
+
_(search).wont_include 'emacs'
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
%i(package version depends package_file ver_file provides group).each do |m|
|
106
|
+
describe ".#{m}_count" do
|
107
|
+
it 'return an int' do
|
108
|
+
if Process.uid == 0
|
109
|
+
_(Debian::AptPkg::PkgCache.public_send("#{m}_count")).must_be :>=, 0
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apt-pkg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent Arnoud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '13.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '13.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake-compiler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '1.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '5'
|
47
|
+
version: '5.13'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5'
|
54
|
+
version: '5.13'
|
55
55
|
description: Ruby interface to apt-pkg
|
56
56
|
email: laurent@spkdev.net
|
57
57
|
executables: []
|
@@ -76,11 +76,13 @@ files:
|
|
76
76
|
- ext/apt_pkg/pkgcache.cpp
|
77
77
|
- ext/apt_pkg/pkgcache.h
|
78
78
|
- lib/debian/apt_pkg.rb
|
79
|
-
- lib/debian/apt_pkg/
|
79
|
+
- lib/debian/apt_pkg/gem_version.rb
|
80
|
+
- lib/debian/apt_pkg/package.rb
|
80
81
|
- test/apt_pkg_cache_not_init_integration.rb
|
81
|
-
- test/apt_pkg_cache_test.rb
|
82
82
|
- test/apt_pkg_configuration_test.rb
|
83
83
|
- test/apt_pkg_test.rb
|
84
|
+
- test/debian/apt_pkg/package_test.rb
|
85
|
+
- test/debian/apt_pkg/pkg_cache_test.rb
|
84
86
|
- test/test_helper.rb
|
85
87
|
homepage: http://github.com/spk/ruby-apt-pkg
|
86
88
|
licenses:
|
@@ -102,8 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
104
|
- !ruby/object:Gem::Version
|
103
105
|
version: '0'
|
104
106
|
requirements: []
|
105
|
-
|
106
|
-
rubygems_version: 2.5.1
|
107
|
+
rubygems_version: 3.1.2
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
110
|
summary: Ruby interface to libapt-pkg
|
data/test/apt_pkg_cache_test.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe Debian::AptPkg::PkgCache do
|
4
|
-
before :all do
|
5
|
-
Debian::AptPkg.init
|
6
|
-
end
|
7
|
-
|
8
|
-
describe '.update' do
|
9
|
-
it 'can be called' do
|
10
|
-
Debian::AptPkg::PkgCache.update
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe '.gen_caches' do
|
15
|
-
it 'return boolean' do
|
16
|
-
if Process.uid == 0
|
17
|
-
Debian::AptPkg::PkgCache.gen_caches.must_equal true
|
18
|
-
else
|
19
|
-
Debian::AptPkg::PkgCache.gen_caches.must_equal false
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '.is_multi_arch' do
|
25
|
-
it 'can be called' do
|
26
|
-
Debian::AptPkg::PkgCache.is_multi_arch
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe '.pkg_names' do
|
31
|
-
it 'no argument' do
|
32
|
-
lambda do
|
33
|
-
Debian::AptPkg::PkgCache.pkg_names
|
34
|
-
end.must_raise ArgumentError
|
35
|
-
end
|
36
|
-
it 'nil argument' do
|
37
|
-
lambda do
|
38
|
-
Debian::AptPkg::PkgCache.pkg_names(nil)
|
39
|
-
end.must_raise ArgumentError
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'blank argument' do
|
43
|
-
lambda do
|
44
|
-
Debian::AptPkg::PkgCache.pkg_names('')
|
45
|
-
end.must_raise ArgumentError
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'be filtered' do
|
49
|
-
search = Debian::AptPkg::PkgCache.pkg_names('vim')
|
50
|
-
# CI specific cache can not be present
|
51
|
-
unless search.nil? || search.empty?
|
52
|
-
search.must_include 'vim'
|
53
|
-
search.must_include 'vim-nox'
|
54
|
-
search.must_include 'vim-gtk'
|
55
|
-
search.wont_include 'emacs'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
%i(package version depends package_file ver_file provides group).each do |m|
|
61
|
-
describe ".#{m}_count" do
|
62
|
-
it 'return an int' do
|
63
|
-
if Process.uid == 0
|
64
|
-
Debian::AptPkg::PkgCache.public_send("#{m}_count").must_be :>=, 0
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|