elasticsearch-test-runner 0.3.1 โ†’ 0.4.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: 371dabd8cff033ef7d2656b874f4fcb5fd63f5bde3093d5ce1ee830e9e253187
4
- data.tar.gz: 43006ff9d74aea61684af8abc8e660099c009a1e7293d489c5796887efb9756e
3
+ metadata.gz: fbe5745c193f66b9d4d16ca8402a9aba8d87068c43a328b565ac094e3dc679ae
4
+ data.tar.gz: b2fa5da01e5fa321c3b050dfd6cd08d1caf8f80fa5c5a903a5822e1dc88fb58a
5
5
  SHA512:
6
- metadata.gz: b927b0015746d72b19d26ac3812243f4b91df653d785b924a58a8dd219608358ed1e3dbbf6b76af3ce240b4d3289371ded4615e38f8d891438b929311b9abe77
7
- data.tar.gz: a5b2ef6724092c8d6d4a39893346d233ca2c170121d59778ef4f85fea66e339e4db33ccfe40deac23d1d9b4f55dc306ffaa7c4ad5ba4bee8288b53887870b3b6
6
+ metadata.gz: e153228ccd3fc6a7900c8744fef31c23e8b27ebda3bdbda682a4d1dca0ae720568144a30c90e199e417281d676bccaa45acdff6fd482b98039b20ab8b7ad9eb5
7
+ data.tar.gz: 4abc093012f30303cc8afaed96dea471cef8a6e4bd9ada4c7844ab35fe77f0593c9f850718c51f482068363d3998c715b5d9fc1e8fc4ab8905f478aafc88fc3b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.4.0] - 2024-07-08
4
+
5
+ - Refactors display of errors/passing tests. Adds `QUIET` environment variable parsing. If `true`, display for passing tests will be more compact (not showing file/test names).
6
+ - Updates count for better accuracy in test results.
7
+ - Rescues SystemExit, Interrupt to actually exit the script
8
+ - Adds support for catch in tests: If the arguments to `do` include `catch`, then we are expecting an error, which should be caught and tested.
9
+
3
10
  ## [0.3.1] - 2024-06-27
4
11
 
5
12
  - Fixes in error handling.
@@ -35,6 +35,7 @@ module Elasticsearch
35
35
  # specifications. These are function calls to the Elasticsearch clients.
36
36
  #
37
37
  def do_action(action)
38
+ catchable = action.delete('catch')
38
39
  client = @client
39
40
  action = action.first if action.is_a?(Array)
40
41
  method, params = action.is_a?(String) ? [action, {}] : action.first
@@ -47,9 +48,40 @@ module Elasticsearch
47
48
  end
48
49
 
49
50
  @response = client.send(method.to_sym, process_params(params))
51
+ puts @response if ENV['DEBUG']
50
52
  @response
51
53
  rescue StandardError => e
52
- raise e
54
+ raise e unless expected_exception?(catchable, e)
55
+
56
+ @response
57
+ end
58
+
59
+ def expected_exception?(error_type, e)
60
+ case error_type
61
+ when 'request_timeout'
62
+ e.is_a?(Elastic::Transport::Transport::Errors::RequestTimeout)
63
+ when 'missing'
64
+ e.is_a?(Elastic::Transport::Transport::Errors::NotFound)
65
+ when 'conflict'
66
+ e.is_a?(Elastic::Transport::Transport::Errors::Conflict)
67
+ when 'request'
68
+ e.is_a?(Elastic::Transport::Transport::Errors::InternalServerError)
69
+ when 'bad_request'
70
+ e.is_a?(Elastic::Transport::Transport::Errors::BadRequest)
71
+ when 'param'
72
+ actual_error.is_a?(ArgumentError)
73
+ when 'unauthorized'
74
+ e.is_a?(Elastic::Transport::Transport::Errors::Unauthorized)
75
+ when 'forbidden'
76
+ e.is_a?(Elastic::Transport::Transport::Errors::Forbidden)
77
+ when /error parsing field/, /illegal_argument_exception/
78
+ e.message =~ /\[400\]/ ||
79
+ e.is_a?(Elastic::Transport::Transport::Errors::BadRequest)
80
+ when /NullPointerException/
81
+ e.message =~ /\[400\]/
82
+ else
83
+ e.message =~ /#{error_type}/
84
+ end
53
85
  end
54
86
 
55
87
  # Code for matching expectations and response
@@ -28,7 +28,11 @@ module Elasticsearch
28
28
  else
29
29
  @response.status
30
30
  end
31
- puts "๐ŸŸข #{@file} #{@title} passed. Response: #{response}"
31
+ if ENV['QUIET']
32
+ print "๐ŸŸข "
33
+ else
34
+ puts "๐ŸŸข #{@file} #{@title} passed. Response: #{response}"
35
+ end
32
36
  end
33
37
 
34
38
  def print_failure(action, response)
@@ -70,13 +74,14 @@ module Elasticsearch
70
74
  errors.map do |error|
71
75
  puts "๐Ÿงช Test: #{error[:file]}"
72
76
  puts "โ–ถ Action: #{error[:action].first}" if error[:action]
73
- puts "๐Ÿ”ฌ #{error[:error].message}"
77
+ puts "๐Ÿ”ฌ #{error.class} - #{error[:error].message}"
74
78
  pp error[:error].backtrace.join("$/\n") if ENV['DEBUG']
75
79
  puts
76
80
  end
77
81
  end
78
82
 
79
83
  def self.display_summary(tests_count, errors_count, start_time)
84
+ puts
80
85
  puts "--- ๐Ÿงช Tests: #{tests_count} | Passed: #{tests_count - errors_count} | Failed: #{errors_count}"
81
86
  puts "--- โฒ Elapsed time: #{Time.at(Time.now - start_time).utc.strftime("%H:%M:%S")}"
82
87
  end
@@ -90,7 +90,7 @@ module Elasticsearch
90
90
  end
91
91
 
92
92
  def count
93
- @actions.length
93
+ @actions.select { |a| a.keys.first == 'do' }.count
94
94
  end
95
95
 
96
96
  def test_filename(file)
@@ -65,6 +65,8 @@ module Elasticsearch
65
65
  rescue StandardError => e
66
66
  @errors << { error: e, file: test_file }
67
67
  @logger.debug e
68
+ rescue SystemExit, Interrupt
69
+ exit
68
70
  end
69
71
  end
70
72
 
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Elasticsearch
21
21
  module Tests
22
- VERSION = '0.3.1'
22
+ VERSION = '0.4.0'
23
23
  end
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-test-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic Client Library Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-27 00:00:00.000000000 Z
11
+ date: 2024-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elasticsearch