kronk 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/History.rdoc +22 -0
- data/Manifest.txt +15 -6
- data/README.rdoc +5 -6
- data/Rakefile +5 -5
- data/lib/kronk.rb +164 -194
- data/lib/kronk/cmd.rb +188 -74
- data/lib/kronk/constants.rb +90 -0
- data/lib/kronk/data_renderer.rb +146 -0
- data/lib/kronk/diff.rb +4 -92
- data/lib/kronk/path/transaction.rb +2 -0
- data/lib/kronk/player.rb +233 -0
- data/lib/kronk/player/benchmark.rb +261 -0
- data/lib/kronk/player/input_reader.rb +54 -0
- data/lib/kronk/player/output.rb +49 -0
- data/lib/kronk/player/request_parser.rb +24 -0
- data/lib/kronk/player/stream.rb +50 -0
- data/lib/kronk/player/suite.rb +123 -0
- data/lib/kronk/plist_parser.rb +4 -0
- data/lib/kronk/request.rb +265 -241
- data/lib/kronk/response.rb +330 -149
- data/lib/kronk/test/assertions.rb +2 -2
- data/lib/kronk/xml_parser.rb +7 -1
- data/test/mocks/cookies.yml +32 -0
- data/test/mocks/get_request.txt +6 -0
- data/test/test_assertions.rb +6 -6
- data/test/test_cmd.rb +708 -0
- data/test/test_diff.rb +210 -75
- data/test/test_helper.rb +140 -0
- data/test/test_helper_methods.rb +4 -4
- data/test/test_input_reader.rb +103 -0
- data/test/test_kronk.rb +142 -141
- data/test/test_player.rb +589 -0
- data/test/test_request.rb +147 -212
- data/test/test_request_parser.rb +31 -0
- data/test/test_response.rb +206 -15
- metadata +41 -74
- data/bin/yzma +0 -13
- data/lib/kronk/data_set.rb +0 -144
- data/lib/yzma.rb +0 -174
- data/lib/yzma/randomizer.rb +0 -54
- data/lib/yzma/report.rb +0 -47
- data/test/test_data_set.rb +0 -213
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
|
3
|
+
class TestRequestParser < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_start_new
|
6
|
+
assert Kronk::Player::RequestParser.start_new?("/foobar\r\n")
|
7
|
+
assert Kronk::Player::RequestParser.start_new?("GET /foobar\r\n")
|
8
|
+
assert !Kronk::Player::RequestParser.start_new?("http://example.com\r\n")
|
9
|
+
assert !Kronk::Player::RequestParser.start_new?("foobar\r\n")
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def test_parse
|
14
|
+
expected = {:uri_suffix => "/foobar"}
|
15
|
+
assert_equal expected, Kronk::Player::RequestParser.parse("/foobar")
|
16
|
+
|
17
|
+
expected = {:http_method => "GET", :uri_suffix => "/foobar"}
|
18
|
+
assert_equal expected, Kronk::Player::RequestParser.parse("GET /foobar")
|
19
|
+
|
20
|
+
expected.merge! :host => "example.com"
|
21
|
+
raw = "GET /foobar\r\nHost: example.com"
|
22
|
+
assert_equal expected, Kronk::Player::RequestParser.parse(raw)
|
23
|
+
|
24
|
+
expected.merge! :http_method => "POST",
|
25
|
+
:data => "foo=bar",
|
26
|
+
:headers => {'Accept' => 'json'}
|
27
|
+
|
28
|
+
raw = "POST /foobar\r\nAccept: json\r\nHost: example.com\r\n\r\nfoo=bar"
|
29
|
+
assert_equal expected, Kronk::Player::RequestParser.parse(raw)
|
30
|
+
end
|
31
|
+
end
|
data/test/test_response.rb
CHANGED
@@ -3,24 +3,81 @@ require 'test/test_helper'
|
|
3
3
|
class TestResponse < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@html_resp = Kronk::
|
7
|
-
@json_resp = Kronk::
|
8
|
-
@plist_resp = Kronk::
|
9
|
-
@xml_resp = Kronk::
|
6
|
+
@html_resp = Kronk::Response.read_file "test/mocks/200_response.txt"
|
7
|
+
@json_resp = Kronk::Response.read_file "test/mocks/200_response.json"
|
8
|
+
@plist_resp = Kronk::Response.read_file "test/mocks/200_response.plist"
|
9
|
+
@xml_resp = Kronk::Response.read_file "test/mocks/200_response.xml"
|
10
10
|
end
|
11
11
|
|
12
12
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
13
|
+
def test_init_encoding
|
14
|
+
assert_equal "ISO-8859-1", @html_resp.encoding.to_s
|
15
|
+
assert_equal "ISO-8859-1", @html_resp.body.encoding.to_s if
|
16
|
+
"".respond_to? :encoding
|
17
|
+
assert_equal "UTF-8", @json_resp.encoding.to_s.upcase
|
16
18
|
|
19
|
+
png = Kronk::Response.read_file "test/mocks/200_response.png"
|
20
|
+
assert_equal "ASCII-8BIT", png.encoding.to_s
|
21
|
+
end
|
17
22
|
|
18
|
-
expected_header = "#{mock_200_response.split("\r\n\r\n", 2)[0]}\r\n"
|
19
23
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
+
def test_bytes
|
25
|
+
png = Kronk::Response.read_file "test/mocks/200_response.png"
|
26
|
+
assert_equal 8469, png.bytes
|
27
|
+
assert_equal png['Content-Length'].to_i, png.bytes
|
28
|
+
|
29
|
+
headless = Kronk::Response.new "foobar"
|
30
|
+
assert_equal "foobar".bytes.count, headless.bytes
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def test_byterate
|
35
|
+
@html_resp.time = 10
|
36
|
+
assert_equal 930.3, @html_resp.byterate
|
37
|
+
@html_resp.time = 100
|
38
|
+
assert_equal 93.03, @html_resp.byterate
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def test_total_bytes
|
43
|
+
assert_equal @html_resp.raw.bytes.count, @html_resp.total_bytes
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def test_cookie
|
48
|
+
assert_nil @html_resp.cookie
|
49
|
+
@html_resp['Cookie'] = "blahblahblah"
|
50
|
+
assert_equal "blahblahblah", @html_resp.cookie
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
def test_headless
|
55
|
+
assert Kronk::Response.new("blah blah blah").headless?,
|
56
|
+
"Expected a headless HTTP response"
|
57
|
+
|
58
|
+
assert !Kronk::Response.new("HTTP/1.1 200 OK\r\n\r\nHI").headless?,
|
59
|
+
"Expected full valid HTTP response"
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
def test_new_from_one_line_io
|
64
|
+
io = StringIO.new "just this one line!"
|
65
|
+
resp = Kronk::Response.new io
|
66
|
+
|
67
|
+
assert_equal "just this one line!", resp.body
|
68
|
+
enc = "".encoding rescue "UTF-8"
|
69
|
+
assert_equal ["text/html; charset=#{enc}"], resp['Content-Type']
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
def test_read_file
|
74
|
+
resp = Kronk::Response.read_file "test/mocks/200_response.txt"
|
75
|
+
|
76
|
+
expected_header = "#{mock_200_response.split("\r\n\r\n", 2)[0]}\r\n"
|
77
|
+
|
78
|
+
assert Net::HTTPResponse === resp.instance_variable_get("@_res")
|
79
|
+
assert_equal mock_200_response, resp.raw
|
80
|
+
assert_equal expected_header, resp.raw_header
|
24
81
|
end
|
25
82
|
|
26
83
|
|
@@ -33,8 +90,8 @@ class TestResponse < Test::Unit::TestCase
|
|
33
90
|
|
34
91
|
io = StringIO.new str
|
35
92
|
|
36
|
-
resp = Kronk::Response.
|
37
|
-
req, resp, bytes = resp.read_raw_from io
|
93
|
+
resp = Kronk::Response.new mock_200_response
|
94
|
+
req, resp, bytes = resp.send :read_raw_from, io
|
38
95
|
|
39
96
|
assert_equal "mock debug request", req
|
40
97
|
assert_equal mock_200_response, resp
|
@@ -269,7 +326,6 @@ class TestResponse < Test::Unit::TestCase
|
|
269
326
|
end
|
270
327
|
|
271
328
|
|
272
|
-
|
273
329
|
def test_selective_data_collected_and_ignored
|
274
330
|
expected = {"business" => {"id" => "1234"}}
|
275
331
|
|
@@ -277,4 +333,139 @@ class TestResponse < Test::Unit::TestCase
|
|
277
333
|
@json_resp.selective_data(:only_data => "**/id",
|
278
334
|
:ignore_data => "original_request")
|
279
335
|
end
|
336
|
+
|
337
|
+
|
338
|
+
def test_redirect?
|
339
|
+
res = Kronk::Response.new mock_301_response
|
340
|
+
assert res.redirect?
|
341
|
+
|
342
|
+
res = Kronk::Response.new mock_302_response
|
343
|
+
assert res.redirect?
|
344
|
+
|
345
|
+
res = Kronk::Response.new mock_200_response
|
346
|
+
assert !res.redirect?
|
347
|
+
end
|
348
|
+
|
349
|
+
|
350
|
+
def test_follow_redirect
|
351
|
+
res1 = Kronk::Response.new mock_301_response
|
352
|
+
assert res1.redirect?
|
353
|
+
|
354
|
+
expect_request "GET", "http://www.google.com/"
|
355
|
+
res2 = res1.follow_redirect
|
356
|
+
|
357
|
+
assert_equal mock_200_response, res2.raw
|
358
|
+
end
|
359
|
+
|
360
|
+
|
361
|
+
def test_force_encoding
|
362
|
+
return unless "".respond_to? :encoding
|
363
|
+
|
364
|
+
res = Kronk::Response.new mock_200_response
|
365
|
+
expected_encoding = Encoding.find "ISO-8859-1"
|
366
|
+
|
367
|
+
assert_equal expected_encoding, res.encoding
|
368
|
+
assert_equal expected_encoding, res.body.encoding
|
369
|
+
assert_equal expected_encoding, res.raw.encoding
|
370
|
+
|
371
|
+
res.force_encoding "utf-8"
|
372
|
+
expected_encoding = Encoding.find "utf-8"
|
373
|
+
|
374
|
+
assert_equal expected_encoding, res.encoding
|
375
|
+
assert_equal expected_encoding, res.body.encoding
|
376
|
+
assert_equal expected_encoding, res.raw.encoding
|
377
|
+
end
|
378
|
+
|
379
|
+
|
380
|
+
def test_stringify_string
|
381
|
+
str = Kronk::Response.read_file("test/mocks/200_response.json").stringify
|
382
|
+
expected = <<-STR
|
383
|
+
{
|
384
|
+
"business": {
|
385
|
+
"address": "3845 Rivertown Pkwy SW Ste 500",
|
386
|
+
"city": "Grandville",
|
387
|
+
"description": {
|
388
|
+
"additional_urls": [
|
389
|
+
{
|
390
|
+
"destination": "http://example.com",
|
391
|
+
"url_click": "http://example.com"
|
392
|
+
}
|
393
|
+
],
|
394
|
+
"general_info": "<p>A Paint Your Own Pottery Studios..</p>",
|
395
|
+
"op_hours": "Fri 1pm-7pm, Sat 10am-6pm, Sun 1pm-4pm, Appointments Available",
|
396
|
+
"payment_text": "DISCOVER, AMEX, VISA, MASTERCARD",
|
397
|
+
"slogan": "<p>Pottery YOU dress up</p>"
|
398
|
+
},
|
399
|
+
"distance": 0.0,
|
400
|
+
"has_detail_page": true,
|
401
|
+
"headings": [
|
402
|
+
"Pottery"
|
403
|
+
],
|
404
|
+
"id": "1234",
|
405
|
+
"impression_id": "mock_iid",
|
406
|
+
"improvable": true,
|
407
|
+
"latitude": 42.882561,
|
408
|
+
"listing_id": "1234",
|
409
|
+
"listing_type": "free",
|
410
|
+
"longitude": -85.759586,
|
411
|
+
"mappable": true,
|
412
|
+
"name": "Naked Plates",
|
413
|
+
"omit_address": false,
|
414
|
+
"omit_phone": false,
|
415
|
+
"phone": "6168055326",
|
416
|
+
"rateable": true,
|
417
|
+
"rating_count": 0,
|
418
|
+
"red_listing": false,
|
419
|
+
"state": "MI",
|
420
|
+
"website": "http://example.com",
|
421
|
+
"year_established": "1996",
|
422
|
+
"zip": "49418"
|
423
|
+
},
|
424
|
+
"original_request": {
|
425
|
+
"id": "1234"
|
426
|
+
},
|
427
|
+
"request_id": "mock_rid"
|
428
|
+
}
|
429
|
+
STR
|
430
|
+
assert_equal expected.strip, str
|
431
|
+
end
|
432
|
+
|
433
|
+
|
434
|
+
def test_stringify_raw
|
435
|
+
str = Kronk::Response.
|
436
|
+
read_file("test/mocks/200_response.json").stringify :raw => 1
|
437
|
+
|
438
|
+
expected = File.read("test/mocks/200_response.json").split("\r\n\r\n")[1]
|
439
|
+
assert_equal expected, str
|
440
|
+
end
|
441
|
+
|
442
|
+
|
443
|
+
def test_stringify_struct
|
444
|
+
str = Kronk::Response.read_file("test/mocks/200_response.json").
|
445
|
+
stringify :struct => true
|
446
|
+
|
447
|
+
expected = JSON.parse \
|
448
|
+
File.read("test/mocks/200_response.json").split("\r\n\r\n")[1]
|
449
|
+
|
450
|
+
expected = Kronk::Diff.ordered_data_string expected, true
|
451
|
+
|
452
|
+
assert_equal expected, str
|
453
|
+
end
|
454
|
+
|
455
|
+
|
456
|
+
def test_stringify_missing_parser
|
457
|
+
str = Kronk::Response.read_file("test/mocks/200_response.txt").stringify
|
458
|
+
expected = File.read("test/mocks/200_response.txt").split("\r\n\r\n")[1]
|
459
|
+
|
460
|
+
assert_equal expected, str
|
461
|
+
end
|
462
|
+
|
463
|
+
|
464
|
+
def test_success?
|
465
|
+
resp = Kronk::Response.read_file("test/mocks/200_response.txt")
|
466
|
+
assert resp.success?
|
467
|
+
|
468
|
+
resp = Kronk::Response.read_file("test/mocks/302_response.txt")
|
469
|
+
assert !resp.success?
|
470
|
+
end
|
280
471
|
end
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kronk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 4
|
8
|
-
- 0
|
9
|
-
version: 1.4.0
|
4
|
+
prerelease:
|
5
|
+
version: 1.5.0
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Jeremie Castagna
|
@@ -14,112 +10,74 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-
|
18
|
-
default_executable:
|
13
|
+
date: 2011-08-11 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
16
|
+
name: json
|
22
17
|
prerelease: false
|
23
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
19
|
none: false
|
25
20
|
requirements:
|
26
21
|
- - ~>
|
27
22
|
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 3
|
30
|
-
- 1
|
31
|
-
- 0
|
32
|
-
version: 3.1.0
|
23
|
+
version: "1.5"
|
33
24
|
type: :runtime
|
34
25
|
version_requirements: *id001
|
35
26
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
27
|
+
name: cookiejar
|
37
28
|
prerelease: false
|
38
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
30
|
none: false
|
40
31
|
requirements:
|
41
32
|
- - ~>
|
42
33
|
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
- 1
|
45
|
-
- 5
|
46
|
-
version: "1.5"
|
34
|
+
version: 0.3.0
|
47
35
|
type: :runtime
|
48
36
|
version_requirements: *id002
|
49
37
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
38
|
+
name: plist
|
51
39
|
prerelease: false
|
52
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
41
|
none: false
|
54
42
|
requirements:
|
55
43
|
- - ~>
|
56
44
|
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
|
59
|
-
- 4
|
60
|
-
version: "1.4"
|
61
|
-
type: :runtime
|
45
|
+
version: 3.1.0
|
46
|
+
type: :development
|
62
47
|
version_requirements: *id003
|
63
48
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
49
|
+
name: nokogiri
|
65
50
|
prerelease: false
|
66
51
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
52
|
none: false
|
68
53
|
requirements:
|
69
54
|
- - ~>
|
70
55
|
- !ruby/object:Gem::Version
|
71
|
-
|
72
|
-
- 0
|
73
|
-
- 3
|
74
|
-
- 0
|
75
|
-
version: 0.3.0
|
76
|
-
type: :runtime
|
77
|
-
version_requirements: *id004
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rubyforge
|
80
|
-
prerelease: false
|
81
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
segments:
|
87
|
-
- 2
|
88
|
-
- 0
|
89
|
-
- 4
|
90
|
-
version: 2.0.4
|
56
|
+
version: "1.4"
|
91
57
|
type: :development
|
92
|
-
version_requirements: *
|
58
|
+
version_requirements: *id004
|
93
59
|
- !ruby/object:Gem::Dependency
|
94
60
|
name: mocha
|
95
61
|
prerelease: false
|
96
|
-
requirement: &
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
97
63
|
none: false
|
98
64
|
requirements:
|
99
65
|
- - ~>
|
100
66
|
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
- 0
|
103
|
-
- 9
|
104
|
-
- 10
|
105
|
-
version: 0.9.10
|
67
|
+
version: 0.9.12
|
106
68
|
type: :development
|
107
|
-
version_requirements: *
|
69
|
+
version_requirements: *id005
|
108
70
|
- !ruby/object:Gem::Dependency
|
109
71
|
name: hoe
|
110
72
|
prerelease: false
|
111
|
-
requirement: &
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
112
74
|
none: false
|
113
75
|
requirements:
|
114
76
|
- - ">="
|
115
77
|
- !ruby/object:Gem::Version
|
116
|
-
|
117
|
-
- 2
|
118
|
-
- 7
|
119
|
-
- 0
|
120
|
-
version: 2.7.0
|
78
|
+
version: 2.9.1
|
121
79
|
type: :development
|
122
|
-
version_requirements: *
|
80
|
+
version_requirements: *id006
|
123
81
|
description: |-
|
124
82
|
Kronk runs diffs against data from live and cached http responses.
|
125
83
|
Kronk was made possible by the sponsoring of AT&T Interactive.
|
@@ -127,7 +85,6 @@ email:
|
|
127
85
|
- yaksnrainbows@gmail.com
|
128
86
|
executables:
|
129
87
|
- kronk
|
130
|
-
- yzma
|
131
88
|
extensions: []
|
132
89
|
|
133
90
|
extra_rdoc_files:
|
@@ -141,15 +98,22 @@ files:
|
|
141
98
|
- README.rdoc
|
142
99
|
- Rakefile
|
143
100
|
- bin/kronk
|
144
|
-
- bin/yzma
|
145
101
|
- lib/kronk.rb
|
102
|
+
- lib/kronk/constants.rb
|
146
103
|
- lib/kronk/cmd.rb
|
147
|
-
- lib/kronk/
|
104
|
+
- lib/kronk/data_renderer.rb
|
148
105
|
- lib/kronk/diff.rb
|
149
106
|
- lib/kronk/diff/ascii_format.rb
|
150
107
|
- lib/kronk/diff/color_format.rb
|
151
108
|
- lib/kronk/path.rb
|
152
109
|
- lib/kronk/path/transaction.rb
|
110
|
+
- lib/kronk/player.rb
|
111
|
+
- lib/kronk/player/benchmark.rb
|
112
|
+
- lib/kronk/player/input_reader.rb
|
113
|
+
- lib/kronk/player/output.rb
|
114
|
+
- lib/kronk/player/request_parser.rb
|
115
|
+
- lib/kronk/player/suite.rb
|
116
|
+
- lib/kronk/player/stream.rb
|
153
117
|
- lib/kronk/plist_parser.rb
|
154
118
|
- lib/kronk/request.rb
|
155
119
|
- lib/kronk/response.rb
|
@@ -158,9 +122,6 @@ files:
|
|
158
122
|
- lib/kronk/test/core_ext.rb
|
159
123
|
- lib/kronk/test/helper_methods.rb
|
160
124
|
- lib/kronk/xml_parser.rb
|
161
|
-
- lib/yzma.rb
|
162
|
-
- lib/yzma/randomizer.rb
|
163
|
-
- lib/yzma/report.rb
|
164
125
|
- script/kronk_completion
|
165
126
|
- test/mocks/200_response.json
|
166
127
|
- test/mocks/200_response.plist
|
@@ -168,19 +129,24 @@ files:
|
|
168
129
|
- test/mocks/200_response.xml
|
169
130
|
- test/mocks/301_response.txt
|
170
131
|
- test/mocks/302_response.txt
|
132
|
+
- test/mocks/cookies.yml
|
133
|
+
- test/mocks/get_request.txt
|
171
134
|
- test/test_assertions.rb
|
172
135
|
- test/test_core_ext.rb
|
136
|
+
- test/test_cmd.rb
|
173
137
|
- test/test_helper_methods.rb
|
174
|
-
- test/test_data_set.rb
|
175
138
|
- test/test_diff.rb
|
176
139
|
- test/test_helper.rb
|
140
|
+
- test/test_input_reader.rb
|
177
141
|
- test/test_kronk.rb
|
178
142
|
- test/test_path.rb
|
143
|
+
- test/test_player.rb
|
179
144
|
- test/test_request.rb
|
145
|
+
- test/test_request_parser.rb
|
180
146
|
- test/test_response.rb
|
181
147
|
- test/test_transaction.rb
|
182
148
|
- test/test_xml_parser.rb
|
183
|
-
|
149
|
+
- .gemtest
|
184
150
|
homepage: https://github.com/yaksnrainbows/kronk
|
185
151
|
licenses: []
|
186
152
|
|
@@ -195,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
195
161
|
requirements:
|
196
162
|
- - ">="
|
197
163
|
- !ruby/object:Gem::Version
|
198
|
-
hash:
|
164
|
+
hash: 4569364273501075801
|
199
165
|
segments:
|
200
166
|
- 0
|
201
167
|
version: "0"
|
@@ -204,26 +170,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
170
|
requirements:
|
205
171
|
- - ">="
|
206
172
|
- !ruby/object:Gem::Version
|
207
|
-
segments:
|
208
|
-
- 0
|
209
173
|
version: "0"
|
210
174
|
requirements: []
|
211
175
|
|
212
176
|
rubyforge_project: kronk
|
213
|
-
rubygems_version: 1.
|
177
|
+
rubygems_version: 1.8.6
|
214
178
|
signing_key:
|
215
179
|
specification_version: 3
|
216
180
|
summary: Kronk runs diffs against data from live and cached http responses
|
217
181
|
test_files:
|
218
182
|
- test/test_assertions.rb
|
183
|
+
- test/test_cmd.rb
|
219
184
|
- test/test_core_ext.rb
|
220
|
-
- test/test_data_set.rb
|
221
185
|
- test/test_diff.rb
|
222
186
|
- test/test_helper.rb
|
223
187
|
- test/test_helper_methods.rb
|
188
|
+
- test/test_input_reader.rb
|
224
189
|
- test/test_kronk.rb
|
225
190
|
- test/test_path.rb
|
191
|
+
- test/test_player.rb
|
226
192
|
- test/test_request.rb
|
193
|
+
- test/test_request_parser.rb
|
227
194
|
- test/test_response.rb
|
228
195
|
- test/test_transaction.rb
|
229
196
|
- test/test_xml_parser.rb
|