shoulda 4.0.0 → 5.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/{MIT-LICENSE → LICENSE} +1 -1
  3. data/README.md +32 -31
  4. data/lib/shoulda/version.rb +1 -1
  5. data/shoulda.gemspec +17 -14
  6. metadata +17 -62
  7. data/.autotest +0 -13
  8. data/.gitignore +0 -13
  9. data/.hound.yml +0 -3
  10. data/.rubocop.yml +0 -192
  11. data/.ruby-version +0 -1
  12. data/.travis.yml +0 -34
  13. data/Appraisals +0 -116
  14. data/CHANGELOG.md +0 -10
  15. data/CONTRIBUTING.md +0 -43
  16. data/Gemfile +0 -16
  17. data/Rakefile +0 -31
  18. data/gemfiles/rails_4_2.gemfile +0 -34
  19. data/gemfiles/rails_4_2.gemfile.lock +0 -240
  20. data/gemfiles/rails_5_0.gemfile +0 -32
  21. data/gemfiles/rails_5_0.gemfile.lock +0 -232
  22. data/gemfiles/rails_5_1.gemfile +0 -33
  23. data/gemfiles/rails_5_1.gemfile.lock +0 -247
  24. data/gemfiles/rails_5_2.gemfile +0 -35
  25. data/gemfiles/rails_5_2.gemfile.lock +0 -266
  26. data/gemfiles/rails_6_0.gemfile +0 -37
  27. data/gemfiles/rails_6_0.gemfile.lock +0 -291
  28. data/script/install_gems_in_all_appraisals +0 -16
  29. data/script/run_all_tests +0 -16
  30. data/script/supported_ruby_versions +0 -7
  31. data/script/update_gem_in_all_appraisals +0 -17
  32. data/script/update_gems_in_all_appraisals +0 -16
  33. data/test/acceptance/integrates_with_rails_test.rb +0 -580
  34. data/test/acceptance_test_helper.rb +0 -43
  35. data/test/support/acceptance/add_shoulda_to_project.rb +0 -73
  36. data/test/support/acceptance/helpers/array_helpers.rb +0 -13
  37. data/test/support/acceptance/helpers/pluralization_helpers.rb +0 -13
  38. data/test/support/acceptance/matchers/have_output.rb +0 -33
  39. data/test/support/acceptance/matchers/indicate_that_tests_were_run.rb +0 -109
  40. data/test/support/acceptance/rails_application_with_shoulda.rb +0 -47
  41. data/test/support/current_bundle.rb +0 -61
  42. data/test/support/snowglobe.rb +0 -5
  43. data/test/test_helper.rb +0 -23
