drntest 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -15,16 +15,44 @@
15
15
 
16
16
  module Drntest
17
17
  class Directive
18
- attr_reader :type, :value
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(type, value)
21
- @type = normalize_type(type)
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
- private
26
- def normalize_type(type)
27
- type.gsub("-", "_").to_sym
54
+ def initialize(version)
55
+ @version = version
28
56
  end
29
57
  end
30
58
  end
@@ -24,9 +24,8 @@ module Drntest
24
24
  @config = config
25
25
  end
26
26
 
27
- def start
28
- prepare
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 prepare
46
- return unless catalog_file.exist?
47
-
44
+ def load_catalog_json(target_path)
48
45
  catalog_json = JSON.parse(catalog_file.read)
49
- case catalog_json["version"]
46
+ @config.catalog_version = catalog_json["version"]
47
+ case @config.catalog_version
50
48
  when 1
51
- zone = catalog_json["zones"].first
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
- catch do |tag|
58
- datasets = catalog_json["datasets"]
59
- datasets.each do |name, dataset|
60
- dataset["replicas"].each do |replica|
61
- replica["slices"].each do |slice|
62
- if /\A([^:]+):(\d+)\/([^.]+)/ =~ slice["volume"]["address"]
63
- @config.host = "localhost" # $1
64
- @config.port = $2.to_i
65
- @config.tag = $3
66
- throw(tag)
67
- end
68
- end
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
- FileUtils.cp(catalog_file, temporary_catalog)
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
- return unless groonga_command?
45
- normalize_groonga_command_response!(body)
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
- Droonga::Client.open(tag: @config.tag, port: @config.port) do |client|
30
- context = Context.new(client)
31
- operations.each do |operation|
32
- context.execute(operation)
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
- attr_reader :responses
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.type
71
- when :enable_logging
78
+ case directive
79
+ when EnableLoggingDirective
72
80
  @logging = true
73
81
  consume_requests
74
- when :disable_logging
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
@@ -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).read.each_line do |line|
45
- data << line
46
- case line.chomp
47
- when /\A\#\@([^\s]+)(?:\s+(.+))?\z/
48
- type = $1
49
- value = $2
50
- directive = Directive.new(type, value)
51
- if directive.type == :include
52
- included = resolve_relative_path(directive.value)
53
- included_operations = load_test_file(included)
54
- operations += included_operations
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
- operations << directive
57
- end
58
- when /\A\#/
59
- # comment
60
- else
61
- begin
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
@@ -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
@@ -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
- begin
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
- output_reject_file(results.actuals)
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
- output_actual_file(results.actuals)
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 output_reject_file(results)
111
- output_results(results, reject_path)
110
+ def save_reject_file(results)
111
+ save_results(results, reject_path)
112
112
  end
113
113
 
114
- def output_actual_file(results)
115
- output_results(results, actual_path)
114
+ def save_actual_file(results)
115
+ save_results(results, actual_path)
116
116
  end
117
117
 
118
- def output_results(results, output_path)
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.each do |result|
122
- file.puts(format_result(result))
123
- end
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
- puts("#{formatted_nth} #{error.message} (#{error.class})")
176
- puts(error.backtrace)
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
@@ -14,5 +14,5 @@
14
14
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
15
 
16
16
  module Drntest
17
- VERSION = "1.1.2"
17
+ VERSION = "1.1.3"
18
18
  end
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.2
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-02-28 00:00:00.000000000 Z
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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/test-results.rb
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-suites-result.rb
132
- - lib/drntest/test-executor.rb
113
+ - lib/drntest/test-results.rb
133
114
  - lib/drntest/response-normalizer.rb
134
- - lib/drntest/engine.rb
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: 2.0.14
138
+ rubygems_version: 1.8.11
157
139
  signing_key:
158
- specification_version: 4
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