eac_ruby_gems_utils 0.7.0 → 0.7.1

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
  SHA256:
3
- metadata.gz: ba6901f2b81816e02333d51f9c1e4eb8d5a705a500f8d5485b20897925d1e0a2
4
- data.tar.gz: b84a7c9aa771b08b204860e6c1961c259d847c044ab26d00b1db16e7fe2fbfc9
3
+ metadata.gz: 6e22689b28c655a76ab05c049502d3723179ab7478a3ed29ddca72d2d025a428
4
+ data.tar.gz: b729e4e446f6f6d8da520625d5d3451287180ebe703930518733310a508d0995
5
5
  SHA512:
6
- metadata.gz: 3dc046a756ad593ab46288d1882488ecd1e2c10116698036923f24d694b4c60daf025f798a7184b0b26705154588529a6ade87ea5261d64e81b7b3e2a79222d6
7
- data.tar.gz: e70343b18f054bc8c402336b0150aed0c33a9638e815c40e9c75a13ff49835ea46498b1d686f91065edd401f834de1302e1d5ff3bd51ca80c2d25192e4441f28
6
+ metadata.gz: 56718b85ff502646e0b548103d5d6c9d423e15641c033ddc62cab5534ae0b52c0591b600fb79107c99126fb6e5a5e84c59816fa7e188961881bb811ac8d41873
7
+ data.tar.gz: 2e8eecf1678a665fa9cd2dd248eced1561130cb85f3dfd8d01e4ac445f68d0f21f7309b1a0ab2cf05bf34f7e5cea7e69cfc3bd00b137af7942e0d9f9c560935e
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
4
  require 'eac_ruby_utils/envs'
5
+ require 'rubygems'
5
6
 
6
7
  module EacRubyGemsUtils
7
8
  class Gem
@@ -22,6 +23,11 @@ module EacRubyGemsUtils
22
23
  ::EacRubyGemsUtils::Gem::Command.new(self, %w[bundle] + args).envvar_gemfile
23
24
  end
24
25
 
26
+ # @return A [Pathname] array with relative paths from root listed in gemspec's .file directive.
27
+ def files
28
+ gemspec.files.map(&:to_pathname)
29
+ end
30
+
25
31
  def gemfile_lock_gem_version(gem_name)
26
32
  gemfile_lock_content.specs.find { |gem| gem.name == gem_name }.if_present(&:version)
27
33
  end
@@ -67,6 +73,10 @@ module EacRubyGemsUtils
67
73
  gemfile_path.basename_sub { |b| "#{b}.lock" }
68
74
  end
69
75
 
76
+ def gemspec_uncached
77
+ ::Gem::Specification.load(gemspec_path.to_path)
78
+ end
79
+
70
80
  def gemspec_path_uncached
71
81
  ::Pathname.glob("#{root.to_path}/*#{GEMSPEC_EXTNAME}").first
72
82
  end
@@ -7,6 +7,7 @@ require 'eac_ruby_utils/core_ext'
7
7
  module EacRubyGemsUtils
8
8
  module Tests
9
9
  class Multiple
10
+ require_sub __FILE__
10
11
  enable_console_speaker
11
12
  enable_simple_cache
12
13
  common_constructor :gems, :options, default: [{}]
@@ -26,14 +27,9 @@ module EacRubyGemsUtils
26
27
  decorated_gems.flat_map(&:tests)
27
28
  end
28
29
 
29
- def bundle_all_gems
30
- infom 'Bundling all gems...'
31
- decorated_gems.each do |gem|
32
- next unless gem.gemfile_path.exist?
33
-
34
- infov 'Bundle install', gem
35
- gem.bundle.execute!
36
- end
30
+ def prepare_all_gems
31
+ infom 'Preparing all gems...'
32
+ decorated_gems.each(&:prepare)
37
33
  end
38
34
 
39
35
  def decorated_gems_uncached
@@ -61,7 +57,7 @@ module EacRubyGemsUtils
61
57
 
62
58
  def run
63
59
  start_banner
