shoulda 3.6.0 → 4.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +181 -2
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +24 -9
  6. data/Appraisals +108 -10
  7. data/Gemfile +9 -5
  8. data/README.md +24 -17
  9. data/Rakefile +18 -13
  10. data/gemfiles/rails_4_2.gemfile +31 -0
  11. data/gemfiles/rails_4_2.gemfile.lock +240 -0
  12. data/gemfiles/rails_5_0.gemfile +29 -0
  13. data/gemfiles/rails_5_0.gemfile.lock +232 -0
  14. data/gemfiles/rails_5_1.gemfile +30 -0
  15. data/gemfiles/rails_5_1.gemfile.lock +249 -0
  16. data/gemfiles/rails_5_2.gemfile +32 -0
  17. data/gemfiles/rails_5_2.gemfile.lock +268 -0
  18. data/gemfiles/rails_6_0.gemfile +34 -0
  19. data/gemfiles/rails_6_0.gemfile.lock +285 -0
  20. data/lib/shoulda/version.rb +1 -1
  21. data/script/install_gems_in_all_appraisals +16 -0
  22. data/script/run_all_tests +16 -0
  23. data/script/supported_ruby_versions +7 -0
  24. data/script/update_gem_in_all_appraisals +17 -0
  25. data/script/update_gems_in_all_appraisals +16 -0
  26. data/shoulda.gemspec +3 -3
  27. data/test/acceptance/integrates_with_rails_test.rb +580 -0
  28. data/test/acceptance_test_helper.rb +32 -6
  29. data/test/support/acceptance/add_shoulda_to_project.rb +13 -18
  30. data/test/support/acceptance/matchers/have_output.rb +2 -0
  31. data/test/support/acceptance/matchers/indicate_that_tests_were_run.rb +109 -0
  32. data/test/support/acceptance/rails_application_with_shoulda.rb +47 -0
  33. data/test/support/{tests/current_bundle.rb → current_bundle.rb} +4 -4
  34. data/test/support/snowglobe.rb +5 -0
  35. data/test/test_helper.rb +9 -4
  36. metadata +37 -65
  37. data/.hound/ruby.yml +0 -1042
  38. data/gemfiles/4.2.gemfile +0 -17
  39. data/gemfiles/4.2.gemfile.lock +0 -174
  40. data/gemfiles/5.0.gemfile +0 -17
  41. data/gemfiles/5.0.gemfile.lock +0 -179
  42. data/test/acceptance/rails_integration_test.rb +0 -76
  43. data/test/report_warnings.rb +0 -7
  44. data/test/support/acceptance/helpers.rb +0 -19
  45. data/test/support/acceptance/helpers/active_model_helpers.rb +0 -11
  46. data/test/support/acceptance/helpers/base_helpers.rb +0 -14
  47. data/test/support/acceptance/helpers/command_helpers.rb +0 -54
  48. data/test/support/acceptance/helpers/file_helpers.rb +0 -19
  49. data/test/support/acceptance/helpers/gem_helpers.rb +0 -31
  50. data/test/support/acceptance/helpers/step_helpers.rb +0 -69
  51. data/test/support/acceptance/matchers/indicate_number_of_tests_was_run_matcher.rb +0 -54
  52. data/test/support/acceptance/matchers/indicate_that_tests_were_run_matcher.rb +0 -75
  53. data/test/support/tests/bundle.rb +0 -94
  54. data/test/support/tests/command_runner.rb +0 -230
  55. data/test/support/tests/filesystem.rb +0 -100
  56. data/test/support/tests/version.rb +0 -45
  57. data/test/warnings_spy.rb +0 -62
  58. data/test/warnings_spy/filesystem.rb +0 -45
  59. data/test/warnings_spy/partitioner.rb +0 -36
  60. data/test/warnings_spy/reader.rb +0 -53
  61. data/test/warnings_spy/reporter.rb +0 -88
