Added unit test for Debian importer

This commit is contained in:
Christoph Haas 2015-04-23 22:35:15 +02:00
parent 785191e2c2
commit f9279337ed
2 changed files with 88 additions and 0 deletions

View file

@ -42,4 +42,20 @@ Debshots::Application.configure do
# URL prefix leading to the static images that should get delivered by the web server
config.images_path_prefix = '/screenshots'
# DEB package repositories to parse when running "rake debshots:... tasks"
config.package_sources = [
{
description: 'Development test files', type: 'apt', url: 'lib/tasks/files/',
architectures: ['i386', 'amd64']
#components: ['main','restricted','universe','multiverse']
}
]
config.images_path = Rails.root.join('public', 'screenshots')
config.image_sizes = {
large: '800x600',
small: '160x120',
}
end

View file

@ -0,0 +1,72 @@
require 'open-uri' # allows to load URLs using open()
require 'deb_importer'
require 'test_helper'
include DebImporter
class PackagesHelperTest < ActionView::TestCase
# class PackagesHelperTest < MiniTest::Spec
test "should be able to parse local Debian repository test files" do
expected_package_counts = {
main: {
amd64: 8320,
i386: 8082
},
restricted: {
amd64: 21,
i386: 21
},
universe: {
amd64: 29406,
i386: 29471
},
multiverse: {
amd64: 672,
i386: 685
}
}
repositories = Rails.configuration.package_sources
Rails.logger = Logger.new(STDOUT)
Rails.logger.level = Logger::INFO
# Rails.logger.level = Logger::DEBUG
Rails.logger.info "Listing configured DEB repositories"
repositories.each do |repository|
wanted_architectures = repository[:architectures]
Rails.logger.info "Fetching Release file for repository: #{repository[:url]} with components: #{repository[:components]}"
release = DebImporter::Release.new(repository[:url], repository[:components])
Rails.logger.info "> Supported architectures are: #{release.architectures}"
if wanted_architectures
Rails.logger.info "> We only want architectures: #{wanted_architectures}"
end
Rails.logger.info "> Supported components are: #{release.components}"
release.components.split.each do |component|
Rails.logger.info "> Component: #{component}"
release.architectures.split.each do |architecture|
if wanted_architectures and not wanted_architectures.include?(architecture)
Rails.logger.debug "Architecture #{architecture} not wanted. Skipping."
next
end
Rails.logger.info ">> Architecture: #{architecture}"
packages = release.packages(component, architecture)
packages_count = packages.count
if packages
Rails.logger.info "#{packages_count} packages found."
assert_equal expected_package_counts[component.to_sym][architecture.to_sym],
packages_count
else
Rails.logger.info "No packages."
end
end # architectures.each
end # components.each
end # repositories.each
end # test
end # class