kronk 1.4.0 → 1.5.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.
- 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
|