rails-response-dumper 5.1.0 → 5.3.0

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: 7d5d4bb6a00afe75289a4dfe382c2c5c53bc822c5e1a255941d8b41e49a343ac
4
- data.tar.gz: 3e7f9b81d45db0273a373a16268e4839d9f2bf14692bf4abc4fd1d2a18226654
3
+ metadata.gz: 83121f82eb5299087a5a7f51a1a1950767b0ae34e893f5c48005bb288950f634
4
+ data.tar.gz: d42cca1ffad83f7df8ffdda62f2b4d2610d98caa21ef96c2cfa52443a47d8386
5
5
  SHA512:
6
- metadata.gz: 8060df3b6dfe5ac8969dc8fd6e528e3af142a6e809500df39073aa74e61e8e9a78de98253c17e3f7ccdad6dfa68407dd5d38994fe41fc5b948c6c875776a47e4
7
- data.tar.gz: 07bfb42c2b1d4fb680a035792d4a29bf7bd376fb2901787c7ec4c6f995d90ef746f29fa9c3a2b78e4bcea2a580f4809a95a839816040e818618d86381b7410a9
6
+ metadata.gz: 3b4183a48c0ad2d313565a10bfcd995bc6b8325ef1f979771c32958ef79515d73586c1bfdfd7cca1d735abbd185ce0ec8f2031bf0d5e7aac585be1ef4b45b91d
7
+ data.tar.gz: cecaddd1391cd0fcbb9560cf251b61769e3ca94a31b45f51d18cd2c4df30e3c73de4fc9b6fac4f0bbb3325df261447e437b35370f43bab0423f709b589a19635
@@ -8,5 +8,5 @@ require 'rails_response_dumper'
8
8
  abort 'The Rails environment is running in production mode!' if Rails.env.production?
9
9
  ActiveRecord::Migration.maintain_test_schema! if defined?(ActiveRecord::Base)
10
10
 
11
- runner = RailsResponseDumper::Runner.new
11
+ runner = RailsResponseDumper::Runner.new(RailsResponseDumper.parse_options!)
12
12
  runner.run_dumps
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'optparse'
4
+
5
+ module RailsResponseDumper
6
+ def self.parse_options!
7
+ options = {}
8
+
9
+ OptionParser.new do |opts|
10
+ opts.on('--fail-fast', 'Abort the run after first failure.') do |v|
11
+ options[:fail_fast] = v
12
+ end
13
+
14
+ opts.on('--verbose', 'Output dumper and dump block names.') do |v|
15
+ options[:verbose] = v
16
+ end
17
+
18
+ opts.on('--order TYPE', 'Run dumps by the specified order type.') do |v|
19
+ options[:order] = v
20
+ end
21
+ end.parse!
22
+
23
+ options.freeze
24
+ end
25
+ end
@@ -5,6 +5,12 @@ require_relative 'colorize'
5
5
 
6
6
  module RailsResponseDumper
7
7
  class Runner
8
+ attr_reader :options
9
+
10
+ def initialize(options)
11
+ @options = options
12
+ end
13
+
8
14
  def run_dumps
9
15
  dumps_dir = Rails.root.join('dumps')
10
16
  FileUtils.rm_rf dumps_dir
@@ -14,8 +20,31 @@ module RailsResponseDumper
14
20
 
15
21
  errors = []
16
22
 
17
- RailsResponseDumper::Defined.dumpers.each do |defined|
18
- defined.blocks.each do |dump_block|
23
+ dumper_blocks = RailsResponseDumper::Defined.dumpers.flat_map do |defined|
24
+ defined.blocks.map do |dump_block|
25
+ [defined, dump_block]
26
+ end
27
+ end
28
+
29
+ if options[:order].present?
30
+ seed = if options[:order] == 'random'
31
+ Random.new_seed
32
+ else
33
+ Integer(options[:order])
34
+ end
35
+
36
+ puts "Randomized with seed #{seed}"
37
+
38
+ random = Random.new(seed)
39
+ dumper_blocks.shuffle!(random: random)
40
+ end
41
+
42
+ catch :fail_fast do
43
+ dumper_blocks.each do |(defined, dump_block)|
44
+ name = "#{defined.name}.#{dump_block.name}"
45
+
46
+ print "#{name} " if options[:verbose]
47
+
19
48
  defined.reset_models!
20
49
  dumper = defined.klass.new
21
50
  dumper.mock_setup
@@ -69,27 +98,34 @@ module RailsResponseDumper
69
98
  end
70
99
 
71
100
  RailsResponseDumper.print_color('.', :green)
101
+ print("\n") if options[:verbose]
72
102
  rescue StandardError => e
73
103
  errors << {
74
104
  dumper_location: dump_block.block.source_location.join(':'),
75
- name: "#{defined.name}.#{dump_block.name}",
76
- message: e.exception.message,
77
- backtrace: e.cause&.backtrace || e.exception.backtrace
105
+ name: name,
106
+ exception: e
78
107
  }
79
108
 
80
109
  RailsResponseDumper.print_color('F', :red)
110
+ print("\n") if options[:verbose]
111
+
112
+ throw :fail_fast if options[:fail_fast]
81
113
  end
82
114
  end
83
115
 
84
116
  puts
85
117
  return if errors.blank?
86
118
 
119
+ puts
87
120
  errors.each do |error|
88
121
  RailsResponseDumper.print_color(
89
- "#{error[:dumper_location]} #{error[:name]} received #{error[:message]}\n",
122
+ "#{error[:dumper_location]} #{error[:name]} received #{error[:exception]}\n",
90
123
  :red
91
124
  )
92
- RailsResponseDumper.print_color("#{error[:backtrace][0]}\n\n", :cyan)
125
+ error[:exception].full_message(highlight: RailsResponseDumper::COLORIZE).lines do |line|
126
+ RailsResponseDumper.print_color(line, :cyan)
127
+ end
128
+ puts
93
129
  end
94
130
 
95
131
  exit(false)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'rails_response_dumper/option_parser'
3
4
  require_relative 'rails_response_dumper/runner'
4
5
  require_relative 'response_dumper'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-response-dumper
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pioneer Valley Books
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-12 00:00:00.000000000 Z
11
+ date: 2023-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -59,6 +59,7 @@ files:
59
59
  - lib/rails_response_dumper/colorize.rb
60
60
  - lib/rails_response_dumper/defined.rb
61
61
  - lib/rails_response_dumper/dump_block.rb
62
+ - lib/rails_response_dumper/option_parser.rb
62
63
  - lib/rails_response_dumper/runner.rb
63
64
  - lib/response_dumper.rb
64
65
  homepage: https://github.com/Pioneer-Valley-Books/rails-response-dumper