grntest 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e3f89c9bfca8e9409f3ea9901545cdf88d8df0c
4
- data.tar.gz: 7454542a28073b636438762f294b446a553d679f
3
+ metadata.gz: 2eaa3b200f88ffe43771ed58704ddc925c8c3b54
4
+ data.tar.gz: d55bdd76d826f869ecb6482b2c04d2a5b6ed7beb
5
5
  SHA512:
6
- metadata.gz: f6cb769472bcaf8c2309de3ffb290f26ee16296ad7ce9a5847719f042fad1e11239ea8c8d5fb131e523f631e88a637493678db3a61b6a2197a81b724970a6c70
7
- data.tar.gz: 5f6ca62f6a91a41df7856a79155c54d947874e1d65e3c5be8d8f66a972adae9543f0b1dd30fc7045f9f86b596b439bab7c89420d69114f3784571479cb5080d9
6
+ metadata.gz: 2aa26866b78d9e4c0a89ba28d1041dec5e698025f89533ef2c460114bd0d2331d2f80806ff19c5486effc6e4172e382c6fbfe45887102adcd29902f9e261f21d
7
+ data.tar.gz: 1bc57cd0f43d21abaedda718f65cf4bfc486c8ad93c97c812a1691500a78b2f922870f21ba1d99c4b0a9287e94674af4583f09f2dbd1ea171e3a3c2b5ef25607
data/doc/text/news.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # News
2
2
 
