lazylead 0.5.2 → 0.6.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.
@@ -0,0 +1,114 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <style>
5
+ /* CSS styles taken from https://github.com/yegor256/tacit */
6
+ pre, code, kbd, samp, var, output {
7
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
8
+ font-size: 14.4px
9
+ }
10
+
11
+ pre code {
12
+ background: none;
13
+ border: 0;
14
+ line-height: 29.7px;
15
+ padding: 0
16
+ }
17
+
18
+ code, kbd {
19
+ background: #daf1e0;
20
+ border-radius: 3.6px;
21
+ color: #2a6f3b;
22
+ display: inline-block;
23
+ line-height: 18px;
24
+ padding: 3.6px 6.3px 2.7px
25
+ }
26
+
27
+ a {
28
+ color: #275a90;
29
+ text-decoration: none
30
+ }
31
+
32
+ a:hover {
33
+ text-decoration: underline
34
+ }
35
+
36
+ * {
37
+ border: 0;
38
+ border-collapse: separate;
39
+ border-spacing: 0;
40
+ box-sizing: border-box;
41
+ margin: 0;
42
+ max-width: 100%;
43
+ padding: 0;
44
+ vertical-align: baseline;
45
+ font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif;
46
+ font-size: 13px;
47
+ font-stretch: normal;
48
+ font-style: normal;
49
+ font-weight: 400;
50
+ line-height: 29.7px
51
+ }
52
+
53
+ html, body {
54
+ width: 100%
55
+ }
56
+
57
+ html {
58
+ height: 100%
59
+ }
60
+
61
+ body {
62
+ background: #fff;
63
+ color: #1a1919;
64
+ padding: 36px
65
+ }
66
+
67
+ .commit {
68
+ min-width: 100%;
69
+ border-radius: 3.5px;
70
+ overflow: hidden;
71
+ display: inline-block;
72
+ line-height: 15px;
73
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
74
+ border: 1px solid #BCC6CC;
75
+ }
76
+
77
+ .commit * {
78
+ padding-left: 4px;
79
+ font-size: 8px;
80
+ line-height: 15px;
81
+ }
82
+ </style>
83
+ <title>SVN log</title>
84
+ </head>
85
+ <body>
86
+ <p>Hi,</p>
87
+ <p>The following file(s) contain text <code><%= text %></code> in
88
+ <a href="<%= svn_url %>"><%= svn_url %></a>:</p>
89
+ <% entries.each do |commit| %>
90
+ <div class="commit">
91
+ <p style="background: gainsboro;">
92
+ <a href="<%= commit_url %><%= commit.rev %>"><%= commit.msg %></a>
93
+ by <a href="<%= user %><%= commit.author %>"><%= commit.author %></a>
94
+ at <span style="color: #275a90;"><%= commit.time %></span>
95
+ </p>
96
+ <% commit.lines[2..-1].each do |line| %>
97
+ <% if line.start_with?("+++") || line.start_with?("---") %>
98
+ <p style="background: gainsboro;"><%= line.gsub(/[<>]/, '<' => '&lt;', '>' => '&gt;') %></p>
99
+ <% elsif text.split(",").any? { |t| line.include? t } %>
100
+ <p style="background: #F9F103;"><%= line.gsub(/[<>]/, '<' => '&lt;', '>' => '&gt;') %></p>
101
+ <% elsif line.start_with?("+") %>
102
+ <p style="<%= "background: darkseagreen;" %>"><%= line.gsub(/[<>]/, '<' => '&lt;', '>' => '&gt;') %></p>
103
+ <% elsif line.start_with?("-") %>
104
+ <p style="<%= "background: lightsalmon;" %>"><%= line.gsub(/[<>]/, '<' => '&lt;', '>' => '&gt;') %></p>
105
+ <% else %>
106
+ <p style="background: gainsboro;"><%= line.gsub(/[<>]/, '<' => '&lt;', '>' => '&gt;') %></p>
107
+ <% end %>
108
+ <% end %>
109
+ </div>
110
+ <% end %>
111
+ <p>Posted by<a href="https://github.com/dgroup/lazylead">lazylead
112
+ v<%= version %></a>.</p>
113
+ </body>
114
+ </html>
@@ -142,13 +142,6 @@ module Lazylead
142
142
  assert_equal "Hi there!", issue.comment[:body]