@@ -1,36 +0,0 @@
1
- require 'forwardable'
2
-
3
- class WarningsSpy
4
- class Partitioner
5
- extend Forwardable
6
-
7
- attr_reader :relevant_warning_groups, :irrelevant_warning_groups
8
-
9
- def initialize(reader, filesystem)
10
- @reader = reader
11
- @search_text = filesystem.project_dir
12
- end
13
-
14
- def partition
15
- @relevant_warning_groups, @irrelevant_warning_groups =
16
- warning_groups.partition { |group| relevant_warnings?(group) }
17
- end
18
-
19
- protected
20
-
21
- attr_reader :reader, :search_text
22
-
23
- private
24
-
25
- def_delegators :reader, :warning_groups
26
-
27
- def relevant_warnings?(group)
28
- first_line = group[0]
29
- first_line.start_with?("#{project_root}/lib")
30
- end
31
-
32
- def project_root
33
- File.expand_path('../../..')
34
- end
35
- end
36
- end
@@ -1,53 +0,0 @@
1
- class WarningsSpy
2
- class Reader
3
- attr_reader :warning_groups
4
-
5
- def initialize(filesystem)
6
- @warnings_file = filesystem.warnings_file
7
-
8
- @current_group = []
9
- @warning_groups = []
10
- end
11
-
12
- def read
13
- warnings_file.rewind
14
-
15
- warnings_file.each_line do |line|
16
- process_line(line)
17
- end
18
-
19
- add_group(current_group)
20
- end
21
-
22
- protected
23
-
24
- attr_reader :warnings_file, :current_group
25
-
26
- private
27
-
28
- def process_line(line)
29
- if start_of_group?(line)
30
- add_group(current_group)
31
- @current_group = []
32
- end
33
-
34
- current_group << line
35
- end
36
-
37
- def start_of_group?(line)
38
- line =~ /^\S/
39
- end
40
-
41
- def add_group(group)
42
- unless group.empty? || group_already_added?(group)
43
- warning_groups << group
44
- end
45
- end
46
-
47
- def group_already_added?(group_to_be_added)
48
- warning_groups.any? do |group|
49
- group == group_to_be_added
50
- end
51
- end
52
- end
53
- end
@@ -1,88 +0,0 @@
1
- require 'forwardable'
2
-
3
- class WarningsSpy
4
- class Reporter
5
- extend Forwardable
6
-
7
- def initialize(partitioner, filesystem, project_name)
8
- @partitioner = partitioner
9
- @warnings_file = filesystem.warnings_file
10
- @relevant_warnings_file = filesystem.relevant_warnings_file
11
- @irrelevant_warnings_file = filesystem.irrelevant_warnings_file
12
- @project_name = project_name
13
- end
14
-
15
- def report
16
- reporting_all_groups do
17
- report_relevant_warning_groups
18
- report_irrelevant_warning_groups
19
- end
20
- end
21
-
22
- protected
23
-
24
- attr_reader :partitioner, :warnings_file, :relevant_warnings_file,
25
- :irrelevant_warnings_file, :project_name
26
-
27
- private
28
-
29
- def_delegators :partitioner, :relevant_warning_groups,
30
- :irrelevant_warning_groups
31
-
32
- def report_relevant_warning_groups
33
- if relevant_warning_groups.any?
34
- print_divider('-', 75, header: " #{project_name} warnings:")
35
- relevant_warning_groups.each do |group|
36
- group.each do |line|
37
- relevant_warnings_file.puts(line)
38
- puts line
39
- end
40
- end
41
- print_divider('-', 75)
42
- puts "#{project_name} warnings written to #{relevant_warnings_file.path}."
43
- end
44
- end
45
-
46
- def report_irrelevant_warning_groups
47
- if irrelevant_warning_groups.any?
48
- irrelevant_warning_groups.each do |group|
49
- group.each do |line|
50
- irrelevant_warnings_file.puts(line)
51
- end
52
- end
53
- puts "Non #{project_name} warnings were raised during the test run. These have been written to #{irrelevant_warnings_file.path}."
54
- end
55
- end
56
-
57
- def reporting_all_groups
58
- if relevant_warning_groups.any? || irrelevant_warning_groups.any?
59
- puts
60
- yield
61
- puts "All warnings were written to #{warnings_file.path}."
62
- puts
63
- end
64
- end
65
-
66
- def print_divider(character, count, options = {})
67
- puts
68
-
69
- if options[:header]
70
- first_count = 10
71
- second_count = options[:header].length - first_count
72
- string =
73
- horizontal_rule(character, first_count) +
74
- options[:header] +
75
- horizontal_rule(character, second_count)
76
- puts string
77
- else
78
- puts horizontal_rule(character, count)
79
- end
80
-
81
- puts
82
- end
83
-
84
- def horizontal_rule(character, count)
85
- character * count
86
- end
87
- end
88
- end