mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-07 22:54:11 -05:00
Add library test (#14017)
This commit is contained in:
75
tests/library_test
Executable file
75
tests/library_test
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/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_libraries(pkg_path, verbose: false)
|
||||
name = File.basename(pkg_path, '.rb')
|
||||
puts "Checking #{name} package ...".yellow if verbose
|
||||
# If the package is invalid, it will almost certainly raise a NameError when we attempt to load it.
|
||||
begin
|
||||
Package.load_package(pkg_path)
|
||||
rescue NameError => e
|
||||
e.name.to_s
|
||||
end
|
||||
|
||||
filelist = "#{CREW_LIB_PATH}/manifest/#{ARCH}/#{name[0]}/#{name}.filelist"
|
||||
unless File.exist?(filelist)
|
||||
puts "The manifest #{filelist} does not exist.".lightred
|
||||
puts "Library test for #{name} failed.".lightred
|
||||
return 1
|
||||
end
|
||||
|
||||
libraries = `grep -E "^#{CREW_PREFIX}/lib" "#{filelist}" | grep -vE "^#{CREW_PREFIX}/libexec/" | grep -vE "^#{CREW_PREFIX}/lib/perl" | grep -vE "^#{CREW_PREFIX}/lib/python"`.chomp
|
||||
if libraries.empty?
|
||||
puts "Library test for #{name} passed.".lightgreen if verbose
|
||||
return 0
|
||||
else
|
||||
valid_libraries = `grep -E "^#{CREW_LIB_PREFIX}/" "#{filelist}" | grep -vE "^#{CREW_PREFIX}/libexec/" | grep -vE "^#{CREW_PREFIX}/lib/perl" | grep -vE "^#{CREW_PREFIX}/lib/python"`.chomp
|
||||
if valid_libraries.empty?
|
||||
puts 'All libraries:'
|
||||
puts libraries
|
||||
puts 'Invalid library paths.'.lightred
|
||||
puts "Library test for #{name} failed.".lightred
|
||||
return 1
|
||||
elsif libraries != valid_libraries
|
||||
puts 'All libraries:'
|
||||
puts libraries
|
||||
puts 'Valid libraries:'
|
||||
puts valid_libraries
|
||||
puts 'Invalid library paths.'.lightred
|
||||
puts "Library test for #{name} failed.".lightred
|
||||
return 1
|
||||
else
|
||||
puts "Library test for #{name} passed.".lightgreen if verbose
|
||||
return 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ARGV[0]
|
||||
ARGV.each do |name|
|
||||
if File.file?(File.join(CREW_PACKAGES_PATH, "#{name}.rb"))
|
||||
test_result = check_libraries(File.join(CREW_PACKAGES_PATH, "#{name}.rb"), verbose: true)
|
||||
exit(1) if test_result.positive?
|
||||
else
|
||||
puts "Package #{name} not found.".lightred
|
||||
end
|
||||
end
|
||||
else
|
||||
failed_packages = 0
|
||||
Dir["#{CREW_PACKAGES_PATH}/*.rb"].each do |filename|
|
||||
failed_packages += check_libraries(filename)
|
||||
end
|
||||
|
||||
if failed_packages.positive?
|
||||
puts "\n#{failed_packages} packages failed library tests.".lightred
|
||||
exit(1)
|
||||
else
|
||||
puts "\nAll packages passed library tests.".lightgreen
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user