mock build

This commit is contained in:
alexey
2025-03-15 00:01:18 +03:00
parent 9cf2aabc65
commit 998f87cee3
61 changed files with 3581 additions and 37 deletions

View File

@@ -0,0 +1,49 @@
Name: a
Version: 1.0
Release: 0
License: GPLv2
Summary: Minimal package example
Url: http://www.a.com
Group: Development
Source: a-1.0.tar.gz
BuildRequires: c d
Provides: something
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Description
%package devel
Summary: Development part
%description devel
Development headers
%prep
%setup -q
%build
%configure
make %{?_smp_mflags}
%install
%make_install
%clean
%{?buildroot:%__rm -rf "%{buildroot}"}
%post
%postun
%files
%defattr(-,root,root)
%doc ChangeLog README COPYING
%{_datadir}/a/README
%files devel
%{_includedir}/a.h
%changelog

Binary file not shown.

View File

@@ -0,0 +1,38 @@
Name: simple
Version: 1.0
Release: 0
License: GPL
Summary: Simple dummy package
Summary(es): Paquete simple de muestra
Url: http://www.dummmy.com
Group: Development
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Dummy package
%description -l es
Paquete de muestra
%prep
%build
mkdir -p %{buildroot}%{_datadir}/%{name}
echo "Hello" > %{buildroot}%{_datadir}/%{name}/README
echo "Hola" > %{buildroot}%{_datadir}/%{name}/README.es
%install
%clean
%{?buildroot:%__rm -rf "%{buildroot}"}
%files
%defattr(-,root,root)
%{_datadir}/%{name}/README
%{_datadir}/%{name}/README.es
%changelog
* Wed Nov 06 2011 Duncan Mac-Vicar P. <dmacvicar@suse.de>
- Fix something
* Tue Nov 05 2011 Duncan Mac-Vicar P. <dmacvicar@suse.de>
- Fix something else

View File

@@ -0,0 +1,41 @@
Name: simple_with_deps
Version: 1.0
Release: 0
License: GPL
Summary: Simple dummy package
Url: http://www.dummmy.com
Group: Development
Requires: a
Requires: b > 1.0
Conflicts: c d
Obsoletes: f
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Dummy package
%description -l es
Paquete de muestra
%prep
%build
mkdir -p %{buildroot}%{_datadir}/%{name}
echo "Hello" > %{buildroot}%{_datadir}/%{name}/README
echo "Hola" > %{buildroot}%{_datadir}/%{name}/README.es
%install
%clean
%{?buildroot:%__rm -rf "%{buildroot}"}
%files
%defattr(-,root,root)
%{_datadir}/%{name}/README
%{_datadir}/%{name}/README.es
%changelog
* Wed Nov 06 2011 Duncan Mac-Vicar P. <dmacvicar@suse.de>
- Fix something
* Tue Nov 05 2011 Duncan Mac-Vicar P. <dmacvicar@suse.de>
- Fix something else

View File

@@ -0,0 +1,7 @@
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
require 'minitest/autorun'
require 'rpm'
def fixture(name)
File.expand_path(File.join(File.dirname(__FILE__), 'data', name))
end

View File

@@ -0,0 +1,28 @@
require_relative('helper')
require 'rpm/compat'
class RPMDependencyTests < Minitest::Test
EQ = RPM::SENSE_EQUAL
LT = RPM::SENSE_LESS
GT = RPM::SENSE_GREATER
def test_satisfy
prv = provides('foo', '2', '1', 0, EQ)
req = requires('foo', '1', '1', 0, EQ | GT)
assert(req.satisfy?(prv))
assert(prv.satisfy?(req))
# Different names don't overlap
prv = provides('foo', '2', '1', 0, EQ)
req = requires('bar', '1', '1', 0, EQ | GT)
assert(!req.satisfy?(prv))
end
def provides(name, v, r, e, sense)
RPM::Provide.new(name, RPM::Version.new(v, r, e), sense, nil)
end
def requires(name, v, r, e, sense)
RPM::Require.new(name, RPM::Version.new(v, r, e), sense, nil)
end
end

View File

