pessimizer 1.0.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 +7 -0
- data/.codeclimate.yml +11 -0
- data/.gitignore +18 -0
- data/.rspec +1 -0
- data/.rubocop.yml +1171 -0
- data/.travis.yml +11 -0
- data/CHANGELOG +43 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +90 -0
- data/Rakefile +3 -0
- data/bin/pessimize +5 -0
- data/lib/pessimize/file_manager.rb +39 -0
- data/lib/pessimize/gem.rb +63 -0
- data/lib/pessimize/gemfile.rb +73 -0
- data/lib/pessimize/gemfile_lock_version_parser.rb +26 -0
- data/lib/pessimize/pessimizer.rb +43 -0
- data/lib/pessimize/shell.rb +79 -0
- data/lib/pessimize/version.rb +3 -0
- data/lib/pessimize/version_mapper.rb +13 -0
- data/lib/pessimize.rb +3 -0
- data/pessimizer.gemspec +29 -0
- data/spec/data/Gemfile.lock.example +26 -0
- data/spec/data/Gemfile.lock.example2 +239 -0
- data/spec/gem_spec.rb +114 -0
- data/spec/gemfile_lock_version_parser_spec.rb +50 -0
- data/spec/gemfile_spec.rb +254 -0
- data/spec/integration_spec.rb +590 -0
- data/spec/spec_helper.rb +84 -0
- data/spec/version_mapper_spec.rb +85 -0
- metadata +171 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pessimize/version_mapper'
|
|
3
|
+
require 'pessimize/gem'
|
|
4
|
+
|
|
5
|
+
module Pessimize
|
|
6
|
+
describe VersionMapper do
|
|
7
|
+
def gem(name, version = nil)
|
|
8
|
+
gem_string = %Q{gem "#{name}"}
|
|
9
|
+
gem_string << %Q{, "#{version}"} if version
|
|
10
|
+
Gem.new(Ripper.lex(gem_string))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "with a gem, version hash and minor constraint" do
|
|
14
|
+
let(:gems) { [ gem('example') ] }
|
|
15
|
+
let(:versions) { { 'example' => '2.2.3' } }
|
|
16
|
+
let(:mapper) { VersionMapper.new }
|
|
17
|
+
|
|
18
|
+
before do
|
|
19
|
+
mapper.call gems, versions, 'minor'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
subject { gems.first }
|
|
23
|
+
|
|
24
|
+
its(:version) { should == '~> 2.2' }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "with multiple gems, version hash and minor constraint" do
|
|
28
|
+
let(:gems) { [ gem('example'), gem('fish', '1.3.2') ] }
|
|
29
|
+
let(:versions) { { 'example' => '1.4.9', 'fish' => '2.3.0' } }
|
|
30
|
+
let(:mapper) { VersionMapper.new }
|
|
31
|
+
|
|
32
|
+
before do
|
|
33
|
+
mapper.call gems, versions, 'minor'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context "the first gem" do
|
|
37
|
+
subject { gems.first }
|
|
38
|
+
|
|
39
|
+
its(:version) { should == '~> 1.4' }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "the second gem" do
|
|
43
|
+
subject { gems[1] }
|
|
44
|
+
|
|
45
|
+
its(:version) { should == '~> 2.3' }
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context "with a gem, version hash and patch constraint" do
|
|
50
|
+
let(:gems) { [ gem('example') ] }
|
|
51
|
+
let(:versions) { { 'example' => '2.2.3' } }
|
|
52
|
+
let(:mapper) { VersionMapper.new }
|
|
53
|
+
|
|
54
|
+
before do
|
|
55
|
+
mapper.call gems, versions, 'patch'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
subject { gems.first }
|
|
59
|
+
|
|
60
|
+
its(:version) { should == '~> 2.2.3' }
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "with multiple gems, version hash and patch constraint" do
|
|
64
|
+
let(:gems) { [ gem('example'), gem('fish', '1.3.2') ] }
|
|
65
|
+
let(:versions) { { 'example' => '1.4.9', 'fish' => '2.3.0' } }
|
|
66
|
+
let(:mapper) { VersionMapper.new }
|
|
67
|
+
|
|
68
|
+
before do
|
|
69
|
+
mapper.call gems, versions, 'patch'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
context "the first gem" do
|
|
73
|
+
subject { gems.first }
|
|
74
|
+
|
|
75
|
+
its(:version) { should == '~> 1.4.9' }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context "the second gem" do
|
|
79
|
+
subject { gems[1] }
|
|
80
|
+
|
|
81
|
+
its(:version) { should == '~> 2.3.0' }
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: pessimizer
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Jon Cairns
|
|
8
|
+
- Federico Iachetti
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2023-01-23 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: bundler
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '0'
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '0'
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: optimist
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - ">="
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '0'
|
|
35
|
+
type: :runtime
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: rspec
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - "~>"
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: 3.12.0
|
|
49
|
+
type: :development
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - "~>"
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: 3.12.0
|
|
56
|
+
- !ruby/object:Gem::Dependency
|
|
57
|
+
name: rspec-its
|
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - "~>"
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: 1.3.0
|
|
63
|
+
type: :development
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - "~>"
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 1.3.0
|
|
70
|
+
- !ruby/object:Gem::Dependency
|
|
71
|
+
name: rake
|
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - "~>"
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: 10.0.3
|
|
77
|
+
type: :development
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - "~>"
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 10.0.3
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: codeclimate-test-reporter
|
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - "~>"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: 0.6.0
|
|
91
|
+
type: :development
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - "~>"
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: 0.6.0
|
|
98
|
+
description: |-
|
|
99
|
+
Add the pessimistic constraint operator to all gems in your Gemfile, restricting the maximum update version.
|
|
100
|
+
|
|
101
|
+
This is for people who work with projects that use bundler, such as rails projects. The pessimistic constraint operator (~>) allows you to specify the maximum version that a gem can be updated, and reduces potential breakages when running `bundle update`. Pessimize automatically retrieves the current versions of your gems, then adds them to your Gemfile (so you don't have to do it by hand).
|
|
102
|
+
email:
|
|
103
|
+
- jon@joncairns.com
|
|
104
|
+
- iachetti.federico@gmail.com
|
|
105
|
+
executables:
|
|
106
|
+
- pessimize
|
|
107
|
+
extensions: []
|
|
108
|
+
extra_rdoc_files: []
|
|
109
|
+
files:
|
|
110
|
+
- ".codeclimate.yml"
|
|
111
|
+
- ".gitignore"
|
|
112
|
+
- ".rspec"
|
|
113
|
+
- ".rubocop.yml"
|
|
114
|
+
- ".travis.yml"
|
|
115
|
+
- CHANGELOG
|
|
116
|
+
- Gemfile
|
|
117
|
+
- LICENSE.txt
|
|
118
|
+
- README.md
|
|
119
|
+
- Rakefile
|
|
120
|
+
- bin/pessimize
|
|
121
|
+
- lib/pessimize.rb
|
|
122
|
+
- lib/pessimize/file_manager.rb
|
|
123
|
+
- lib/pessimize/gem.rb
|
|
124
|
+
- lib/pessimize/gemfile.rb
|
|
125
|
+
- lib/pessimize/gemfile_lock_version_parser.rb
|
|
126
|
+
- lib/pessimize/pessimizer.rb
|
|
127
|
+
- lib/pessimize/shell.rb
|
|
128
|
+
- lib/pessimize/version.rb
|
|
129
|
+
- lib/pessimize/version_mapper.rb
|
|
130
|
+
- pessimizer.gemspec
|
|
131
|
+
- spec/data/Gemfile.lock.example
|
|
132
|
+
- spec/data/Gemfile.lock.example2
|
|
133
|
+
- spec/gem_spec.rb
|
|
134
|
+
- spec/gemfile_lock_version_parser_spec.rb
|
|
135
|
+
- spec/gemfile_spec.rb
|
|
136
|
+
- spec/integration_spec.rb
|
|
137
|
+
- spec/spec_helper.rb
|
|
138
|
+
- spec/version_mapper_spec.rb
|
|
139
|
+
homepage: https://github.com/iachettifederico/pessimizer
|
|
140
|
+
licenses:
|
|
141
|
+
- MIT
|
|
142
|
+
metadata: {}
|
|
143
|
+
post_install_message:
|
|
144
|
+
rdoc_options: []
|
|
145
|
+
require_paths:
|
|
146
|
+
- lib
|
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - ">="
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: '0'
|
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
|
+
requirements:
|
|
154
|
+
- - ">="
|
|
155
|
+
- !ruby/object:Gem::Version
|
|
156
|
+
version: '0'
|
|
157
|
+
requirements: []
|
|
158
|
+
rubygems_version: 3.3.7
|
|
159
|
+
signing_key:
|
|
160
|
+
specification_version: 4
|
|
161
|
+
summary: Add the pessimistic constraint operator to all gems in your Gemfile, restricting
|
|
162
|
+
the maximum update version.
|
|
163
|
+
test_files:
|
|
164
|
+
- spec/data/Gemfile.lock.example
|
|
165
|
+
- spec/data/Gemfile.lock.example2
|
|
166
|
+
- spec/gem_spec.rb
|
|
167
|
+
- spec/gemfile_lock_version_parser_spec.rb
|
|
168
|
+
- spec/gemfile_spec.rb
|
|
169
|
+
- spec/integration_spec.rb
|
|
170
|
+
- spec/spec_helper.rb
|
|
171
|
+
- spec/version_mapper_spec.rb
|