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.
@@ -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