Add test for removed dependencies (#10464)

* Add test for removed dependencies

* Fix the reported issues
This commit is contained in:
Maximilian Downey Twiss
2024-09-13 13:00:32 +10:00
committed by GitHub
parent e29ca72076
commit 3106ff0a2c
7 changed files with 49 additions and 11 deletions

View File

@@ -19,6 +19,7 @@ end
# Package tests
task :package_test do
ruby 'tests/dep_test'
ruby 'tests/prop_test'
ruby 'tests/buildsystem_test'
end

View File

@@ -3,7 +3,7 @@
require 'etc'
OLD_CREW_VERSION ||= defined?(CREW_VERSION) ? CREW_VERSION : '1.0'
CREW_VERSION ||= '1.52.2' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
CREW_VERSION ||= '1.52.3' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
# Kernel architecture.
KERN_ARCH ||= Etc.uname[:machine]

View File

@@ -97,15 +97,13 @@ class Package
pkg_name = File.basename(pkg_file, '.rb')
class_name = pkg_name.capitalize
# Read and eval package script under 'Package' class, using the
# newest file available.
# Read and eval package script under 'Package' class, using the newest file available.
pkg_file = Dir["{#{CREW_LOCAL_REPO_ROOT}/packages,#{CREW_PACKAGES_PATH}}/#{pkg_name}.rb"].max { |a, b| File.mtime(a) <=> File.mtime(b) }
begin
class_eval(File.read(pkg_file, encoding: Encoding::UTF_8), pkg_file) unless const_defined?("Package::#{class_name}")
rescue TypeError
abort "Package file for #{pkg_name} not found.".lightred
end
# If this package has been removed, it won't be found in either directory, so set it back to what it was before to get a nicer error.
pkg_file = "#{CREW_PACKAGES_PATH}/#{pkg_name}.rb" if pkg_file.nil?
class_eval(File.read(pkg_file, encoding: Encoding::UTF_8), pkg_file) unless const_defined?("Package::#{class_name}")
pkg_obj = const_get(class_name)
pkg_obj.name = pkg_name

View File

@@ -19,7 +19,7 @@ class Csvkit < Package
})
depends_on 'py3_six'
depends_on 'py3_agate_dfb'
depends_on 'py3_agate_dbf'
depends_on 'py3_agate'
depends_on 'py3_agate_excel'
depends_on 'py3_agate_sql'

View File

@@ -18,7 +18,6 @@ class Mutter < Meson
# depends_on 'ccache' => :build
depends_on 'dconf'
depends_on 'gnome_settings_daemon'
depends_on 'gobject_introspection' => :build
depends_on 'gsettings_desktop_schemas'
depends_on 'libcanberra'

View File

@@ -18,7 +18,7 @@ class Textract < Package
depends_on 'py3_pdfminer_six'
depends_on 'py3_ebooklib'
depends_on 'py3_pptx'
depends_on 'py3_python_pptx'
depends_on 'py3_extract_msg'
depends_on 'py3_xlrd'
depends_on 'py3_docx2txt'

40
tests/dep_test Executable file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env ruby
require_relative '../lib/const'
require_relative '../lib/color'
require_relative '../lib/package'
# Add >LOCAL< lib to LOAD_PATH so that packages can be loaded
$LOAD_PATH.unshift File.join(CREW_LIB_PATH, 'lib')
def check_for_removed_dependencies(pkg, verbose: false)
pkg.get_deps_list
puts "Removed dependency test for #{pkg.name} passed.".lightgreen if verbose
return 0
rescue Errno::ENOENT => e
puts "#{pkg.name} depends on removed package #{e.to_s[%r{/packages/(\w+)\.rb}, 1]}".lightred
puts "Removed dependency test for #{pkg.name} failed.".lightred
return 1
end
if ARGV[0]
ARGV.each do |name|
if File.file?(File.join(CREW_PACKAGES_PATH, "#{name}.rb"))
check_for_removed_dependencies(Package.load_package(File.join(CREW_PACKAGES_PATH, "#{name}.rb")), verbose: true)
else
puts "Package #{name} not found.".lightred
end
end
else
failed_packages = 0
Dir["#{CREW_PACKAGES_PATH}/*.rb"].each do |filename|
failed_packages += check_for_removed_dependencies(Package.load_package(filename))
end
if failed_packages.positive?
puts "\n#{failed_packages} packages failed dependency tests.".lightred
exit(1)
else
puts "\nAll packages passed dependency tests.".lightgreen
end
end