capsulecd 1.0.9 → 1.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7399f828e33056792aab2d99b2b14aac325d886a
4
- data.tar.gz: cb118a39a61420b4680b01a3492accab55a2c66d
3
+ metadata.gz: e25f1e755126cbc4e3c5265ae683b7f2ce8e5081
4
+ data.tar.gz: 4f6881632615810fe5258f8402d4c60e8ffd9b83
5
5
  SHA512:
6
- metadata.gz: a410d9dc3567919f7e3613d25ecde33bc3d3947b21389e1c90faf3b534d1161a50e4a8e5975027a25908b64cde52d421e94afc873d8fdf409634e6db71ab043c
7
- data.tar.gz: bee1e8b0789e29839213873a56cf79dbec375be642c9ce12ceabc60ea88914964eb70e3b3165033b52bdff928aef39cafa67650fbfe349ee582f4ac7e82c5312
6
+ metadata.gz: 49d0c2780b99b08144a22ffed6dbf13c89cc0091c7bea7f6e358aaabb231e235a9203d6e486858f0bc5f1ac83e61a672996b11c62ea1c6d04bfbcb121307a57a
7
+ data.tar.gz: 218d8e2e1eacdb8a179d05c20d4f386f23143c8a4250c0aee35b6ec776b1811511557409e40c02aa5b61f4694e2637ffd82d75379837512376bd59f41dae26e9
data/README.md CHANGED
@@ -151,6 +151,7 @@ engine_cmd_test | Yes | Yes | Specifies the test command to before releasing pac
151
151
  engine_cmd_minification | Yes | Yes | Specifies the minification command to before releasing package
152
152
  engine_cmd_lint | Yes | Yes | Specifies the lint command to before releasing package
153
153
  engine_version_bump_type | Yes | Yes | Specifies the Semvar segment (`major`, `minor`, `patch`) to bump before releasing package
154
+ engine_disable_cleanup | Yes | Yes | Specifies if the engine should cleanup the working directory on exit
154
155
 
155
156
  TODO: specify the missing `BRANCH` release style settings.
156
157
 
