From 198364a75251d0f307d1de1a9a81388deab03371 Mon Sep 17 00:00:00 2001 From: Sven Schwyn Date: Sat, 19 Aug 2023 17:28:17 +0200 Subject: [PATCH] Initial implementation --- .github/workflows/test.yml | 21 +++ .gitignore | 18 +++ .ruby-version | 1 + CHANGELOG.md | 7 + LICENSE.txt | 22 +++ README.md | 145 +++++++++++++++++++ bin/console | 11 ++ bin/setup | 8 + certs/svoop.pem | 20 +++ checksums/minitest-flash-0.1.0.gem.sha512 | 1 + doc/green.mp3 | Bin 0 -> 8194 bytes doc/red.mp3 | Bin 0 -> 7358 bytes doc/screenshot.gif | Bin 0 -> 81424 bytes gems.rb | 5 + guardfile.rb | 7 + lib/minitest/substitute.rb | 8 + lib/minitest/substitute/spec.rb | 47 ++++++ lib/minitest/substitute/version.rb | 7 + lib/minitest/substitute/with.rb | 36 +++++ minitest-substitute.gemspec | 51 +++++++ rakefile.rb | 30 ++++ spec/factory.rb | 10 ++ spec/lib/minitest/substitute/spec_spec.rb | 60 ++++++++ spec/lib/minitest/substitute/version_spec.rb | 9 ++ spec/lib/minitest/substitute/with_spec.rb | 36 +++++ spec/spec_helper.rb | 17 +++ 26 files changed, 577 insertions(+) create mode 100644 .github/workflows/test.yml create mode 100644 .gitignore create mode 100644 .ruby-version create mode 100644 CHANGELOG.md create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100755 bin/console create mode 100755 bin/setup create mode 100644 certs/svoop.pem create mode 100644 checksums/minitest-flash-0.1.0.gem.sha512 create mode 100644 doc/green.mp3 create mode 100644 doc/red.mp3 create mode 100644 doc/screenshot.gif create mode 100644 gems.rb create mode 100644 guardfile.rb create mode 100644 lib/minitest/substitute.rb create mode 100644 lib/minitest/substitute/spec.rb create mode 100644 lib/minitest/substitute/version.rb create mode 100644 lib/minitest/substitute/with.rb create mode 100644 minitest-substitute.gemspec create mode 100644 rakefile.rb create mode 100644 spec/factory.rb create mode 100644 spec/lib/minitest/substitute/spec_spec.rb create mode 100644 spec/lib/minitest/substitute/version_spec.rb create mode 100644 spec/lib/minitest/substitute/with_spec.rb create mode 100644 spec/spec_helper.rb diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..2b354a7 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,21 @@ +name: Test +on: [push, pull_request] +jobs: + test: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + ruby: ['3.0', '3.1', '3.2'] + name: test (Ruby ${{ matrix.ruby }} on ${{ matrix.os }}) + runs-on: ${{ matrix.os }} + steps: + - name: Check out + uses: actions/checkout@v3 + - name: Set up Ruby ${{ matrix.ruby }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + - name: Run tests + run: bundle exec rake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20abc76 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# macOS +.DS_Store + +# direnv +.direnv +.envrc + +# Editors +.nova +.vscode +*.sublime* + +# Ruby +gems.locked +pkg/* +*.gem +.bundle +.yardoc diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..a3ec5a4 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.2 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..6b011b3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +## Main + +#### Initial Implementation +* Require Ruby 3.0 +* Substitution of instance variables +* Substitution of global variables +* Helper for Minitest spec notation diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..5d62dd8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013 Sven Schwyn + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c4a4b8e --- /dev/null +++ b/README.md @@ -0,0 +1,145 @@ +[![Version](https://img.shields.io/gem/v/minitest-substitute.svg?style=flat)](https://rubygems.org/gems/minitest-substitute) +[![Tests](https://img.shields.io/github/actions/workflow/status/svoop/minitest-substitute/test.yml?style=flat&label=tests)](https://github.com/svoop/minitest-substitute/actions?workflow=Test) +[![Code Climate](https://img.shields.io/codeclimate/maintainability/svoop/minitest-substitute.svg?style=flat)](https://codeclimate.com/github/svoop/minitest-substitute/) +[![Donorbox](https://img.shields.io/badge/donate-on_donorbox-yellow.svg)](https://donorbox.org/bitcetera) + +# Minitest::Substitute + +Simple Minitest helper to replace values such as an instance variable of an object or an environment variable for the duration of a block or a group of tests. + +This comes in very handy when you have to derive from default configuration in order to test some aspects of your code. + +* [Homepage](https://github.com/svoop/minitest-substitute) +* [API](https://www.rubydoc.info/gems/minitest-substitute) +* Author: [Sven Schwyn - Bitcetera](https://bitcetera.com) + +## Install + +This gem is [cryptographically signed](https://guides.rubygems.org/security/#using-gems) in order to assure it hasn't been tampered with. Unless already done, please add the author's public key as a trusted certificate now: + +``` +gem cert --add <(curl -Ls https://raw.github.com/svoop/minitest-substitute/main/certs/svoop.pem) +``` + +Add the following to the Gemfile or gems.rb of your [Bundler](https://bundler.io) powered Ruby project: + +```ruby +gem 'minitest-substitute' +``` + +And then install the bundle: + +``` +bundle install --trust-policy MediumSecurity +``` + +Finally, require this gem in your `test_helper.rb` or `spec_helper.rb`: + +```ruby +require 'minitest/substitute' +``` + +## Usage + +This lightweight gem implements features on a "as needed" basis, as of now: + +* substitution of instance variables +* substitution of global variables + +Please [create an issue describing your use case](https://github.com/svoop/minitest-substitute/issues) in case you need more features such as the substitution of class variables or substitution via accessor methods. + +### Block + +To substitute the value of an instance variable for the duration of a block: + +```ruby +class Config + def initialize + @version = 1 + end +end + +Config.instance_variable_get('@version') # => 1 +with '@version', 2, on: Config do + Config.instance_variable_get('@version') # => 2 +end +Config.instance_variable_get('@version') # => 1 +``` + +Same goes for global variables: + +```ruby +$verbose = false # => false +with '$verbose', true do + $verbose # => true +end +$verbose # => false +``` + +And it works for hashes as well which comes in handy when you have to temporarily override the value of an environment variable: + +```ruby +ENV['EDITOR'] # => 'vi' +with "ENV['EDITOR']", 'nano' do + ENV['EDITOR'] # => 'nano' +end +ENV['EDITOR'] # => 'vi' +``` + +### Group of Tests + +When using spec notation, you can change a value for all tests within a `describe` group: + +```ruby +class Config + def initialize + @version = 1 + end +end + +describe Config do + subject do + Config.new + end + + describe 'original version' do + it "returns the original version" do + _(subject.instance_variable_get('@version')).must_equal 1 + end + end + + describe 'sustituted version' do + with '@version', 2, on: Config + + it "returns the substituted version" do + _(subject.instance_variable_get('@version')).must_equal 2 + end + end +end +``` + +For consistency with other Minitest helpers, the following alternative does exactly the same: + +```ruby +with '@version', on: Config do + 2 +end +``` + +(The spec integration is borrowed from [minitest-around](https://rubygems.org/gems/minitest-around) for elegance and compatibility.) + +## Development + +To install the development dependencies and then run the test suite: + +``` +bundle install +bundle exec rake # run tests once +bundle exec guard # run tests whenever files are modified +``` + +You're welcome to [submit issues](https://github.com/svoop/minitest-substitute/issues) and contribute code by [forking the project and submitting pull requests](https://docs.github.com/en/get-started/quickstart/fork-a-repo). + +## License + +The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). diff --git a/bin/console b/bin/console new file mode 100755 index 0000000..2ecbcfc --- /dev/null +++ b/bin/console @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "bundler/setup" +require "minitest/substitute" + +# You can add fixtures and/or initialization code here to make experimenting +# with your gem easier. You can also use a different console, if you like. + +require "irb" +IRB.start(__FILE__) diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000..dce67d8 --- /dev/null +++ b/bin/setup @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +IFS=$'\n\t' +set -vx + +bundle install + +# Do any other automated setup that you need to do here diff --git a/certs/svoop.pem b/certs/svoop.pem new file mode 100644 index 0000000..b77d81b --- /dev/null +++ b/certs/svoop.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhydWJ5 +L0RDPWJpdGNldGVyYS9EQz1jb20wHhcNMjIxMTA2MTIzNjUwWhcNMjMxMTA2MTIz +NjUwWjAjMSEwHwYDVQQDDBhydWJ5L0RDPWJpdGNldGVyYS9EQz1jb20wggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcLg+IHjXYaUlTSU7R235lQKD8ZhEe +KMhoGlSUonZ/zo1OT3KXcqTCP1iMX743xYs6upEGALCWWwq+nxvlDdnWRjF3AAv7 +ikC+Z2BEowjyeCCT/0gvn4ohKcR0JOzzRaIlFUVInlGSAHx2QHZ2N8ntf54lu7nd +L8CiDK8rClsY4JBNGOgH9UC81f+m61UUQuTLxyM2CXfAYkj/sGNTvFRJcNX+nfdC +hM9r2kH1+7wsa8yG7wJ2IkrzNACD8v84oE6qVusN8OLEMUI/NaEPVPbw2LUM149H +PVa0i729A4IhroNnFNmw4wOC93ARNbM1+LW36PLMmKjKudf5Exg8VmDVAgMBAAGj +dzB1MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSfK8MtR62mQ6oN +yoX/VKJzFjLSVDAdBgNVHREEFjAUgRJydWJ5QGJpdGNldGVyYS5jb20wHQYDVR0S +BBYwFIEScnVieUBiaXRjZXRlcmEuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAYG2na +ye8OE2DANQIFM/xDos/E4DaPWCJjX5xvFKNKHMCeQYPeZvLICCwyw2paE7Otwk6p +uvbg2Ks5ykXsbk5i6vxDoeeOLvmxCqI6m+tHb8v7VZtmwRJm8so0eSX0WvTaKnIf +CAn1bVUggczVdNoBXw9WAILKyw9bvh3Ft740XZrR74sd+m2pGwjCaM8hzLvrVbGP +DyYhlBeRWyQKQ0WDIsiTSRhzK8HwSTUWjvPwx7SEdIU/HZgyrk0ETObKPakVu6bH +kAyiRqgxF4dJviwtqI7mZIomWL63+kXLgjOjMe1SHxfIPo/0ji6+r1p4KYa7o41v +fwIwU1MKlFBdsjkd +-----END CERTIFICATE----- diff --git a/checksums/minitest-flash-0.1.0.gem.sha512 b/checksums/minitest-flash-0.1.0.gem.sha512 new file mode 100644 index 0000000..2b30a77 --- /dev/null +++ b/checksums/minitest-flash-0.1.0.gem.sha512 @@ -0,0 +1 @@ +c240bed743a19830b5eeeb6682ff03b00944e13dd24ffdbd31810fd2e9f870c9039cfdef37d055053770e9b184508dbd4e80db974512d5018d2384d355871c61 diff --git a/doc/green.mp3 b/doc/green.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..73e2f0f5ffcc0670857378e2c408fc7fcf972c7b GIT binary patch literal 8194 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 literal 0 HcmV?d00001 diff --git a/doc/red.mp3 b/doc/red.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..412e5f4437a2ea32f81d9c85b4431f70209045bf GIT binary patch literal 7358 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 literal 0 HcmV?d00001 diff --git a/doc/screenshot.gif b/doc/screenshot.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffd4293b52dcc6e90722074c8a4ba836d2612f5d GIT binary patch literal 81424 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

U_ovl|+(+RTmggBU3XPC>kc< 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

R8ibx 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 spec.homepage, + 'changelog_uri' => 'https://github.com/svoop/minitest-substitute/blob/main/CHANGELOG.md', + 'source_code_uri' => 'https://github.com/svoop/minitest-substitute', + 'documentation_uri' => 'https://www.rubydoc.info/gems/minitest-substitute', + 'bug_tracker_uri' => 'https://github.com/svoop/minitest-substitute/issues' + } + + spec.files = Dir['lib/**/*'] + spec.require_paths = %w(lib) + + spec.cert_chain = ["certs/svoop.pem"] + spec.signing_key = File.expand_path(ENV['GEM_SIGNING_KEY']) if ENV['GEM_SIGNING_KEY'] + + spec.extra_rdoc_files = Dir['README.md', 'CHANGELOG.md', 'LICENSE.txt'] + spec.rdoc_options += [ + '--title', 'Minitest::Substitute', + '--main', 'README.md', + '--line-numbers', + '--inline-source', + '--quiet' + ] + + spec.required_ruby_version = '>= 3.0.0' + + spec.add_runtime_dependency 'minitest', '~> 5' + + spec.add_development_dependency 'debug' + spec.add_development_dependency 'rake' + spec.add_development_dependency 'minitest' + spec.add_development_dependency 'minitest-flash' + spec.add_development_dependency 'minitest-focus' + spec.add_development_dependency 'guard' + spec.add_development_dependency 'guard-minitest' + spec.add_development_dependency 'yard' +end diff --git a/rakefile.rb b/rakefile.rb new file mode 100644 index 0000000..48fe8d3 --- /dev/null +++ b/rakefile.rb @@ -0,0 +1,30 @@ +require 'bundler/gem_tasks' + +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.libs << 'lib' + t.test_files = FileList['spec/lib/**/*_spec.rb'] + t.verbose = false + t.warning = !ENV['RUBYOPT']&.match?(/-W0/) +end + +namespace :yard do + desc "Run local YARD documentation server" + task :server do + `rm -rf ./.yardoc` + Thread.new do + sleep 2 + `open http://localhost:8808` + end + `yard server -r` + end +end + +Rake::Task[:test].enhance do + if ENV['RUBYOPT']&.match?(/-W0/) + puts "⚠️ Ruby warnings are disabled, remove -W0 from RUBYOPT to enable." + end +end + +task default: :test diff --git a/spec/factory.rb b/spec/factory.rb new file mode 100644 index 0000000..3a9e8d8 --- /dev/null +++ b/spec/factory.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class Config + def initialize + @version = 1 + end +end + +$_spec_config_instance = Config.new +$_spec_global_variable = :original diff --git a/spec/lib/minitest/substitute/spec_spec.rb b/spec/lib/minitest/substitute/spec_spec.rb new file mode 100644 index 0000000..d22ee3c --- /dev/null +++ b/spec/lib/minitest/substitute/spec_spec.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +require_relative '../../../spec_helper' +require_relative '../../../factory' + +describe :with do + 10.times do # test value reset even though order is random + describe "instance variable" do + context 'untouched' do + it "returns the original value" do + _($_spec_config_instance.instance_variable_get(:@version)).must_equal 1 + end + end + + context 'substituted' do + with '@version', 2, on: $_spec_config_instance + + it "returns the substitute value" do + _($_spec_config_instance.instance_variable_get(:@version)).must_equal 2 + end + end + end + end + + 10.times do # test value reset even though order is random + describe "global variable" do + context 'untouched' do + it "returns the original value" do + _($_spec_global_variable).must_equal :original + end + end + + context 'substituted' do + with "$_spec_global_variable", 'oggy' + + it "returns the substitute value" do + _($_spec_global_variable).must_equal 'oggy' + end + end + end + end + + 10.times do # test value reset even though order is random + describe "environment variable" do + context 'untouched' do + it "returns the original value" do + _(ENV['WITH_SPEC_ENV_VAR']).must_be :nil? + end + end + + context 'substituted' do + with "ENV['WITH_SPEC_ENV_VAR']", 'foobar' + + it "returns the substitute value" do + _(ENV['WITH_SPEC_ENV_VAR']).must_equal 'foobar' + end + end + end + end +end diff --git a/spec/lib/minitest/substitute/version_spec.rb b/spec/lib/minitest/substitute/version_spec.rb new file mode 100644 index 0000000..a8773bf --- /dev/null +++ b/spec/lib/minitest/substitute/version_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require_relative '../../../spec_helper' + +describe Minitest::Substitute::VERSION do + it "must be defined" do + _(Minitest::Substitute::VERSION).wont_be_nil + end +end diff --git a/spec/lib/minitest/substitute/with_spec.rb b/spec/lib/minitest/substitute/with_spec.rb new file mode 100644 index 0000000..d9073e6 --- /dev/null +++ b/spec/lib/minitest/substitute/with_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require_relative '../../../spec_helper' +require_relative '../../../factory' + +describe :with do + describe "instance variable" do + it "substitutes the value for the duration of a block" do + _($_spec_config_instance.instance_variable_get(:@version)).must_equal 1 + with '@version', 2, on: $_spec_config_instance do + _($_spec_config_instance.instance_variable_get(:@version)).must_equal 2 + end + _($_spec_config_instance.instance_variable_get(:@version)).must_equal 1 + end + end + + describe "global variable" do + it "substitutes the value for the duration of a block" do + _($_spec_global_variable).must_equal :original + with "$_spec_global_variable", 'oggy' do + _($_spec_global_variable).must_equal 'oggy' + end + _($_spec_global_variable).must_equal :original + end + end + + describe "environment variable" do + it "substitutes the value for the duration of a block" do + _(ENV['WITH_SPEC_ENV_VAR']).must_be :nil? + with "ENV['WITH_SPEC_ENV_VAR']", 'foobar' do + _(ENV['WITH_SPEC_ENV_VAR']).must_equal 'foobar' + end + _(ENV['WITH_SPEC_ENV_VAR']).must_be :nil? + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..6565587 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +gem 'minitest' + +require 'pathname' +require 'debug' + +require 'minitest/autorun' +require Pathname(__dir__).join('..', 'lib', 'minitest', 'substitute') + +require 'minitest/focus' + +class Minitest::Spec + class << self + alias_method :context, :describe + end +end