ci-helper 0.2.6 → 0.4.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: e4041f65da690c41117fb7784cd41dba96dd13313e6e9f3caaeddbb55b585b4e
4
- data.tar.gz: aa4d96e07893b21e88259f6f6d39fa438f9af9382ade808f30f32c7accf42988
3
+ metadata.gz: 0b8b84c09ceed862107e1dab8edc94376d88c9dc445edee953d22b098a9c1aec
4
+ data.tar.gz: 9dc1e0f8108facb2ef0f71396aa87c6e9989679483bb799aaeb96d762908be11
5
5
  SHA512:
6
- metadata.gz: 4ce17c1aa8fa9f7039ce3adaafdac51da7256c13e76bda63b38d3d6e69a477d7a1a630f08515434ae45bee55158044db566f98524f563427c7111eb6f66ebd11
7
- data.tar.gz: a781c0965d67bf987bda0ef703addc8a892bb31b317a0a4efe280fec5fc874e5a34393048d85d9c02fa82222ff493c550143e421dbb242d4cf519571103ca770
6
+ metadata.gz: '01491ffa280587336bff05506b3b1bb0261c3b33c70cf2f13467f6cc2e052e70518c82ced20a4ae96d17cd7b8d4f61753d786d42c75ff96c3adbc55ada9ce004'
7
+ data.tar.gz: ac0468a7cd7aad077cfa8f35b351890fec936f888748d08d91d8fa5dca4a536a1be409ace409a9ce806995e83629be4014b7fce01b5eaea902eef5b6bb60211b
data/README.md CHANGED
@@ -47,7 +47,7 @@ List of available commands:
47
47
  If you want to use `ActiveRecord::Migrator`, you'll have to write rake task by your own.
48
48
  * **RubocopLint** — executes rubocop linter. Does not accept flags.
49
49
  * **RunSpecs** — executes `rspec` in project root.
50
- Accepted flags: `--node-index`, `node-total`, `with-database`, `split-resultset`.
50
+ Accepted flags: `--node-index`, `node-total`, `with-database`, `split-resultset`.
51
51
  * `--node-index` — if you run specs in parallel in CI, then you might use this flag.
52
52
  * `--node-total` — if you run specs in parallel in CI, then you might use this flag.
53
53
  * `--with-database` — if you want to prepare database before executing specs,
@@ -62,6 +62,20 @@ Accepted flags: `--node-index`, `node-total`, `with-database`, `split-resultset`
62
62
  delimited by coma.
63
63
  * `--ignored-paths [values]` - accepts path patterns that should be ignored,
64
64
  delimited by coma.
65
+ * **CheckCoverage** — checks coverage by executing `SimpleCov::collate`.
66
+ Accepted flags: `--split-resultset`, `--setup-file-path`.
67
+ * `--split-resultset` — if you execute command `RunSpecs` with `--split-resultset true`,
68
+ you also should set this flag to `true`. If this flag set to `true`, final coverage will be
69
+ calculated by merging results in all files, matching the mask `coverage/resultset.*.json`.
70
+ By default final coverage is calculated using result from `coverage/.resultset.json`.
71
+ * `--setup-file-path` — relative path to your `.rb` file, which setups `SimpleCov`.
72
+ Usually it is `spec_helper.rb`.
73
+ * **CheckSidekiqSchedulerConfig** — checks `sidekiq_scheduler` config by trying to resolve jobs constants via `rails runner`.
74
+ Accepted flags: `--config-path`
75
+ * `--config-path` — relative path to your config yaml file with schedule.
76
+ Usually it is `config/sidekiq_scheduler.yml`.
77
+ * `--with-database` — if you want to prepare database before executing specs,
78
+ you should set this flag to `true`.
65
79
 
66
80
  ### Rake Tasks
67
81
 
@@ -17,4 +17,6 @@ require "ci_helper/tools/colorize"
17
17
  require "ci_helper/tools/inflector"
18
18
  require "ci_helper/version"
19
19
 
20
+ # :nocov:
20
21
  require "ci_helper/railtie" if defined?(Rails)
22
+ # :nocov:
@@ -12,7 +12,7 @@ module CIHelper
12
12
 
13
13
  # :nocov:
14
14
  def process_stdout
15
- @process_stdout ||= STDOUT
15
+ @process_stdout ||= $stdout
16
16
  end
17
17
  # :nocov:
18
18
  end
@@ -54,6 +54,10 @@ 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)
59
63
  options[key].split(",")
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "simplecov"
4
+
5
+ module CIHelper
6
+ module Commands
7
+ class CheckCoverage < BaseCommand
8
+ def call
9
+ require(path.join(setup_file_path)) unless setup_file_path.nil?
10
+
11
+ ::SimpleCov.collate(files)
12
+ 0
13
+ end
14
+
15
+ private
16
+
17
+ def files
18
+ return path.glob("coverage/resultset.*.json") if split_resultset?
19
+
20
+ [path.join("coverage/.resultset.json")]
21
+ end
22
+
23
+ def split_resultset?
24
+ boolean_option(:split_resultset)
25
+ end
26
+
27
+ def setup_file_path
28
+ options[:setup_file_path]
29
+ end
30
+ end
31
+ end
32
+ 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
@@ -5,9 +5,11 @@ module CIHelper
5
5
  class Inflector < Delegator
6
6
  include Singleton
7
7
 
8
+ # rubocop:disable Lint/MissingSuper
8
9
  def initialize
9
10
  @inflector = Dry::Inflector.new { |inflections| inflections.acronym "DB" }
10
11
  end
12
+ # rubocop:enable Lint/MissingSuper
11
13
 
12
14
  def __getobj__
13
15
  @inflector
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CIHelper
4
- VERSION = "0.2.6"
4
+ VERSION = "0.4.1"
5
5
  end
@@ -9,7 +9,7 @@ class SequelManagement
9
9
  MIGRATIONS_PATH = "db/migrate"
10
10
 
11
11
  def initialize
12
- self.logger = Logger.new(STDOUT)
12
+ self.logger = Logger.new($stdout)
13
13
 
14
14
  define_db_task!
15
15
  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.2.6
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - JustAnotherDude
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-01 00:00:00.000000000 Z
11
+ date: 2020-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -190,8 +190,10 @@ files:
190
190
  - lib/ci_helper/cli.rb
191
191
  - lib/ci_helper/commands.rb
192
192
  - lib/ci_helper/commands/bundler_audit.rb
193
+ - lib/ci_helper/commands/check_coverage.rb
193
194
  - lib/ci_helper/commands/check_db_development.rb
194
195
  - lib/ci_helper/commands/check_db_rollback.rb
196
+ - lib/ci_helper/commands/check_sidekiq_scheduler_config.rb
195
197
  - lib/ci_helper/commands/check_spec_suffixes.rb
196
198
  - lib/ci_helper/commands/rubocop_lint.rb
197
199
  - lib/ci_helper/commands/run_specs.rb