3
+ ## 1.0.9: 2014-09-28
4
+
5
+ ### Improvements
6
+
7
+ * Support multi-line log.
8
+ [GitHub#2] [Reported by Naoya Murakami]
9
+
10
+ ### Thanks
11
+
12
+ * Naoya Murakami
13
+
3
14
  ## 1.0.8: 2014-08-17
4
15
 
5
16
  ### Fixes
data/grntest.gemspec CHANGED
@@ -49,7 +49,7 @@ Gem::Specification.new do |spec|
49
49
 
50
50
  spec.add_development_dependency("bundler")
51
51
  spec.add_development_dependency("rake")
52
- spec.add_development_dependency("test-unit")
52
+ spec.add_development_dependency("test-unit", ">= 3.0.0")
53
53
  spec.add_development_dependency("test-unit-rr")
54
54
  spec.add_development_dependency("packnga")
55
55
  spec.add_development_dependency("redcarpet")
@@ -1,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2012-2013 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2012-2014 Kouhei Sutou <kou@clear-code.com>
4
2
  #
5
3
  # This program is free software: you can redistribute it and/or modify
6
4
  # it under the terms of the GNU General Public License as published by
@@ -22,6 +20,7 @@ require "shellwords"
22
20
  require "groonga/command/parser"
23
21
 
24
22
  require "grntest/error"
23
+ require "grntest/log-parser"
25
24
  require "grntest/execution-context"
26
25
  require "grntest/response-parser"
27
26
 
@@ -273,13 +272,11 @@ module Grntest
273
272
 
274
273
  def extract_important_messages(log)
275
274
  important_messages = []
276
- log.each_line do |line|
277
- timestamp, log_level, message = line.split(/\|\s*/, 3)
278
- _ = timestamp # suppress warning
279
- message = message.chomp
280
- next unless important_log_level?(log_level)
281
- next if backtrace_log_message?(message)
282
- important_messages << "\#|#{log_level}| #{message}"
275
+ parser = LogParser.new
276
+ parser.parse(log) do |entry|
277
+ next unless important_log_level?(entry.log_level)
278
+ next if backtrace_log_message?(entry.message)
279
+ important_messages << "\#|#{entry.log_level}| #{entry.message}"
283
280
  end
284
281
  important_messages.join("\n")
285
282
  end
@@ -0,0 +1,19 @@
1
+ # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
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 Grntest
17
+ class LogEntry < Struct.new(:timestamp, :log_level, :message)
18
+ end
19
+ end
@@ -0,0 +1,44 @@
1
+ # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
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
+ require "grntest/log-entry"
17
+
18
+ module Grntest
19
+ class LogParser
20
+ def parse(log)
21
+ timestamp = nil
22
+ log_level = nil
23
+ message = nil
24
+ emit_entry = lambda do
25
+ if timestamp
26
+ entry = LogEntry.new(timestamp, log_level, message.chomp)
27
+ yield(entry)
28
+ end
29
+ end
30
+ log.each_line do |line|
31
+ case line
32
+ when /\A(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+)\|([a-zA-Z])\|\s*/
33
+ emit_entry.call
34
+ timestamp = $1
35
+ log_level = $2
36
+ message = $POSTMATCH
37
+ else
38
+ message << line
39
+ end
40
+ end
41
+ emit_entry.call
42
+ end
43
+ end
44
+ end
@@ -1,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2012-2013 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2012-2014 Kouhei Sutou <kou@clear-code.com>
4
2
  #
5
3
  # This program is free software: you can redistribute it and/or modify
6
4
  # it under the terms of the GNU General Public License as published by
@@ -22,6 +20,7 @@ require "tempfile"
22
20
  require "json"
23
21
 
24
22
  require "grntest/error"
23
+ require "grntest/log-parser"
25
24
  require "grntest/executors"
26
25
  require "grntest/base-result"
27
26
 
@@ -549,10 +548,9 @@ EOF
549
548
  end
550
549
 
551
550
  def check_memory_leak(context)
552
- context.log.each_line do |line|
553
- timestamp, log_level, message = line.split(/\|\s*/, 3)
554
- _ = timestamp # suppress warning
555
- next unless /^grn_fin \((\d+)\)$/ =~ message
551
+ parser = LogParser.new
552
+ parser.parse(context.log) do |entry|
553
+ next unless /^grn_fin \((\d+)\)$/ =~ entry.message
556
554
  n_leaked_objects = $1.to_i
557
555
  next if n_leaked_objects.zero?
558
556
  context.result << [:n_leaked_objects, n_leaked_objects, {}]
@@ -14,5 +14,5 @@
14
14
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
15
 
16
16
  module Grntest
17
- VERSION = "1.0.8"
17
+ VERSION = "1.0.9"
18
18
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2013-2014 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This program is free software: you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -21,14 +21,16 @@ class TestBaseExecutor < Test::Unit::TestCase
21
21
  @context = @executor.context
22
22
  end
23
23
 
24
- class TestErrorLog < self
24
+ class TestErrorLogLevel < self
25
25
  data("emergency" => "E",
26
26
  "alert" => "A",
27
27
  "critical" => "C",
28
28
  "error" => "e",
29
29
  "warning" => "w")
30
30
  def test_important_log_level(level)
31
- assert_true(@executor.send(:important_log_level?, level))
31
+ assert do
32
+ @executor.send(:important_log_level?, level)
33
+ end
32
34
  end
33
35
 
34
36
  data("notice" => "n",
@@ -36,7 +38,9 @@ class TestBaseExecutor < Test::Unit::TestCase
36
38
  "debug" => "d",
37
39
  "dump" => "-")
38
40
  def test_not_important_log_level(level)
39
- assert_false(@executor.send(:important_log_level?, level))
41
+ assert do
42
+ not @executor.send(:important_log_level?, level)
43
+ end
40
44
  end
41
45
  end
42
46
  end
@@ -0,0 +1,77 @@
1
+ # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
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
+ require "grntest/log-parser"
17
+
18
+ class TestLogParser < Test::Unit::TestCase
19
+ def parse(log)
20
+ parser = Grntest::LogParser.new
21
+ entries = []
22
+ parser.parse(log) do |entry|
23
+ entries << entry.to_h
24
+ end
25
+ entries
26
+ end
27
+
28
+ sub_test_case("#parse") do
29
+ def test_one_line
30
+ log = "2014-09-27 17:31:53.046467|n| message"
31
+ assert_equal([
32
+ {
33
+ :timestamp => "2014-09-27 17:31:53.046467",
34
+ :log_level => "n",
35
+ :message => "message",
36
+ },
37
+ ],
38
+ parse(log))
39
+ end
40
+
41
+ def test_one_lines
42
+ log = <<-LOG
43
+ 2014-09-27 17:31:53.046467|n| notification message
44
+ 2014-09-27 17:31:54.046467|W| warning message
45
+ LOG
46
+ assert_equal([
47
+ {
48
+ :timestamp => "2014-09-27 17:31:53.046467",
49
+ :log_level => "n",
50
+ :message => "notification message",
51
+ },
52
+ {
53
+ :timestamp => "2014-09-27 17:31:54.046467",
54
+ :log_level => "W",
55
+ :message => "warning message",
56
+ },
57
+ ],
58
+ parse(log))
59
+ end
60
+
61
+
62
+ def test_multi_line
63
+ log = <<-LOG
64
+ 2014-09-27 17:31:53.046467|n| multi
65
+ line message
66
+ LOG
67
+ assert_equal([
68
+ {
69
+ :timestamp => "2014-09-27 17:31:53.046467",
70
+ :log_level => "n",
71
+ :message => "multi\nline message",
72
+ },
73
+ ],
74
+ parse(log))
75
+ end
76
+ end
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grntest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-17 00:00:00.000000000 Z
12
+ date: 2014-09-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: '0'
90
+ version: 3.0.0
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: '0'
97
+ version: 3.0.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: test-unit-rr
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +161,8 @@ files:
161
161
  - lib/grntest/executors/base-executor.rb
162
162
  - lib/grntest/executors/http-executor.rb
163
163
  - lib/grntest/executors/standard-io-executor.rb
164
+ - lib/grntest/log-entry.rb
165
+ - lib/grntest/log-parser.rb
164
166
  - lib/grntest/reporters.rb
165
167
  - lib/grntest/reporters/base-reporter.rb
166
168
  - lib/grntest/reporters/inplace-reporter.rb
@@ -175,6 +177,7 @@ files:
175
177
  - test/executors/test-base-executor.rb
176
178
  - test/executors/test-standard-io-executor.rb
177
179
  - test/run-test.rb
180
+ - test/test-log-parser.rb
178
181
  homepage: https://github.com/groonga/grntest
179
182
  licenses:
180
183
  - GPL-3.0+
@@ -204,4 +207,5 @@ test_files:
204
207
  - test/executors/test-base-executor.rb
205
208
  - test/executors/test-standard-io-executor.rb
206
209
  - test/run-test.rb
210
+ - test/test-log-parser.rb
207
211
  has_rdoc: