drntest 1.1.2 → 1.1.3
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.
- data/lib/drntest/configuration.rb +2 -0
- data/lib/drntest/directive.rb +35 -7
- data/lib/drntest/engine.rb +58 -26
- data/lib/drntest/input-error.rb +26 -0
- data/lib/drntest/response-normalizer.rb +25 -4
- data/lib/drntest/test-executor.rb +36 -13
- data/lib/drntest/test-loader.rb +52 -21
- data/lib/drntest/test-results.rb +9 -0
- data/lib/drntest/test-runner.rb +27 -19
- data/lib/drntest/version.rb +1 -1
- metadata +45 -63
- checksums.yaml +0 -7
@@ -18,6 +18,7 @@ module Drntest
|
|
18
18
|
attr_accessor :port, :host, :tag
|
19
19
|
attr_accessor :base_path, :engine_config
|
20
20
|
attr_accessor :fluentd, :fluentd_options
|
21
|
+
attr_accessor :catalog_version
|
21
22
|
|
22
23
|
def initialize
|
23
24
|
@port = 24224
|
@@ -27,6 +28,7 @@ module Drntest
|
|
27
28
|
@engine_config = "default"
|
28
29
|
@fluentd = "fluentd"
|
29
30
|
@fluentd_options = []
|
31
|
+
@catalog_version = "2"
|
30
32
|
end
|
31
33
|
|
32
34
|
def suite_path
|
data/lib/drntest/directive.rb
CHANGED
@@ -15,16 +15,44 @@
|
|
15
15
|
|
16
16
|
module Drntest
|
17
17
|
class Directive
|
18
|
-
|
18
|
+
end
|
19
|
+
|
20
|
+
class UnknownDirective < Directive
|
21
|
+
attr_reader :type, :options
|
22
|
+
|
23
|
+
def initialize(type, options)
|
24
|
+
@type = type
|
25
|
+
@options = options
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class IncludeDirective < Directive
|
30
|
+
attr_reader :path
|
31
|
+
|
32
|
+
def initialize(path)
|
33
|
+
@path = path
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class EnableLoggingDirective < Directive
|
38
|
+
end
|
39
|
+
|
40
|
+
class DisableLoggingDirective < Directive
|
41
|
+
end
|
42
|
+
|
43
|
+
class OmitDirective < Directive
|
44
|
+
attr_reader :message
|
19
45
|
|
20
|
-
def initialize(
|
21
|
-
@
|
22
|
-
@value = value
|
46
|
+
def initialize(message)
|
47
|
+
@message = message
|
23
48
|
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class RequireCatalogVersionDirective < Directive
|
52
|
+
attr_reader :version
|
24
53
|
|
25
|
-
|
26
|
-
|
27
|
-
type.gsub("-", "_").to_sym
|
54
|
+
def initialize(version)
|
55
|
+
@version = version
|
28
56
|
end
|
29
57
|
end
|
30
58
|
end
|
data/lib/drntest/engine.rb
CHANGED
@@ -24,9 +24,8 @@ module Drntest
|
|
24
24
|
@config = config
|
25
25
|
end
|
26
26
|
|
27
|
-
def start
|
28
|
-
|
29
|
-
setup
|
27
|
+
def start(target_path)
|
28
|
+
setup(target_path)
|
30
29
|
end
|
31
30
|
|
32
31
|
def stop
|
@@ -42,45 +41,78 @@ module Drntest
|
|
42
41
|
end
|
43
42
|
|
44
43
|
private
|
45
|
-
def
|
46
|
-
return unless catalog_file.exist?
|
47
|
-
|
44
|
+
def load_catalog_json(target_path)
|
48
45
|
catalog_json = JSON.parse(catalog_file.read)
|
49
|
-
|
46
|
+
@config.catalog_version = catalog_json["version"]
|
47
|
+
case @config.catalog_version
|
50
48
|
when 1
|
51
|
-
|
52
|
-
/\A([^:]+):(\d+)\/(.+)\z/ =~ zone
|
53
|
-
@config.host = "localhost" # $1
|
54
|
-
@config.port = $2.to_i
|
55
|
-
@config.tag = $3
|
49
|
+
extract_connection_info_catalog_v1(catalog_json)
|
56
50
|
when 2
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
51
|
+
custom_catalog_json_file = target_path.sub_ext(".catalog.json")
|
52
|
+
if custom_catalog_json_file.exist?
|
53
|
+
custom_catalog_json = JSON.parse(custom_catalog_json_file.read)
|
54
|
+
merge_catalog_v2!(catalog_json, custom_catalog_json)
|
55
|
+
end
|
56
|
+
extract_connection_info_catalog_v2(catalog_json)
|
57
|
+
end
|
58
|
+
catalog_json
|
59
|
+
end
|
60
|
+
|
61
|
+
def extract_connection_info_catalog_v1(catalog_json)
|
62
|
+
zone = catalog_json["zones"].first
|
63
|
+
/\A([^:]+):(\d+)\/(.+)\z/ =~ zone
|
64
|
+
@config.host = "localhost" # $1
|
65
|
+
@config.port = $2.to_i
|
66
|
+
@config.tag = $3
|
67
|
+
end
|
68
|
+
|
69
|
+
def merge_catalog_v2!(catalog_json, custom_catalog_json)
|
70
|
+
base_datasets = catalog_json["datasets"]
|
71
|
+
custom_catalog_json["datasets"].each do |name, dataset|
|
72
|
+
base_dataset = base_datasets[name]
|
73
|
+
if base_dataset
|
74
|
+
base_dataset["fact"] = dataset["fact"] || base_dataset["fact"]
|
75
|
+
base_dataset["schema"] = dataset["schema"] || base_dataset["schema"]
|
76
|
+
replicas = dataset["replicas"] || []
|
77
|
+
base_replicas = base_dataset["replicas"]
|
78
|
+
replicas.each_with_index do |replica, i|
|
79
|
+
base_replicas[i].merge!(replica)
|
80
|
+
end
|
81
|
+
else
|
82
|
+
base_datasets[name] = dataset
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def extract_connection_info_catalog_v2(catalog_json)
|
88
|
+
datasets = catalog_json["datasets"]
|
89
|
+
datasets.each do |name, dataset|
|
90
|
+
dataset["replicas"].each do |replica|
|
91
|
+
replica["slices"].each do |slice|
|
92
|
+
if /\A([^:]+):(\d+)\/([^.]+)/ =~ slice["volume"]["address"]
|
93
|
+
@config.host = "localhost" # $1
|
94
|
+
@config.port = $2.to_i
|
95
|
+
@config.tag = $3
|
96
|
+
return
|
69
97
|
end
|
70
98
|
end
|
71
99
|
end
|
72
100
|
end
|
73
101
|
end
|
74
102
|
|
75
|
-
def setup
|
103
|
+
def setup(target_path)
|
76
104
|
return unless temporary?
|
77
105
|
|
78
106
|
setup_temporary_dir
|
79
107
|
|
80
108
|
temporary_config = temporary_dir + "fluentd.conf"
|
81
109
|
FileUtils.cp(config_file, temporary_config)
|
110
|
+
|
111
|
+
catalog_json = load_catalog_json(target_path)
|
82
112
|
temporary_catalog = temporary_dir + "catalog.json"
|
83
|
-
|
113
|
+
temporary_catalog.open("w") do |output|
|
114
|
+
output.puts(JSON.pretty_generate(catalog_json))
|
115
|
+
end
|
84
116
|
|
85
117
|
command = [
|
86
118
|
@config.fluentd,
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Copyright (C) 2014 Droonga Project
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
module Drntest
|
17
|
+
class InputError < StandardError
|
18
|
+
attr_reader :file, :line_number, :content
|
19
|
+
def initialize(file, line_number, content, message)
|
20
|
+
@file = file
|
21
|
+
@line_number = line_number
|
22
|
+
@content = content
|
23
|
+
super("#{message}: #{@file}:#{@line_number}: #{@content}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -41,8 +41,11 @@ module Drntest
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def normalize_droonga_message_body!(body)
|
44
|
-
|
45
|
-
|
44
|
+
if groonga_command?
|
45
|
+
normalize_groonga_command_response!(body)
|
46
|
+
elsif search_command?
|
47
|
+
normalize_search_command_response!(body)
|
48
|
+
end
|
46
49
|
end
|
47
50
|
|
48
51
|
GROONGA_COMMANDS = [
|
@@ -55,6 +58,10 @@ module Drntest
|
|
55
58
|
GROONGA_COMMANDS.include?(@request["type"])
|
56
59
|
end
|
57
60
|
|
61
|
+
def search_command?
|
62
|
+
@request["type"] == "search"
|
63
|
+
end
|
64
|
+
|
58
65
|
def normalize_droonga_message_envelope!(message)
|
59
66
|
normalized_in_reply_to = "request-id"
|
60
67
|
in_reply_to = message["inReplyTo"]
|
@@ -77,14 +84,28 @@ module Drntest
|
|
77
84
|
normalize_groonga_command_header!(response[0])
|
78
85
|
end
|
79
86
|
|
87
|
+
def normalized_start_time
|
88
|
+
0.0
|
89
|
+
end
|
90
|
+
|
91
|
+
def normalized_elapsed
|
92
|
+
0.0
|
93
|
+
end
|
94
|
+
|
80
95
|
def normalize_groonga_command_header!(header)
|
81
96
|
return unless header.is_a?(Array)
|
82
|
-
normalized_start_time = 0.0
|
83
|
-
normalized_elapsed = 0.0
|
84
97
|
header[1] = normalized_start_time if valid_start_time?(header[1])
|
85
98
|
header[2] = normalized_elapsed if valid_elapsed?(header[2])
|
86
99
|
end
|
87
100
|
|
101
|
+
def normalize_search_command_response!(response)
|
102
|
+
response.each do |query_name, result|
|
103
|
+
if valid_elapsed?(result["elapsedTime"])
|
104
|
+
result["elapsedTime"] = normalized_elapsed
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
88
109
|
def valid_start_time?(start_time)
|
89
110
|
start_time.is_a?(Float) and start_time > 0
|
90
111
|
end
|
@@ -20,19 +20,25 @@ require "drntest/response-normalizer"
|
|
20
20
|
|
21
21
|
module Drntest
|
22
22
|
class TestExecutor
|
23
|
-
def initialize(config, test_path)
|
23
|
+
def initialize(config, test_path, results)
|
24
24
|
@config = config
|
25
25
|
@test_path = test_path
|
26
|
+
@results = results
|
26
27
|
end
|
27
28
|
|
28
29
|
def execute
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
catch do |abort_tag|
|
31
|
+
begin
|
32
|
+
Droonga::Client.open(tag: @config.tag, port: @config.port) do |client|
|
33
|
+
context = Context.new(client, @config, @results, abort_tag)
|
34
|
+
operations.each do |operation|
|
35
|
+
context.execute(operation)
|
36
|
+
end
|
37
|
+
context.finish
|
38
|
+
end
|
39
|
+
rescue
|
40
|
+
@results.errors << $!
|
33
41
|
end
|
34
|
-
context.finish
|
35
|
-
context.responses
|
36
42
|
end
|
37
43
|
end
|
38
44
|
|
@@ -43,10 +49,11 @@ module Drntest
|
|
43
49
|
end
|
44
50
|
|
45
51
|
class Context
|
46
|
-
|
47
|
-
|
48
|
-
def initialize(client)
|
52
|
+
def initialize(client, config, results, abort_tag)
|
49
53
|
@client = client
|
54
|
+
@config = config
|
55
|
+
@results = results
|
56
|
+
@abort_tag = abort_tag
|
50
57
|
@requests = []
|
51
58
|
@responses = []
|
52
59
|
@logging = true
|
@@ -63,16 +70,28 @@ module Drntest
|
|
63
70
|
|
64
71
|
def finish
|
65
72
|
consume_requests
|
73
|
+
@results.actuals = @responses
|
66
74
|
end
|
67
75
|
|
68
76
|
private
|
69
77
|
def execute_directive(directive)
|
70
|
-
case directive
|
71
|
-
when
|
78
|
+
case directive
|
79
|
+
when EnableLoggingDirective
|
72
80
|
@logging = true
|
73
81
|
consume_requests
|
74
|
-
when
|
82
|
+
when DisableLoggingDirective
|
75
83
|
@logging = false
|
84
|
+
when OmitDirective
|
85
|
+
@results.omit(directive.message)
|
86
|
+
abort_execution
|
87
|
+
when RequireCatalogVersionDirective
|
88
|
+
if @config.catalog_version < directive.version
|
89
|
+
message =
|
90
|
+
"require catalog version #{directive.version} or later: " +
|
91
|
+
"<#{@config.catalog_version}>"
|
92
|
+
@results.omit(message)
|
93
|
+
abort_execution
|
94
|
+
end
|
76
95
|
end
|
77
96
|
end
|
78
97
|
|
@@ -110,6 +129,10 @@ module Drntest
|
|
110
129
|
normalizer = ResponseNormalizer.new(request, response)
|
111
130
|
normalizer.normalize
|
112
131
|
end
|
132
|
+
|
133
|
+
def abort_execution
|
134
|
+
throw(@abort_tag)
|
135
|
+
end
|
113
136
|
end
|
114
137
|
end
|
115
138
|
end
|
data/lib/drntest/test-loader.rb
CHANGED
@@ -13,8 +13,12 @@
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
14
14
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
15
|
|
16
|
+
require "English"
|
17
|
+
require "shellwords"
|
18
|
+
|
16
19
|
require "drntest/json-loader"
|
17
20
|
require "drntest/directive"
|
21
|
+
require "drntest/input-error"
|
18
22
|
|
19
23
|
module Drntest
|
20
24
|
class TestLoader
|
@@ -41,32 +45,59 @@ module Drntest
|
|
41
45
|
operations << operation
|
42
46
|
end
|
43
47
|
data = ""
|
44
|
-
Pathname(path).
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
48
|
+
Pathname(path).open do |input|
|
49
|
+
input.each_line do |line|
|
50
|
+
data << line
|
51
|
+
case line.chomp
|
52
|
+
when /\A\#\@([^\s]+)/
|
53
|
+
type = $1
|
54
|
+
options = Shellwords.split($POSTMATCH.strip)
|
55
|
+
directive = parse_directive(type, options)
|
56
|
+
case directive
|
57
|
+
when UnknownDirective
|
58
|
+
raise InputError.new(path, input.lineno, line,
|
59
|
+
"unknown directive: <#{directive.type}>")
|
60
|
+
when IncludeDirective
|
61
|
+
included = resolve_relative_path(directive.path)
|
62
|
+
included_operations = load_test_file(included)
|
63
|
+
operations += included_operations
|
64
|
+
else
|
65
|
+
operations << directive
|
66
|
+
end
|
67
|
+
when /\A\#/
|
68
|
+
# comment
|
55
69
|
else
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
parser << line
|
63
|
-
rescue Yajl::ParseError => error
|
64
|
-
JSONLoader.report_error(path, data, error)
|
65
|
-
raise error
|
70
|
+
begin
|
71
|
+
parser << line
|
72
|
+
rescue Yajl::ParseError => error
|
73
|
+
JSONLoader.report_error(path, data, error)
|
74
|
+
raise error
|
75
|
+
end
|
66
76
|
end
|
67
77
|
end
|
68
78
|
end
|
69
79
|
operations
|
70
80
|
end
|
81
|
+
|
82
|
+
def parse_directive(type, options)
|
83
|
+
case normalize_directive_type(type)
|
84
|
+
when :include
|
85
|
+
IncludeDirective.new(options.first)
|
86
|
+
when :enable_logging
|
87
|
+
EnableLoggingDirective.new
|
88
|
+
when :disable_logging
|
89
|
+
DisableLoggingDirective.new
|
90
|
+
when :omit
|
91
|
+
OmitDirective.new(options.first)
|
92
|
+
when :require_catalog_version
|
93
|
+
RequireCatalogVersionDirective.new(Integer(options.first))
|
94
|
+
else
|
95
|
+
UnknownDirective.new(type, options)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def normalize_directive_type(type)
|
100
|
+
type.gsub("-", "_").to_sym
|
101
|
+
end
|
71
102
|
end
|
72
103
|
end
|
data/lib/drntest/test-results.rb
CHANGED
@@ -16,15 +16,19 @@
|
|
16
16
|
module Drntest
|
17
17
|
class TestResults
|
18
18
|
attr_accessor :name, :actuals, :expecteds, :errors
|
19
|
+
attr_reader :omit_message
|
19
20
|
|
20
21
|
def initialize(name)
|
21
22
|
@name = name
|
22
23
|
@actuals = []
|
23
24
|
@expecteds = []
|
24
25
|
@errors = []
|
26
|
+
@omitted = false
|
27
|
+
@omit_message = nil
|
25
28
|
end
|
26
29
|
|
27
30
|
def status
|
31
|
+
return :omitted if @omitted
|
28
32
|
return :error unless @errors.empty?
|
29
33
|
return :no_response if @actuals.empty?
|
30
34
|
return :not_checked if @expecteds.empty?
|
@@ -35,5 +39,10 @@ module Drntest
|
|
35
39
|
:failure
|
36
40
|
end
|
37
41
|
end
|
42
|
+
|
43
|
+
def omit(message)
|
44
|
+
@omitted = true
|
45
|
+
@omit_message = message
|
46
|
+
end
|
38
47
|
end
|
39
48
|
end
|
data/lib/drntest/test-runner.rb
CHANGED
@@ -23,6 +23,7 @@ require "drntest/test-results"
|
|
23
23
|
require "drntest/test-executor"
|
24
24
|
require "drntest/json-loader"
|
25
25
|
require "drntest/engine"
|
26
|
+
require "drntest/input-error"
|
26
27
|
|
27
28
|
module Drntest
|
28
29
|
class TestRunner
|
@@ -34,7 +35,7 @@ module Drntest
|
|
34
35
|
|
35
36
|
def run
|
36
37
|
print "#{@target_path}: "
|
37
|
-
@engine.start
|
38
|
+
@engine.start(@target_path)
|
38
39
|
begin
|
39
40
|
results = process_requests
|
40
41
|
ensure
|
@@ -47,12 +48,8 @@ module Drntest
|
|
47
48
|
def process_requests
|
48
49
|
results = TestResults.new(@target_path)
|
49
50
|
|
50
|
-
executor = TestExecutor.new(@config, @target_path)
|
51
|
-
|
52
|
-
results.actuals = executor.execute
|
53
|
-
rescue
|
54
|
-
results.errors << $!
|
55
|
-
end
|
51
|
+
executor = TestExecutor.new(@config, @target_path, results)
|
52
|
+
executor.execute
|
56
53
|
if expected_exist?
|
57
54
|
results.expecteds = load_expected_responses
|
58
55
|
end
|
@@ -65,14 +62,17 @@ module Drntest
|
|
65
62
|
puts "NO RESPONSE"
|
66
63
|
when :failure
|
67
64
|
puts "FAILURE"
|
68
|
-
|
65
|
+
save_reject_file(results.actuals)
|
69
66
|
show_diff(results.expecteds, results.actuals)
|
70
67
|
when :not_checked
|
71
68
|
puts "NOT CHECKED"
|
72
|
-
|
69
|
+
save_actual_file(results.actuals)
|
70
|
+
output_results(results.actuals, $stdout)
|
73
71
|
when :error
|
74
72
|
puts "ERROR"
|
75
73
|
output_errors(results.errors)
|
74
|
+
when :omitted
|
75
|
+
puts "OMITTED: #{results.omit_message}"
|
76
76
|
end
|
77
77
|
|
78
78
|
results
|
@@ -107,20 +107,24 @@ module Drntest
|
|
107
107
|
FileUtils.rm_rf(reject_path, :secure => true)
|
108
108
|
end
|
109
109
|
|
110
|
-
def
|
111
|
-
|
110
|
+
def save_reject_file(results)
|
111
|
+
save_results(results, reject_path)
|
112
112
|
end
|
113
113
|
|
114
|
-
def
|
115
|
-
|
114
|
+
def save_actual_file(results)
|
115
|
+
save_results(results, actual_path)
|
116
116
|
end
|
117
117
|
|
118
|
-
def
|
118
|
+
def save_results(results, output_path)
|
119
119
|
puts "Saving received results as #{output_path}"
|
120
120
|
File.open(output_path, "w") do |file|
|
121
|
-
results
|
122
|
-
|
123
|
-
|
121
|
+
output_results(results, file)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def output_results(results, output)
|
126
|
+
results.each do |result|
|
127
|
+
output.puts(format_result(result))
|
124
128
|
end
|
125
129
|
end
|
126
130
|
|
@@ -172,8 +176,12 @@ module Drntest
|
|
172
176
|
errors.each_with_index do |error, i|
|
173
177
|
puts(mark)
|
174
178
|
formatted_nth = "%*d)" % [n_digits, i + 1]
|
175
|
-
|
176
|
-
|
179
|
+
if error.is_a?(InputError)
|
180
|
+
puts("#{formatted_nth} #{error.message}")
|
181
|
+
else
|
182
|
+
puts("#{formatted_nth} #{error.message} (#{error.class})")
|
183
|
+
puts(error.backtrace)
|
184
|
+
end
|
177
185
|
puts(mark)
|
178
186
|
end
|
179
187
|
end
|
data/lib/drntest/version.rb
CHANGED
metadata
CHANGED
@@ -1,113 +1,93 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drntest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Droonga Project
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-03-28 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: json
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &87655010 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
|
-
version_requirements:
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
24
|
+
version_requirements: *87655010
|
27
25
|
- !ruby/object:Gem::Dependency
|
28
26
|
name: yajl-ruby
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &87654800 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
30
29
|
requirements:
|
31
|
-
- - '>='
|
30
|
+
- - ! '>='
|
32
31
|
- !ruby/object:Gem::Version
|
33
32
|
version: '0'
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
35
|
+
version_requirements: *87654800
|
41
36
|
- !ruby/object:Gem::Dependency
|
42
37
|
name: droonga-client
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &87654550 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
44
40
|
requirements:
|
45
|
-
- - '>='
|
41
|
+
- - ! '>='
|
46
42
|
- !ruby/object:Gem::Version
|
47
43
|
version: 0.1.1
|
48
44
|
type: :runtime
|
49
45
|
prerelease: false
|
50
|
-
version_requirements:
|
51
|
-
requirements:
|
52
|
-
- - '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.1
|
46
|
+
version_requirements: *87654550
|
55
47
|
- !ruby/object:Gem::Dependency
|
56
48
|
name: bundler
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &87654340 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
58
51
|
requirements:
|
59
|
-
- - '>='
|
52
|
+
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
type: :development
|
63
56
|
prerelease: false
|
64
|
-
version_requirements:
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
57
|
+
version_requirements: *87654340
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &87654110 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
72
62
|
requirements:
|
73
|
-
- - '>='
|
63
|
+
- - ! '>='
|
74
64
|
- !ruby/object:Gem::Version
|
75
65
|
version: '0'
|
76
66
|
type: :development
|
77
67
|
prerelease: false
|
78
|
-
version_requirements:
|
79
|
-
requirements:
|
80
|
-
- - '>='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version_requirements: *87654110
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: packnga
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &87653900 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
86
73
|
requirements:
|
87
|
-
- - '>='
|
74
|
+
- - ! '>='
|
88
75
|
- !ruby/object:Gem::Version
|
89
76
|
version: '0'
|
90
77
|
type: :development
|
91
78
|
prerelease: false
|
92
|
-
version_requirements:
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
79
|
+
version_requirements: *87653900
|
97
80
|
- !ruby/object:Gem::Dependency
|
98
81
|
name: kramdown
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &87653690 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
100
84
|
requirements:
|
101
|
-
- - '>='
|
85
|
+
- - ! '>='
|
102
86
|
- !ruby/object:Gem::Version
|
103
87
|
version: '0'
|
104
88
|
type: :development
|
105
89
|
prerelease: false
|
106
|
-
version_requirements:
|
107
|
-
requirements:
|
108
|
-
- - '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
90
|
+
version_requirements: *87653690
|
111
91
|
description: ''
|
112
92
|
email:
|
113
93
|
- droonga@groonga.org
|
@@ -120,42 +100,44 @@ files:
|
|
120
100
|
- Rakefile
|
121
101
|
- Gemfile
|
122
102
|
- drntest.gemspec
|
103
|
+
- lib/drntest/test-loader.rb
|
104
|
+
- lib/drntest/engine.rb
|
105
|
+
- lib/drntest/test-executor.rb
|
106
|
+
- lib/drntest/test-suites-result.rb
|
123
107
|
- lib/drntest/test-runner.rb
|
108
|
+
- lib/drntest/input-error.rb
|
124
109
|
- lib/drntest/tester.rb
|
125
|
-
- lib/drntest/directive.rb
|
126
110
|
- lib/drntest/version.rb
|
127
|
-
- lib/drntest/
|
128
|
-
- lib/drntest/test-loader.rb
|
129
|
-
- lib/drntest/configuration.rb
|
111
|
+
- lib/drntest/directive.rb
|
130
112
|
- lib/drntest/json-loader.rb
|
131
|
-
- lib/drntest/test-
|
132
|
-
- lib/drntest/test-executor.rb
|
113
|
+
- lib/drntest/test-results.rb
|
133
114
|
- lib/drntest/response-normalizer.rb
|
134
|
-
- lib/drntest/
|
115
|
+
- lib/drntest/configuration.rb
|
135
116
|
- bin/drntest
|
136
117
|
homepage: https://github.com/droonga/drntest
|
137
118
|
licenses:
|
138
119
|
- GPLv3 or later
|
139
|
-
metadata: {}
|
140
120
|
post_install_message:
|
141
121
|
rdoc_options: []
|
142
122
|
require_paths:
|
143
123
|
- lib
|
144
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
145
126
|
requirements:
|
146
|
-
- - '>='
|
127
|
+
- - ! '>='
|
147
128
|
- !ruby/object:Gem::Version
|
148
129
|
version: '0'
|
149
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
150
132
|
requirements:
|
151
|
-
- - '>='
|
133
|
+
- - ! '>='
|
152
134
|
- !ruby/object:Gem::Version
|
153
135
|
version: '0'
|
154
136
|
requirements: []
|
155
137
|
rubyforge_project:
|
156
|
-
rubygems_version:
|
138
|
+
rubygems_version: 1.8.11
|
157
139
|
signing_key:
|
158
|
-
specification_version:
|
140
|
+
specification_version: 3
|
159
141
|
summary: Drntest is a testing framework for Droonga. You can write a test for Droonga
|
160
142
|
by writing Droonga commands and expected result.
|
161
143
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 6f726abaf99e69946e00326d0c793453418bab22
|
4
|
-
data.tar.gz: 06482427d09d7a13fc941195c563dcb53b1f0e72
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 275fd9a91d5049eee3c5b3c7008b7a81e12dd1f9cb7336dc10dc991ecb262e43782c43aefb3daf5e9a2bf5c7d2ac29180a159b2fc4bbcd3e4f88f2cb72940f0f
|
7
|
-
data.tar.gz: 54f655562fb16f1ecfad673864ab9c04dc833664100dee4e12d9825c4dbcc1741ab318ed4db1a7c0c26852e468a2e27fb0400e45b40f1f77d554305e5f98dbf1
|