Skip to content

Commit

Permalink
Add a test action (#70)
Browse files Browse the repository at this point in the history
* Add a test action

* Fix the test action

* Fix the test action

* Remove coveralls

* Add simplecov

* Fix tests

* Remove coveralls

* Fix the compatibility of Rack::Headers

* Set only related environment variables

* Fix header handling

* Fix the redundant code
  • Loading branch information
dtaniwaki authored Jan 17, 2024
1 parent d9a5603 commit b957c2d
Show file tree
Hide file tree
Showing 5 changed files with 138 additions and 10 deletions.
131 changes: 131 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
name: test
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
rack-test:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
rack-version: ['3.0.0', '2.2.0', '2.1.0', '2.0.0']
include:
- { ruby-version: '3.3', rack-version: '3.0.0' }
- { ruby-version: '3.3', rack-version: '2.2.0' }
- { ruby-version: '3.3', rack-version: '2.1.0' }
- { ruby-version: '3.3', rack-version: '2.0.0' }
- { ruby-version: '3.2', rack-version: '3.0.0' }
- { ruby-version: '3.2', rack-version: '2.2.0' }
- { ruby-version: '3.2', rack-version: '2.1.0' }
- { ruby-version: '3.2', rack-version: '2.0.0' }
- { ruby-version: '3.1', rack-version: '3.0.0' }
- { ruby-version: '3.1', rack-version: '2.2.0' }
- { ruby-version: '3.1', rack-version: '2.1.0' }
- { ruby-version: '3.1', rack-version: '2.0.0' }
- { ruby-version: '3.0', rack-version: '3.0.0' }
- { ruby-version: '3.0', rack-version: '2.2.0' }
- { ruby-version: '3.0', rack-version: '2.1.0' }
- { ruby-version: '3.0', rack-version: '2.0.0' }
- { ruby-version: '2.7', rack-version: '3.0.0' }
- { ruby-version: '2.7', rack-version: '2.2.0' }
- { ruby-version: '2.7', rack-version: '2.1.0' }
- { ruby-version: '2.7', rack-version: '2.0.0' }
steps:
- uses: actions/checkout@v4
- name: Set up Ruby ${{ matrix.ruby-version }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
- uses: actions/cache@v3
with:
path: vendor/bundle
key: bundle-use-ruby-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
bundle-use-ruby-${{ matrix.ruby-version }}-
- name: Install dependencies
env:
RACK_VERSION: ${{ matrix.rack-version }}
run: bundle install
- name: Run tests
run: bundle exec rake spec
rails-test:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
rails-version: ['7.1.0', '7.0.0', '6.1.0', '6.0.0']
include:
- { ruby-version: '3.3', rails-version: '7.1.0' }
- { ruby-version: '3.3', rails-version: '7.0.0' }
- { ruby-version: '3.3', rails-version: '6.1.0' }
- { ruby-version: '3.3', rails-version: '6.0.0' }
- { ruby-version: '3.2', rails-version: '7.1.0' }
- { ruby-version: '3.2', rails-version: '7.0.0' }
- { ruby-version: '3.2', rails-version: '6.1.0' }
- { ruby-version: '3.2', rails-version: '6.0.0' }
- { ruby-version: '3.1', rails-version: '7.1.0' }
- { ruby-version: '3.1', rails-version: '7.0.0' }
- { ruby-version: '3.1', rails-version: '6.1.0' }
- { ruby-version: '3.1', rails-version: '6.0.0' }
- { ruby-version: '3.0', rails-version: '7.1.0' }
- { ruby-version: '3.0', rails-version: '7.0.0' }
- { ruby-version: '3.0', rails-version: '6.1.0' }
- { ruby-version: '3.0', rails-version: '6.0.0' }
- { ruby-version: '2.7', rails-version: '7.1.0' }
- { ruby-version: '2.7', rails-version: '7.0.0' }
- { ruby-version: '2.7', rails-version: '6.1.0' }
- { ruby-version: '2.7', rails-version: '6.0.0' }
steps:
- uses: actions/checkout@v4
- name: Set up Ruby ${{ matrix.ruby-version }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
- uses: actions/cache@v3
with:
path: vendor/bundle
key: bundle-use-ruby-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
bundle-use-ruby-${{ matrix.ruby-version }}-
- name: Install dependencies
env:
RAILS_VERSION: ${{ matrix.rails-version }}
run: bundle install
- name: Run tests
run: bundle exec rake spec
i18n-test:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
i18n-version: ['1.14.0']
include:
- { ruby-version: '3.3', i18n-version: '1.14.0' }
- { ruby-version: '3.2', i18n-version: '1.14.0' }
- { ruby-version: '3.1', i18n-version: '1.14.0' }
- { ruby-version: '3.0', i18n-version: '1.14.0' }
- { ruby-version: '2.7', i18n-version: '1.14.0' }
steps:
- uses: actions/checkout@v4
- name: Set up Ruby ${{ matrix.ruby-version }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
- uses: actions/cache@v3
with:
path: vendor/bundle
key: bundle-use-ruby-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
bundle-use-ruby-${{ matrix.ruby-version }}-
- name: Install dependencies
env:
I18N_VERSION: ${{ matrix.i18n-version }}
run: bundle install
- name: Run tests
run: bundle exec rake spec

6 changes: 3 additions & 3 deletions lib/rack/dev-mark/middleware.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ def call(env)

status, headers, response = @app.call(env)

headers = Rack::Headers.new(headers)
read_headers = defined?(Rack::Headers) ? Rack::Headers.new(headers) : HeaderHash.new(headers)

headers['X-Rack-Dev-Mark-Env'] = CGI.escape Rack::DevMark.env

redirect = 300 <= status.to_i && status.to_i < 400
if !redirect && !Rack::DevMark.tmp_disabled && headers['Content-Type'].to_s =~ %r{\btext/html\b}i
if !redirect && !Rack::DevMark.tmp_disabled && read_headers['Content-Type'].to_s =~ %r{\btext/html\b}i
new_body = ''
response.each do |b|
begin
Expand All @@ -33,7 +33,7 @@ def call(env)
end
end
response.close if response.respond_to?(:close)
headers['Content-Length'] &&= new_body.bytesize.to_s
headers['Content-Length'] = new_body.bytesize.to_s if read_headers['Content-Length']
response = [new_body]
end

Expand Down
2 changes: 1 addition & 1 deletion rack-dev-mark.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ Gem::Specification.new do |gem|

gem.add_development_dependency "rake"
gem.add_development_dependency "rspec", ">= 3.0"
gem.add_development_dependency "coveralls"
gem.add_development_dependency "simplecov"
end
4 changes: 2 additions & 2 deletions spec/rack/dev-mark_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
end
describe "::revision" do
after do
::File.delete('REVISION') if ::File.exists?('REVISION')
::File.delete('REVISION') if ::File.exist?('REVISION')
subject.instance_variable_set("@revision", nil)
end
it "returns revision" do
Expand All @@ -55,7 +55,7 @@
describe "::timestamp" do
let(:time) { Time.new(2000, 1, 2) }
after do
::File.delete('REVISION') if ::File.exists?('REVISION')
::File.delete('REVISION') if ::File.exist?('REVISION')
subject.instance_variable_set("@timestamp", nil)
end
it "returns timestamp" do
Expand Down
5 changes: 1 addition & 4 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
require 'rubygems'
require 'simplecov'
require 'coveralls'
Coveralls.wear!

resultset_path = SimpleCov::ResultMerger.resultset_path
FileUtils.rm resultset_path if File.exists? resultset_path
FileUtils.rm resultset_path if File.exist? resultset_path
SimpleCov.use_merging true
SimpleCov.at_exit do
SimpleCov.command_name "fork-#{$$}"
SimpleCov.result.format!
end
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
SimpleCov::Formatter::HTMLFormatter,
Coveralls::SimpleCov::Formatter
]
SimpleCov.start do
add_filter 'spec/'
Expand Down

0 comments on commit b957c2d

Please sign in to comment.