shoulda-matchers 2.8.0.rc2 → 2.8.0
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.
- checksums.yaml +4 -4
- data/.gitignore +4 -6
- data/.travis.yml +7 -4
- data/NEWS.md +18 -25
- data/README.md +1 -1
- data/Rakefile +2 -105
- data/doc_config/gh-pages/index.html.erb +1 -1
- data/lib/shoulda/matchers/version.rb +1 -1
- data/tasks/documentation.rb +171 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d1979af1b53164efe4a312705f9879f599b123
|
4
|
+
data.tar.gz: 4f95461b3a1327e5ccf9d233f466cab9ff0e41d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ce8af4fa7d9b70636ee576221f15646621900908f9e351a9cff54de47514e4f01242b4d7ce5340e8dc0c053341e82e9c90afe991d55a1b35af74853a0a2d0f8
|
7
|
+
data.tar.gz: 1c8fb02675836314efc0c43c3054b16a02b6b56d36070472f1780a3b677de74f47281c01290902f5c81bc8051ed06982e17ddaf159ed44c3098470882130125b
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
language: ruby
|
2
|
+
sudo: false
|
3
|
+
script: "bundle exec rake"
|
4
|
+
|
5
|
+
branches:
|
6
|
+
except:
|
7
|
+
- site
|
8
|
+
- gh-pages
|
2
9
|
|
3
10
|
rvm:
|
4
11
|
- 1.9.2
|
@@ -9,10 +16,6 @@ gemfile:
|
|
9
16
|
- gemfiles/3.1.gemfile
|
10
17
|
- gemfiles/3.2.gemfile
|
11
18
|
|
12
|
-
sudo: false
|
13
|
-
|
14
|
-
script: "bundle exec rake"
|
15
|
-
|
16
19
|
matrix:
|
17
20
|
allow_failures:
|
18
21
|
- rvm: rbx-19mode
|
data/NEWS.md
CHANGED
@@ -1,28 +1,4 @@
|
|
1
|
-
# 2.8.0
|
2
|
-
|
3
|
-
### Bug fixes
|
4
|
-
|
5
|
-
* Fix `allow_value`, `validate_numericality_of` and `validate_inclusion_of` so
|
6
|
-
that they handle RangeErrors emitted from ActiveRecord 4.2. These exceptions
|
7
|
-
arise whenever we attempt to set an attribute using a value that lies outside
|
8
|
-
the range of the column (assuming the column is an integer). RangeError is now
|
9
|
-
treated specially, failing the test instead of bubbling up as an error.
|
10
|
-
([#634], [#637], [#642])
|
11
|
-
|
12
|
-
### Features
|
13
|
-
|
14
|
-
* Update `dependent` qualifier on association matchers to support `:destroy`,
|
15
|
-
`:delete`, `:nullify`, `:restrict`, `:restrict_with_exception`, and
|
16
|
-
`:restrict_with_error`. You can also pass `true` or `false` to assert that
|
17
|
-
the association has (or has not) been declared with *any* dependent option.
|
18
|
-
([#631])
|
19
|
-
|
20
|
-
[#631]: https://github.com/thoughtbot/shoulda-matchers/pull/631
|
21
|
-
[#634]: https://github.com/thoughtbot/shoulda-matchers/pull/634
|
22
|
-
[#637]: https://github.com/thoughtbot/shoulda-matchers/pull/637
|
23
|
-
[#642]: https://github.com/thoughtbot/shoulda-matchers/pull/642
|
24
|
-
|
25
|
-
# 2.8.0.rc1
|
1
|
+
# 2.8.0
|
26
2
|
|
27
3
|
### Deprecations
|
28
4
|
|
@@ -73,6 +49,13 @@
|
|
73
49
|
notation (e.g. `posts#show`), route parameters such as `id` do not need to be
|
74
50
|
specified as a string but may be specified as a number as well. ([#602])
|
75
51
|
|
52
|
+
* Fix `allow_value`, `validate_numericality_of` and `validate_inclusion_of` so
|
53
|
+
that they handle RangeErrors emitted from ActiveRecord 4.2. These exceptions
|
54
|
+
arise whenever we attempt to set an attribute using a value that lies outside
|
55
|
+
the range of the column (assuming the column is an integer). RangeError is now
|
56
|
+
treated specially, failing the test instead of bubbling up as an error.
|
57
|
+
([#634], [#637], [#642])
|
58
|
+
|
76
59
|
### Features
|
77
60
|
|
78
61
|
* Add ability to test `:primary_key` option on associations. ([#597])
|
@@ -94,6 +77,12 @@
|
|
94
77
|
* Add support for Rails 4.2, especially fixing `serialize` matcher to remove
|
95
78
|
warning about `serialized_attributes` being deprecated. ([#627])
|
96
79
|
|
80
|
+
* Update `dependent` qualifier on association matchers to support `:destroy`,
|
81
|
+
`:delete`, `:nullify`, `:restrict`, `:restrict_with_exception`, and
|
82
|
+
`:restrict_with_error`. You can also pass `true` or `false` to assert that
|
83
|
+
the association has (or has not) been declared with *any* dependent option.
|
84
|
+
([#631])
|
85
|
+
|
97
86
|
### Improvements
|
98
87
|
|
99
88
|
* Tweak `allow_value` failure message so that it reads a bit nicer when listing
|
@@ -111,6 +100,10 @@
|
|
111
100
|
[#543]: https://github.com/thoughtbot/shoulda-matchers/pull/543
|
112
101
|
[#622]: https://github.com/thoughtbot/shoulda-matchers/pull/622
|
113
102
|
[#627]: https://github.com/thoughtbot/shoulda-matchers/pull/627
|
103
|
+
[#631]: https://github.com/thoughtbot/shoulda-matchers/pull/631
|
104
|
+
[#634]: https://github.com/thoughtbot/shoulda-matchers/pull/634
|
105
|
+
[#637]: https://github.com/thoughtbot/shoulda-matchers/pull/637
|
106
|
+
[#642]: https://github.com/thoughtbot/shoulda-matchers/pull/642
|
114
107
|
|
115
108
|
# 2.7.0
|
116
109
|
|
data/README.md
CHANGED
@@ -183,7 +183,7 @@ and may be redistributed under the terms specified in the
|
|
183
183
|
[travis-badge]: http://img.shields.io/travis/thoughtbot/shoulda-matchers/master.svg
|
184
184
|
[travis]: http://travis-ci.org/thoughtbot/shoulda-matchers
|
185
185
|
[downloads-badge]: http://img.shields.io/gem/dtv/shoulda-matchers.svg
|
186
|
-
[rubydocs]: http://
|
186
|
+
[rubydocs]: http://matchers.shoulda.io/docs
|
187
187
|
[community]: http://thoughtbot.com/community
|
188
188
|
[contributors]: https://github.com/thoughtbot/shoulda-matchers/contributors
|
189
189
|
[shoulda]: http://github.com/thoughtbot/shoulda
|
data/Rakefile
CHANGED
@@ -2,10 +2,7 @@ require 'bundler/setup'
|
|
2
2
|
require 'bundler/gem_tasks'
|
3
3
|
require 'rspec/core/rake_task'
|
4
4
|
require 'appraisal'
|
5
|
-
|
6
|
-
require_relative 'lib/shoulda/matchers/version'
|
7
|
-
|
8
|
-
CURRENT_VERSION = Shoulda::Matchers::VERSION
|
5
|
+
require_relative 'tasks/documentation'
|
9
6
|
|
10
7
|
RSpec::Core::RakeTask.new('spec:unit') do |t|
|
11
8
|
t.ruby_opts = '-w -r ./spec/report_warnings'
|
@@ -34,106 +31,6 @@ task :appraise do
|
|
34
31
|
exec 'appraisal install && appraisal rake'
|
35
32
|
end
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
namespace :docs do
|
40
|
-
file GH_PAGES_DIR do
|
41
|
-
sh "git clone git@github.com:thoughtbot/shoulda-matchers.git #{GH_PAGES_DIR} --branch gh-pages"
|
42
|
-
end
|
43
|
-
|
44
|
-
task :setup => GH_PAGES_DIR do
|
45
|
-
within_gh_pages do
|
46
|
-
sh 'git fetch origin'
|
47
|
-
sh 'git reset --hard origin/gh-pages'
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
desc 'Generate docs for a particular version'
|
52
|
-
task :generate, [:version, :latest_version] => :setup do |t, args|
|
53
|
-
generate_docs(args.version, latest_version: latest_version)
|
54
|
-
end
|
55
|
-
|
56
|
-
desc 'Generate docs for a particular version and push them to GitHub'
|
57
|
-
task :publish, [:version, :latest_version] => :setup do |t, args|
|
58
|
-
generate_docs(args.version, latest_version: latest_version)
|
59
|
-
publish_docs(args.version, latest_version: latest_version)
|
60
|
-
end
|
61
|
-
|
62
|
-
desc "Generate docs for version #{CURRENT_VERSION} and push them to GitHub"
|
63
|
-
task :publish_latest => :setup do
|
64
|
-
version = Gem::Version.new(CURRENT_VERSION)
|
65
|
-
|
66
|
-
unless version.prerelease?
|
67
|
-
latest_version = version.to_s
|
68
|
-
end
|
69
|
-
|
70
|
-
generate_docs(CURRENT_VERSION, latest_version: latest_version)
|
71
|
-
publish_docs(CURRENT_VERSION, latest_version: latest_version)
|
72
|
-
end
|
73
|
-
|
74
|
-
def rewrite_index_to_inject_version(ref, version)
|
75
|
-
within_gh_pages do
|
76
|
-
filename = "#{ref}/index.html"
|
77
|
-
content = File.read(filename)
|
78
|
-
content.sub!(%r{<h1>shoulda-matchers.+</h1>}, "<h1>shoulda-matchers (#{version})</h1>")
|
79
|
-
File.open(filename, 'w') {|f| f.write(content) }
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def generate_docs(version, options = {})
|
84
|
-
ref = determine_ref_from(version)
|
85
|
-
|
86
|
-
sh "rm -rf #{GH_PAGES_DIR}/#{ref}"
|
87
|
-
sh "bundle exec yard -o #{GH_PAGES_DIR}/#{ref}"
|
88
|
-
|
89
|
-
rewrite_index_to_inject_version(ref, version)
|
90
|
-
|
91
|
-
within_gh_pages do
|
92
|
-
sh "git add #{ref}"
|
93
|
-
end
|
94
|
-
|
95
|
-
if options[:latest_version]
|
96
|
-
generate_file_that_redirects_to_latest_version(options[:latest_version])
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def publish_docs(version, options = {})
|
101
|
-
message = build_commit_message(version)
|
102
|
-
|
103
|
-
within_gh_pages do
|
104
|
-
sh 'git clean -f'
|
105
|
-
sh "git commit -m '#{message}'"
|
106
|
-
sh 'git push'
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def generate_file_that_redirects_to_latest_version(version)
|
111
|
-
ref = determine_ref_from(version)
|
112
|
-
locals = { ref: ref }
|
113
|
-
|
114
|
-
erb = ERB.new(File.read('doc_config/gh-pages/index.html.erb'))
|
115
|
-
|
116
|
-
within_gh_pages do
|
117
|
-
File.open('index.html', 'w') { |f| f.write(erb.result(binding)) }
|
118
|
-
sh 'git add index.html'
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def determine_ref_from(version)
|
123
|
-
if version =~ /^\d+\.\d+\.\d+/
|
124
|
-
'v' + version
|
125
|
-
else
|
126
|
-
version
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
def build_commit_message(version)
|
131
|
-
"Regenerated docs for version #{version}"
|
132
|
-
end
|
133
|
-
|
134
|
-
def within_gh_pages(&block)
|
135
|
-
Dir.chdir(GH_PAGES_DIR, &block)
|
136
|
-
end
|
137
|
-
end
|
34
|
+
Shoulda::Matchers::DocumentationTasks.create
|
138
35
|
|
139
36
|
task release: 'docs:publish_latest'
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<title>shoulda-matchers Documentation - latest</title>
|
5
|
-
<meta http-equiv="refresh" content="0;URL
|
5
|
+
<meta http-equiv="refresh" content="0;URL=<%= locals[:ref] %>">
|
6
6
|
</head>
|
7
7
|
<body>
|
8
8
|
</body>
|
@@ -0,0 +1,171 @@
|
|
1
|
+
require_relative '../lib/shoulda/matchers/version'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module Shoulda
|
5
|
+
module Matchers
|
6
|
+
module DocumentationTasks
|
7
|
+
extend Rake::DSL
|
8
|
+
|
9
|
+
def self.create
|
10
|
+
publisher = DocumentationPublisher.new
|
11
|
+
|
12
|
+
namespace :docs do
|
13
|
+
file DocumentationPublisher.gh_pages_dir do
|
14
|
+
publisher.create_reference_to_gh_pages_branch
|
15
|
+
end
|
16
|
+
|
17
|
+
file DocumentationPublisher.docs_dir => DocumentationPublisher.gh_pages_dir
|
18
|
+
|
19
|
+
task :setup => DocumentationPublisher.docs_dir do
|
20
|
+
publisher.reset_repo_directory
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Generate docs for a particular version'
|
24
|
+
task :generate, [:version, :latest_version] => :setup do |t, args|
|
25
|
+
unless args.version
|
26
|
+
raise ArgumentError, "Missing version"
|
27
|
+
end
|
28
|
+
|
29
|
+
unless args.latest_version
|
30
|
+
raise ArgumentError, "Missing latest_version"
|
31
|
+
end
|
32
|
+
|
33
|
+
publisher.generate_docs_for(args.version, latest_version: args.latest_version)
|
34
|
+
end
|
35
|
+
|
36
|
+
desc 'Generate docs for a particular version and push them to GitHub'
|
37
|
+
task :publish, [:version, :latest_version] => :setup do |t, args|
|
38
|
+
unless args.version
|
39
|
+
raise ArgumentError, "Missing version"
|
40
|
+
end
|
41
|
+
|
42
|
+
unless args.latest_version
|
43
|
+
raise ArgumentError, "Missing latest_version"
|
44
|
+
end
|
45
|
+
|
46
|
+
publisher.generate_docs_for(args.version, latest_version: args.latest_version)
|
47
|
+
publisher.publish_docs_for(args.version, latest_version: args.latest_version)
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Generate docs for version #{DocumentationPublisher.current_version} and push them to GitHub"
|
51
|
+
task :publish_latest => :setup do
|
52
|
+
publisher.publish_latest_version
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class DocumentationPublisher
|
59
|
+
CURRENT_VERSION = Shoulda::Matchers::VERSION
|
60
|
+
GITHUB_USERNAME = 'thoughtbot'
|
61
|
+
# GITHUB_USERNAME = 'mcmire'
|
62
|
+
GH_PAGES_DIR = ".#{GITHUB_USERNAME}-gh-pages"
|
63
|
+
DOCS_DIR = "#{GH_PAGES_DIR}/docs"
|
64
|
+
|
65
|
+
def self.current_version
|
66
|
+
CURRENT_VERSION
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.gh_pages_dir
|
70
|
+
GH_PAGES_DIR
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.docs_dir
|
74
|
+
DOCS_DIR
|
75
|
+
end
|
76
|
+
|
77
|
+
def create_reference_to_gh_pages_branch
|
78
|
+
system "git clone git@github.com:#{GITHUB_USERNAME}/shoulda-matchers.git #{GH_PAGES_DIR} --branch gh-pages"
|
79
|
+
end
|
80
|
+
|
81
|
+
def reset_repo_directory
|
82
|
+
within_gh_pages_dir do
|
83
|
+
system 'git fetch origin'
|
84
|
+
system 'git reset --hard origin/gh-pages'
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def generate_docs_for(version, options = {})
|
89
|
+
ref = determine_ref_from(version)
|
90
|
+
|
91
|
+
system "rm -rf #{DOCS_DIR}/#{ref}"
|
92
|
+
system "bundle exec yard -o #{DOCS_DIR}/#{ref}"
|
93
|
+
|
94
|
+
add_version_to_index_page_for(ref, version)
|
95
|
+
|
96
|
+
within_docs_dir do
|
97
|
+
system "git add #{ref}"
|
98
|
+
end
|
99
|
+
|
100
|
+
if options[:latest_version]
|
101
|
+
generate_file_that_redirects_to_latest_version(options[:latest_version])
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def publish_docs_for(version, options = {})
|
106
|
+
message = build_commit_message(version)
|
107
|
+
|
108
|
+
within_gh_pages_dir do
|
109
|
+
system 'git clean -f'
|
110
|
+
system "git commit -m '#{message}'"
|
111
|
+
system 'git push origin gh-pages'
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def publish_latest_version
|
116
|
+
version = Gem::Version.new(CURRENT_VERSION)
|
117
|
+
options = {}
|
118
|
+
|
119
|
+
unless version.prerelease?
|
120
|
+
options[:latest_version] = version.to_s
|
121
|
+
end
|
122
|
+
|
123
|
+
generate_docs_for(CURRENT_VERSION, options)
|
124
|
+
publish_docs_for(CURRENT_VERSION, options)
|
125
|
+
end
|
126
|
+
|
127
|
+
private
|
128
|
+
|
129
|
+
def add_version_to_index_page_for(ref, version)
|
130
|
+
within_docs_dir do
|
131
|
+
filename = "#{ref}/index.html"
|
132
|
+
content = File.read(filename)
|
133
|
+
content.sub!(%r{<h1>shoulda-matchers.+</h1>}, "<h1>shoulda-matchers (#{version})</h1>")
|
134
|
+
File.open(filename, 'w') {|f| f.write(content) }
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def generate_file_that_redirects_to_latest_version(version)
|
139
|
+
ref = determine_ref_from(version)
|
140
|
+
locals = { ref: ref, github_username: GITHUB_USERNAME }
|
141
|
+
|
142
|
+
erb = ERB.new(File.read('doc_config/gh-pages/index.html.erb'))
|
143
|
+
|
144
|
+
within_docs_dir do
|
145
|
+
File.open('index.html', 'w') { |f| f.write(erb.result(binding)) }
|
146
|
+
system 'git add index.html'
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def determine_ref_from(version)
|
151
|
+
if version =~ /^\d+\.\d+\.\d+/
|
152
|
+
'v' + version
|
153
|
+
else
|
154
|
+
version
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def build_commit_message(version)
|
159
|
+
"Regenerated docs for version #{version}"
|
160
|
+
end
|
161
|
+
|
162
|
+
def within_gh_pages_dir(&block)
|
163
|
+
Dir.chdir(GH_PAGES_DIR, &block)
|
164
|
+
end
|
165
|
+
|
166
|
+
def within_docs_dir(&block)
|
167
|
+
Dir.chdir(DOCS_DIR, &block)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoulda-matchers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.0
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tammer Saleh
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2015-01-
|
17
|
+
date: 2015-01-30 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: activesupport
|
@@ -287,6 +287,7 @@ files:
|
|
287
287
|
- spec/warnings_spy/partitioner.rb
|
288
288
|
- spec/warnings_spy/reader.rb
|
289
289
|
- spec/warnings_spy/reporter.rb
|
290
|
+
- tasks/documentation.rb
|
290
291
|
homepage: http://thoughtbot.com/community/
|
291
292
|
licenses:
|
292
293
|
- MIT
|
@@ -302,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
302
303
|
version: 1.9.2
|
303
304
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
304
305
|
requirements:
|
305
|
-
- - "
|
306
|
+
- - ">="
|
306
307
|
- !ruby/object:Gem::Version
|
307
|
-
version:
|
308
|
+
version: '0'
|
308
309
|
requirements: []
|
309
310
|
rubyforge_project:
|
310
311
|
rubygems_version: 2.2.2
|