@@ -0,0 +1,36 @@
require File.join(File.dirname(__FILE__), 'helper')
class RPMFileTests < Minitest::Test
def test_link_to
f = RPM::File.new('path', 'md5sum', nil, 42, 1,
'owner', 'group', 43, 0o777, 44, 45)
assert_equal(nil, f.link_to)
f = RPM::File.new('path', 'md5sum', 'link_to', 42, 1,
'owner', 'group', 43, 0o777, 44, 45)
assert_equal('link_to', f.link_to)
end
def test_flags
f = RPM::File.new('path', 'md5sum', nil, 42, 1,
'owner', 'group', 43, 0o777, 44, 45)
f.config?
f.doc?
f.is_missingok?
f.is_noreplace?
f.is_specfile?
f.ghost?
f.license?
f.readme?
f.replaced?
f.notinstalled?
f.netshared?
assert_raises NotImplementedError do
f.exclude?
end
assert_raises NotImplementedError do
f.donotuse?
end
end
end

View File

@@ -0,0 +1,33 @@
require File.join(File.dirname(__FILE__), 'helper')
class RPMLibTests < Minitest::Test
def test_lib_lib
assert_kind_of String, RPM::C.RPMVERSION
# "x.y.z"
assert(RPM::C.RPMVERSION.size >= 5)
assert_kind_of Integer, RPM::C.rpm_version_code
# >= 4.0.0
assert(RPM::C.rpm_version_code >= ((4 << 16) + (0 << 8) + (0 << 0)))
end
def test_lib_header
ptr = RPM::C.headerNew
RPM::C.headerFree(ptr)
end
def test_lib_ts
ts = RPM::C.rpmtsCreate
RPM::C.rpmtsSetRootDir(ts, '/')
it = RPM::C.rpmtsInitIterator(ts, 0, nil, 0)
hdrs = []
until (hdr = RPM::C.rpmdbNextIterator(it)).null?
hdrs << hdr
assert_kind_of String, RPM::C.headerGetAsString(hdr, :name)
end
RPM::C.rpmdbFreeIterator(it)
end
def test_lib_macros
assert_kind_of String, RPM::C.MACROFILES
end
end

View File

@@ -0,0 +1,76 @@
require File.join(File.dirname(__FILE__), 'helper')
class RPMHeaderTests < Minitest::Test
def test_create
pkg = RPM::Package.create('foo', RPM::Version.new('1.0'))
assert_equal 'foo', pkg.name
assert_equal '(none)', pkg.signature
end
def test_open
pkg = RPM::Package.open(fixture('simple-1.0-0.i586.rpm'))
req = RPM::Require.new('simple', RPM::Version.new('1.0', '0'), RPM::SENSE_GREATER | RPM::SENSE_EQUAL, nil)
assert req.satisfy?(pkg)
assert_equal 'simple-1.0-0-i586', pkg.to_s
assert_equal '3b5f9d468c877166532c662e29f43bc3', pkg.signature
assert_kind_of RPM::Package, pkg
assert_equal 'simple', pkg[:name]
assert_equal 'i586', pkg[:arch]
assert_kind_of RPM::Version, pkg.version
assert_equal '1.0-0', pkg.version.to_s
backup_lang = ENV['LC_ALL']
ENV['LC_ALL'] = 'C'
assert_equal 'Simple dummy package', pkg[:summary]
assert_equal 'Dummy package', pkg[:description]
ENV['LC_ALL'] = 'es_ES.UTF-8'
assert_equal 'Paquete simple de muestra', pkg[:summary]
assert_equal 'Paquete de muestra', pkg[:description]
ENV['LC_ALL'] = backup_lang
# Arrays
assert_equal %w[root root], pkg[:fileusername]
assert_equal [6, 5], pkg[:filesizes]
assert pkg.provides.map(&:name).include?('simple(x86-32)')
assert pkg.provides.map(&:name).include?('simple')
assert pkg.files.map(&:path).include?('/usr/share/simple/README')
assert pkg.files.map(&:path).include?('/usr/share/simple/README.es')
assert pkg.conflicts.empty?
assert pkg.requires.map(&:name).include?('rpmlib(PayloadIsLzma)')
assert pkg.obsoletes.empty?
file = pkg.files.select { |x| x.path == '/usr/share/simple/README' }.first
assert_nil file.link_to
assert !file.symlink?
assert_equal ['- Fix something', '- Fix something else'], pkg.changelog.map(&:text)
end
def test_dependencies
pkg = RPM::Package.open(fixture('simple_with_deps-1.0-0.i586.rpm'))
assert_equal 'simple_with_deps', pkg.name
assert pkg.provides.map(&:name).include?('simple_with_deps(x86-32)')
assert pkg.provides.map(&:name).include?('simple_with_deps')
assert pkg.requires.map(&:name).include?('a')
b = pkg.requires.find { |x| x.name == 'b' }
assert b
assert_equal '1.0', b.version.to_s
assert pkg.conflicts.map(&:name).include?('c')
assert pkg.conflicts.map(&:name).include?('d')
assert pkg.obsoletes.map(&:name).include?('f')
end
end

