ci-helper 0.3.0 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af54c4df4f96a962deb3ab2acbbbf2b189d1a14f945f1ad17501a196237babdc
4
- data.tar.gz: 73211997e92fca4b8873e9e0e1c8dafc4f208cba7c41618500d136ec639c7e62
3
+ metadata.gz: 2b4de79227e8355d1648143f4d35abcd08c1ddf9be79f4ad32521c734a4fb74e
4
+ data.tar.gz: 9d0d15a617492173e9e331fd973fe71894ed4d2f81ac512e2ba2ca754507c23f
5
5
  SHA512:
6
- metadata.gz: 3efa5ce49a800e019fa1a5b86f3d6d46132b91fb5eeb343d52f72a2052b5beec94ce8001e3c54edf180a2c7a45588217a464085aa4b191064106204f29ccf317
7
- data.tar.gz: 6a91623e8a061aab27caa74e6f74a7dbf24a095ff821b5984fbd62672976f69dbf8615cf7772334e212e6052ee699cb538198efac70b2f31a6f00984fb59d46f
6
+ metadata.gz: c3025f9be4194acd855eabe134d7b1f28f2209e84e11f4e5d974b32ef086f85b6a37bb226303b674dd2b4151b17250a9b3f613df66369a1c346b99f83dc28426
7
+ data.tar.gz: 48a8fddce07d4587935d4901e912a0e6e58d41c281251e87668d283892c9b722878c0429214c96c7b474347461dca56fec4d5b0bad8b72cbc97e095469a160df
@@ -0,0 +1,61 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+
10
+ env:
11
+ FULL_COVERAGE_CHECK: true
12
+
13
+ jobs:
14
+ full-check:
15
+ runs-on: ubuntu-latest
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: 3
22
+ bundler-cache: true
23
+ - name: Build and install gem to systems gems
24
+ run: bundle exec rake install
25
+ - name: Run Linter
26
+ run: bundle exec ci-helper RubocopLint
27
+ - name: Check missed spec suffixes
28
+ run: bundle exec ci-helper CheckSpecSuffixes --extra-paths spec/*.rb --ignored-paths spec/*_helper.rb
29
+ - name: Run specs
30
+ run: bundle exec ci-helper RunSpecs
31
+ - name: Audit
32
+ run: bundle exec ci-helper BundlerAudit
33
+ - name: Coveralls
34
+ uses: coverallsapp/github-action@master
35
+ with:
36
+ github-token: ${{ secrets.GITHUB_TOKEN }}
37
+ specs:
38
+ runs-on: ubuntu-latest
39
+ continue-on-error: ${{ matrix.experimental }}
40
+
41
+ env:
42
+ FULL_TEST_COVERAGE_CHECK: false
43
+
44
+ strategy:
45
+ fail-fast: false
46
+ matrix:
47
+ ruby: [2.5, 2.6, 2.7]
48
+ experimental: [false]
49
+ include:
50
+ - ruby: head
51
+ experimental: true
52
+
53
+
54
+ steps:
55
+ - uses: actions/checkout@v2
56
+ - uses: ruby/setup-ruby@v1
57
+ with:
58
+ ruby-version: ${{ matrix.ruby }}
59
+ bundler-cache: true
60
+ - name: Run specs
61
+ run: bundle exec rspec
data/.rubocop.yml CHANGED
@@ -14,3 +14,7 @@ RSpec/EmptyLineAfterHook:
14
14
  Naming/FileName:
15
15
  Exclude:
16
16
  - lib/ci-helper.rb
17
+
18
+ Style/HashConversion:
19
+ Exclude:
20
+ - spec/**/*_spec.rb
data/README.md CHANGED
@@ -31,8 +31,10 @@ A command can accept list of options (parameters). Option values are passed thro
31
31
  For example, the BundlerAudit command accepts the ignored_advisories option
32
32
  You can set a value of this option by setting the flag `--ignored-advisories ignored-advisory`.
33
33
  It should be noted that all hyphens in flag names are automatically replaced with underscores.
34
+ If command accepts array as option's value, you can separate values with either commas or spaces.
34
35
  ```bash
35
- $ ci-helper BundlerAudit --ignored-advisories first,second
36
+ $ ci-helper BundlerAudit --ignored-advisories first,second # Valid
37
+ $ ci-helper BundlerAudit --ignored-advisories first second # Valid too!
36
38
  ```
37
39
 
38
40
  List of available commands:
@@ -63,12 +65,19 @@ List of available commands:
63
65
  * `--ignored-paths [values]` - accepts path patterns that should be ignored,
64
66
  delimited by coma.
65
67
  * **CheckCoverage** — checks coverage by executing `SimpleCov::collate`.
