diff --git a/config/environments/test.rb b/config/environments/test.rb index 1f815fc..510ab76 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -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 diff --git a/test/lib/deb_importer_test.rb b/test/lib/deb_importer_test.rb new file mode 100644 index 0000000..3ef598c --- /dev/null +++ b/test/lib/deb_importer_test.rb @@ -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