elasticsearch-test-runner 0.6.0 → 0.8.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d09d996ce00f24cbdd34e54d447eff53c19a0a023fa55a61043a5215626e21a8
|
4
|
+
data.tar.gz: 77fc59d5846f32c165dcb3ac72bf475c0e572a12f03e7aab80a85030b6e6d7c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69587a3c06c098c03c74e2b26f114228012ee97d73267a5623e44e0d689e776d0c9dc85a1cc503a0ac397c68d9939c338bd6a88bcaf0ffacf2cbf77a31d0cc17
|
7
|
+
data.tar.gz: 4b4e6315e953fbc534b8fdbc06db5462e7656cee80c1f5edfbd21cbede0956513e2f7d45faff87c77b5cf61a34526d89d9a9b907d4887ff8e9d4cbf4258b6b1b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.8.0] - 2024-08-14
|
4
|
+
|
5
|
+
- Adds support for variable keys (`$`).
|
6
|
+
|
7
|
+
## [0.7.0] - 2024-08-08
|
8
|
+
|
9
|
+
- Improves test (file) name display
|
10
|
+
- Updates QUIET environment variable check
|
11
|
+
|
3
12
|
## [0.6.0] - 2024-08-07
|
4
13
|
|
5
14
|
- Adds `header` support, headers can be specified for an action.
|
@@ -176,13 +176,11 @@ module Elasticsearch
|
|
176
176
|
# Given a key coming from a test definition, search the response body for a matching value.
|
177
177
|
#
|
178
178
|
def search_in_response(keys)
|
179
|
-
if (match = /\$([a-z]+)/.match(keys))
|
180
|
-
return @response.send(match[1])
|
181
|
-
end
|
182
|
-
|
183
179
|
if keys.include?('.')
|
184
180
|
key = split_and_parse_key(keys)
|
185
181
|
return find_value_in_document(key, @response.body)
|
182
|
+
elsif (match = /\$([a-z]+)/.match(keys))
|
183
|
+
return @response.send(match[1])
|
186
184
|
end
|
187
185
|
|
188
186
|
@response[keys]
|
@@ -217,7 +215,9 @@ module Elasticsearch
|
|
217
215
|
return document[chain[0]] unless chain.size > 1
|
218
216
|
|
219
217
|
# a number can be a string key in a Hash or indicate an element in a list
|
220
|
-
if
|
218
|
+
if chain[0].is_a?(String) && chain[0].match?(/^\$/)
|
219
|
+
find_value_in_document(chain[1..], instance_variable_get("@#{chain[0].gsub('$', '')}"))
|
220
|
+
elsif document.is_a?(Hash)
|
221
221
|
find_value_in_document(chain[1..], document[chain[0].to_s]) if document[chain[0].to_s]
|
222
222
|
elsif document[chain[0]]
|
223
223
|
find_value_in_document(chain[1..], document[chain[0]]) if document[chain[0]]
|
@@ -28,15 +28,15 @@ module Elasticsearch
|
|
28
28
|
else
|
29
29
|
@response.status
|
30
30
|
end
|
31
|
-
if ENV['QUIET']
|
31
|
+
if ENV['QUIET'] == 'true'
|
32
32
|
print '🟢 '
|
33
33
|
else
|
34
|
-
puts "🟢 #{@
|
34
|
+
puts "🟢 #{@short_name} #{@title} passed. Response: #{response}"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
def print_failure(action, response)
|
39
|
-
puts "🔴 #{@
|
39
|
+
puts "🔴 #{@short_name} #{@title} failed"
|
40
40
|
puts "Expected result: #{action}" # TODO: Show match/length differently
|
41
41
|
if defined?(ElasticsearchServerless) &&
|
42
42
|
response.is_a?(ElasticsearchServerless::API::Response) ||
|
@@ -46,7 +46,7 @@ module Elasticsearch
|
|
46
46
|
else
|
47
47
|
pp response
|
48
48
|
end
|
49
|
-
raise Elasticsearch::Tests::ActionError.new(response.body, @
|
49
|
+
raise Elasticsearch::Tests::ActionError.new(response.body, @short_name, action)
|
50
50
|
end
|
51
51
|
|
52
52
|
def print_match_failure(action)
|
@@ -54,7 +54,7 @@ module Elasticsearch
|
|
54
54
|
value = action['match'].values.first
|
55
55
|
|
56
56
|
message = <<~MSG
|
57
|
-
🔴 #{@
|
57
|
+
🔴 #{@short_name} #{@title} failed
|
58
58
|
Expected: { #{keys}: #{value} }
|
59
59
|
Actual : { #{keys}: #{search_in_response(action['match'].keys.first)} }
|
60
60
|
Response: #{@response}
|
@@ -63,7 +63,7 @@ module Elasticsearch
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def print_error(error)
|
66
|
-
puts "❌ ERROR: #{@
|
66
|
+
puts "❌ ERROR: #{@short_name} #{@title} failed\n"
|
67
67
|
logger.error error.display
|
68
68
|
backtrace = error.backtrace.join("\n")
|
69
69
|
logger.error "#{backtrace}\n"
|
@@ -33,7 +33,9 @@ module Elasticsearch
|
|
33
33
|
@teardown = extract_teardown!(yaml)
|
34
34
|
@title = yaml.first.keys.first
|
35
35
|
@actions = yaml.first[@title]
|
36
|
-
@file =
|
36
|
+
@file = file
|
37
|
+
name = file.split('/')
|
38
|
+
@short_name = "#{name[-2]}/#{name[-1]}"
|
37
39
|
@client = client
|
38
40
|
end
|
39
41
|
|
@@ -93,11 +95,6 @@ module Elasticsearch
|
|
93
95
|
@actions.select { |a| a.keys.first == 'do' }.count
|
94
96
|
end
|
95
97
|
|
96
|
-
def test_filename(file)
|
97
|
-
name = file.split('/')
|
98
|
-
"#{name[-2]}/#{name[-1]}"
|
99
|
-
end
|
100
|
-
|
101
98
|
def extract_setup!(yaml)
|
102
99
|
yaml.map.with_index do |a, i|
|
103
100
|
yaml.delete_at(i) if a.keys.first == 'setup'
|
@@ -53,8 +53,9 @@ module Elasticsearch
|
|
53
53
|
@tests_count = 0
|
54
54
|
@errors = []
|
55
55
|
|
56
|
-
@test_files.map do |
|
57
|
-
|
56
|
+
@test_files.map do |test_path|
|
57
|
+
test_file = test_filename(test_path)
|
58
|
+
build_and_run_tests(test_path)
|
58
59
|
rescue Psych::SyntaxError => e
|
59
60
|
@errors << { error: e, file: test_file }
|
60
61
|
@logger.warn("YAML error in #{test_file}")
|
@@ -70,19 +71,24 @@ module Elasticsearch
|
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
73
|
-
def build_and_run_tests(
|
74
|
-
yaml = YAML.load_stream(File.read(
|
74
|
+
def build_and_run_tests(test_path)
|
75
|
+
yaml = YAML.load_stream(File.read(test_path))
|
75
76
|
requires = extract_requires!(yaml).compact.first['requires']
|
76
77
|
return unless (requires['serverless'] == true && @serverless) ||
|
77
78
|
(requires['stack'] == true && !@serverless)
|
78
79
|
|
79
|
-
test = Elasticsearch::Tests::Test.new(yaml,
|
80
|
+
test = Elasticsearch::Tests::Test.new(yaml, test_path, @client)
|
80
81
|
test.execute
|
81
82
|
@tests_count += test.count
|
82
83
|
rescue StandardError => e
|
83
84
|
raise e
|
84
85
|
end
|
85
86
|
|
87
|
+
def test_filename(file)
|
88
|
+
name = file.split('/')
|
89
|
+
"#{name[-2]}/#{name[-1]}"
|
90
|
+
end
|
91
|
+
|
86
92
|
def select_test_files(test_files)
|
87
93
|
tests_path = if test_files.empty?
|
88
94
|
"#{@path}/**/*.yml"
|
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.8.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-08-
|
11
|
+
date: 2024-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: elasticsearch
|