lowered-expectations 1.0.1 → 1.0.2
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/.rubocop.yml +33 -25
- data/.travis.yml +7 -3
- data/Gemfile +1 -1
- data/README.md +0 -4
- data/RELEASENOTES.md +7 -0
- data/Rakefile +1 -1
- data/lib/lowered/expectations.rb +3 -3
- data/lowered-expectations.gemspec +2 -5
- data/spec/integration/lowered/expectations_integration_spec.rb +2 -2
- data/spec/lowered/expectations_spec.rb +10 -10
- data/spec/spec_helper.rb +0 -1
- data/tasks/clean.rake +1 -1
- data/tasks/rspec.rake +1 -1
- data/tasks/rubocop.rake +1 -1
- data/tasks/rubygems.rake +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2fd98bbb73967a109a601bfead6bcbe8f3431646
|
|
4
|
+
data.tar.gz: cc882dfd03ebec15f64e7b1ad7e50d7d1e12c353
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8546cbb024fa93345bf7a258368dc957184ef4cce5ea02730c87a804a64ff1dd3bf316402831b094409b52c2b25af59d377033a82134252a67363971ae02d72b
|
|
7
|
+
data.tar.gz: 1cace52623498e077b6ac55c6d5980d7e886d3b73e151c5b81e88dda708f2557e517729d514b64768d170a46ba3ef7a2bc41371137d4ae61336ac9f3ba9f299b
|
data/.rubocop.yml
CHANGED
|
@@ -29,7 +29,7 @@ DeprecatedClassMethods:
|
|
|
29
29
|
|
|
30
30
|
# Offense count: 19
|
|
31
31
|
# Cop supports --auto-correct.
|
|
32
|
-
|
|
32
|
+
Style/PreferredHashMethods:
|
|
33
33
|
Enabled: false
|
|
34
34
|
|
|
35
35
|
Documentation:
|
|
@@ -145,10 +145,10 @@ StringLiterals:
|
|
|
145
145
|
- double_quotes
|
|
146
146
|
|
|
147
147
|
# disabling a bunch of style linters
|
|
148
|
-
|
|
148
|
+
Layout/BlockAlignment:
|
|
149
149
|
Enabled: false
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
Layout/EndAlignment:
|
|
152
152
|
Enabled: false
|
|
153
153
|
|
|
154
154
|
Lint/Loop:
|
|
@@ -158,19 +158,22 @@ Lint/Void:
|
|
|
158
158
|
Exclude:
|
|
159
159
|
- dashboard/spec/**/*
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
Layout/AccessModifierIndentation:
|
|
162
162
|
Enabled: false
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
Naming/AccessorMethodName:
|
|
165
165
|
Enabled: false
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
Layout/AlignArray:
|
|
168
168
|
Enabled: false
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
Layout/AlignHash:
|
|
171
171
|
Enabled: false
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
Layout/AlignParameters:
|
|
174
|
+
Enabled: false
|
|
175
|
+
|
|
176
|
+
Metrics/BlockLength:
|
|
174
177
|
Enabled: false
|
|
175
178
|
|
|
176
179
|
Metrics/BlockNesting:
|
|
@@ -179,7 +182,7 @@ Metrics/BlockNesting:
|
|
|
179
182
|
Style/BracesAroundHashParameters:
|
|
180
183
|
Enabled: false
|
|
181
184
|
|
|
182
|
-
|
|
185
|
+
Layout/CaseIndentation:
|
|
183
186
|
Enabled: false
|
|
184
187
|
|
|
185
188
|
Style/CollectionMethods:
|
|
@@ -188,25 +191,25 @@ Style/CollectionMethods:
|
|
|
188
191
|
Style/CommentAnnotation:
|
|
189
192
|
Enabled: false
|
|
190
193
|
|
|
191
|
-
|
|
194
|
+
Layout/CommentIndentation:
|
|
192
195
|
Enabled: false
|
|
193
196
|
|
|
194
197
|
Style/DefWithParentheses:
|
|
195
198
|
Enabled: false
|
|
196
199
|
|
|
197
|
-
|
|
200
|
+
Layout/DotPosition:
|
|
198
201
|
Enabled: false
|
|
199
202
|
|
|
200
203
|
Style/EachWithObject:
|
|
201
204
|
Enabled: false
|
|
202
205
|
|
|
203
|
-
|
|
206
|
+
Layout/EmptyLineBetweenDefs:
|
|
204
207
|
Enabled: false
|
|
205
208
|
|
|
206
|
-
|
|
209
|
+
Layout/EmptyLines:
|
|
207
210
|
Enabled: false
|
|
208
211
|
|
|
209
|
-
|
|
212
|
+
Layout/EmptyLinesAroundAccessModifier:
|
|
210
213
|
Enabled: false
|
|
211
214
|
|
|
212
215
|
Style/FrozenStringLiteralComment:
|
|
@@ -221,7 +224,7 @@ Style/HashSyntax:
|
|
|
221
224
|
Style/IfUnlessModifier:
|
|
222
225
|
Enabled: false
|
|
223
226
|
|
|
224
|
-
|
|
227
|
+
Layout/IndentationWidth:
|
|
225
228
|
Enabled: false
|
|
226
229
|
|
|
227
230
|
Style/Lambda:
|
|
@@ -230,7 +233,7 @@ Style/Lambda:
|
|
|
230
233
|
Style/MultilineBlockChain:
|
|
231
234
|
Enabled: false
|
|
232
235
|
|
|
233
|
-
Style/
|
|
236
|
+
Style/MethodCallWithoutArgsParentheses:
|
|
234
237
|
Enabled: false
|
|
235
238
|
|
|
236
239
|
Style/MultilineIfThen:
|
|
@@ -245,7 +248,7 @@ Style/MultilineTernaryOperator:
|
|
|
245
248
|
Style/NilComparison:
|
|
246
249
|
Enabled: false
|
|
247
250
|
|
|
248
|
-
|
|
251
|
+
Naming/PredicateName:
|
|
249
252
|
Enabled: false
|
|
250
253
|
|
|
251
254
|
Style/RaiseArgs:
|
|
@@ -263,22 +266,19 @@ Style/RegexpLiteral:
|
|
|
263
266
|
Style/SingleLineMethods:
|
|
264
267
|
Enabled: false
|
|
265
268
|
|
|
266
|
-
|
|
269
|
+
Layout/SpaceAfterComma:
|
|
267
270
|
Enabled: false
|
|
268
271
|
|
|
269
|
-
|
|
272
|
+
Layout/SpaceAfterNot:
|
|
270
273
|
Enabled: false
|
|
271
274
|
|
|
272
|
-
|
|
275
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
|
273
276
|
Enabled: false
|
|
274
277
|
|
|
275
|
-
|
|
278
|
+
Layout/SpaceInsideParens:
|
|
276
279
|
Enabled: false
|
|
277
280
|
|
|
278
|
-
|
|
279
|
-
Enabled: false
|
|
280
|
-
|
|
281
|
-
Style/TrailingBlankLines:
|
|
281
|
+
Layout/TrailingBlankLines:
|
|
282
282
|
Enabled: false
|
|
283
283
|
|
|
284
284
|
Style/TrivialAccessors:
|
|
@@ -290,6 +290,14 @@ Style/WhileUntilDo:
|
|
|
290
290
|
Style/WhileUntilModifier:
|
|
291
291
|
Enabled: false
|
|
292
292
|
|
|
293
|
+
Layout/IndentHeredoc:
|
|
294
|
+
Enabled: false
|
|
295
|
+
|
|
296
|
+
Layout/ClosingHeredocIndentation:
|
|
297
|
+
Enabled: false
|
|
298
|
+
|
|
299
|
+
Naming/HeredocDelimiterNaming:
|
|
300
|
+
Enabled: false
|
|
293
301
|
|
|
294
302
|
# Things that are off but we should turn on eventually
|
|
295
303
|
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -33,10 +33,6 @@ The following errors can be raised when using this Gem:
|
|
|
33
33
|
|
|
34
34
|
I'm using Travis CI to build and test on every push to the public github repository. You can find the Travis CI page for this project here: https://travis-ci.org/ianchesal/loweredexpectations/
|
|
35
35
|
|
|
36
|
-
### Branching in Git
|
|
37
|
-
|
|
38
|
-
I'm using [git-flow](http://nvie.com/posts/a-successful-git-branching-model/) for development in git via github. I've loved the branching model git-flow proposed from day one and the addon to git makes it very intuitive and easy to follow. I generally don't push my `feature/*` branches to the public repository; I do keep `development` and `master` up to date here though.
|
|
39
|
-
|
|
40
36
|
### TODO Work
|
|
41
37
|
|
|
42
38
|
Please see [TODO.md](TODO.md) for the short list of big things I thought worth writing down.
|
data/RELEASENOTES.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# lowered-expectations Release Notes
|
|
2
2
|
|
|
3
|
+
## 1.0.2
|
|
4
|
+
|
|
5
|
+
* Updated rubocop library to cover CVE-2017-8418
|
|
6
|
+
* Updated everything else while I was at it
|
|
7
|
+
* Fixed everything that broke because of the updates
|
|
8
|
+
* Updated Travis configuration to ensure we test against every 2.x release of ruby
|
|
9
|
+
|
|
3
10
|
## 1.0.1
|
|
4
11
|
|
|
5
12
|
* Move development dependencies out of the gemspec into the gemfile.
|
data/Rakefile
CHANGED
data/lib/lowered/expectations.rb
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# Encoding: utf-8
|
|
2
1
|
require 'rubygems/dependency'
|
|
3
2
|
require 'open3'
|
|
4
3
|
require 'shellwords'
|
|
5
4
|
require 'pty'
|
|
6
5
|
|
|
7
6
|
class LoweredExpectations
|
|
8
|
-
VERSION = '1.0.
|
|
7
|
+
VERSION = '1.0.2'.freeze
|
|
9
8
|
|
|
10
9
|
class VersionPatternError < StandardError
|
|
11
10
|
end
|
|
@@ -22,6 +21,7 @@ class LoweredExpectations
|
|
|
22
21
|
def self.expect(executable, version, vopt: '--version', vpattern: '(\d+\.\d+\.\d+)')
|
|
23
22
|
vstring = run! which(executable), vopt, quiet: true
|
|
24
23
|
vmatch = /#{vpattern}/.match(vstring)
|
|
24
|
+
raise(VersionPatternError.new("unable to match #{vpattern} in version output #{vstring} from #{executable}")) unless vmatch
|
|
25
25
|
verify_version(vmatch[0], version) || raise(VersionPatternError.new("unable to match #{vpattern} in version output #{vstring} from #{executable}"))
|
|
26
26
|
end
|
|
27
27
|
|
|
@@ -59,7 +59,7 @@ class LoweredExpectations
|
|
|
59
59
|
Process.wait(pid)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
|
-
raise CommandExecutionError.new(stderr) unless status
|
|
62
|
+
raise CommandExecutionError.new(stderr) unless status.zero?
|
|
63
63
|
stdout
|
|
64
64
|
end
|
|
65
65
|
private_class_method :run!
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
3
|
require 'lowered/expectations'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
6
|
spec.name = "lowered-expectations"
|
|
8
7
|
spec.version = LoweredExpectations::VERSION
|
|
9
|
-
# For deploying alpha versions via Travis CI
|
|
10
|
-
spec.version = "#{spec.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']
|
|
11
8
|
spec.authors = ["Ian Chesal", "Derek Tamsen"]
|
|
12
9
|
spec.email = ["ian.chesal@gmail.com"]
|
|
13
10
|
spec.summary = 'A library for testing versions of command line tools.'
|
|
@@ -20,7 +17,7 @@ enforce a major version but allow any minor version above a certain value for a
|
|
|
20
17
|
tool. If you use Gemfile's the syntax should look pretty familiary to you.
|
|
21
18
|
END
|
|
22
19
|
spec.homepage = "https://github.com/ianchesal/loweredexpectations"
|
|
23
|
-
spec.license = "Apache
|
|
20
|
+
spec.license = "Apache-2.0"
|
|
24
21
|
|
|
25
22
|
spec.files = `git ls-files -z`.split("\x0")
|
|
26
23
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
@@ -9,11 +9,11 @@ RSpec.describe LoweredExpectations do
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
it 'raises an error when the version pattern cannot be found in executable output' do
|
|
12
|
-
expect{LoweredExpectations.expect(tool, "~> 0.1", vpattern: 'notvalid')}.to raise_error
|
|
12
|
+
expect{LoweredExpectations.expect(tool, "~> 0.1", vpattern: 'notvalid')}.to raise_error(LoweredExpectations::VersionPatternError)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
it 'raises an error when the version of the tool does not meet expectations' do
|
|
16
|
-
expect{LoweredExpectations.expect(tool, "~> 1000.0")}.to raise_error
|
|
16
|
+
expect{LoweredExpectations.expect(tool, "~> 1000.0")}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -19,26 +19,26 @@ Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL lib"
|
|
|
19
19
|
|
|
20
20
|
it 'raises an error when the executable does not exist' do
|
|
21
21
|
expect(LoweredExpectations).to receive(:which).once.with(tool).and_raise(LoweredExpectations::MissingExecutableError)
|
|
22
|
-
expect{LoweredExpectations.expect(tool, "~> 0.1")}.to raise_error
|
|
22
|
+
expect{LoweredExpectations.expect(tool, "~> 0.1")}.to raise_error(LoweredExpectations::MissingExecutableError)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it 'raises an error when the version cannot be extracted from executable' do
|
|
26
26
|
expect(LoweredExpectations).to receive(:which).once.with(tool).and_return(tool)
|
|
27
27
|
expect(LoweredExpectations).to receive(:run!).once.and_raise(LoweredExpectations::CommandExecutionError)
|
|
28
|
-
expect{LoweredExpectations.expect(tool, "~> 0.1")}.to raise_error
|
|
28
|
+
expect{LoweredExpectations.expect(tool, "~> 0.1")}.to raise_error(LoweredExpectations::CommandExecutionError)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it 'raises an error when the version pattern cannot be found in executable output' do
|
|
32
32
|
expect(LoweredExpectations).to receive(:which).once.with(tool).and_return(tool)
|
|
33
33
|
expect(LoweredExpectations).to receive(:run!).once.and_return(curl_version)
|
|
34
|
-
expect{LoweredExpectations.expect(tool, "~> 0.1", vpattern: 'notvalid')}.to raise_error
|
|
34
|
+
expect{LoweredExpectations.expect(tool, "~> 0.1", vpattern: 'notvalid')}.to raise_error(LoweredExpectations::VersionPatternError)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it 'raises an error when the version of the tool does not meet expectations' do
|
|
38
38
|
expect(LoweredExpectations).to receive(:which).once.with(tool).and_return(tool)
|
|
39
39
|
expect(LoweredExpectations).to receive(:run!).once.and_return(curl_version)
|
|
40
40
|
expect(LoweredExpectations).to receive(:verify_version).once.with(version, "~> 0.1").and_raise(LoweredExpectations::IncompatibleVersionError)
|
|
41
|
-
expect{LoweredExpectations.expect(tool, "~> 0.1")}.to raise_error
|
|
41
|
+
expect{LoweredExpectations.expect(tool, "~> 0.1")}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -63,12 +63,12 @@ Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL lib"
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
it 'raise an error when the version string does not match the version pattern' do
|
|
66
|
-
expect{LoweredExpectations.verify_version version, '~> 0.2'}.to raise_error
|
|
67
|
-
expect{LoweredExpectations.verify_version version, '~> 1'}.to raise_error
|
|
68
|
-
expect{LoweredExpectations.verify_version version, '> 0.1.3'}.to raise_error
|
|
69
|
-
expect{LoweredExpectations.verify_version version, '< 0'}.to raise_error
|
|
70
|
-
expect{LoweredExpectations.verify_version version, '> 1'}.to raise_error
|
|
71
|
-
expect{LoweredExpectations.verify_version version, "!= #{version}"}.to raise_error
|
|
66
|
+
expect{LoweredExpectations.verify_version version, '~> 0.2'}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
67
|
+
expect{LoweredExpectations.verify_version version, '~> 1'}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
68
|
+
expect{LoweredExpectations.verify_version version, '> 0.1.3'}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
69
|
+
expect{LoweredExpectations.verify_version version, '< 0'}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
70
|
+
expect{LoweredExpectations.verify_version version, '> 1'}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
71
|
+
expect{LoweredExpectations.verify_version version, "!= #{version}"}.to raise_error(LoweredExpectations::IncompatibleVersionError)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
data/spec/spec_helper.rb
CHANGED
data/tasks/clean.rake
CHANGED
data/tasks/rspec.rake
CHANGED
data/tasks/rubocop.rake
CHANGED
data/tasks/rubygems.rake
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lowered-expectations
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ian Chesal
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2018-08-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: |
|
|
15
15
|
A Ruby gem that lets you test for the presence of command line tools and ensure
|
|
@@ -46,7 +46,7 @@ files:
|
|
|
46
46
|
- tasks/rubygems.rake
|
|
47
47
|
homepage: https://github.com/ianchesal/loweredexpectations
|
|
48
48
|
licenses:
|
|
49
|
-
- Apache
|
|
49
|
+
- Apache-2.0
|
|
50
50
|
metadata: {}
|
|
51
51
|
post_install_message:
|
|
52
52
|
rdoc_options: []
|
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
64
64
|
version: '0'
|
|
65
65
|
requirements: []
|
|
66
66
|
rubyforge_project:
|
|
67
|
-
rubygems_version: 2.
|
|
67
|
+
rubygems_version: 2.6.13
|
|
68
68
|
signing_key:
|
|
69
69
|
specification_version: 4
|
|
70
70
|
summary: A library for testing versions of command line tools.
|