Files
chromebrew/tests/lib/package_utils.rb
2024-09-11 13:33:24 -04:00

170 lines
6.3 KiB
Ruby

require 'minitest/autorun'
require_relative '../../lib/const'
require_relative '../../lib/package'
require_relative '../../lib/package_utils'
class PackageUtilsTest < Minitest::Test
def test_installed
# Ruby is guaranteed to be installed as it is an essential package.
assert(PackageUtils.installed?('ruby'))
end
def test_not_installed
# Create a nonsense package name which will not be installed.
refute(PackageUtils.installed?('99notinstalled'))
end
def test_compatible_all
# Packages with 'all' compatibility are compatible on all architectures.
pkg = Class.new(Package)
pkg.instance_eval do
compatibility 'all'
end
assert(PackageUtils.compatible?(pkg))
end
def test_compatible_multiple_values
# Packages with a compatibility value that includes the current architecture are compatible with the current architecture.
pkg = Class.new(Package)
pkg.instance_eval do
compatibility "ia64 #{ARCH}"
end
assert(PackageUtils.compatible?(pkg))
end
def test_compatible_single_value
# Packages with a compatibility value that is the current architecture are compatible with the current architecture.
pkg = Class.new(Package)
pkg.instance_eval do
compatibility ARCH
end
assert(PackageUtils.compatible?(pkg))
end
def test_not_compatible_arch
# No packages are compatible with the Alternate Instruction Set architecture
pkg = Class.new(Package)
pkg.instance_eval do
compatibility 'ais'
end
refute(PackageUtils.compatible?(pkg))
end
def test_get_binary_url_old_hash
pkg = Class.new(Package)
pkg.name = 'hello_world_chromebrew'
pkg.instance_eval do
version '1.1'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '29185a6c4a8ecc3532606649f5831e37cd977c24bfd4fb1c12328ca5ba966ff1',
armv7l: '29185a6c4a8ecc3532606649f5831e37cd977c24bfd4fb1c12328ca5ba966ff1',
i686: '6e46c31245e9e17eeecf03d61454bb7312b6e769bfaf352ced527ee93cc62518',
x86_64: '83f674b3e8fe29c7e761ce6adc27fd7df927d985140ff6d1ae64a0046339322b'
})
end
package_file_id = { aarch64: '137956464', armv7l: '137956464', i686: '137956442', x86_64: '137956370' }
assert_equal("https://gitlab.com/chromebrew/binaries/-/package_files/#{package_file_id[ARCH.to_sym]}/download", PackageUtils.get_url(pkg))
end
def test_get_binary_url_new_hash
pkg = Class.new(Package)
pkg.name = 'hello_world_chromebrew'
pkg.instance_eval do
version '1.1'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '827f9794864aa76f4c99fd31f989077f1fa65771386f73db30a7681842f8736d',
armv7l: '827f9794864aa76f4c99fd31f989077f1fa65771386f73db30a7681842f8736d',
i686: 'ff0942c505b04982fed187bcda123adead37b3ac2dcfd7e2f0543ca179e81df6',
x86_64: '3081f1f25950c91f75db41095b644a2783987a3a7ef2832fc2b85bf138bb006f'
})
end
package_file_id = { aarch64: '137956527', armv7l: '137956527', i686: '137956521', x86_64: '137956520' }
assert_equal("https://gitlab.com/chromebrew/binaries/-/package_files/#{package_file_id[ARCH.to_sym]}/download", PackageUtils.get_url(pkg))
end
def test_get_source_url_hash
pkg = Class.new(Package)
pkg.instance_eval do
source_url({ ARCH.to_sym => 'https://example.com/example_package.tar.bz3' })
end
assert_equal('https://example.com/example_package.tar.bz3', PackageUtils.get_url(pkg))
end
def test_get_source_url
pkg = Class.new(Package)
pkg.instance_eval do
source_url 'https://example.com/other_example_package.tar.zst'
end
assert_equal('https://example.com/other_example_package.tar.zst', PackageUtils.get_url(pkg))
end
def test_get_url_build_from_source
pkg = Class.new(Package)
pkg.instance_eval do
version '1.0'
source_url 'https://example.com/another_example_package.tar.xz'
binary_compression 'tar.zst'
binary_sha256({ ARCH.to_sym => '0000000000000000000000000000000000000000000000000000000000000000' })
end
assert_equal('https://example.com/another_example_package.tar.xz', PackageUtils.get_url(pkg, build_from_source: true))
end
def test_get_binary_sha256
pkg = Class.new(Package)
pkg.instance_eval do
binary_sha256({ ARCH.to_sym => '1111111111111111111111111111111111111111111111111111111111111111' })
end
assert_equal('1111111111111111111111111111111111111111111111111111111111111111', PackageUtils.get_sha256(pkg))
end
def test_get_source_sha256_hash
pkg = Class.new(Package)
pkg.instance_eval do
source_sha256({ ARCH.to_sym => '2222222222222222222222222222222222222222222222222222222222222222' })
end
assert_equal('2222222222222222222222222222222222222222222222222222222222222222', PackageUtils.get_sha256(pkg))
end
def test_get_source_sha256
pkg = Class.new(Package)
pkg.instance_eval do
source_sha256 '3333333333333333333333333333333333333333333333333333333333333333'
end
assert_equal('3333333333333333333333333333333333333333333333333333333333333333', PackageUtils.get_sha256(pkg))
end
def test_get_sha256_build_from_source
pkg = Class.new(Package)
pkg.instance_eval do
source_sha256 '4444444444444444444444444444444444444444444444444444444444444444'
binary_sha256({ ARCH.to_sym => '0000000000000000000000000000000000000000000000000000000000000000' })
end
assert_equal('4444444444444444444444444444444444444444444444444444444444444444', PackageUtils.get_sha256(pkg, build_from_source: true))
end
def test_get_clean_python_version
assert_equal('1.2.3', PackageUtils.get_clean_version('1.2.3-py3.12'))
end
def test_get_clean_perl_version
assert_equal('0.004.2', PackageUtils.get_clean_version('0.004.2-perl5.40'))
end
def test_get_clean_llvm_version
assert_equal('72.93', PackageUtils.get_clean_version('72.93-llvm18'))
end
def test_get_clean_glibc_version
assert_equal('9.5.18', PackageUtils.get_clean_version('9.5.18-glibc2.39'))
end
def test_get_clean_git_version
assert_equal('0.0.7', PackageUtils.get_clean_version('0.0.7-8ab26so'))
assert_equal('8.2.4-2', PackageUtils.get_clean_version('8.2.4-2-zh725k9'))
assert_equal('579-4', PackageUtils.get_clean_version('579-4-1628457'))
assert_equal('2.1.5-20220429', PackageUtils.get_clean_version('2.1.5-20220429'))
end
end