grntest 1.0.8 → 1.0.9

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
  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: