elasticsearch-test-runner 0.3.1 โ†’ 0.5.0

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: 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.