diff --git a/mimemagic-0.3.2.gem b/mimemagic-0.3.2.gem new file mode 100644 index 0000000..b82b15a Binary files /dev/null and b/mimemagic-0.3.2.gem differ diff --git a/rubygem-mimemagic-0.3.2-use-minitest-test.patch b/rubygem-mimemagic-0.3.2-use-minitest-test.patch new file mode 100644 index 0000000..b751d26 --- /dev/null +++ b/rubygem-mimemagic-0.3.2-use-minitest-test.patch @@ -0,0 +1,249 @@ +diff --git a/test/mimemagic_test.rb b/test/mimemagic_test.rb +index 7ac11b0..e5465c9 100644 +--- a/test/mimemagic_test.rb ++++ b/test/mimemagic_test.rb +@@ -1,136 +1,155 @@ +-require 'bacon' ++require 'minitest/autorun' + require 'mimemagic' + require 'stringio' + require 'forwardable' + +-describe 'MimeMagic' do +- it 'should have type, mediatype and subtype' do +- MimeMagic.new('text/html').type.should.equal 'text/html' +- MimeMagic.new('text/html').mediatype.should.equal 'text' +- MimeMagic.new('text/html').subtype.should.equal 'html' ++class TestMimeMagic < Minitest::Test ++ # Do deep copy for constants of initial state. ++ INIT_EXTENSIONS = Marshal.load(Marshal.dump(MimeMagic::EXTENSIONS)) ++ INIT_TYPES = Marshal.load(Marshal.dump(MimeMagic::TYPES)) ++ INIT_MAGIC = Marshal.load(Marshal.dump(MimeMagic::MAGIC)) ++ ++ def setup ++ extentions = Marshal.load(Marshal.dump(INIT_EXTENSIONS)) ++ types = Marshal.load(Marshal.dump(INIT_TYPES)) ++ magic = Marshal.load(Marshal.dump(INIT_MAGIC)) ++ MimeMagic.send(:remove_const, :EXTENSIONS) if MimeMagic.const_defined?(:EXTENSIONS) ++ MimeMagic.send(:remove_const, :TYPES) if MimeMagic.const_defined?(:TYPES) ++ MimeMagic.send(:remove_const, :MAGIC) if MimeMagic.const_defined?(:MAGIC) ++ MimeMagic.const_set('EXTENSIONS', extentions) ++ MimeMagic.const_set('TYPES', types) ++ MimeMagic.const_set('MAGIC', magic) + end + +- it 'should have mediatype helpers' do +- MimeMagic.new('text/plain').should.be.text +- MimeMagic.new('text/html').should.be.text +- MimeMagic.new('application/xhtml+xml').should.be.text +- MimeMagic.new('application/octet-stream').should.not.be.text +- MimeMagic.new('image/png').should.not.be.text +- MimeMagic.new('image/png').should.be.image +- MimeMagic.new('video/ogg').should.be.video +- MimeMagic.new('audio/mpeg').should.be.audio ++ def test_have_type_mediatype_and_subtype ++ assert_equal 'text/html', MimeMagic.new('text/html').type ++ assert_equal 'text', MimeMagic.new('text/html').mediatype ++ assert_equal 'html', MimeMagic.new('text/html').subtype + end + +- it 'should have hierarchy' do +- MimeMagic.new('text/html').should.be.child_of 'text/plain' +- MimeMagic.new('text/x-java').should.be.child_of 'text/plain' ++ def test_have_mediatype_helpers ++ assert MimeMagic.new('text/plain').text? ++ assert MimeMagic.new('text/html').text? ++ assert MimeMagic.new('application/xhtml+xml').text? ++ refute MimeMagic.new('application/octet-stream').text? ++ refute MimeMagic.new('image/png').text? ++ assert MimeMagic.new('image/png').image? ++ assert MimeMagic.new('video/ogg').video? ++ assert MimeMagic.new('audio/mpeg').audio? + end + +- it 'should have extensions' do +- MimeMagic.new('text/html').extensions.should.equal %w(htm html) ++ def test_have_hierarchy ++ assert MimeMagic.new('text/html').child_of?('text/plain') ++ assert MimeMagic.new('text/x-java').child_of?('text/plain') + end + +- it 'should have comment' do +- MimeMagic.new('text/html').comment.should.equal 'HTML document' ++ def test_have_extensions ++ assert_equal %w(htm html), MimeMagic.new('text/html').extensions + end + +- it 'should recognize extensions' do +- MimeMagic.by_extension('.html').should.equal 'text/html' +- MimeMagic.by_extension('html').should.equal 'text/html' +- MimeMagic.by_extension(:html).should.equal 'text/html' +- MimeMagic.by_extension('rb').should.equal 'application/x-ruby' +- MimeMagic.by_extension('crazy').should.equal nil +- MimeMagic.by_extension('').should.equal nil ++ def test_have_comment ++ assert_equal 'HTML document', MimeMagic.new('text/html').comment + end + +- it 'should recognize by a path' do +- MimeMagic.by_path('/adsjkfa/kajsdfkadsf/kajsdfjasdf.html').should.equal 'text/html' +- MimeMagic.by_path('something.html').should.equal 'text/html' +- MimeMagic.by_path('wtf.rb').should.equal 'application/x-ruby' +- MimeMagic.by_path('where/am.html/crazy').should.equal nil +- MimeMagic.by_path('').should.equal nil ++ def test_recognize_extensions ++ assert_equal 'text/html', MimeMagic.by_extension('.html').to_s ++ assert_equal 'text/html', MimeMagic.by_extension('html').to_s ++ assert_equal 'text/html', MimeMagic.by_extension(:html).to_s ++ assert_equal 'application/x-ruby', MimeMagic.by_extension('rb').to_s ++ assert_nil MimeMagic.by_extension('crazy') ++ assert_nil MimeMagic.by_extension('') + end + +- it 'should recognize xlsx as zip without magic' do ++ def test_recognize_by_a_path ++ assert_equal 'text/html', MimeMagic.by_path('/adsjkfa/kajsdfkadsf/kajsdfjasdf.html').to_s ++ assert_equal 'text/html', MimeMagic.by_path('something.html').to_s ++ assert_equal 'application/x-ruby', MimeMagic.by_path('wtf.rb').to_s ++ assert_nil MimeMagic.by_path('where/am.html/crazy') ++ assert_nil MimeMagic.by_path('') ++ end ++ ++ def test_recognize_xlsx_as_zip_without_magic + file = "test/files/application.vnd.openxmlformats-officedocument.spreadsheetml.sheet" +- MimeMagic.by_magic(File.read(file)).should.equal "application/zip" +- MimeMagic.by_magic(File.open(file, 'rb')).should.equal "application/zip" ++ assert_equal "application/zip", MimeMagic.by_magic(File.read(file)).to_s ++ assert_equal "application/zip", MimeMagic.by_magic(File.open(file, 'rb')).to_s + end + +- it 'should recognize by magic' do +- require "mimemagic/overlay" ++ def test_recognize_by_magic ++ load "mimemagic/overlay.rb" + Dir['test/files/*'].each do |file| + mime = file[11..-1].sub('.', '/') +- MimeMagic.by_magic(File.read(file)).should.equal mime +- MimeMagic.by_magic(File.open(file, 'rb')).should.equal mime ++ assert_equal mime, MimeMagic.by_magic(File.read(file)).to_s ++ assert_equal mime, MimeMagic.by_magic(File.open(file, 'rb')).to_s + end + end + +- it 'should recognize all by magic' do +- require 'mimemagic/overlay' ++ def test_recognize_all_by_magic ++ load 'mimemagic/overlay.rb' + file = 'test/files/application.vnd.openxmlformats-officedocument.spreadsheetml.sheet' + mimes = %w[application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/zip] +- MimeMagic.all_by_magic(File.read(file)).map(&:type).should.equal mimes ++ assert_equal mimes, MimeMagic.all_by_magic(File.read(file)).map(&:type) + end + +- it 'should have add' do ++ def test_have_add + MimeMagic.add('application/mimemagic-test', + extensions: %w(ext1 ext2), + parents: 'application/xml', + comment: 'Comment') +- MimeMagic.by_extension('ext1').should.equal 'application/mimemagic-test' +- MimeMagic.by_extension('ext2').should.equal 'application/mimemagic-test' +- MimeMagic.by_extension('ext2').comment.should.equal 'Comment' +- MimeMagic.new('application/mimemagic-test').extensions.should.equal %w(ext1 ext2) +- MimeMagic.new('application/mimemagic-test').should.be.child_of 'text/plain' ++ assert_equal 'application/mimemagic-test', MimeMagic.by_extension('ext1').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_extension('ext2').to_s ++ assert_equal 'Comment', MimeMagic.by_extension('ext2').comment ++ assert_equal %w(ext1 ext2), MimeMagic.new('application/mimemagic-test').extensions ++ assert MimeMagic.new('application/mimemagic-test').child_of?('text/plain') + end + +- it 'should process magic' do ++ def test_process_magic + MimeMagic.add('application/mimemagic-test', + magic: [[0, 'MAGICTEST'], # MAGICTEST at position 0 + [1, 'MAGICTEST'], # MAGICTEST at position 1 + [9..12, 'MAGICTEST'], # MAGICTEST starting at position 9 to 12 + [2, 'MAGICTEST', [[0, 'X'], [0, 'Y']]]]) # MAGICTEST at position 2 and (X at 0 or Y at 0) + +- MimeMagic.by_magic('MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('XMAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(' MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('123456789MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('123456789ABMAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('123456789ABCMAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('123456789ABCDMAGICTEST').should.equal nil +- MimeMagic.by_magic('X MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('Y MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic('Z MAGICTEST').should.equal nil +- +- MimeMagic.by_magic(StringIO.new 'MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new 'XMAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new ' MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new '123456789MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new '123456789ABMAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new '123456789ABCMAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new '123456789ABCDMAGICTEST').should.equal nil +- MimeMagic.by_magic(StringIO.new 'X MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new 'Y MAGICTEST').should.equal 'application/mimemagic-test' +- MimeMagic.by_magic(StringIO.new 'Z MAGICTEST').should.equal nil +- end +- +- it 'should handle different file objects' do +- MimeMagic.add('application/mimemagic-test', magic: [[0, 'MAGICTEST']]) +- class IOObject +- def initialize +- @io = StringIO.new('MAGICTEST') +- end ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('XMAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(' MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('123456789MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('123456789ABMAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('123456789ABCMAGICTEST').to_s ++ assert_nil MimeMagic.by_magic('123456789ABCDMAGICTEST') ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('X MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic('Y MAGICTEST').to_s ++ assert_nil MimeMagic.by_magic('Z MAGICTEST') ++ ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new 'MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new 'XMAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new ' MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new '123456789MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new '123456789ABMAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new '123456789ABCMAGICTEST').to_s ++ assert_nil MimeMagic.by_magic(StringIO.new '123456789ABCDMAGICTEST') ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new 'X MAGICTEST').to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringIO.new 'Y MAGICTEST').to_s ++ assert_nil MimeMagic.by_magic(StringIO.new 'Z MAGICTEST') ++ end + +- extend Forwardable +- delegate [:read, :size, :rewind, :eof?, :close] => :@io ++ class IOObject ++ def initialize ++ @io = StringIO.new('MAGICTEST') + end +- MimeMagic.by_magic(IOObject.new).should.equal 'application/mimemagic-test' +- class StringableObject +- def to_s +- 'MAGICTEST' +- end ++ ++ extend Forwardable ++ delegate [:read, :size, :rewind, :eof?, :close] => :@io ++ end ++ ++ class StringableObject ++ def to_s ++ 'MAGICTEST' + end +- MimeMagic.by_magic(StringableObject.new).should.equal 'application/mimemagic-test' ++ end ++ ++ def test_handle_different_file_objects ++ MimeMagic.add('application/mimemagic-test', magic: [[0, 'MAGICTEST']]) ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(IOObject.new).to_s ++ assert_equal 'application/mimemagic-test', MimeMagic.by_magic(StringableObject.new).to_s + end + end diff --git a/rubygem-mimemagic-0.3.2-use-minitest.patch b/rubygem-mimemagic-0.3.2-use-minitest.patch new file mode 100644 index 0000000..4bae9d4 --- /dev/null +++ b/rubygem-mimemagic-0.3.2-use-minitest.patch @@ -0,0 +1,12 @@ +diff --git a/mimemagic.gemspec b/mimemagic.gemspec +index e0c3e35..1faffcb 100644 +--- a/mimemagic.gemspec ++++ b/mimemagic.gemspec +@@ -19,6 +19,6 @@ Gem::Specification.new do |s| + s.homepage = 'https://github.com/minad/mimemagic' + s.license = 'MIT' + +- s.add_development_dependency('bacon') ++ s.add_development_dependency('minitest', '~> 5.11') + s.add_development_dependency('rake') + end diff --git a/rubygem-mimemagic.spec b/rubygem-mimemagic.spec new file mode 100644 index 0000000..a99351c --- /dev/null +++ b/rubygem-mimemagic.spec @@ -0,0 +1,62 @@ +%global gem_name mimemagic +Name: rubygem-%{gem_name} +Version: 0.3.2 +Release: 1 +Summary: Fast mime detection by extension or content +License: MIT +URL: https://github.com/minad/mimemagic +Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem +Patch0: rubygem-mimemagic-0.3.2-use-minitest.patch +Patch1: rubygem-mimemagic-0.3.2-use-minitest-test.patch +BuildRequires: ruby(release) rubygems-devel ruby rubygem(minitest) +BuildArch: noarch +%description +Fast mime detection by extension or content in pure ruby (Uses +freedesktop.org.xml shared-mime-info database). + +%package doc +Summary: Documentation for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch +%description doc +Documentation for %{name}. + +%prep +%setup -q -n %{gem_name}-%{version} +%patch0 -p1 + +%build +gem build ../%{gem_name}-%{version}.gemspec +%gem_install + +%install +mkdir -p %{buildroot}%{gem_dir} +cp -a .%{gem_dir}/* \ + %{buildroot}%{gem_dir}/ + +%check +pushd .%{gem_instdir} +cat "%{PATCH1}" | patch -p1 +ruby -Ilib -e 'Dir.glob "./test/**/*_test.rb", &method(:require)' +popd + +%files +%dir %{gem_instdir} +%exclude %{gem_instdir}/.* +%license %{gem_instdir}/LICENSE +%{gem_libdir} +%{gem_instdir}/script +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%doc %{gem_docdir} +%{gem_instdir}/Gemfile +%doc %{gem_instdir}/README.md +%{gem_instdir}/Rakefile +%{gem_instdir}/mimemagic.gemspec +%{gem_instdir}/test + +%changelog +* Wed Aug 19 2020 geyanan - 0.3.2-1 +- package init diff --git a/rubygem-mimemagic.yaml b/rubygem-mimemagic.yaml new file mode 100644 index 0000000..ea53c37 --- /dev/null +++ b/rubygem-mimemagic.yaml @@ -0,0 +1,4 @@ +version_control:github +src_repo:/minad/mimemagic +tag_prefix:"v" +seperator:"."