elasticsearch-test-runner 0.8.0 → 0.10.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 +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/elasticsearch/tests/code_runner.rb +19 -5
- data/lib/elasticsearch/tests/downloader.rb +7 -7
- data/lib/elasticsearch/tests/printer.rb +16 -9
- data/lib/elasticsearch/tests/test_runner.rb +4 -4
- data/lib/elasticsearch/tests/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74628e9c64f4c668f6e4ef87c94afa47ee6539b22ab3a28ce4fd25e8ae69d457
|
4
|
+
data.tar.gz: e9fc240ffa3a200f1e3cb257ba73b297145117a75c19c38e4a7194695e3e5ddb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27b6f144c51341b040891a80a23353b328f1378a3ba33503e3dfbe6f6cf86dc501f45717fb4af9a3b7dd72fe8fa21eae2c5ce91d7e4764a7a877e3fd48ef0590
|
7
|
+
data.tar.gz: e94c3308a4733421362d13af89915db5b010ec72d76218ccd7d8efa25a3bf1c8f9e0ea1a19b0e798ba44655b7e8a2df2feab8cc7642c4d97ed1f8aeb353901ff
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.10.0] - 2024-11-13
|
4
|
+
|
5
|
+
- Using tar.gz file for downloaded tests instead of zip file.
|
6
|
+
- Updates logging and debug information. More information being logged for different levels of Logger.
|
7
|
+
|
8
|
+
## [0.9.0] - 2024-08-15
|
9
|
+
|
10
|
+
- Better display of action and response when `ENV['DEBUG']` is true.
|
11
|
+
- Checks for more error types when catching exceptions.
|
12
|
+
- Better matching for regular expressions.
|
13
|
+
- Refactors `set_param_variable` for better substitution.
|
14
|
+
|
3
15
|
## [0.8.0] - 2024-08-14
|
4
16
|
|
5
17
|
- Adds support for variable keys (`$`).
|
@@ -54,10 +54,14 @@ module Elasticsearch
|
|
54
54
|
method = arrayed_method.last
|
55
55
|
end
|
56
56
|
@response = client.send(method.to_sym, process_params(params))
|
57
|
-
puts @response if ENV['DEBUG']
|
57
|
+
puts "Action: #{action}\nResponse: #{@response}\n\n" if ENV['DEBUG']
|
58
58
|
@response
|
59
59
|
rescue StandardError => e
|
60
|
-
|
60
|
+
if expected_exception?(catchable, e)
|
61
|
+
puts "Catchable: #{e}\nResponse: #{@response}\n" if ENV['DEBUG']
|
62
|
+
else
|
63
|
+
raise e
|
64
|
+
end
|
61
65
|
end
|
62
66
|
|
63
67
|
def expected_exception?(error_type, e)
|
@@ -66,7 +70,7 @@ module Elasticsearch
|
|
66
70
|
case error_type
|
67
71
|
when 'request_timeout'
|
68
72
|
e.is_a?(Elastic::Transport::Transport::Errors::RequestTimeout)
|
69
|
-
when 'missing'
|
73
|
+
when 'missing', /resource_not_found_exception/
|
70
74
|
e.is_a?(Elastic::Transport::Transport::Errors::NotFound)
|
71
75
|
when 'conflict'
|
72
76
|
e.is_a?(Elastic::Transport::Transport::Errors::Conflict)
|
@@ -85,6 +89,8 @@ module Elasticsearch
|
|
85
89
|
e.is_a?(Elastic::Transport::Transport::Errors::BadRequest)
|
86
90
|
when /NullPointerException/
|
87
91
|
e.message =~ /\[400\]/
|
92
|
+
when /status_exception/
|
93
|
+
e.message =~ /\[409\]/
|
88
94
|
else
|
89
95
|
e.message =~ /#{error_type}/
|
90
96
|
end
|
@@ -109,7 +115,9 @@ module Elasticsearch
|
|
109
115
|
end
|
110
116
|
|
111
117
|
def match_regexp(expected, result)
|
112
|
-
expected.is_a?(String) &&
|
118
|
+
expected.is_a?(String) &&
|
119
|
+
expected.match?(/^\//) &&
|
120
|
+
result.match?(Regexp.new(expected.gsub('/', '').strip))
|
113
121
|
end
|
114
122
|
|
115
123
|
def do_length(action)
|
@@ -200,7 +208,13 @@ module Elasticsearch
|
|
200
208
|
end
|
201
209
|
|
202
210
|
def set_param_variable(params, key, param)
|
203
|
-
|
211
|
+
return unless param.is_a?(String) && param.include?("$")
|
212
|
+
|
213
|
+
# Param can be a single '$value' string or '{ something: $value }'
|
214
|
+
repleacable = param.match(/(\$[0-9a-z_-]+)/)[0]
|
215
|
+
value = instance_variable_get(repleacable.gsub("$", "@"))
|
216
|
+
content = param.gsub(repleacable, value)
|
217
|
+
params[key] = content
|
204
218
|
end
|
205
219
|
|
206
220
|
# Given a list of keys, find the value in a recursively nested document.
|
@@ -22,18 +22,18 @@ module Elasticsearch
|
|
22
22
|
# Module for downloading the test files
|
23
23
|
module Downloader
|
24
24
|
class << self
|
25
|
-
FILENAME = 'tests.
|
25
|
+
FILENAME = 'tests.tar.gz'.freeze
|
26
26
|
|
27
27
|
def run(path, branch = 'main')
|
28
28
|
delete_files(path)
|
29
|
-
url = "https://api.github.com/repos/elastic/serverless-clients-tests/
|
29
|
+
url = "https://api.github.com/repos/elastic/serverless-clients-tests/tarball/#{branch}"
|
30
30
|
if download_tests(url)
|
31
31
|
puts "Successfully downloaded #{FILENAME}"
|
32
32
|
else
|
33
33
|
warn "[!] Couldn't download #{FILENAME}"
|
34
34
|
return
|
35
35
|
end
|
36
|
-
|
36
|
+
untar_file(path)
|
37
37
|
File.delete(FILENAME)
|
38
38
|
end
|
39
39
|
|
@@ -49,11 +49,11 @@ module Elasticsearch
|
|
49
49
|
|
50
50
|
private
|
51
51
|
|
52
|
-
def
|
53
|
-
puts '
|
52
|
+
def untar_file(path)
|
53
|
+
puts 'Extracting tar files'
|
54
54
|
puts path
|
55
|
-
`
|
56
|
-
puts 'Removing
|
55
|
+
`tar -zxf #{FILENAME} --strip-components=1 -C #{path}/`
|
56
|
+
puts 'Removing tar file'
|
57
57
|
end
|
58
58
|
|
59
59
|
def delete_files(path)
|
@@ -70,21 +70,28 @@ module Elasticsearch
|
|
70
70
|
raise error
|
71
71
|
end
|
72
72
|
|
73
|
-
def self.display_errors(errors)
|
73
|
+
def self.display_errors(errors, logger)
|
74
74
|
puts "+++ ❌ Errors/Failures: #{errors.count}"
|
75
75
|
errors.map do |error|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
76
|
+
message = []
|
77
|
+
message << "🧪 Test: #{error[:file]}"
|
78
|
+
message << "▶ Action: #{error[:action].first}" if error[:action]
|
79
|
+
message << "🔬 #{error.class} - #{error[:error].message}"
|
80
|
+
message << error[:error].backtrace.join("$/\n") if ENV['DEBUG']
|
81
|
+
puts message.join("\n")
|
82
|
+
logger.error(message.join("\n"))
|
81
83
|
end
|
82
84
|
end
|
83
85
|
|
84
|
-
def self.display_summary(tests_count, errors_count, start_time)
|
86
|
+
def self.display_summary(tests_count, errors_count, start_time, logger)
|
85
87
|
puts
|
86
|
-
|
87
|
-
|
88
|
+
summary = "🧪 Tests: #{tests_count} | Passed: #{tests_count - errors_count} | Failed: #{errors_count}"
|
89
|
+
logger.info summary
|
90
|
+
puts "--- #{summary}"
|
91
|
+
|
92
|
+
duration = "⏲ Elapsed time: #{Time.at(Time.now - start_time).utc.strftime('%H:%M:%S')}"
|
93
|
+
logger.info duration
|
94
|
+
puts "--- #{duration}"
|
88
95
|
end
|
89
96
|
end
|
90
97
|
end
|
@@ -25,7 +25,7 @@ module Elasticsearch
|
|
25
25
|
# Main YAML test runner
|
26
26
|
class TestRunner
|
27
27
|
LOGGER = Logger.new($stdout)
|
28
|
-
LOGGER.level =
|
28
|
+
LOGGER.level = ENV['DEBUG'] ? Logger::DEBUG : Logger::WARN
|
29
29
|
|
30
30
|
def initialize(client, path = nil, logger = nil)
|
31
31
|
@client = client
|
@@ -39,8 +39,8 @@ module Elasticsearch
|
|
39
39
|
|
40
40
|
@test_files = select_test_files(test_files)
|
41
41
|
run_the_tests
|
42
|
-
Elasticsearch::Tests::Printer::display_errors(@errors) unless @errors.empty?
|
43
|
-
Elasticsearch::Tests::Printer::display_summary(@tests_count, @errors.count, @start_time)
|
42
|
+
Elasticsearch::Tests::Printer::display_errors(@errors, @logger) unless @errors.empty?
|
43
|
+
Elasticsearch::Tests::Printer::display_summary(@tests_count, @errors.count, @start_time, @logger)
|
44
44
|
if @errors.empty?
|
45
45
|
exit 0
|
46
46
|
else
|
@@ -93,7 +93,7 @@ module Elasticsearch
|
|
93
93
|
tests_path = if test_files.empty?
|
94
94
|
"#{@path}/**/*.yml"
|
95
95
|
elsif test_files.include?('yml')
|
96
|
-
"#{@path}/#{test_files}"
|
96
|
+
return ["#{@path}/tests/#{test_files}"]
|
97
97
|
else
|
98
98
|
"#{@path}/#{test_files}/*.yml"
|
99
99
|
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.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic Client Library Maintainers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: elasticsearch
|
@@ -69,7 +69,7 @@ metadata:
|
|
69
69
|
homepage_uri: https://www.elastic.co/guide/en/elasticsearch/client/ruby-api/current/index.html
|
70
70
|
changelog_uri: https://github.com/elastic/es-test-runner-ruby/blob/main/CHANGELOG.md
|
71
71
|
source_code_uri: https://github.com/elastic/es-test-runner-ruby/tree/main
|
72
|
-
post_install_message:
|
72
|
+
post_install_message:
|
73
73
|
rdoc_options: []
|
74
74
|
require_paths:
|
75
75
|
- lib
|
@@ -84,8 +84,8 @@ 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.
|
88
|
-
signing_key:
|
87
|
+
rubygems_version: 3.5.20
|
88
|
+
signing_key:
|
89
89
|
specification_version: 4
|
90
90
|
summary: Tool to test Elasticsearch clients against the YAML clients test suite.
|
91
91
|
test_files: []
|