@@ -1,13 +0,0 @@
1
- module AcceptanceTests
2
- module PluralizationHelpers
3
- def pluralize(count, singular_version, plural_version = nil)
4
- plural_version ||= singular_version + 's'
5
-
6
- if count == 1
7
- "#{count} #{singular_version}"
8
- else
9
- "#{count} #{plural_version}"
10
- end
11
- end
12
- end
13
- end
@@ -1,33 +0,0 @@
1
- module AcceptanceTests
2
- module Matchers
3
- # rubocop:disable Naming/PredicateName
4
- def have_output(output)
5
- HaveOutputMatcher.new(output)
6
- end
7
- # rubocop:enable Naming/PredicateName
8
-
9
- class HaveOutputMatcher
10
- def initialize(output)
11
- @output = output
12
- end
13
-
14
- def matches?(runner)
15
- @runner = runner
16
- runner.has_output?(output)
17
- end
18
-
19
- def failure_message
20
- "Expected command to have output, but did not.\n\n" +
21
- "Command: #{runner.formatted_command}\n\n" +
22
- "Expected output:\n" +
23
- output.inspect + "\n\n" +
24
- "Actual output:\n" +
25
- runner.output
26
- end
27
-
28
- protected
29
-
30
- attr_reader :output, :runner
31
- end
32
- end
33
- end
@@ -1,109 +0,0 @@
1
- require_relative '../helpers/array_helpers'
2
- require_relative '../helpers/pluralization_helpers'
3
-
4
- module AcceptanceTests
5
- module Matchers
6
- def indicate_that_tests_were_run(series)
7
- IndicateThatTestsWereRunMatcher.new(series)
8
- end
9
-
10
- class IndicateThatTestsWereRunMatcher
11
- include ArrayHelpers
12
- include PluralizationHelpers
13
-
14
- def initialize(expected_numbers)
15
- @expected_numbers = expected_numbers
16
- end
17
-
18
- def matches?(runner)
19
- @runner = runner
20
- Set.new(expected_numbers).subset?(Set.new(actual_numbers))
21
- end
22
-
23
- def failure_message
24
- "Expected output to indicate that #{some_tests_were_run}.\n" +
25
- "#{formatted_expected_numbers}\n" +
26
- "#{formatted_actual_numbers}\n\n" +
27
- "Output:\n\n" +
28
- actual_output
29
- end
30
-
31
- protected
32
-
33
- attr_reader :expected_numbers, :runner
34
-
35
- private
36
-
37
- def some_tests_were_run
38
- if some_tests_were_run_clauses.size > 1
39
- "#{to_sentence(some_tests_were_run_clauses)} were run"
40
- else
41
- "#{some_tests_were_run_clauses} was run"
42
- end
43
- end
44
-
45
- def some_tests_were_run_clauses
46
- expected_numbers.map do |type, number|
47
- if number == 1
48
- "#{number} #{type.to_s.chop}"
49
- else
50
- "#{number} #{type}"
51
- end
52
- end
53
- end
54
-
55
- def formatted_expected_numbers
56
- "Expected numbers: #{format_hash(expected_numbers)}"
57
- end
58
-
59
- def formatted_actual_numbers
60
- report_line = find_report_line_in(actual_output)
61
-
62
- if report_line
63
- "Actual numbers: #{report_line.inspect}"
64
- else
65
- 'Actual numbers: (n/a)'
66
- end
67
- end
68
-
69
- def actual_numbers
70
- numbers = parse(
71
- actual_output,
72
- [:tests, :assertions, :failures, :errors, :skips],
73
- )
74
- numbers || {}
75
- end
76
-
77
- def actual_output
78
- runner.output
79
- end
80
-
81
- def parse(text, pieces)
82
- report_line = find_report_line_in(text)
83
-
84
- if report_line
85
- pieces.inject({}) do |hash, piece|
86
- number = report_line.match(/(\d+) #{piece}/)[1].to_i
87
- hash.merge(piece => number)
88
- end
89
- end
90
- end
91
-
92
- def find_report_line_in(text)
93
- lines = text.split(/\n/)
94
-
95
- index_of_line_with_time = lines.find_index do |line|
96
- line =~ /\AFinished in \d\.\d+s\Z/
97
- end
98
-
99
- if index_of_line_with_time
100
- lines[index_of_line_with_time + 1]
101
- end
102
- end
103
-
104
- def format_hash(hash)
105
- '{' + hash.map { |k, v| "#{k}: #{v.inspect}" }.join(', ') + '}'
106
- end
107
- end
108
- end
109
- end
@@ -1,47 +0,0 @@
1
- require_relative 'add_shoulda_to_project'
2
- require_relative '../snowglobe'
3
-
4
- module AcceptanceTests
5
- class RailsApplicationWithShoulda < Snowglobe::RailsApplication
6
- def create
7
- super
8
-
9
- bundle.updating do
10
- bundle.add_gem 'minitest-reporters'
11
- AddShouldaToProject.call(
12
- self,
13
- test_framework: :minitest,
14
- libraries: [:rails],
15
- )
16
- end
17
-
18
- fs.append_to_file 'test/test_helper.rb', <<-FILE
19
- require 'minitest/autorun'
20
- require 'minitest/reporters'
21
-
22
- Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
23
-
24
- begin
25
- require "rails/test_unit/reporter"
26
-
27
- # Patch Rails' reporter for Minitest so that it looks for the test
28
- # correctly under Minitest 5.11
29
- # See: <https://github.com/rails/rails/pull/31624>
30
- Rails::TestUnitReporter.class_eval do
31
- def format_rerun_snippet(result)
32
- location, line = if result.respond_to?(:source_location)
33
- result.source_location
34
- else
35
- result.method(result.name).source_location
36
- end
37
-
38
- "\#{executable} \#{relative_path_for(location)}:\#{line}"
39
- end
40
- end
41
- rescue LoadError
42
- # Okay, rails/test_unit/reporter isn't a thing, no big deal
43
- end
44
- FILE
45
- end
46
- end
47
- end
@@ -1,61 +0,0 @@
1
- require 'bundler'
2
- require 'appraisal'
3
-
4
- module Tests
5
- class CurrentBundle
6
- AppraisalNotSpecified = Class.new(ArgumentError)
7
-
8
- include Singleton
9
-
10
- def assert_appraisal!
11
- unless appraisal_in_use?
12
- message = <<MSG
13
-
14
-
15
- Please run tests starting with `appraisal <appraisal_name>`.
16
- Possible appraisals are: #{available_appraisals}
17
-
18
- MSG
19
- raise AppraisalNotSpecified, message
20
- end
21
- end
22
-
23
- def appraisal_in_use?
24
- path.dirname == root.join('gemfiles')
25
- end
26
-
27
- def current_or_latest_appraisal
28
- current_appraisal || latest_appraisal
29
- end
30
-
31
- def latest_appraisal
32
- available_appraisals.max
33
- end
34
-
35
- private
36
-
37
- def available_appraisals
38
- appraisals = []
39
-
40
- Appraisal::AppraisalFile.each do |appraisal|
41
- appraisals << appraisal.name
42
- end
43
-
44
- appraisals
45
- end
46
-
47
- def current_appraisal
48
- if appraisal_in_use?
49
- File.basename(path, '.gemfile')
50
- end
51
- end
52
-
53
- def path
54
- Bundler.default_gemfile
55
- end
56
-
57
- def root
58
- Pathname.new('../../..').expand_path(__FILE__)
59
- end
60
- end
61
- end
@@ -1,5 +0,0 @@
1
- require 'snowglobe'
2
-
3
- Snowglobe.configure do |config|
4
- config.project_name = 'shoulda'
5
- end
data/test/test_helper.rb DELETED
@@ -1,23 +0,0 @@
1
- require 'bundler/setup'
2
- require 'pry'
3
- require 'pry-byebug'
4
- require 'minitest/autorun'
5
- require 'minitest/reporters'
6
- require 'warnings_logger'
7
-
8
- require_relative '../lib/shoulda'
9
-
10
- Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
11
-
12
- WarningsLogger::Spy.call(
13
- project_name: 'shoulda',
14
- project_directory: Pathname.new('../..').expand_path(__FILE__),
15
- )
16
-
17
- Shoulda::Matchers.configure do |config|
18
- config.integrate do |with|
19
- with.test_framework :minitest
20
- end
21
- end
22
-
23
- $VERBOSE = true