DEV: Switch from Travis to Actions (#29)

This commit is contained in:
Osama Sayegh 2020-11-25 18:16:11 +03:00 committed by GitHub
parent b588e0f876
commit ecaaffd63f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 75 additions and 33 deletions

48
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,48 @@
name: Mini Mime Tests
on:
pull_request:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
name: "Ruby ${{ matrix.ruby }} / Failure allowed: ${{ matrix.experimental }}"
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
ruby: ["2.4", "2.5", "2.6", "2.7"]
experimental: [false]
include:
- ruby: "ruby-head"
experimental: true
- ruby: "jruby-head"
experimental: true
- ruby: "jruby-9.1.17.0"
experimental: true
- ruby: "jruby-9.2.13.0"
experimental: true
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Bundler cache
uses: actions/cache@v2
with:
path: vendor/bundle
key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.ruby }}-gems-
- name: Setup gems
run: |
bundle config path vendor/bundle
bundle install --jobs 4
- name: Rubocop
run: bundle exec rubocop
if: "!contains(matrix.ruby, 'jruby')"
- name: Tests
run: bundle exec rake test

5
.rubocop.yml Normal file
View File

@ -0,0 +1,5 @@
inherit_gem:
rubocop-discourse: default.yml
inherit_mode:
merge:
- Exclude

View File

@ -1,20 +0,0 @@
language: ruby
rvm:
- 2.3
- 2.4
- 2.5
- 2.6
- ruby-head
- jruby
- jruby-9.0.5.0
- jruby-9.1.6.0
- jruby-head
matrix:
allow_failures:
- rvm: ruby-head
- rvm: jruby-9.0.5.0
- rvm: jruby-9.1.6.0
- rvm: jruby-head
fast_finish: true

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
source 'https://rubygems.org'
# Specify your gem's dependencies in mini_mime.gemspec

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
require "bundler/gem_tasks"
require "rake/testtask"
@ -7,7 +8,7 @@ Rake::TestTask.new(:test) do |t|
t.test_files = FileList['test/**/*_test.rb']
end
task :default => :test
task default: :test
def pad(array)
max = []
@ -36,11 +37,11 @@ task :rebuild_db do
index = {}
MIME::Types.each do |type|
type.extensions.each {|ext| (index[ext.downcase] ||= []) << type}
type.extensions.each { |ext| (index[ext.downcase] ||= []) << type }
end
index.each do |k,list|
list.sort!{|a,b| a.priority_compare(b)}
index.each do |k, list|
list.sort! { |a, b| a.priority_compare(b) }
end
buffer = []
@ -54,9 +55,9 @@ task :rebuild_db do
pad(buffer)
buffer.sort!{|a,b| a[0] <=> b[0]}
buffer.sort! { |a, b| a[0] <=> b[0] }
File.open("lib/db/ext_mime.db", File::CREAT|File::TRUNC|File::RDWR) do |f|
File.open("lib/db/ext_mime.db", File::CREAT | File::TRUNC | File::RDWR) do |f|
buffer.each do |row|
f.write "#{row[0]} #{row[1]} #{row[2]}\n"
end
@ -64,7 +65,7 @@ task :rebuild_db do
puts "#{buffer.count} rows written to lib/db/ext_mime.db"
buffer.sort!{|a,b| [a[1], a[0]] <=> [b[1], b[0]]}
buffer.sort! { |a, b| [a[1], a[0]] <=> [b[1], b[0]] }
# strip cause we are going to re-pad
buffer.each do |row|
@ -80,7 +81,7 @@ task :rebuild_db do
pad(buffer)
File.open("lib/db/content_type_mime.db", File::CREAT|File::TRUNC|File::RDWR) do |f|
File.open("lib/db/content_type_mime.db", File::CREAT | File::TRUNC | File::RDWR) do |f|
last = nil
count = 0
buffer.each do |row|

View File

@ -1,9 +1,9 @@
# frozen_string_literal: true
require 'memory_profiler'
require 'benchmark/ips'
$: << File.expand_path('../../lib', __FILE__)
puts
puts "Memory stats for requiring mime/types/columnar"
result = MemoryProfiler.report do
@ -22,7 +22,6 @@ end
puts "Total allocated: #{result.total_allocated_memsize} bytes (#{result.total_allocated} objects)"
puts "Total retained: #{result.total_retained_memsize} bytes (#{result.total_retained} objects)"
Benchmark.ips do |bm|
bm.report 'cached content_type lookup MiniMime' do
MiniMime.lookup_by_filename("a.txt").content_type

View File

@ -1,4 +1,5 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require "bundler/setup"
require "mini_mime"

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
require "mini_mime/version"
require "thread"
@ -129,7 +130,7 @@ module MiniMime
result = nil
while from <= to do
midpoint = from + (to-from).div(2)
midpoint = from + (to - from).div(2)
current = resolve(midpoint)
data = current[@sort_order]
if data > val
@ -145,7 +146,7 @@ module MiniMime
end
def resolve(row)
@file.seek(row*@row_length)
@file.seek(row * @row_length)
Info.new(@file.readline)
end
end

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
module MiniMime
VERSION = "1.0.2"
end

View File

@ -25,4 +25,6 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "bundler", ">= 1.13"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "minitest", "~> 5.0"
spec.add_development_dependency "rubocop"
spec.add_development_dependency "rubocop-discourse"
end

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
require 'test_helper'
class MiniMime::ConfigurationTest < Minitest::Test

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
require 'test_helper'
begin
@ -49,7 +50,7 @@ class MiniMimeTest < Minitest::Test
def test_full_parity_with_mime_types
exts = Set.new
MIME::Types.each do |type|
type.extensions.each{|ext| exts << ext}
type.extensions.each { |ext| exts << ext }
end
exts.each do |ext|

View File

@ -1,3 +1,4 @@
# frozen_string_literal: true
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'mini_mime'