64
- bundle_all_gems
60
+ prepare_all_gems
65
61
  test_all_gems
66
62
  final_results_banner
67
63
  end
@@ -76,31 +72,6 @@ module EacRubyGemsUtils
76
72
  infov test, Result.new(test.result).tag
77
73
  end
78
74
  end
79
-
80
- class DecoratedGem < ::SimpleDelegator
81
- def tests
82
- [::EacRubyGemsUtils::Tests::Minitest.new(__getobj__),
83
- ::EacRubyGemsUtils::Tests::Rspec.new(__getobj__)]
84
- end
85
- end
86
-
87
- class Result
88
- common_constructor :result
89
-
90
- COLORS = {
91
- ::EacRubyGemsUtils::Tests::Base::RESULT_FAILED => :red,
92
- ::EacRubyGemsUtils::Tests::Base::RESULT_NONEXISTENT => :white,
93
- ::EacRubyGemsUtils::Tests::Base::RESULT_SUCCESSFUL => :green
94
- }.freeze
95
-
96
- def tag
97
- result.to_s.send(color)
98
- end
99
-
100
- def color
101
- COLORS.fetch(result)
102
- end
103
- end
104
75
  end
105
76
  end
106
77
  end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemsUtils
4
+ module Tests
5
+ class Multiple
6
+ class DecoratedGem < ::SimpleDelegator
7
+ enable_console_speaker
8
+
9
+ def prepare
10
+ return unless gemfile_path.exist?
11
+
12
+ log('running "bundle install"...')
13
+ return if bundle('install').execute.fetch(:exit_code).zero?
14
+
15
+ if can_remove_gemfile_lock?
16
+ log('"bundle install" failed, removing Gemfile.lock and trying again...')
17
+ gemfile_lock_path.unlink if gemfile_lock_path.exist?
18
+ bundle('install').execute!
19
+ else
20
+ raise '"bundle install" failed and the Gemfile.lock is part of gem' \
21
+ '(Should be changed by developer)'
22
+ end
23
+ end
24
+
25
+ def tests
26
+ [::EacRubyGemsUtils::Tests::Minitest.new(__getobj__),
27
+ ::EacRubyGemsUtils::Tests::Rspec.new(__getobj__)]
28
+ end
29
+
30
+ private
31
+
32
+ def log(message)
33
+ infov self, message
34
+ end
35
+
36
+ def can_remove_gemfile_lock?
37
+ !files.include?(gemfile_lock_path.relative_path_from(root))
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemsUtils
4
+ module Tests
5
+ class Multiple
6
+ class Result
7
+ common_constructor :result
8
+
9
+ COLORS = {
10
+ ::EacRubyGemsUtils::Tests::Base::RESULT_FAILED => :red,
11
+ ::EacRubyGemsUtils::Tests::Base::RESULT_NONEXISTENT => :white,
12
+ ::EacRubyGemsUtils::Tests::Base::RESULT_SUCCESSFUL => :green
13
+ }.freeze
14
+
15
+ def tag
16
+ result.to_s.send(color)
17
+ end
18
+
19
+ def color
20
+ COLORS.fetch(result)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyGemsUtils
4
- VERSION = '0.7.0'
4
+ VERSION = '0.7.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_gems_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-02 00:00:00.000000000 Z
11
+ date: 2020-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -60,6 +60,8 @@ files:
60
60
  - lib/eac_ruby_gems_utils/tests/base.rb
61
61
  - lib/eac_ruby_gems_utils/tests/minitest.rb
62
62
  - lib/eac_ruby_gems_utils/tests/multiple.rb
63
+ - lib/eac_ruby_gems_utils/tests/multiple/decorated_gem.rb
64
+ - lib/eac_ruby_gems_utils/tests/multiple/result.rb
63
65
  - lib/eac_ruby_gems_utils/tests/rspec.rb
64
66
  - lib/eac_ruby_gems_utils/version.rb
65
67
  - spec/lib/eac_ruby_gems_utils/gem_spec.rb