66
- You should set `SimpleCov::minimum_coverage` in your `spec_helper.rb` file.
67
- Accepted flags: `--split-resultset`.
68
+ Accepted flags: `--split-resultset`, `--setup-file-path`.
68
69
  * `--split-resultset` — if you execute command `RunSpecs` with `--split-resultset true`,
69
70
  you also should set this flag to `true`. If this flag set to `true`, final coverage will be
70
71
  calculated by merging results in all files, matching the mask `coverage/resultset.*.json`.
71
72
  By default final coverage is calculated using result from `coverage/.resultset.json`.
73
+ * `--setup-file-path` — relative path to your `.rb` file, which setups `SimpleCov`.
74
+ Usually it is `spec_helper.rb`.
75
+ * **CheckSidekiqSchedulerConfig** — checks `sidekiq_scheduler` config by trying to resolve jobs constants via `rails runner`.
76
+ Accepted flags: `--config-path`
77
+ * `--config-path` — relative path to your config yaml file with schedule.
78
+ Usually it is `config/sidekiq_scheduler.yml`.
79
+ * `--with-database` — if you want to prepare database before executing specs,
80
+ you should set this flag to `true`.
72
81
 
73
82
  ### Rake Tasks
74
83
 
data/lib/ci_helper/cli.rb CHANGED
@@ -26,13 +26,14 @@ module CIHelper
26
26
  end
27
27
 
28
28
  def parse_options_from(args)
29
- args.each_slice(2).with_object({}) do |args, options|
30
- key = Tools::Inflector.instance.underscore(args.first.split("--").last)
31
- value = args[1] || ""
32
- raise Error, "Not valid options" if key.empty?
33
-
34
- options[key.to_sym] = value
35
- end
29
+ args
30
+ .slice_when { |_el_before, el_after| el_after.start_with?("--") }
31
+ .each_with_object({}) do |commands, options|
32
+ key = Tools::Inflector.instance.underscore(commands.shift.split("--").last)
33
+ raise "Invalid options" if key.empty?
34
+ value = commands.size <= 1 ? commands.first : commands
35
+ options[key.to_sym] = value || ""
36
+ end
36
37
  end
37
38
 
38
39
  def perform_command!
@@ -54,8 +54,15 @@ module CIHelper
54
54
  raise Error, message
55
55
  end
56
56
 
57
+ def boolean_option(key)
58
+ options[key] == "true"
59
+ end
60
+
57
61
  def plural_option(key)
58
62
  return [] unless options.key?(key)
63
+ value = options[key]
64
+ return value if value.is_a?(Array)
65
+
59
66
  options[key].split(",")
60
67
  end
61
68
 
@@ -1,10 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "simplecov"
4
+
3
5
  module CIHelper
4
6
  module Commands
5
7
  class CheckCoverage < BaseCommand
6
8
  def call
7
- SimpleCov.collate(files)
9
+ require(path.join(setup_file_path)) unless setup_file_path.nil?
10
+
11
+ ::SimpleCov.collate(files)
8
12
  0
9
13
  end
10
14
 
@@ -17,7 +21,11 @@ module CIHelper
17
21
  end
18
22
 
19
23
  def split_resultset?
20
- options[:split_resultset] == "true"
24
+ boolean_option(:split_resultset)
25
+ end
26
+
27
+ def setup_file_path
28
+ options[:setup_file_path]
21
29
  end
22
30
  end
23
31
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaml"
4
+
5
+ module CIHelper
6
+ module Commands
7
+ class CheckSidekiqSchedulerConfig < BaseCommand
8
+ def call
9
+ return 0 if job_constants.empty?
10
+
11
+ create_and_migrate_database! if with_database?
12
+ cmd = craft_jobs_const_get_cmd
13
+ execute_with_rails_runner(cmd)
14
+ 0
15
+ end
16
+
17
+ private
18
+
19
+ def env
20
+ :development
21
+ end
22
+
23
+ def execute_with_rails_runner(cmd)
24
+ execute("bundle exec rails runner '#{cmd}'")
25
+ end
26
+
27
+ def craft_jobs_const_get_cmd
28
+ "#{job_constants}.each { |x| Object.const_get(x) }"
29
+ end
30
+
31
+ def job_constants
32
+ @job_constants ||= config.values.reject(&:nil?).flat_map(&:keys).uniq
33
+ end
34
+
35
+ def with_database?
36
+ boolean_option(:with_database)
37
+ end
38
+
39
+ def config
40
+ @config ||= YAML.load_file(options[:config_path])
41
+ end
42
+ end
43
+ end
44
+ end
@@ -37,11 +37,11 @@ module CIHelper
37
37
  end
38
38
 
39
39
  def with_database?
40
- options[:with_database] == "true"
40
+ boolean_option(:with_database)
41
41
  end