143
143
  end
144
144
 
145
- test "search by limit in 1 issue" do
146
- assert_equal 1,
147
- NoAuthJira.new("https://jira.spring.io")
148
- .issues("key in (DATAJDBC-480, DATAJDBC-500)", max_results: "1")
149
- .size
150
- end
151
-
152
145
  test "description is correct" do
153
146
  assert_words %w[DATACMNS-1639\ moved\ entity\ instantiators],
154
147
  NoAuthJira.new("https://jira.spring.io")
@@ -186,5 +179,11 @@ module Lazylead
186
179
  .labels,
187
180
  "Spring"
188
181
  end
182
+
183
+ test "bulk search in few iterations" do
184
+ assert NoAuthJira.new("https://jira.spring.io")
185
+ .issues("key>DATAJDBC-500")
186
+ .size >= 118
187
+ end
189
188
  end
190
189
  end
@@ -63,12 +63,72 @@ module Lazylead
63
63
  )
64
64
  end
65
65
 
66
- test "log file size less than 10KB" do
66
+ test "log file size less than 5KB" do
67
67
  refute Logs.new.passed(
68
68
  OpenStruct.new(
69
69
  attachments: [
70
70
  OpenStruct.new(
71
- attrs: { "size" => 10_000, "filename" => "catalina.log" }
71
+ attrs: { "size" => 5000, "filename" => "catalina.log" }
72
+ )
73
+ ]
74
+ )
75
+ )
76
+ end
77
+
78
+ test "rotated log file is present" do
79
+ assert Logs.new.passed(
80
+ OpenStruct.new(
81
+ attachments: [
82
+ OpenStruct.new(
83
+ attrs: { "size" => 10_241, "filename" => "catalina.log111" }
84
+ )
85
+ ]
86
+ )
87
+ )
88
+ end
89
+
90
+ test "log txt file is present" do
91
+ assert Logs.new.passed(
92
+ OpenStruct.new(
93
+ attachments: [
94
+ OpenStruct.new(
95
+ attrs: { "size" => 10_241, "filename" => "catalina.txt" }
96
+ )
97
+ ]
98
+ )
99
+ )
100
+ end
101
+
102
+ test "zip log file is present" do
103
+ assert Logs.new.passed(
104
+ OpenStruct.new(
105
+ attachments: [
106
+ OpenStruct.new(
107
+ attrs: { "size" => 10_241, "filename" => "catalina.log.zip" }
108
+ )
109
+ ]
110
+ )
111
+ )
112
+ end
113
+
114
+ test "gz log file is present" do
115
+ assert Logs.new.passed(
116
+ OpenStruct.new(
117
+ attachments: [
118
+ OpenStruct.new(
119
+ attrs: { "size" => 10_241, "filename" => "catalina.log.gz" }
120
+ )
121
+ ]
122
+ )
123
+ )
124
+ end
125
+
126
+ test "tar gz log file is present" do
127
+ assert Logs.new.passed(
128
+ OpenStruct.new(
129
+ attachments: [
130
+ OpenStruct.new(
131
+ attrs: { "size" => 10_241, "filename" => "catalina.log.tar.gz" }
72
132
  )
73
133
  ]
74
134
  )
@@ -57,6 +57,36 @@ module Lazylead
57
57
  )
58
58
  end
59
59
 