@@ -253,3 +254,4 @@ Jason Kulatunga - Initial Development - [@AnalogJ](https://github.com/AnalogJ)
253
254
  # License
254
255
 
255
256
  CapsuleCD is licensed under the MIT License - see the [LICENSE.md](https://github.com/AnalogJ/capsulecd/blob/master/LICENSE.md) file for details
257
+
@@ -63,6 +63,8 @@ module CapsuleCD
63
63
  attr_reader :engine_cmd_lint
64
64
  attr_reader :engine_cmd_coverage
65
65
  attr_reader :engine_version_bump_type
66
+ attr_reader :engine_disable_cleanup
67
+
66
68
 
67
69
  def populate_repo_config_file(repo_local_path)
68
70
  repo_config_file_path = repo_local_path + '/capsule.yml'
@@ -83,6 +85,7 @@ module CapsuleCD
83
85
  def populate_defaults
84
86
  @engine_version_bump_type = :patch # can be :major, :minor, :patch
85
87
  @chef_supermarket_type = 'Other'
88
+ @engine_disable_cleanup = false
86
89
  end
87
90
 
88
91
  def load_config_file(path)
@@ -159,6 +159,7 @@ module CapsuleCD
159
159
  # requires @source_git_parent_path
160
160
  # requires @source_git_base_info
161
161
  # requires @source_git_head_info
162
+ # requires @config.engine_disable_cleanup
162
163
  def source_notify(step, status='pending')
163
164
 
164
165
  @source_client.create_status(@source_git_base_info['repo']['full_name'], @source_git_head_info['sha'], status,
@@ -170,11 +171,11 @@ module CapsuleCD
170
171
 
171
172
  rescue => ex
172
173
  puts 'github source_process_failure'
173
- FileUtils.remove_entry_secure @source_git_parent_path if Dir.exists?(@source_git_parent_path)
174
+ FileUtils.remove_entry_secure @source_git_parent_path if (Dir.exists?(@source_git_parent_path) && !@config.engine_disable_cleanup)
174
175
  @source_client.create_status(@source_git_base_info['repo']['full_name'], @source_git_head_info['sha'], 'failure',
175
176
  context: 'CapsuleCD',
176
177
  target_url: 'http://www.github.com/AnalogJ/capsulecd',
177
- description: ex.message.slice!(0..135))
178
+ description: ex.message.slice(0..135))
178
179
  raise
179
180
  end
180
181
 
@@ -135,7 +135,7 @@ TOX
135
135
  end
136
136
 
137
137
  # run python setup.py sdist
138
- Open3.popen3('python setup.py sdist upload', chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
138
+ Open3.popen3('python setup.py sdist', chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
139
139
  { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
140
140
  Thread.new do
141
141
  until (line = stream_buffer.gets).nil?
@@ -10,13 +10,7 @@ module CapsuleCD
10
10
  def build_step
11
11
  super
12
12
  gemspec_path = CapsuleCD::Ruby::RubyHelper.get_gemspec_path(@source_git_local_path)
13
-
14
- # check for required VERSION file
15
- gemspec_data = CapsuleCD::Ruby::RubyHelper.get_gemspec_data(@source_git_local_path)
16
-
17
- if !File.exist?(CapsuleCD::Ruby::RubyHelper.version_filepath(@source_git_local_path, gemspec_data.name))
18
- fail CapsuleCD::Error::BuildPackageInvalid, 'version.rb file is required to process Ruby gem'
19
- end
13
+ gem_name = CapsuleCD::Ruby::RubyHelper.get_gem_name(@source_git_local_path)
20
14
 
21
15
  # bump up the version here.
22
16
  # since there's no standardized way to bump up the version in the *.gemspec file, we're going to assume that the version
@@ -31,11 +25,9 @@ module CapsuleCD
31
25
  # http://timelessrepo.com/making-ruby-gems
32
26
  # http://guides.rubygems.org/make-your-own-gem/
33
27
 
34
- version_str = CapsuleCD::Ruby::RubyHelper.read_version_file(@source_git_local_path, gemspec_data.name)
35
- next_version = bump_version(SemVer.parse(gemspec_data.version.to_s))
36
-
37
- new_version_str = version_str.gsub(/(VERSION\s*=\s*['"])[0-9\.]+(['"])/, "\\1#{next_version.to_s}\\2")
38
- CapsuleCD::Ruby::RubyHelper.write_version_file(@source_git_local_path, gemspec_data.name, new_version_str)
28
+ gem_version = CapsuleCD::Ruby::RubyHelper.get_version(@source_git_local_path)
29
+ next_version = bump_version(SemVer.parse(gem_version))
30
+ CapsuleCD::Ruby::RubyHelper.set_version(@source_git_local_path, next_version.to_s)
39
31
 
40
32
  # check for/create any required missing folders/files
41
33
  unless File.exist?(@source_git_local_path + '/Gemfile')
@@ -69,8 +61,8 @@ module CapsuleCD
69
61
  unless external.value.success?
70
62
  fail CapsuleCD::Error::BuildPackageFailed, 'gem build failed. Check gemspec file and dependencies'
71
63
  end
72
- unless File.exist?(@source_git_local_path + "/#{gemspec_data.name}-#{next_version.to_s}.gem")
73
- fail CapsuleCD::Error::BuildPackageFailed, "gem build failed. #{gemspec_data.name}-#{next_version.to_s}.gem not found"
64
+ unless File.exist?(@source_git_local_path + "/#{gem_name}-#{next_version.to_s}.gem")
65
+ fail CapsuleCD::Error::BuildPackageFailed, "gem build failed. #{gem_name}-#{next_version.to_s}.gem not found"
74
66
  end
75
67
  end
76
68
  end
@@ -143,8 +135,8 @@ module CapsuleCD
143
135
 
144
136
  # commit changes to the cookbook. (test run occurs before this, and it should clean up any instrumentation files, created,
145
137
  # as they will be included in the commmit and any release artifacts)
146
- gemspec_data = CapsuleCD::Ruby::RubyHelper.get_gemspec_data(@source_git_local_path)
147
- next_version = SemVer.parse(gemspec_data.version.to_s)
138
+ gem_version = CapsuleCD::Ruby::RubyHelper.get_version(@source_git_local_path)
139
+ next_version = SemVer.parse(gem_version)
148
140
  CapsuleCD::GitUtils.commit(@source_git_local_path, "(v#{next_version}) Automated packaging of release by CapsuleCD")
149
141
  @source_release_commit = CapsuleCD::GitUtils.tag(@source_git_local_path, "v#{next_version}")
150
142
  end
@@ -4,18 +4,11 @@ require 'bundler'
4
4
  module CapsuleCD
5
5
  module Ruby
6
6
  class RubyHelper
7
- def self.version_filepath(repo_path, gem_name, version_filename = 'version.rb')
8
- "#{repo_path}/lib/#{gem_name}/#{version_filename}"
9
- end
10
-
11
- def self.read_version_file(repo_path, gem_name, version_filename = 'version.rb')
12
- File.read(self.version_filepath(repo_path, gem_name, version_filename))
13
- end
14
-
15
- def self.write_version_file(repo_path, gem_name, metadata_str, version_filename = 'version.rb')
16
- File.open(self.version_filepath(repo_path, gem_name, version_filename), 'w') { |file| file.write(metadata_str) }
17
- end
7
+ PRERELEASE = ["alpha","beta","rc",nil]
8
+ VERSION_REGEX = /(\d+\.\d+\.\d+(?:-(?:#{PRERELEASE.compact.join('|')}))?)/
9
+ REPLACE_VERSION_REGEX =
18
10
 
11
+ # get gemspec file path (used for `gem build ..` command)
19
12
  def self.get_gemspec_path(repo_path)
20
13
  gemspecs = Dir.glob(repo_path + '/*.gemspec')
21
14
  if gemspecs.empty?
@@ -24,12 +17,55 @@ module CapsuleCD
24
17
  gemspecs.first
25
18
  end
26
19
 
27
- def self.get_gemspec_data(repo_path)
28
- self.load_gemspec_data(self.get_gemspec_path(repo_path))
20
+ # get gem name
21
+ def self.get_gem_name(repo_path)
22
+ self.load_gemspec_data(self.get_gemspec_path(repo_path)).name
23
+ end
24
+
25
+ # get gem version
26
+ def self.get_version(repo_path)
27
+ gem_version_file = self.find_version_file(repo_path)
28
+ gem_version = File.read(gem_version_file)[VERSION_REGEX]
29
+ if !gem_version
30
+ fail CapsuleCD::Error::BuildPackageInvalid, 'version.rb file is invalid'
31
+ end
32
+ return gem_version
33
+ end
34
+
35
+ # set gem version
36
+ def self.set_version(repo_path, next_version)
37
+ gem_version_file = self.find_version_file(repo_path)
38
+ gem_version_file_content = File.read(gem_version_file)
39
+
40
+ next_gem_version_file_content = gem_version_file_content.gsub(/(VERSION\s*=\s*['"])[0-9\.]+(['"])/, "\\1#{next_version.to_s}\\2")
41
+
42
+ File.open(gem_version_file, 'w') { |file| file.write(next_gem_version_file_content) }
29
43
  end
30
44
 
45
+
46
+
47
+
48
+ private
31
49
  ##################################################################################################################
32
- # protected/private methods.
50
+ # NEW protected/private methods.
51
+ # based on bump gem methods: https://github.com/gregorym/bump/blob/master/lib/bump.rb
52
+
53
+ def self.find_version_file(repo_path)
54
+ files = Dir.glob("#{repo_path}/lib/**/version.rb")
55
+ if files.size == 0
56
+ fail CapsuleCD::Error::BuildPackageInvalid, 'version.rb file is required to process Ruby gem'
57
+ elsif files.size == 1
58
+ return files.first
59
+ else
60
+ # too many version.rb files found, lets try to find the correct version.rb file using gem name in gemspec
61
+ return self.version_filepath(repo_path, self.get_gem_name(repo_path))
62
+ end
63
+ end
64
+
65
+ def self.version_filepath(repo_path, gem_name, version_filename = 'version.rb')
66
+ "#{repo_path}/lib/#{gem_name}/#{version_filename}"
67
+ end
68
+
33
69
 
34
70
  # since the Gem::Specification class is basically eval'ing the gemspec file, and the gemspec file is doing a require
35
71
  # to load the version.rb file, the version.rb file is cached in memory. We're going to try to get around that issue
@@ -56,6 +92,9 @@ module CapsuleCD
56
92
  gemspec_data = nil
57
93
  Bundler.with_clean_env do
58
94
  gemspec_data = self.execute_in_child do
95
+ # reload the version.rb file if found (fixes dogfooding issue)
96
+ # Dir["#{File.dirname(gemspec_path)}/**/version.rb"].each { |f| load(f) }
97
+
59
98
  Gem::Specification::load(gemspec_path)
60
99
  end
61
100
  end
@@ -1,3 +1,3 @@
1
1
  module CapsuleCD
2
- VERSION = '1.0.9'
2
+ VERSION = '1.0.10'
3
3
  end
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gem_test.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Jason Kulatunga
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,41 @@
1
+ # GemTest
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/gem_test`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'gem_test'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install gem_test
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gem_test.
36
+
37
+
38
+ ## License
39
+
40
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'capsulecd/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "capsulecd"
8
+ spec.version = CapsuleCD::VERSION
9
+ spec.authors = ["Jason Kulatunga"]
10
+ spec.email = ["jk17@ualberta.ca"]
11
+
12
+ spec.summary = 'this is my test summary'
13
+ spec.description = 'this is my test description'
14
+ spec.homepage = "http://www.github.com/Analogj/capsulecd"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.11"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rspec", "~> 3.0"
25
+ end
@@ -0,0 +1,3 @@
1
+ module CapsuleCD
2
+ VERSION = '1.0.1'
3
+ end
@@ -0,0 +1,5 @@
1
+ require "capsulecd/version"
2
+
3
+ module CapsuleCD
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'CapsuleCD' do
4
+ it 'does something useful' do
5
+ expect(true).to eq(true)
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'capsulecd'
@@ -48,6 +48,42 @@ describe 'CapsuleCD::Ruby::RubyEngine', :ruby do
48
48
 
49
49
  end
50
50
  end
51
+
52
+
53
+ describe 'when building and dogfooding capsulecd package ' do
54
+ let(:engine) do
55
+ require 'capsulecd/ruby/ruby_engine'
56
+ CapsuleCD::Ruby::RubyEngine.new(source: :github,
57
+ package_type: :ruby)
58
+ end
59
+ it 'should create a Gemfile, Rakefile, .gitignore file and spec folder' do
60
+ FileUtils.copy_entry('spec/fixtures/ruby/capsulecd', test_directory)
61
+ FileUtils.rm(test_directory + '/Gemfile')
62
+ FileUtils.rm(test_directory + '/Rakefile')
63
+
64
+ engine.instance_variable_set(:@source_git_local_path, test_directory)
65
+
66
+ VCR.use_cassette('gem_build_step',:tag => :ruby) do
67
+ engine.build_step
68
+ end
69
+
70
+ expect(File.exist?(test_directory+'/.gitignore')).to eql(true)
71
+ expect(File.exist?(test_directory+'/Gemfile')).to eql(true)
72
+ expect(File.exist?(test_directory+'/Rakefile')).to eql(true)
73
+ expect(File.exist?(test_directory+'/capsulecd-1.0.2.gem')).to eql(true)
74
+ end
75
+
76
+ it 'should raise an error if version.rb is missing' do
77
+ FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
78
+ FileUtils.rm(test_directory + '/lib/gem_analogj_test/version.rb')
79
+ engine.instance_variable_set(:@source_git_local_path, test_directory)
80
+
81
+ VCR.use_cassette('gem_build_step_without_version.rb',:tag => :ruby) do
82
+ expect{engine.build_step}.to raise_error(CapsuleCD::Error::BuildPackageInvalid)
83
+ end
84
+
85
+ end
86
+ end
51
87
  end
52
88
 
53
89
  describe '#test_step' do
@@ -4,14 +4,6 @@ describe 'CapsuleCD::Ruby::RubyHelper', :ruby do
4
4
  subject{
5
5
  CapsuleCD::Ruby::RubyHelper
6
6
  }
7
- describe '#version_filepath' do
8
- it 'default should generate the correct path to version.rb' do
9
- expect(subject.version_filepath('/tmp','capsulecd')).to eql('/tmp/lib/capsulecd/version.rb')
10
- end
11
- it 'with custom version filename should generate the correct path' do
12
- expect(subject.version_filepath('/tmp','capsulecd', 'VERSION.rb')).to eql('/tmp/lib/capsulecd/VERSION.rb')
13
- end
14
- end
15
7
 
16
8
  describe '#get_gemspec_path' do
17
9
  describe 'without a gemspec file' do
@@ -29,12 +21,11 @@ describe 'CapsuleCD::Ruby::RubyHelper', :ruby do
29
21
  end
30
22
  end
31
23
 
32
- describe '#get_gemspec_data' do
24
+ describe '#get_gem_name' do
33
25
  it 'should parse gemspec data' do
34
26
  FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
35
- gemspec_data = subject.get_gemspec_data(test_directory)
36
- expect(gemspec_data.name).to eql('gem_analogj_test')
37
- expect(gemspec_data.version.to_s).to eql('0.1.3')
27
+ gem_name = subject.get_gem_name(test_directory)
28
+ expect(gem_name).to eql('gem_analogj_test')
38
29
  end
39
30
 
40
31
  describe 'with an invalid gemspec file' do
@@ -42,48 +33,77 @@ describe 'CapsuleCD::Ruby::RubyHelper', :ruby do
42
33
  FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
43
34
  FileUtils.rm(test_directory + '/lib/gem_analogj_test/version.rb')
44
35
 
45
- expect{subject.get_gemspec_data(test_directory)}.to raise_error(CapsuleCD::Error::BuildPackageInvalid)
36
+ expect{subject.get_gem_name(test_directory)}.to raise_error(CapsuleCD::Error::BuildPackageInvalid)
46
37
  end
47
38
  end
39
+ end
40
+
41
+ describe '#get_version' do
42
+
43
+ it 'should parse version.rb file' do
44
+ FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
45
+ gem_version = subject.get_version(test_directory)
46
+ expect(gem_version).to eql('0.1.3')
47
+ end
48
48
 
49
- describe 'when modifying gemspec file' do
50
- it 'should not keep old constant from version.rb file in memory' do
49
+ describe 'without a version.rb file' do
50
+ it 'should raise an error' do
51
51
  FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
52
+ FileUtils.rm(test_directory + '/lib/gem_analogj_test/version.rb')
52
53
 
53
- gemspec_data = CapsuleCD::Ruby::RubyHelper.get_gemspec_data(test_directory)
54
- expect(gemspec_data.version.to_s).to eql('0.1.3')
54
+ expect{subject.get_gem_name(test_directory)}.to raise_error(CapsuleCD::Error::BuildPackageInvalid)
55
+ end
56
+ end
55
57
 
56
- version_str = CapsuleCD::Ruby::RubyHelper.read_version_file(test_directory, gemspec_data.name)
57
- next_version = CapsuleCD::Engine.new(:source => :github).send(:bump_version, SemVer.parse(gemspec_data.version.to_s))
58
- expect(next_version.to_s).to eql('0.1.4')
58
+ describe 'with too many version.rb files' do
59
+ it 'should fallback to using version_filepath & gem name' do
60
+ FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
61
+ FileUtils.mkdir_p(test_directory + '/lib/gem_analogj_test/test/')
62
+ FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test/lib/gem_analogj_test/version.rb',
63
+ test_directory + '/lib/gem_analogj_test/test/version.rb')
59
64
 
60
- new_version_str = version_str.gsub(/(VERSION\s*=\s*['"])[0-9\.]+(['"])/, "\\1#{next_version}\\2")
61
- CapsuleCD::Ruby::RubyHelper.write_version_file(test_directory, gemspec_data.name, new_version_str)
65
+ gem_version = subject.get_version(test_directory)
66
+ expect(gem_version).to eql('0.1.3')
62
67
 
63
- Open3.popen3('gem build gem_analogj_test.gemspec', chdir: test_directory) do |_stdin, stdout, stderr, external|
64
- { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
65
- Thread.new do
66
- until (line = stream_buffer.gets).nil?
67
- puts "#{name} -> #{line}"
68
- end
69
- end
70
- end
71
- # wait for process
72
- external.join
73
- unless external.value.success?
74
- fail CapsuleCD::Error::BuildPackageFailed, 'gem build failed. Check gemspec file and dependencies'
75
- end
76
- unless File.exist?(test_directory + "/#{gemspec_data.name}-#{next_version.to_s}.gem")
77
- fail CapsuleCD::Error::BuildPackageFailed, "gem build failed. #{gemspec_data.name}-#{next_version.to_s}.gem not found"
78
- end
79
- end
68
+ #TODO: cant figure out how to verify that a class method was called.
69
+ # expect(CapsuleCD::Ruby::RubyHelper).to receive(:version_filepath).with(test_directory, 'gem_analogj_test')
70
+ end
71
+ end
72
+ end
73
+
74
+ describe '#set_version' do
75
+ it 'should correctly update version in version.rb file' do
76
+ FileUtils.copy_entry('spec/fixtures/ruby/gem_analogj_test', test_directory)
80
77
 
81
- updated_gemspec_data = CapsuleCD::Ruby::RubyHelper.get_gemspec_data(test_directory)
82
- expect(updated_gemspec_data.version.to_s).to eql('0.1.4')
78
+ gem_name = CapsuleCD::Ruby::RubyHelper.get_gem_name(test_directory)
79
+ gem_version = CapsuleCD::Ruby::RubyHelper.get_version(test_directory)
80
+ expect(gem_version).to eql('0.1.3')
83
81
 
82
+ next_version = CapsuleCD::Engine.new(:source => :github).send(:bump_version, SemVer.parse(gem_version))
83
+ expect(next_version.to_s).to eql('0.1.4')
84
84
 
85
+ CapsuleCD::Ruby::RubyHelper.set_version(test_directory, next_version.to_s)
85
86
 
87
+ Open3.popen3('gem build gem_analogj_test.gemspec', chdir: test_directory) do |_stdin, stdout, stderr, external|
88
+ { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
89
+ Thread.new do
90
+ until (line = stream_buffer.gets).nil?
91
+ puts "#{name} -> #{line}"
92
+ end
93
+ end
94
+ end
95
+ # wait for process
96
+ external.join
97
+ unless external.value.success?
98
+ fail CapsuleCD::Error::BuildPackageFailed, 'gem build failed. Check gemspec file and dependencies'
99
+ end
100
+ unless File.exist?(test_directory + "/#{gem_name}-#{next_version.to_s}.gem")
101
+ fail CapsuleCD::Error::BuildPackageFailed, "gem build failed. #{gem_name}-#{next_version.to_s}.gem not found"
102
+ end
86
103
  end
104
+
105
+ updated_gem_version = CapsuleCD::Ruby::RubyHelper.get_version(test_directory)
106
+ expect(updated_gem_version).to eql('0.1.4')
87
107
  end
88
108
 
89
109
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capsulecd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Kulatunga (AnalogJ)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-12 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -145,6 +145,15 @@ files:
145
145
  - spec/fixtures/python/pip_analogj_test/setup.cfg
146
146
  - spec/fixtures/python/pip_analogj_test/setup.py
147
147
  - spec/fixtures/python/pip_analogj_test/tox.ini
148
+ - spec/fixtures/ruby/capsulecd/Gemfile
149
+ - spec/fixtures/ruby/capsulecd/LICENSE.txt
150
+ - spec/fixtures/ruby/capsulecd/README.md
151
+ - spec/fixtures/ruby/capsulecd/Rakefile
152
+ - spec/fixtures/ruby/capsulecd/capsulecd.gemspec
153
+ - spec/fixtures/ruby/capsulecd/lib/capsulecd.rb
154
+ - spec/fixtures/ruby/capsulecd/lib/capsulecd/version.rb
155
+ - spec/fixtures/ruby/capsulecd/spec/capsulecd_spec.rb
156
+ - spec/fixtures/ruby/capsulecd/spec/spec_helper.rb
148
157
  - spec/fixtures/ruby/gem_analogj_test-0.1.4.gem
149
158
  - spec/fixtures/ruby/gem_analogj_test/Gemfile
150
159
  - spec/fixtures/ruby/gem_analogj_test/LICENSE.txt
@@ -237,6 +246,15 @@ test_files:
237
246
  - spec/fixtures/python/pip_analogj_test/setup.cfg
238
247
  - spec/fixtures/python/pip_analogj_test/setup.py
239
248
  - spec/fixtures/python/pip_analogj_test/tox.ini
249
+ - spec/fixtures/ruby/capsulecd/Gemfile
250
+ - spec/fixtures/ruby/capsulecd/LICENSE.txt
251
+ - spec/fixtures/ruby/capsulecd/README.md
252
+ - spec/fixtures/ruby/capsulecd/Rakefile
253
+ - spec/fixtures/ruby/capsulecd/capsulecd.gemspec
254
+ - spec/fixtures/ruby/capsulecd/lib/capsulecd.rb
255
+ - spec/fixtures/ruby/capsulecd/lib/capsulecd/version.rb
256
+ - spec/fixtures/ruby/capsulecd/spec/capsulecd_spec.rb
257
+ - spec/fixtures/ruby/capsulecd/spec/spec_helper.rb
240
258
  - spec/fixtures/ruby/gem_analogj_test-0.1.4.gem
241
259
  - spec/fixtures/ruby/gem_analogj_test/Gemfile
242
260
  - spec/fixtures/ruby/gem_analogj_test/LICENSE.txt