Files
chromebrew/tests/prop_test
Maximilian Downey Twiss 7325468db2 More python cleanups (#10452)
* Add unit tests for conflicting package properties

* Fix the reported issues
2024-09-11 10:36:58 -04:00

73 lines
2.7 KiB
Ruby
Executable File

#!/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_properties(name)
puts "Checking #{name} package ...".yellow
# List out all the possible failure states
empty_description = @pkg.description.to_s.empty?
empty_homepage = @pkg.homepage.to_s.empty?
empty_version = @pkg.version.to_s.empty?
empty_license = @pkg.license.to_s.empty?
empty_compatibility = @pkg.compatibility.to_s.empty?
# Certain fake packages set up to act as aliases (we should probably move on from these) do not have source_url values.
empty_source_url = @pkg.source_url.to_s.empty? && !@pkg.is_fake?
both_binary_compression_and_no_compile_needed = @pkg.no_compile_needed? && !@pkg.binary_compression.to_s.empty?
non_skip_source_url_and_no_source_build = @pkg.no_source_build? && !@pkg.source_url.eql?('SKIP')
# Tell the user what specific test fiailed.
puts "#{name} is missing a description.".lightred if empty_description
puts "#{name} is missing a homepage.".lightred if empty_homepage
puts "#{name} is missing a version.".lightred if empty_version
puts "#{name} is missing a license.".lightred if empty_license
puts "#{name} is missing a compatibility.".lightred if empty_compatibility
puts "#{name} is missing a source_url.".lightred if empty_source_url
puts "#{name} has a binary_compression value and a no_compile_needed value." if both_binary_compression_and_no_compile_needed
puts "#{name} has a non-SKIP source_url and a no_source_build value." if non_skip_source_url_and_no_source_build
# Check that if the tests passed.
if empty_description || empty_homepage || empty_version || empty_license || empty_compatibility || empty_source_url || both_binary_compression_and_no_compile_needed || non_skip_source_url_and_no_source_build
puts "Property tests for #{name} failed.".lightred
@tofail += 1
else
puts "Property tests for #{name} passed.".lightgreen
end
end
@tofail = 0
warn_level = $VERBOSE
$VERBOSE = nil
if ARGV[0]
ARGV.each do |arg|
next if %w[-V --version].include?(arg)
if File.file? "../packages/#{arg}.rb"
@pkg = Package.load_package("../packages/#{arg}.rb")
check_properties(arg)
else
puts "Package #{arg} not found.".lightred
end
end
else
Dir['../packages/*.rb'].each do |filename|
@pkg = Package.load_package(filename)
name = File.basename(filename, '.rb').gsub('_', '-')
check_properties(name)
end
if @tofail.positive?
puts "\n#{@tofail} packages failed property tests.".lightred
exit(1)
else
puts "\nAll packages passed property tests.".lightgreen
end
end
$VERBOSE = warn_level