From d83c20c52477c763a15a600d3f8d1dc881263253 Mon Sep 17 00:00:00 2001 From: Luca Guidi Date: Tue, 10 Jul 2018 14:01:27 +0200 Subject: [PATCH] Code quality tools (#147) --- .circleci/config.yml | 10 +++++----- .jrubyrc | 1 + Gemfile | 3 +-- README.md | 10 +++++----- Rakefile | 6 +----- script/ci | 24 +++++++++++++++++++++--- spec/spec_helper.rb | 38 +++++--------------------------------- spec/support/rspec.rb | 23 +++++++++++++++++++++++ 8 files changed, 62 insertions(+), 53 deletions(-) create mode 100644 .jrubyrc create mode 100644 spec/support/rspec.rb diff --git a/.circleci/config.yml b/.circleci/config.yml index 0bf91cc..22835e8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,7 +6,7 @@ version: 2 jobs: "ruby-2.3": docker: - - image: circleci/ruby:2.3.7 + - image: hanami/ruby-2.3 working_directory: ~/hanami-utils steps: - checkout @@ -31,7 +31,7 @@ jobs: ./script/ci "ruby-2.4": docker: - - image: circleci/ruby:2.4.4 + - image: hanami/ruby-2.4 working_directory: ~/hanami-utils steps: - checkout @@ -56,7 +56,7 @@ jobs: ./script/ci "ruby-2.5": docker: - - image: circleci/ruby:2.5.1 + - image: hanami/ruby-2.5 working_directory: ~/hanami-utils steps: - checkout @@ -81,7 +81,7 @@ jobs: ./script/ci "jruby-9.1": docker: - - image: circleci/jruby:9.1-jdk + - image: hanami/jruby-9.1 working_directory: ~/hanami-utils steps: - checkout @@ -106,7 +106,7 @@ jobs: ./script/ci "jruby-9.2": docker: - - image: circleci/jruby:9.2.0.0 + - image: hanami/jruby-9.2 working_directory: ~/hanami-utils steps: - checkout diff --git a/.jrubyrc b/.jrubyrc new file mode 100644 index 0000000..ec033ee --- /dev/null +++ b/.jrubyrc @@ -0,0 +1 @@ +debug.fullTrace=true diff --git a/Gemfile b/Gemfile index 95dd829..9112a1f 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'http://rubygems.org' gemspec -unless ENV['TRAVIS'] +unless ENV['CI'] gem 'byebug', require: false, platforms: :mri gem 'yard', require: false end @@ -10,4 +10,3 @@ gem 'hanami-utils', '~> 1.2', require: false, git: 'https://github.com/hanami/ut gem 'hanami-devtools', require: false, git: 'https://github.com/hanami/devtools.git' gem 'i18n', '~> 0.7', require: false -gem 'coveralls', require: false diff --git a/README.md b/README.md index 4e12a77..6635444 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ Validations mixin for Ruby objects ## Status -[![Gem Version](http://img.shields.io/gem/v/hanami-validations.svg)](https://badge.fury.io/rb/hanami-validations) -[![Build Status](http://img.shields.io/travis/hanami/validations/master.svg)](https://travis-ci.org/hanami/validations?branch=master) -[![Coverage](http://img.shields.io/coveralls/hanami/validations/master.svg)](https://coveralls.io/r/hanami/validations) -[![Code Climate](http://img.shields.io/codeclimate/github/hanami/validations.svg)](https://codeclimate.com/github/hanami/validations) -[![Dependencies](http://img.shields.io/gemnasium/hanami/validations.svg)](https://gemnasium.com/hanami/validations) +[![Gem Version](https://badge.fury.io/rb/hanami-validations.svg)](https://badge.fury.io/rb/hanami-validations) +[![TravisCI](https://travis-ci.org/hanami/validations.svg?branch=master)](https://travis-ci.org/hanami/validations) +[![CircleCI](https://circleci.com/gh/hanami/validations/tree/master.svg?style=svg)](https://circleci.com/gh/hanami/validations/tree/master) +[![Test Coverage](https://codecov.io/gh/hanami/validations/branch/master/graph/badge.svg)](https://codecov.io/gh/hanami/validations) +[![Depfu](https://badges.depfu.com/badges/a8545fb67cf32a2c75b6227bc0821027/overview.svg)](https://depfu.com/github/hanami/validations?project=Bundler) [![Inline Docs](http://inch-ci.org/github/hanami/validations.svg)](http://inch-ci.org/github/hanami/validations) ## Contact diff --git a/Rakefile b/Rakefile index e1ddb5f..c35b4eb 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,7 @@ require 'rake' require 'bundler/gem_tasks' require 'rspec/core/rake_task' +require 'hanami/devtools/rake_tasks' require 'rake/testtask' Rake::TestTask.new do |t| @@ -15,11 +16,6 @@ namespace :spec do task.pattern = file_list end - - task :coverage do - ENV['COVERAGE'] = 'true' - Rake::Task['spec:unit'].invoke - end end task default: 'spec:unit' diff --git a/script/ci b/script/ci index c495767..84a16a1 100755 --- a/script/ci +++ b/script/ci @@ -2,12 +2,23 @@ set -euo pipefail IFS=$'\n\t' +prepare_build() { + if [ -d coverage ]; then + rm -rf coverage + fi +} + +print_ruby_version() { + echo "Using $(ruby -v)" + echo +} + run_code_quality_checks() { bundle exec rubocop . } run_unit_tests() { - bundle exec rake spec:coverage + bundle exec rake spec:unit } run_isolation_tests() { @@ -42,10 +53,17 @@ run_test() { COVERAGE=true bundle exec rspec $test } +upload_code_coverage() { + bundle exec rake codecov:upload +} + main() { - run_code_quality_checks && + prepare_build && + print_ruby_version && + run_code_quality_checks && run_unit_tests && - run_isolation_tests + run_isolation_tests && + upload_code_coverage } main diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1fde1f3..48ec560 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,36 +1,8 @@ -if ENV['COVERALL'] - require 'coveralls' - Coveralls.wear! -end - -RSpec.configure do |config| - config.expect_with :rspec do |expectations| - expectations.include_chain_clauses_in_custom_matcher_descriptions = true - end - - config.mock_with :rspec do |mocks| - mocks.verify_partial_doubles = true - end - - config.shared_context_metadata_behavior = :apply_to_host_groups - - config.filter_run_when_matching :focus - config.disable_monkey_patching! - - config.warnings = true - - config.default_formatter = 'doc' if config.files_to_run.one? - - config.profile_examples = 10 - - config.order = :random - Kernel.srand config.seed -end - -$LOAD_PATH.unshift 'lib' -require 'hanami/utils' -require 'hanami/validations' -require 'hanami/validations/form' +$LOAD_PATH.unshift "lib" +require "hanami/utils" +require "hanami/devtools/unit" +require "hanami/validations" +require "hanami/validations/form" Hanami::Utils.require!("spec/support") Hanami::Utils.require!("spec/shared") diff --git a/spec/support/rspec.rb b/spec/support/rspec.rb new file mode 100644 index 0000000..3bee54d --- /dev/null +++ b/spec/support/rspec.rb @@ -0,0 +1,23 @@ +RSpec.configure do |config| + config.expect_with :rspec do |expectations| + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + config.mock_with :rspec do |mocks| + mocks.verify_partial_doubles = true + end + + config.shared_context_metadata_behavior = :apply_to_host_groups + + config.filter_run_when_matching :focus + config.disable_monkey_patching! + + config.warnings = true + + config.default_formatter = "doc" if config.files_to_run.one? + + config.profile_examples = 10 + + config.order = :random + Kernel.srand config.seed +end