Hello community, here is the log from the commit of package rubygem-mini_portile2 for openSUSE:Factory checked in at 2016-04-07 13:27:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-mini_portile2 (Old) and /work/SRC/openSUSE:Factory/.rubygem-mini_portile2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "rubygem-mini_portile2" Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-mini_portile2/rubygem-mini_portile2.changes 2015-12-27 01:56:51.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-mini_portile2.new/rubygem-mini_portile2.changes 2016-04-07 13:27:23.000000000 +0200 @@ -1,0 +2,18 @@ +Thu Jan 21 05:39:40 UTC 2016 - coolo@suse.com + +- updated to version 2.1.0 + see installed CHANGELOG.md + + ### 2.1.0 / 2016-01-06 + + #### Enhancements + + * Add support for `file:` protocol for tarballs + + + #### Bugfixes + + * Raise exception on unsupported URI protocols + * Ignore git whitespace config when patching (Thanks, @e2!) (#67) + +------------------------------------------------------------------- Old: ---- mini_portile2-2.0.0.gem New: ---- mini_portile2-2.1.0.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-mini_portile2.spec ++++++ --- /var/tmp/diff_new_pack.xnjURh/_old 2016-04-07 13:27:24.000000000 +0200 +++ /var/tmp/diff_new_pack.xnjURh/_new 2016-04-07 13:27:24.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package rubygem-mini_portile2 # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-mini_portile2 -Version: 2.0.0 +Version: 2.1.0 Release: 0 %define mod_name mini_portile2 %define mod_full_name %{mod_name}-%{version} ++++++ mini_portile2-2.0.0.gem -> mini_portile2-2.1.0.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 2015-11-30 06:34:40.000000000 +0100 +++ new/.gitignore 2016-01-06 20:10:15.000000000 +0100 @@ -1,3 +1,5 @@ pkg tmp Gemfile.lock +.bundle +ports diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml --- old/.travis.yml 2015-11-30 06:34:40.000000000 +0100 +++ new/.travis.yml 2016-01-06 20:10:15.000000000 +0100 @@ -7,5 +7,5 @@ - 2.1 - 2.2 - ruby-head - - jruby-1.7.22 - - jruby-9.0.1.0 + - jruby-1.7.23 + - jruby-9.0.4.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md --- old/CHANGELOG.md 2015-11-30 06:34:40.000000000 +0100 +++ new/CHANGELOG.md 2016-01-06 20:10:15.000000000 +0100 @@ -1,3 +1,16 @@ +### 2.1.0 / 2016-01-06 + +#### Enhancements + +* Add support for `file:` protocol for tarballs + + +#### Bugfixes + +* Raise exception on unsupported URI protocols +* Ignore git whitespace config when patching (Thanks, @e2!) (#67) + + ### 2.0.0 / 2015-11-30 Many thanks to @larskanis, @knu, and @kirikak2, who all contributed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LICENSE.txt new/LICENSE.txt --- old/LICENSE.txt 2015-11-30 06:34:40.000000000 +0100 +++ new/LICENSE.txt 2016-01-06 20:10:15.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright (c) 2011-2015 Luis Lavena and Mike Dalessio +Copyright (c) 2011-2016 Luis Lavena and Mike Dalessio Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/examples/.gitignore new/examples/.gitignore --- old/examples/.gitignore 2015-11-30 06:34:40.000000000 +0100 +++ new/examples/.gitignore 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -ports -tmp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/examples/Rakefile new/examples/Rakefile --- old/examples/Rakefile 2015-11-30 06:34:40.000000000 +0100 +++ new/examples/Rakefile 1970-01-01 01:00:00.000000000 +0100 @@ -1,127 +0,0 @@ -require 'rbconfig' - -$: << File.expand_path(File.join(File.dirname(__FILE__), "../lib")) -require "mini_portile2" - -recipes = [] - -def windows? - RbConfig::CONFIG['target_os'] =~ /mswin|mingw32/ -end - -# libiconv -libiconv = MiniPortile.new "libiconv", "1.14" -libiconv.files << "ftp://ftp.gnu.org/pub/gnu/#{libiconv.name}/#{libiconv.name}-#{libiconv.version}.tar.gz" -unless windows? - libiconv.patch_files = Dir["libiconv-patches/*.patch"].map { |dir| File.expand_path dir } -end - -recipes.push libiconv - -# sqlite3 -sqlite3 = MiniPortile.new "sqlite3", "3.8.4.1" -sqlite3.files << "http://sqlite.org/2014/sqlite-autoconf-3080401.tar.gz" - -recipes.push sqlite3 - -# c-ares -c_ares = MiniPortile.new "c-ares", "1.7.5" -c_ares.files << "http://distfiles.openknapsack.org/#{c_ares.name}/#{c_ares.name}-#{c_ares.version}.tar.gz" - -recipes.push c_ares - -# zlib -class ZlibRecipe < MiniPortile - def windows? - !(host =~ /mswin|mingw/).nil? - end - - def configure - return super unless windows? - - Dir.chdir work_path do - mk = File.read 'win32/Makefile.gcc' - File.open 'win32/Makefile.gcc', 'wb' do |f| - f.puts "BINARY_PATH = #{path}/bin" - f.puts "LIBRARY_PATH = #{path}/lib" - f.puts "INCLUDE_PATH = #{path}/include" - - cross_build? and - mk.sub!(/^PREFIX\s*=\s*$/, "PREFIX = #{host}-") - - f.puts mk - end - end - end - - def configure_defaults - ["--static"] - end - - def configured? - return super unless windows? - - !!(File.read(File.join(work_path, 'win32/Makefile.gcc')) =~ /^BINARY_PATH/) - end - - def compile - return super unless windows? - - execute "compile", "make -f win32/Makefile.gcc" - end - - def install - return if installed? - return super unless windows? - - execute "install", %Q(#{make_cmd} -f win32/Makefile.gcc install) - end - - def cross_build? - host != original_host - end -end - -zlib = ZlibRecipe.new "zlib", "1.2.8" -zlib.files << { - url: "http://zlib.net/#{zlib.name}-#{zlib.version}.tar.gz", - md5: "44d667c142d7cda120332623eab69f40", -} - - -recipes.push zlib - -namespace :ports do - directory "ports" - - recipes.each do |recipe| - desc "Install port #{recipe.name} #{recipe.version}" - task recipe.name => ["ports"] do |t| - checkpoint = "ports/.#{recipe.name}-#{recipe.version}-#{recipe.host}.installed" - - unless File.exist?(checkpoint) - recipe.cook - touch checkpoint - end - - recipe.activate - end - - task :all => recipe.name - end - - desc "Install all ports and display installation location" - task :all do - recipes.each do |recipe| - puts "Artifacts of '#{recipe.name}' in '#{recipe.path}'" - end - puts "LDFLAGS: " << ENV['LDFLAGS'].inspect - end -end - -desc "Adjust all recipes host for cross-compilation" -task :cross do - recipes.each do |recipe| - recipe.host = "i686-w64-mingw32" - end -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/examples/libiconv-patches/1-avoid-gets-error.patch new/examples/libiconv-patches/1-avoid-gets-error.patch --- old/examples/libiconv-patches/1-avoid-gets-error.patch 2015-11-30 06:34:40.000000000 +0100 +++ new/examples/libiconv-patches/1-avoid-gets-error.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -This file tests the 'patch' functionality, as well as working around a -libiconv compilation issue with glibc >= 2.16. - ---- a/srclib/stdio.in.h 2015-08-23 13:59:57.395880263 -0400 -+++ b/srclib/stdio.in.h 2015-08-23 14:00:00.047880153 -0400 -@@ -695,8 +695,10 @@ - /* It is very rare that the developer ever has full control of stdin, - so any use of gets warrants an unconditional warning. Assume it is - always declared, since it is required by C89. */ -+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16) - _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); - #endif -+#endif - - - #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/mini_portile2/mini_portile.rb new/lib/mini_portile2/mini_portile.rb --- old/lib/mini_portile2/mini_portile.rb 2015-11-30 06:34:40.000000000 +0100 +++ new/lib/mini_portile2/mini_portile.rb 2016-01-06 20:10:15.000000000 +0100 @@ -68,7 +68,7 @@ message "Running git apply with #{file}... " # By --work-tree=. git-apply uses the current directory as # the project root and will not search upwards for .git. - execute('patch', ["git", "--work-tree=.", "apply", file], :initial_message => false) + execute('patch', ["git", "--work-tree=.", "apply", "--whitespace=warn", file], :initial_message => false) } when which('patch') lambda { |file| @@ -393,18 +393,20 @@ def download_file(url, full_path, count = 3) return if File.exist?(full_path) uri = URI.parse(url) - begin - case uri.scheme.downcase - when /ftp/ - download_file_ftp(uri, full_path) - when /http|https/ - download_file_http(url, full_path, count) - end - rescue Exception => e - File.unlink full_path if File.exist?(full_path) - output "ERROR: #{e.message}" - raise "Failed to complete download task" + + case uri.scheme.downcase + when /ftp/ + download_file_ftp(uri, full_path) + when /http|https/ + download_file_http(url, full_path, count) + when /file/ + download_file_file(uri, full_path) + else + raise ArgumentError.new("Unsupported protocol for #{url}") end + rescue Exception => e + File.unlink full_path if File.exist?(full_path) + raise e end def download_file_http(url, full_path, count = 3) @@ -448,6 +450,11 @@ end end + def download_file_file(uri, full_path) + FileUtils.mkdir_p File.dirname(full_path) + FileUtils.cp uri.path, full_path + end + def download_file_ftp(uri, full_path) filename = File.basename(uri.path) with_tempfile(filename, full_path) do |temp_file| diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/mini_portile2/version.rb new/lib/mini_portile2/version.rb --- old/lib/mini_portile2/version.rb 2015-11-30 06:34:40.000000000 +0100 +++ new/lib/mini_portile2/version.rb 2016-01-06 20:10:15.000000000 +0100 @@ -1,3 +1,3 @@ class MiniPortile - VERSION = "2.0.0" + VERSION = "2.1.0" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2015-11-30 06:34:40.000000000 +0100 +++ new/metadata 2016-01-06 20:10:15.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: mini_portile2 version: !ruby/object:Gem::Version - version: 2.0.0 + version: 2.1.0 platform: ruby authors: - Luis Lavena @@ -10,7 +10,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2015-11-30 00:00:00.000000000 Z +date: 2016-01-06 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: bundler @@ -41,19 +41,33 @@ - !ruby/object:Gem::Version version: '10.0' - !ruby/object:Gem::Dependency - name: test-unit + name: minitest requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version - version: '3.0' + version: 5.8.0 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version - version: '3.0' + version: 5.8.0 +- !ruby/object:Gem::Dependency + name: minitest-hooks + requirement: !ruby/object:Gem::Requirement + requirements: + - - "~>" + - !ruby/object:Gem::Version + version: 1.4.0 + type: :development + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - "~>" + - !ruby/object:Gem::Version + version: 1.4.0 - !ruby/object:Gem::Dependency name: minitar requirement: !ruby/object:Gem::Requirement @@ -84,18 +98,18 @@ - README.md - Rakefile - appveyor.yml -- examples/.gitignore -- examples/Rakefile -- examples/libiconv-patches/1-avoid-gets-error.patch - lib/mini_portile2.rb - lib/mini_portile2/mini_portile.rb - lib/mini_portile2/version.rb - mini_portile2.gemspec +- test/assets/git/config - test/assets/patch 1.diff - test/assets/test mini portile-1.0.0/configure +- test/assets/test-download-archive.tar.gz - test/helper.rb - test/test_cook.rb - test/test_digest.rb +- test/test_download.rb - test/test_proxy.rb homepage: http://github.com/flavorjones/mini_portile licenses: @@ -122,12 +136,12 @@ specification_version: 4 summary: Simplistic port-like solution for developers test_files: -- examples/.gitignore -- examples/Rakefile -- examples/libiconv-patches/1-avoid-gets-error.patch +- test/assets/git/config - test/assets/patch 1.diff - test/assets/test mini portile-1.0.0/configure +- test/assets/test-download-archive.tar.gz - test/helper.rb - test/test_cook.rb - test/test_digest.rb +- test/test_download.rb - test/test_proxy.rb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mini_portile2.gemspec new/mini_portile2.gemspec --- old/mini_portile2.gemspec 2015-11-30 06:34:40.000000000 +0100 +++ new/mini_portile2.gemspec 2016-01-06 20:10:15.000000000 +0100 @@ -17,13 +17,20 @@ spec.licenses = ['MIT'] spec.files = `git ls-files -z`.split("\x0") + + # omit the `examples` directory from the gem, because it's large and + # not necessary to be packaged in the gem. + example_files = spec.files.grep(%r{^examples/}) + spec.files -= example_files + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features|examples)/}) spec.require_paths = ["lib"] spec.add_development_dependency "bundler", "~> 1.7" spec.add_development_dependency "rake", "~> 10.0" - spec.add_development_dependency "test-unit", "~> 3.0" + spec.add_development_dependency "minitest", "~> 5.8.0" + spec.add_development_dependency "minitest-hooks", "~> 1.4.0" spec.add_development_dependency "minitar", "~> 0.5.4" spec.required_ruby_version = ">= 1.9.2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/assets/git/config new/test/assets/git/config --- old/test/assets/git/config 1970-01-01 01:00:00.000000000 +0100 +++ new/test/assets/git/config 2016-01-06 20:10:15.000000000 +0100 @@ -0,0 +1,4 @@ +[core] + whitespace=tab-in-indent,-indent-with-non-tab +[apply] + whitespace=fix diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/assets/patch 1.diff new/test/assets/patch 1.diff --- old/test/assets/patch 1.diff 2015-11-30 06:34:40.000000000 +0100 +++ new/test/assets/patch 1.diff 2016-01-06 20:10:15.000000000 +0100 @@ -4,4 +4,4 @@ --- /dev/null +++ "b/patch 1.txt" @@ -0,0 +1 @@ -+change 1 ++ change 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/assets/test-download-archive.tar.gz new/test/assets/test-download-archive.tar.gz --- old/test/assets/test-download-archive.tar.gz 1970-01-01 01:00:00.000000000 +0100 +++ new/test/assets/test-download-archive.tar.gz 2016-01-06 20:10:15.000000000 +0100 @@ -0,0 +1 @@ +TEST FILE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/helper.rb new/test/helper.rb --- old/test/helper.rb 2015-11-30 06:34:40.000000000 +0100 +++ new/test/helper.rb 2016-01-06 20:10:15.000000000 +0100 @@ -1,4 +1,7 @@ -require 'test/unit' +require 'minitest/autorun' +require 'minitest/unit' +require 'minitest/spec' +require 'minitest/hooks/test' require 'webrick' require 'fileutils' require 'zlib' @@ -7,43 +10,43 @@ require 'erb' require 'mini_portile2' -class TestCase < Test::Unit::TestCase - class << self - HTTP_PORT = 23523 - - attr_accessor :webrick - - def start_webrick(path) - @webrick = WEBrick::HTTPServer.new(:Port => HTTP_PORT, :DocumentRoot => path).tap do |w| - Thread.new do - w.start - end - until w.status==:Running - sleep 0.1 - end +class TestCase < Minitest::Test + include Minitest::Hooks + + HTTP_PORT = 23523 + + attr_accessor :webrick + + def start_webrick(path) + @webrick = WEBrick::HTTPServer.new(:Port => HTTP_PORT, :DocumentRoot => path).tap do |w| + Thread.new do + w.start + end + until w.status==:Running + sleep 0.1 end end + end - def stop_webrick - if w=@webrick - w.shutdown - until w.status==:Stop - sleep 0.1 - end + def stop_webrick + if w=@webrick + w.shutdown + until w.status==:Stop + sleep 0.1 end end + end - def create_tar(tar_path, assets_path) - FileUtils.mkdir_p(File.dirname(tar_path)) - Zlib::GzipWriter.open(tar_path) do |fdtgz| - Dir.chdir(assets_path) do - Archive::Tar::Minitar.pack("test mini portile-1.0.0", fdtgz) - end + def create_tar(tar_path, assets_path) + FileUtils.mkdir_p(File.dirname(tar_path)) + Zlib::GzipWriter.open(tar_path) do |fdtgz| + Dir.chdir(assets_path) do + Archive::Tar::Minitar.pack("test mini portile-1.0.0", fdtgz) end end + end - def work_dir(r=recipe) - "tmp/#{r.host}/ports/#{r.name}/#{r.version}/#{r.name}-#{r.version}" - end + def work_dir(r=recipe) + "tmp/#{r.host}/ports/#{r.name}/#{r.version}/#{r.name}-#{r.version}" end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/test_cook.rb new/test/test_cook.rb --- old/test/test_cook.rb 2015-11-30 06:34:40.000000000 +0100 +++ new/test/test_cook.rb 2016-01-06 20:10:15.000000000 +0100 @@ -1,33 +1,42 @@ require File.expand_path('../helper', __FILE__) class TestCook < TestCase - class << self - attr_accessor :assets_path - attr_accessor :tar_path - attr_accessor :recipe - - def startup - @assets_path = File.expand_path("../assets", __FILE__) - @tar_path = File.expand_path("../../tmp/test mini portile-1.0.0.tar.gz", __FILE__) - - # remove any previous test files - FileUtils.rm_rf("tmp") - - create_tar(@tar_path, @assets_path) - start_webrick(File.dirname(@tar_path)) - - @recipe = MiniPortile.new("test mini portile", "1.0.0").tap do |recipe| - recipe.files << "http://localhost:#{HTTP_PORT}/#{ERB::Util.url_encode(File.basename(@tar_path))}" - recipe.patch_files << File.join(@assets_path, "patch 1.diff") - recipe.configure_options << "--option=\"path with 'space'\"" + attr_accessor :assets_path, :tar_path, :recipe + + def with_custom_git_dir(dir) + old = ENV['GIT_DIR'] + ENV['GIT_DIR'] = dir + yield + ensure + ENV['GIT_DIR'] = old + end + + def before_all + super + @assets_path = File.expand_path("../assets", __FILE__) + @tar_path = File.expand_path("../../tmp/test mini portile-1.0.0.tar.gz", __FILE__) + + # remove any previous test files + FileUtils.rm_rf("tmp") + + create_tar(@tar_path, @assets_path) + start_webrick(File.dirname(@tar_path)) + + @recipe = MiniPortile.new("test mini portile", "1.0.0").tap do |recipe| + recipe.files << "http://localhost:#{HTTP_PORT}/#{ERB::Util.url_encode(File.basename(@tar_path))}" + recipe.patch_files << File.join(@assets_path, "patch 1.diff") + recipe.configure_options << "--option=\"path with 'space'\"" + git_dir = File.join(@assets_path, "git") + with_custom_git_dir(git_dir) do recipe.cook end end + end - def shutdown - stop_webrick - # leave test files for inspection - end + def after_all + super + stop_webrick + # leave test files for inspection end def test_download @@ -36,32 +45,32 @@ end def test_untar - configure = File.join(self.class.work_dir, "configure") + configure = File.join(work_dir, "configure") assert File.exist?(configure), configure assert_match( /^#!\/bin\/sh/, IO.read(configure) ) end def test_patch - patch1 = File.join(self.class.work_dir, "patch 1.txt") + patch1 = File.join(work_dir, "patch 1.txt") assert File.exist?(patch1), patch1 - assert_match( /^change 1/, IO.read(patch1) ) + assert_match( /^\tchange 1/, IO.read(patch1) ) end def test_configure - txt = File.join(self.class.work_dir, "configure.txt") + txt = File.join(work_dir, "configure.txt") assert File.exist?(txt), txt - opts = self.class.recipe.configure_options + ["--prefix=#{self.class.recipe.path}"] + opts = recipe.configure_options + ["--prefix=#{recipe.path}"] assert_equal( opts.inspect, IO.read(txt).chomp ) end def test_compile - txt = File.join(self.class.work_dir, "compile.txt") + txt = File.join(work_dir, "compile.txt") assert File.exist?(txt), txt assert_equal( ["all"].inspect, IO.read(txt).chomp ) end def test_install - txt = File.join(self.class.work_dir, "install.txt") + txt = File.join(work_dir, "install.txt") assert File.exist?(txt), txt assert_equal( ["install"].inspect, IO.read(txt).chomp ) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/test_digest.rb new/test/test_digest.rb --- old/test/test_digest.rb 2015-11-30 06:34:40.000000000 +0100 +++ new/test/test_digest.rb 2016-01-06 20:10:15.000000000 +0100 @@ -1,49 +1,45 @@ require File.expand_path('../helper', __FILE__) class TestDigest < TestCase - class << self - attr_accessor :assets_path - attr_accessor :tar_path - attr_accessor :recipe - - def startup - @assets_path = File.expand_path("../assets", __FILE__) - @tar_path = File.expand_path("../../tmp/test-digest-1.0.0.tar.gz", __FILE__) - - # remove any previous test files - FileUtils.rm_rf("tmp") - - create_tar(@tar_path, @assets_path) - start_webrick(File.dirname(@tar_path)) - end - - def shutdown - stop_webrick - # leave test files for inspection - end + attr :assets_path, :tar_path, :recipe + + def before_all + super + @assets_path = File.expand_path("../assets", __FILE__) + @tar_path = File.expand_path("../../tmp/test-digest-1.0.0.tar.gz", __FILE__) + + # remove any previous test files + FileUtils.rm_rf("tmp") + + create_tar(@tar_path, @assets_path) + start_webrick(File.dirname(@tar_path)) + end + + def after_all + stop_webrick + # leave test files for inspection end def setup - # remove any download files + super FileUtils.rm_rf("ports/archives") - @recipe = MiniPortile.new("test-digest", "1.0.0") end def download_with_digest(key, klass) @recipe.files << { - :url => "http://localhost:#{self.class.webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(self.class.tar_path))}", - key => klass.file(self.class.tar_path).hexdigest, + :url => "http://localhost:#{webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(tar_path))}", + key => klass.file(tar_path).hexdigest, } @recipe.download end def download_with_wrong_digest(key) @recipe.files << { - :url => "http://localhost:#{self.class.webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(self.class.tar_path))}", + :url => "http://localhost:#{webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(tar_path))}", key => "0011223344556677", } - assert_raise(RuntimeError){ @recipe.download } + assert_raises(RuntimeError){ @recipe.download } end def test_sha256 @@ -70,3 +66,4 @@ download_with_wrong_digest(:md5) end end + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/test_download.rb new/test/test_download.rb --- old/test/test_download.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/test/test_download.rb 2016-01-06 20:10:15.000000000 +0100 @@ -0,0 +1,71 @@ +require File.expand_path('../helper', __FILE__) + +cert_name = [['CN', 'localhost', OpenSSL::ASN1::PRINTABLESTRING]] + +describe "recipe download" do + include Minitest::Hooks + + attr :recipe + + def server_must_receive_connection &block + request_count = 0 + + server = TCPServer.open('localhost', TestCase::HTTP_PORT) + thread = Thread.new do + conn = server.accept + request_count += 1 + conn.puts "CONNECTION SUCESSFULLY MADE" + conn.close + end + + block.call + + thread.kill + server.close + + request_count.must_be :>, 0 + end + + before do + @request_count = 0 + @recipe = MiniPortile.new("test-download", "1.1.1") + end + + describe "urls" do + it "ftp" do + @recipe.files << "ftp://localhost:#{TestCase::HTTP_PORT}/foo" + server_must_receive_connection do + @recipe.download + end + end + + it "handles http" do + @recipe.files << "http://localhost:#{TestCase::HTTP_PORT}/foo" + server_must_receive_connection do + @recipe.download + end + end + + it "handles https" do + @recipe.files << "https://localhost:#{TestCase::HTTP_PORT}/foo" + server_must_receive_connection do + @recipe.download + end + end + + it "file" do + dest = "ports/archives/test-download-archive.tar.gz" + FileUtils.rm_f dest + path = File.expand_path(File.join(File.dirname(__FILE__), "assets", "test-download-archive.tar.gz")) + @recipe.files << "file://#{path}" + @recipe.download + assert File.exist?(dest) + Digest::MD5.file(dest).hexdigest.must_equal "5deffb997041bbb5f11bdcafdbb47975" + end + + it "other" do + @recipe.files << "foo://foo" + proc { @recipe.download }.must_raise ArgumentError + end + end +end