42
42
 
43
43
  def split_resultset?
44
- options[:split_resultset] == "true"
44
+ boolean_option(:split_resultset)
45
45
  end
46
46
  end
47
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CIHelper
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - JustAnotherDude
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-14 00:00:00.000000000 Z
11
+ date: 2021-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -173,7 +173,7 @@ extensions: []
173
173
  extra_rdoc_files: []
174
174
  files:
175
175
  - ".editorconfig"
176
- - ".github/workflows/ruby.yml"
176
+ - ".github/workflows/test.yml"
177
177
  - ".gitignore"
178
178
  - ".rspec"
179
179
  - ".rubocop.yml"
@@ -193,6 +193,7 @@ files:
193
193
  - lib/ci_helper/commands/check_coverage.rb
194
194
  - lib/ci_helper/commands/check_db_development.rb
195
195
  - lib/ci_helper/commands/check_db_rollback.rb
196
+ - lib/ci_helper/commands/check_sidekiq_scheduler_config.rb
196
197
  - lib/ci_helper/commands/check_spec_suffixes.rb
197
198
  - lib/ci_helper/commands/rubocop_lint.rb
198
199
  - lib/ci_helper/commands/run_specs.rb
@@ -207,7 +208,7 @@ licenses:
207
208
  metadata:
208
209
  homepage_uri: https://github.com/umbrellio/ci_helper
209
210
  source_code_uri: https://github.com/umbrellio/ci_helper
210
- post_install_message:
211
+ post_install_message:
211
212
  rdoc_options: []
212
213
  require_paths:
213
214
  - lib
@@ -222,8 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  - !ruby/object:Gem::Version
223
224
  version: '0'
224
225
  requirements: []
225
- rubygems_version: 3.1.4
226
- signing_key:
226
+ rubygems_version: 3.2.15
227
+ signing_key:
227
228
  specification_version: 4
228
229
  summary: Continuous Integration helpers for Ruby
229
230
  test_files: []
@@ -1,84 +0,0 @@
1
- # This workflow uses actions that are not certified by GitHub.
2
- # They are provided by a third-party and are governed by
3
- # separate terms of service, privacy policy, and support
4
- # documentation.
5
- # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
- # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
-
8
- name: Ruby
9
-
10
- on:
11
- push:
12
- branches: [ master ]
13
- pull_request:
14
- branches: [ master ]
15
-
16
- env:
17
- FULL_COVERAGE_CHECK: true
18
-
19
- jobs:
20
- test-latest:
21
-
22
- runs-on: ubuntu-latest
23
-
24
- steps:
25
- - uses: actions/checkout@v2
26
- - name: Set up Ruby
27
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
- # uses: ruby/setup-ruby@v1
30
- uses: ruby/setup-ruby@v1
31
- with:
32
- ruby-version: 2.7
33
- - name: Install dependencies
34
- run: bundle install && gem install bundler-audit
35
- - name: Build and install gem to systems gems
36
- run: bundle exec rake install
37
- - name: Run Linter
38
- run: ci-helper RubocopLint
39
- - name: Check missed spec suffixes
40
- run: ci-helper CheckSpecSuffixes --extra-paths spec/*.rb --ignored-paths spec/*_helper.rb
41
- - name: Run specs
42
- run: ci-helper RunSpecs
43
- - name: Audit
44
- run: ci-helper BundlerAudit
45
- - name: Coveralls
46
- uses: coverallsapp/github-action@v1.1.1
47
- with:
48
- github-token: ${{ secrets.GITHUB_TOKEN }}
49
- specs-for-26:
50
- runs-on: ubuntu-latest
51
-
52
- steps:
53
- - uses: actions/checkout@v2
54
- - name: Set up Ruby
55
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
56
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
57
- # uses: ruby/setup-ruby@v1
58
- uses: ruby/setup-ruby@v1
59
- with:
60
- ruby-version: 2.6
61
- - name: Install dependencies
62
- run: bundle install && gem install bundler-audit
63
- - name: Build and install gem to systems gems
64
- run: bundle exec rake install
65
- - name: Run specs
66
- run: ci-helper RunSpecs
67
- specs-for-25:
68
- runs-on: ubuntu-latest
69
-
70
- steps:
71
- - uses: actions/checkout@v2
72
- - name: Set up Ruby
73
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
74
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
75
- # uses: ruby/setup-ruby@v1
76
- uses: ruby/setup-ruby@v1
77
- with:
78
- ruby-version: 2.5
79
- - name: Install dependencies
80
- run: bundle install && gem install bundler-audit
81
- - name: Build and install gem to systems gems
82
- run: bundle exec rake install
83
- - name: Run specs
84
- run: ci-helper RunSpecs