View File

@@ -0,0 +1,18 @@
require File.join(File.dirname(__FILE__), 'helper')
class RPMHeaderTests < Minitest::Test
def test_create
problem = RPM::Problem.create(:requires, 'foo-1.0-0', 'foo.rpm', 'bar-1.0-0', 'Hello', 1)
assert_equal 'foo.rpm', problem.key
assert_equal :requires, problem.type
assert_equal 'Hello', problem.str
assert_equal 'Hello is needed by (installed) bar-1.0-0', problem.to_s
# Create a RPM::Problem from an existing pointer
problem2 = RPM::Problem.new(problem.ptr)
assert_equal problem.key, problem2.key
assert_equal problem.type, problem2.type
assert_equal problem.str, problem2.str
assert_equal problem.to_s, problem2.to_s
end
end

View File

@@ -0,0 +1,35 @@
require File.join(File.dirname(__FILE__), 'helper')
class RPMRPMTests < Minitest::Test
def test_enum
assert RPM::TAG[:not_found]
end
def test_compat
# puts RPM::LOG_ALERT
# assert_raise(NameError) { RPM::LOG_ALERT }
# require 'rpm/compat'
# Nothing should be raised by the following statement
RPM::LOG_ALERT
assert_equal RPM::LOG_ALERT, RPM::LOG[:alert]
end
def test_iterator
RPM.transaction do |t|
assert_kind_of RPM::Transaction, t
# t.each do |pkg|
# puts pkg[:name]
# end
end
end
def test_macro_read
assert_equal '/usr', RPM['_usr']
end
def test_macro_write
RPM['hoge'] = 'hoge'
assert_equal(RPM['hoge'], 'hoge')
end
end # class RPM_RPM_Tests < Test::Unit::TestCase

View File

