elasticsearch-test-runner 0.3.1 โ†’ 0.5.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: f7aaf5fcd5db6429d758a6c1aec62248b04bd36c4b6a2b664382222429364546
4
+ data.tar.gz: 1956840598048cfe9ec25d41a0cc4150048c6099d4d63f6a36783cc9700a9202
5
5
  SHA512:
6
- metadata.gz: b927b0015746d72b19d26ac3812243f4b91df653d785b924a58a8dd219608358ed1e3dbbf6b76af3ce240b4d3289371ded4615e38f8d891438b929311b9abe77
7
- data.tar.gz: a5b2ef6724092c8d6d4a39893346d233ca2c170121d59778ef4f85fea66e339e4db33ccfe40deac23d1d9b4f55dc306ffaa7c4ad5ba4bee8288b53887870b3b6
6
+ metadata.gz: 462f62c87dd7a8ebbaa7b63992d12f02f89b6c7109532e701aa678a94dc4caf0bf65444962c9bc8dc13f51d842fcb5188995ec8579e6fa76be36e669899b5ae8
7
+ data.tar.gz: 79bf2ece186c677fcb2c99ef975996dc64b6769bc4414f435ef135eedd4776eb18c07f75bc70b858ef290ec7b1a4537d8963bac5d0e389336422a2772b7e2eaf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.5.0] - 2024-07-30
4
+
5
+ - Clears `@response` before running a new action
6
+ - Fixes `expected_exception?` for failures
7
+
8
+ ## [0.4.0] - 2024-07-08
9
+
10
+ - 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).
11
+ - Updates count for better accuracy in test results.
12
+ - Rescues SystemExit, Interrupt to actually exit the script
13
+ - 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.
14
+
3
15
  ## [0.3.1] - 2024-06-27
4
16
 
5
17
  - Fixes in error handling.
@@ -35,6 +35,8 @@ module Elasticsearch
35
35
  # specifications. These are function calls to the Elasticsearch clients.
36
36
  #
37
37
  def do_action(action)
38
+ @response = nil
39
+ catchable = action.delete('catch')
38
40
  client = @client
39
41
  action = action.first if action.is_a?(Array)
40
42
  method, params = action.is_a?(String) ? [action, {}] : action.first
@@ -45,11 +47,41 @@ module Elasticsearch
45
47
  client = @client.send(arrayed_method.first)
46
48
  method = arrayed_method.last
47
49
  end
48
-
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
+ end
56
+
57
+ def expected_exception?(error_type, e)
58
+ return false if error_type.nil?
59
+
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.5.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.5.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-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elasticsearch
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  requirements: []
87
- rubygems_version: 3.5.13
87
+ rubygems_version: 3.5.11
88
88
  signing_key:
89
89
  specification_version: 4
90
90
  summary: Tool to test Elasticsearch clients against the YAML clients test suite.