60
+ test "java stacktrace is found in uppercase" do
61
+ assert Stacktrace.new.passed(
62
+ OpenStruct.new(
63
+ description: "
64
+ XXXXXX env: http://xxxx.xxx.com:00000/
65
+ WL log [^clust1.log]
66
+ http://xxx.xxx.com/display/xxx/SQLException+No+more+data+to+read+from+socket
67
+
68
+ During call we found in clust1.log the following error
69
+ {NoFoRmAt}
70
+ at xxx.xxx.xxx.xxx.wrapper.XxxXxxXxxxXxx.xxxxXxxxXxxx(XxxXxxXxxxXxx.java:233)
71
+ at xxx.xxx.xxx.xxx.wrapper.XxxXxxXxxxXxx.xxxxXxxxXxxx(XxxXxxXxxxXxx.java:343)
72
+ ... 318 more
73
+ Caused by: javax.transaction.TransactionRolledbackException: EJB Exception: ; nested exception is:
74
+ javax.ejb.TransactionRolledbackLocalException: EJB Exception:
75
+ at weblogic.utils.StackTraceDisabled.unknownMethod()
76
+ Caused by: javax.ejb.TransactionRolledbackLocalException: EJB Exception:
77
+ ... 1 more
78
+ Caused by: javax.ejb.EJBException: java.sql.SQLRecoverableException: No more data to read from socket
79
+ ... 1 more
80
+ Caused by: java.sql.SQLRecoverableException: No more data to read from socket
81
+ ... 1 more
82
+ {NoFoRmAt}
83
+
84
+ The investigation is required.
85
+ More details here: XXXXX-xxxxxx"
86
+ )
87
+ )
88
+ end
89
+
60
90
  test "stacktrace is found" do