@@ -0,0 +1,156 @@
require_relative('helper')
require 'tmpdir'
require 'pathname'
class RPMTransactionTests < Minitest::Test
PACKAGE_FILENAME = 'simple-1.0-0.i586.rpm'.freeze
def test_flags
RPM.transaction do |t|
assert_equal RPM::TRANS_FLAG_NONE, t.flags
t.flags = RPM::TRANS_FLAG_TEST
assert_equal RPM::TRANS_FLAG_TEST, t.flags
end
end
def test_iterator
RPM.transaction do |t|
it = t.init_iterator(nil, nil)
assert_kind_of RPM::MatchIterator, it
# assert it.count > 0
end
RPM.transaction do |t|
it = t.init_iterator(nil, nil)
it.regexp(:name, :glob, '*audio*')
it.each do |pkg|
assert pkg.name.include?('audio'), "'#{pkg.name}' contains 'audio'"
end
end
end
# FIXME: this is not working
def test_iterator_version
RPM.transaction do |t|
it = t.init_iterator(nil, nil)
it.version(RPM::Version.new('2.1'))
it.each do |sig|
# FIXME: check that this worked
end
end
end
def test_basic_transaction_setters
Dir.mktmpdir do |dir|
RPM.transaction do |t|
assert_equal '/', t.root_dir
t.root_dir = dir
assert_equal dir + '/', t.root_dir
end
end
Dir.mktmpdir do |dir|
RPM.transaction(dir) do |t|
assert_equal dir + '/', t.root_dir
end
end
end
def test_test_flag_install
pkg = RPM::Package.open(fixture(PACKAGE_FILENAME))
Dir.mktmpdir do |dir|
RPM.transaction(dir) do |t|
t.flags = RPM::TRANS_FLAG_TEST
t.install(pkg, fixture(PACKAGE_FILENAME))
t.commit
rpmdb_file = RPM::C.rpmvercmp(RPM::C.RPMVERSION, '4.16.0') >= 0 ? 'rpmdb.sqlite' : 'Packages'
assert File.exist?(File.join(dir, RPM['_dbpath'], rpmdb_file)), 'rpm db exists'
assert !File.exist?('/usr/share/simple/README'), "package #{pkg} was not installed"
ensure
# Force close so that RPM does not try to do it
# when the tmpdir is deleted
t.db.close
end
end
end
def test_install_and_remove
pkg = RPM::Package.open(fixture(PACKAGE_FILENAME))
Dir.mktmpdir do |dir|
RPM.transaction(dir) do |t|
begin
t.install(pkg, fixture(PACKAGE_FILENAME))
t.commit
rpmdb_file = RPM::C.rpmvercmp(RPM::C.RPMVERSION, '4.16.0') >= 0 ? 'rpmdb.sqlite' : 'Packages'
assert File.exist?(File.join(dir, RPM['_dbpath'], rpmdb_file)), 'rpm db exists'
assert File.exist?(File.join(dir, '/usr/share/simple/README')), "package #{pkg} should be installed"
ensure
# Force close so that RPM does not try to do it
# when the tmpdir is deleted
t.db.close
end
end
skip("Commit hangs on package delete")
RPM.transaction(dir) do |t|
begin
assert_raises TypeError do
t.delete(Object.new)
end
t.delete(pkg)
t.order
t.clean
t.commit
assert !File.exist?(File.join(dir, '/usr/share/simple/README')), "package #{pkg} should not be installed"
ensure
# Force close so that RPM does not try to do it
# when the tmpdir is deleted
t.db.close
end
end
end
end
def test_install_with_custom_callback
pkg = RPM::Package.open(fixture(PACKAGE_FILENAME))
Dir.mktmpdir do |dir|
RPM.transaction(dir) do |t|
begin
t.install(pkg, fixture(PACKAGE_FILENAME))
t.check do |problem|
STDERR.puts "Problem: #{problem}"
end
t.order
t.clean
t.commit do |data|
next case data.type
when :inst_open_file then
@f = File.open(data.key, 'r')
when :inst_close_file then @f.close
end
end
assert File.exist?(File.join(dir, '/usr/share/simple/README')),
"package #{pkg} should be installed"
ensure
# Force close so that RPM does not try to do it
# when the tmpdir is deleted
t.db.close
end
end
end
end
end

View File

@@ -0,0 +1,64 @@
require File.join(File.dirname(__FILE__), 'helper')
class RPMVersionTests < Minitest::Test
def setup
@a = RPM::Version.new('1.0.0-0.1m')
@b = RPM::Version.new('0.9.0-1m')
@c = RPM::Version.new('1.0.0-0.11m')
@d = RPM::Version.new('0.9.0-1m', 1)
end
def test_parse_evr
assert_equal [23, '1.0.3', '1suse'],
RPM::Version.parse_evr('23:1.0.3-1suse')
assert_equal [nil, '1.0', nil],
RPM::Version.parse_evr('1.0')
assert_equal [nil, '2.0', '3'],
RPM::Version.parse_evr('2.0-3')
end
def test_version_compare
assert(@a > @b)
assert(@a < @c)
assert(@a < @d)
end
def test_version_newer?
assert(@a.newer?(@b))
assert(@c.newer?(@a))
assert(@d.newer?(@a))
assert(!@a.newer?(@a))
end
def test_version_older?
assert(@b.older?(@a))
assert(@a.older?(@c))
assert(@a.older?(@d))
assert(!@a.older?(@a))
end
def test_vre
assert_equal('0.9.0', @d.v)
assert_equal('1m', @d.r)
assert_equal(1, @d.e)
end
def test_to_s
assert_equal('0.9.0-1m', @b.to_s)
assert_equal('0.9.0-1m', @d.to_s)
end
def test_to_vre
assert_equal('0.9.0-1m', @b.to_vre)
assert_equal('1:0.9.0-1m', @d.to_vre)
end
def test_epoch_none_zero
v1 = RPM::Version.new('1-2')
v2 = RPM::Version.new('0:1-2')
assert_nil v1.e
assert_equal(0, v2.e)
assert(v1 == v2)
assert_equal(v1.hash, v2.hash)
end
end