61
91
  assert Stacktrace.new.passed(
62
92
  OpenStruct.new(
@@ -95,6 +125,14 @@ module Lazylead
95
125
  )
96
126
  end
97
127
 
128
+ test "exception is found" do
129
+ assert Stacktrace.new.passed(
130
+ OpenStruct.new(
131
+ description: "{noformat}sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target{noformat}"
132
+ )
133
+ )
134
+ end
135
+
98
136
  test "ORA error is found" do
99
137
  assert Stacktrace.new.passed(
100
138
  OpenStruct.new(
@@ -109,5 +147,194 @@ module Lazylead
109
147
  )
110
148
  )
111
149
  end
150
+
151
+ test "ORA error is found in uppercase" do
152
+ assert Stacktrace.new.passed(
153
+ OpenStruct.new(
154
+ description: "
155
+ {NOFORMAT}
156
+ @XXXX/xxx/xxx/xxxx_xxx_xxxxx_xxx_xx.sql
157
+ ORA-02291: 1 integrity constraint (XXX_XXX_XXX.XX_xxx) violated - xx xxx not found for xx_xx=xx xxxxx_xx=XXXXXXX xxxxx=XXXXXXXX xxx_xx=xxx xx_xxx=xxxx.xxx.xxx.xxxxx.xxx.xxx.xxxxx
158
+ XXXX-xxx-xxxx: xxxxx xxxxx Xxxxx xxxx Xxxx
159
+ {NOFORMAT}
160
+
161
+ XXXX - XXX_XXX.X.XXXX.XXXX.XXXX.XxxxxxXX.X_xxxXXXXXX"
162
+ )
163
+ )
164
+ end
165
+
166
+ test "java error is found in code section" do
167
+ assert Stacktrace.new.passed(
168
+ OpenStruct.new(
169
+ description: "
170
+ asdfasdfasdf
171
+ {code:java}texta-line1
172
+ ;texta-line2{code}
173
+ asdjf;asdjfa;sdjf
174
+ as;djf;asdjf
175
+ {code}javax.servlet.ServletException: Something went wrong
176
+ at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
177
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
178
+ at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)
179
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
180
+ at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33)
181
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
182
+ at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
183
+ at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
184
+ at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
185
+ at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
186
+ at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
187
+ at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
188
+ at org.mortbay.jetty.Server.handle(Server.java:326)
189
+ at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
190
+ at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
191
+ at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
192
+ at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
193
+ at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
194
+ at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
195
+ at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
196
+ Caused by: com.example.myproject.MyProjectServletException
197
+ at com.example.myproject.MyServlet.doPost(MyServlet.java:169)
198
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
199
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
200
+ at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
201
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
202
+ at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30)
203
+ ... 27 more
204
+ Caused by: org.hibernate.exception.ConstraintViolationException: could not insert: [com.example.myproject.MyEntity]
205
+ at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
206
+ at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
207
+ at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:64)
208
+ at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2329)
209
+ at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2822)
210
+ at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
211
+ at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
212
+ at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
213
+ at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
214
+ at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
215
+ at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
216
+ at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
217
+ at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
218
+ at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
219
+ at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
220
+ at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
221
+ at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)
222
+ at org.hibernate.impl.SessionImpl.save(SessionImpl.java:689)
223
+ at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
224
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
225
+ at java.lang.reflect.Method.invoke(Method.java:597)
226
+ at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
227
+ at $Proxy19.save(Unknown Source)
228
+ at com.example.myproject.MyEntityService.save(MyEntityService.java:59) <-- relevant call (see notes below)
229
+ at com.example.myproject.MyServlet.doPost(MyServlet.java:164)
230
+ ... 32 more
231
+ Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
232
+ at org.hsqldb.jdbc.Util.throwError(Unknown Source)
233
+ at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
234
+ at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
235
+ at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)
236
+ ... 54 more{code}
237
+ asdfasdfasdf{code:sql}select 1 from dual {code}what?
238
+ "
239
+ )
240
+ )
241
+ end
242
+
243
+ test "java error is found in code section in uppercase" do
244
+ assert Stacktrace.new.passed(
245
+ OpenStruct.new(
246
+ description: "
247
+ {CODE}javax.servlet.ServletException: Something went wrong
248
+ at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
249
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
250
+ at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)
251
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
252
+ at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33)
253
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
254
+ at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
255
+ at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
256
+ at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
257
+ at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
258
+ at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
259
+ at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
260
+ at org.mortbay.jetty.Server.handle(Server.java:326)
261
+ at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
262
+ at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
263
+ at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
264
+ at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
265
+ at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
266
+ at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
267
+ at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
268
+ Caused by: com.example.myproject.MyProjectServletException
269
+ at com.example.myproject.MyServlet.doPost(MyServlet.java:169)
270
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
271
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
272
+ at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
273
+ at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
274
+ at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30)
275
+ ... 27 more
276
+ Caused by: org.hibernate.exception.ConstraintViolationException: could not insert: [com.example.myproject.MyEntity]
277
+ at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
278
+ at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
279
+ at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:64)
280
+ at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2329)
281
+ at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2822)
282
+ at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
283
+ at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
284
+ at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
285
+ at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
286
+ at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
287
+ at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
288
+ at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
289
+ at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
290
+ at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
291
+ at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
292
+ at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
293
+ at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)
294
+ at org.hibernate.impl.SessionImpl.save(SessionImpl.java:689)
295
+ at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
296
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
297
+ at java.lang.reflect.Method.invoke(Method.java:597)
298
+ at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
299
+ at $Proxy19.save(Unknown Source)
300
+ at com.example.myproject.MyEntityService.save(MyEntityService.java:59) <-- relevant call (see notes below)
301
+ at com.example.myproject.MyServlet.doPost(MyServlet.java:164)
302
+ ... 32 more
303
+ Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
304
+ at org.hsqldb.jdbc.Util.throwError(Unknown Source)
305
+ at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
306
+ at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
307
+ at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)
308
+ ... 54 more{CODE}
309
+ "
310
+ )
311
+ )
312
+ end
313
+
314
+ test "java error is found in colored code section in uppercase" do
315
+ assert Stacktrace.new.passed(
316
+ OpenStruct.new(
317
+ description: "
318
+ {CODE:red}
319
+ Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
320
+ at org.hsqldb.jdbc.Util.throwError(Unknown Source)
321
+ at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
322
+ at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
323
+ at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)
324
+ ... 54 more{CODE}
325
+ "
326
+ )
327
+ )
328
+ end
329
+
330
+ test "pair detected" do
331
+ assert_equal [[1, 4]],
332
+ Stacktrace.new.pairs(%w[aa tag bb cc tag dd], "tag")
333
+ end
334
+
335
+ test "proper pair detected" do
336
+ assert_equal [[1, 4]],
337
+ Stacktrace.new.pairs(%w[aa tag bb cc tag dd tag], "tag")
338
+ end
112
339
  end
113
340
  end