cotweet-fakeweb 1.3.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/.autotest +5 -0
- data/.gitignore +7 -0
- data/CHANGELOG +215 -0
- data/LICENSE.txt +19 -0
- data/README.rdoc +189 -0
- data/Rakefile +67 -0
- data/fakeweb.gemspec +126 -0
- data/lib/fake_web.rb +215 -0
- data/lib/fake_web/ext/net_http.rb +72 -0
- data/lib/fake_web/registry.rb +127 -0
- data/lib/fake_web/responder.rb +122 -0
- data/lib/fake_web/response.rb +10 -0
- data/lib/fake_web/stub_socket.rb +15 -0
- data/lib/fake_web/utility.rb +90 -0
- data/lib/fakeweb.rb +2 -0
- data/test/fixtures/google_response_from_curl +12 -0
- data/test/fixtures/google_response_with_transfer_encoding +17 -0
- data/test/fixtures/google_response_without_transfer_encoding +11 -0
- data/test/fixtures/test_example.txt +1 -0
- data/test/fixtures/test_txt_file +3 -0
- data/test/test_allow_net_connect.rb +168 -0
- data/test/test_deprecations.rb +54 -0
- data/test/test_fake_authentication.rb +92 -0
- data/test/test_fake_web.rb +590 -0
- data/test/test_fake_web_open_uri.rb +58 -0
- data/test/test_helper.rb +90 -0
- data/test/test_last_request.rb +29 -0
- data/test/test_missing_open_uri.rb +25 -0
- data/test/test_missing_pathname.rb +37 -0
- data/test/test_other_net_http_libraries.rb +36 -0
- data/test/test_precedence.rb +79 -0
- data/test/test_query_string.rb +45 -0
- data/test/test_regexes.rb +157 -0
- data/test/test_response_headers.rb +79 -0
- data/test/test_trailing_slashes.rb +53 -0
- data/test/test_utility.rb +83 -0
- data/test/vendor/right_http_connection-1.2.4/History.txt +59 -0
- data/test/vendor/right_http_connection-1.2.4/Manifest.txt +7 -0
- data/test/vendor/right_http_connection-1.2.4/README.txt +54 -0
- data/test/vendor/right_http_connection-1.2.4/Rakefile +103 -0
- data/test/vendor/right_http_connection-1.2.4/lib/net_fix.rb +160 -0
- data/test/vendor/right_http_connection-1.2.4/lib/right_http_connection.rb +435 -0
- data/test/vendor/right_http_connection-1.2.4/setup.rb +1585 -0
- data/test/vendor/samuel-0.2.1/.document +5 -0
- data/test/vendor/samuel-0.2.1/.gitignore +5 -0
- data/test/vendor/samuel-0.2.1/LICENSE +20 -0
- data/test/vendor/samuel-0.2.1/README.rdoc +70 -0
- data/test/vendor/samuel-0.2.1/Rakefile +62 -0
- data/test/vendor/samuel-0.2.1/VERSION +1 -0
- data/test/vendor/samuel-0.2.1/lib/samuel.rb +52 -0
- data/test/vendor/samuel-0.2.1/lib/samuel/net_http.rb +10 -0
- data/test/vendor/samuel-0.2.1/lib/samuel/request.rb +96 -0
- data/test/vendor/samuel-0.2.1/samuel.gemspec +69 -0
- data/test/vendor/samuel-0.2.1/test/request_test.rb +193 -0
- data/test/vendor/samuel-0.2.1/test/samuel_test.rb +42 -0
- data/test/vendor/samuel-0.2.1/test/test_helper.rb +66 -0
- data/test/vendor/samuel-0.2.1/test/thread_test.rb +32 -0
- metadata +167 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestResponseHeaders < Test::Unit::TestCase
|
|
4
|
+
def test_content_type_when_registering_with_string_and_content_type_header_as_symbol_option
|
|
5
|
+
FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]', :content_type => "application/json")
|
|
6
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
|
|
7
|
+
assert_equal '[{"username": "chrisk"}]', response.body
|
|
8
|
+
assert_equal "application/json", response['Content-Type']
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_content_type_when_registering_with_string_and_content_type_header_as_string_option
|
|
12
|
+
FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]', 'Content-Type' => "application/json")
|
|
13
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
|
|
14
|
+
assert_equal "application/json", response['Content-Type']
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_content_type_when_registering_with_string_only
|
|
18
|
+
FakeWeb.register_uri(:get, "http://example.com/users.json", :body => '[{"username": "chrisk"}]')
|
|
19
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/users.json") }
|
|
20
|
+
assert_equal '[{"username": "chrisk"}]', response.body
|
|
21
|
+
assert_nil response['Content-Type']
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_cookies_when_registering_with_file_and_set_cookie_header
|
|
25
|
+
FakeWeb.register_uri(:get, "http://example.com/", :body => fixture_path("test_example.txt"),
|
|
26
|
+
:set_cookie => "user_id=1; example=yes")
|
|
27
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/") }
|
|
28
|
+
assert_equal "test example content", response.body
|
|
29
|
+
assert_equal "user_id=1; example=yes", response['Set-Cookie']
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_multiple_set_cookie_headers
|
|
33
|
+
FakeWeb.register_uri(:get, "http://example.com", :set_cookie => ["user_id=1", "example=yes"])
|
|
34
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/") }
|
|
35
|
+
assert_equal ["user_id=1", "example=yes"], response.get_fields('Set-Cookie')
|
|
36
|
+
assert_equal "user_id=1, example=yes", response['Set-Cookie']
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_registering_with_baked_response_ignores_header_options
|
|
40
|
+
fake_response = Net::HTTPOK.new('1.1', '200', 'OK')
|
|
41
|
+
fake_response["Server"] = "Apache/1.3.27 (Unix)"
|
|
42
|
+
FakeWeb.register_uri(:get, "http://example.com/", :response => fake_response,
|
|
43
|
+
:server => "FakeWeb/1.2.3 (Ruby)")
|
|
44
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/") }
|
|
45
|
+
assert_equal "200", response.code
|
|
46
|
+
assert_equal "OK", response.message
|
|
47
|
+
assert_equal "Apache/1.3.27 (Unix)", response["Server"]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_headers_are_rotated_when_registering_with_response_rotation
|
|
51
|
+
FakeWeb.register_uri(:get, "http://example.com",
|
|
52
|
+
[{:body => 'test1', :expires => "Thu, 14 Jun 2009 16:00:00 GMT",
|
|
53
|
+
:content_type => "text/plain"},
|
|
54
|
+
{:body => 'test2', :expires => "Thu, 14 Jun 2009 16:00:01 GMT"}])
|
|
55
|
+
|
|
56
|
+
first_response = second_response = nil
|
|
57
|
+
Net::HTTP.start("example.com") do |query|
|
|
58
|
+
first_response = query.get("/")
|
|
59
|
+
second_response = query.get("/")
|
|
60
|
+
end
|
|
61
|
+
assert_equal 'test1', first_response.body
|
|
62
|
+
assert_equal "Thu, 14 Jun 2009 16:00:00 GMT", first_response['Expires']
|
|
63
|
+
assert_equal "text/plain", first_response['Content-Type']
|
|
64
|
+
assert_equal 'test2', second_response.body
|
|
65
|
+
assert_equal "Thu, 14 Jun 2009 16:00:01 GMT", second_response['Expires']
|
|
66
|
+
assert_nil second_response['Content-Type']
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_registering_with_status_option_and_response_headers
|
|
70
|
+
FakeWeb.register_uri(:get, "http://example.com", :status => ["301", "Moved Permanently"],
|
|
71
|
+
:location => "http://www.example.com")
|
|
72
|
+
|
|
73
|
+
response = Net::HTTP.start("example.com") { |query| query.get("/") }
|
|
74
|
+
assert_equal "301", response.code
|
|
75
|
+
assert_equal "Moved Permanently", response.message
|
|
76
|
+
assert_equal "http://www.example.com", response["Location"]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestFakeWebTrailingSlashes < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_registering_root_without_slash_and_ask_predicate_method_with_slash
|
|
6
|
+
FakeWeb.register_uri(:get, "http://www.example.com", :body => "root")
|
|
7
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com/")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_registering_root_without_slash_and_request
|
|
11
|
+
FakeWeb.register_uri(:get, "http://www.example.com", :body => "root")
|
|
12
|
+
response = Net::HTTP.start("www.example.com") { |query| query.get('/') }
|
|
13
|
+
assert_equal "root", response.body
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_registering_root_with_slash_and_ask_predicate_method_without_slash
|
|
17
|
+
FakeWeb.register_uri(:get, "http://www.example.com/", :body => "root")
|
|
18
|
+
assert FakeWeb.registered_uri?(:get, "http://www.example.com")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_registering_root_with_slash_and_request
|
|
22
|
+
FakeWeb.register_uri(:get, "http://www.example.com/", :body => "root")
|
|
23
|
+
response = Net::HTTP.start("www.example.com") { |query| query.get('/') }
|
|
24
|
+
assert_equal "root", response.body
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_registering_path_without_slash_and_ask_predicate_method_with_slash
|
|
28
|
+
FakeWeb.register_uri(:get, "http://www.example.com/users", :body => "User list")
|
|
29
|
+
assert !FakeWeb.registered_uri?(:get, "http://www.example.com/users/")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_registering_path_without_slash_and_request_with_slash
|
|
33
|
+
FakeWeb.allow_net_connect = false
|
|
34
|
+
FakeWeb.register_uri(:get, "http://www.example.com/users", :body => "User list")
|
|
35
|
+
assert_raise FakeWeb::NetConnectNotAllowedError do
|
|
36
|
+
response = Net::HTTP.start("www.example.com") { |query| query.get('/users/') }
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_registering_path_with_slash_and_ask_predicate_method_without_slash
|
|
41
|
+
FakeWeb.register_uri(:get, "http://www.example.com/users/", :body => "User list")
|
|
42
|
+
assert !FakeWeb.registered_uri?(:get, "http://www.example.com/users")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_registering_path_with_slash_and_request_without_slash
|
|
46
|
+
FakeWeb.allow_net_connect = false
|
|
47
|
+
FakeWeb.register_uri(:get, "http://www.example.com/users/", :body => "User list")
|
|
48
|
+
assert_raise FakeWeb::NetConnectNotAllowedError do
|
|
49
|
+
response = Net::HTTP.start("www.example.com") { |query| query.get('/users') }
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestUtility < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_decode_userinfo_from_header_handles_basic_auth
|
|
6
|
+
authorization_header = "Basic dXNlcm5hbWU6c2VjcmV0"
|
|
7
|
+
userinfo = FakeWeb::Utility.decode_userinfo_from_header(authorization_header)
|
|
8
|
+
assert_equal "username:secret", userinfo
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_encode_unsafe_chars_in_userinfo_does_not_encode_userinfo_safe_punctuation
|
|
12
|
+
userinfo = "user;&=+$,:secret"
|
|
13
|
+
assert_equal userinfo, FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_encode_unsafe_chars_in_userinfo_does_not_encode_rfc_3986_unreserved_characters
|
|
17
|
+
userinfo = "-_.!~*'()abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:secret"
|
|
18
|
+
assert_equal userinfo, FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_encode_unsafe_chars_in_userinfo_does_encode_other_characters
|
|
22
|
+
userinfo, safe_userinfo = 'us#rn@me:sec//ret?"', 'us%23rn%40me:sec%2F%2Fret%3F%22'
|
|
23
|
+
assert_equal safe_userinfo, FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_strip_default_port_from_uri_strips_80_from_http_with_path
|
|
27
|
+
uri = "http://example.com:80/foo/bar"
|
|
28
|
+
stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
29
|
+
assert_equal "http://example.com/foo/bar", stripped_uri
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_strip_default_port_from_uri_strips_80_from_http_without_path
|
|
33
|
+
uri = "http://example.com:80"
|
|
34
|
+
stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
35
|
+
assert_equal "http://example.com", stripped_uri
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_strip_default_port_from_uri_strips_443_from_https_without_path
|
|
39
|
+
uri = "https://example.com:443"
|
|
40
|
+
stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
41
|
+
assert_equal "https://example.com", stripped_uri
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_strip_default_port_from_uri_strips_443_from_https
|
|
45
|
+
uri = "https://example.com:443/foo/bar"
|
|
46
|
+
stripped_uri = FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
47
|
+
assert_equal "https://example.com/foo/bar", stripped_uri
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_strip_default_port_from_uri_does_not_strip_8080_from_http
|
|
51
|
+
uri = "http://example.com:8080/foo/bar"
|
|
52
|
+
assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_strip_default_port_from_uri_does_not_strip_443_from_http
|
|
56
|
+
uri = "http://example.com:443/foo/bar"
|
|
57
|
+
assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_strip_default_port_from_uri_does_not_strip_80_from_query_string
|
|
61
|
+
uri = "http://example.com/?a=:80&b=c"
|
|
62
|
+
assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_strip_default_port_from_uri_does_not_modify_strings_that_do_not_start_with_http_or_https
|
|
66
|
+
uri = "httpz://example.com:80/"
|
|
67
|
+
assert_equal uri, FakeWeb::Utility.strip_default_port_from_uri(uri)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_request_uri_as_string
|
|
71
|
+
http = Net::HTTP.new("www.example.com", 80)
|
|
72
|
+
request = Net::HTTP::Get.new("/index.html")
|
|
73
|
+
expected = "http://www.example.com:80/index.html"
|
|
74
|
+
assert_equal expected, FakeWeb::Utility.request_uri_as_string(http, request)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_uri_escape_delegates_to_uri_parser_when_available
|
|
78
|
+
parsing_object = URI.const_defined?(:Parser) ? URI::Parser.any_instance : URI
|
|
79
|
+
parsing_object.expects(:escape).with("string", /unsafe/).returns("escaped")
|
|
80
|
+
assert_equal "escaped", FakeWeb::Utility.uri_escape("string", /unsafe/)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
== 0.0.1 2007-05-15
|
|
2
|
+
* 1 major enhancement:
|
|
3
|
+
* Initial release
|
|
4
|
+
|
|
5
|
+
== 0.1.2 2007-06-27
|
|
6
|
+
|
|
7
|
+
* No major changes.
|
|
8
|
+
|
|
9
|
+
== 0.1.3 2007-07-09
|
|
10
|
+
|
|
11
|
+
* No change.
|
|
12
|
+
|
|
13
|
+
== 0.1.4 2007-08-10
|
|
14
|
+
|
|
15
|
+
* r1442, todd, 2007-08-07 15:45:24
|
|
16
|
+
* # 373, Add support in right_http_connection for bailing out to a block while
|
|
17
|
+
reading the HTTP response (to support GET streaming...)
|
|
18
|
+
|
|
19
|
+
* r1411, todd, 2007-08-03 15:14:45
|
|
20
|
+
* # 373, Stream uploads (PUTs) if the source is a file, stream, or anything
|
|
21
|
+
read()-able
|
|
22
|
+
|
|
23
|
+
== 1.1.0 2007-08-15
|
|
24
|
+
Initial public release
|
|
25
|
+
|
|
26
|
+
== 1.2.0 2007-10-05
|
|
27
|
+
|
|
28
|
+
* r1867, konstantin, 2007-10-05 06:19:45
|
|
29
|
+
* # 220, (re)open connection to server if none exists or connection params
|
|
30
|
+
have changed
|
|
31
|
+
|
|
32
|
+
== 1.2.1
|
|
33
|
+
|
|
34
|
+
* r2648, konstantin, 01-24-08 11:12:00
|
|
35
|
+
* net_fix.rb moved from right_aws gem to fix the problem with uploading the streamable
|
|
36
|
+
objects to S3
|
|
37
|
+
|
|
38
|
+
* r2764, konstantin, 02-08-08 00:05:00 +03:00
|
|
39
|
+
* "RightAws: incompatible Net::HTTP monkey-patch" exception is raised if our net_fix
|
|
40
|
+
patch was overriden (by attachment_fu for example, to avoid this load attachment_fu
|
|
41
|
+
before loading the right_http_connection gem).
|
|
42
|
+
|
|
43
|
+
== 1.2.2
|
|
44
|
+
|
|
45
|
+
* r3524, konstantin, 2008-04-17 11:35:42 +0400
|
|
46
|
+
* Fixed a problem with incorrect error handling (connection retries always failed).
|
|
47
|
+
|
|
48
|
+
== 1.2.3
|
|
49
|
+
|
|
50
|
+
- Added support for setting retry & timeout parameters in the constructor
|
|
51
|
+
- Improve handling of data streams during upload: if there is a failure and a retry, reset
|
|
52
|
+
the seek pointer for the subsequent re-request
|
|
53
|
+
|
|
54
|
+
== 1.2.4
|
|
55
|
+
|
|
56
|
+
* r4984, konstantin, 2008-08-11 14:49:18 +0400
|
|
57
|
+
* fixed a bug: <NoMethodError: You have a nil object when you didn't expect it!
|
|
58
|
+
The error occurred while evaluating nil.body_stream>
|
|
59
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
RightScale::HttpConnection
|
|
2
|
+
by RightScale, Inc.
|
|
3
|
+
www.RightScale.com
|
|
4
|
+
|
|
5
|
+
== DESCRIPTION:
|
|
6
|
+
|
|
7
|
+
Rightscale::HttpConnection is a robust HTTP/S library. It implements a retry
|
|
8
|
+
algorithm for low-level network errors.
|
|
9
|
+
|
|
10
|
+
== FEATURES:
|
|
11
|
+
|
|
12
|
+
- provides put/get streaming
|
|
13
|
+
- does configurable retries on connect and read timeouts, DNS failures, etc.
|
|
14
|
+
- HTTPS certificate checking
|
|
15
|
+
|
|
16
|
+
== SYNOPSIS:
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
== REQUIREMENTS:
|
|
20
|
+
|
|
21
|
+
- 2/11/08: If you use RightScale::HttpConnection in conjunction with attachment_fu, the
|
|
22
|
+
HttpConnection gem must be included (using the require statement) AFTER
|
|
23
|
+
attachment_fu.
|
|
24
|
+
This is due to a conflict between the HttpConnection gem and another
|
|
25
|
+
gem required by attachment_fu.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
== INSTALL:
|
|
30
|
+
|
|
31
|
+
sudo gem install right_http_connection
|
|
32
|
+
|
|
33
|
+
== LICENSE:
|
|
34
|
+
|
|
35
|
+
Copyright (c) 2007-2008 RightScale, Inc.
|
|
36
|
+
|
|
37
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
38
|
+
a copy of this software and associated documentation files (the
|
|
39
|
+
'Software'), to deal in the Software without restriction, including
|
|
40
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
41
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
42
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
43
|
+
the following conditions:
|
|
44
|
+
|
|
45
|
+
The above copyright notice and this permission notice shall be
|
|
46
|
+
included in all copies or substantial portions of the Software.
|
|
47
|
+
|
|
48
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
49
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
50
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
51
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
52
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
53
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
54
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake'
|
|
3
|
+
require 'rake/clean'
|
|
4
|
+
require 'rake/testtask'
|
|
5
|
+
require 'rake/packagetask'
|
|
6
|
+
require 'rake/gempackagetask'
|
|
7
|
+
require 'rake/rdoctask'
|
|
8
|
+
require 'rake/contrib/rubyforgepublisher'
|
|
9
|
+
require 'fileutils'
|
|
10
|
+
require 'hoe'
|
|
11
|
+
include FileUtils
|
|
12
|
+
require File.join(File.dirname(__FILE__), 'lib', 'right_http_connection')
|
|
13
|
+
|
|
14
|
+
AUTHOR = 'RightScale' # can also be an array of Authors
|
|
15
|
+
EMAIL = "rubygems@rightscale.com"
|
|
16
|
+
DESCRIPTION = "RightScale's robust HTTP/S connection module"
|
|
17
|
+
GEM_NAME = 'right_http_connection' # what ppl will type to install your gem
|
|
18
|
+
RUBYFORGE_PROJECT = 'rightscale' # The unix name for your project
|
|
19
|
+
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
|
20
|
+
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
|
21
|
+
|
|
22
|
+
NAME = "right_http_connection"
|
|
23
|
+
REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
|
24
|
+
VERS = RightHttpConnection::VERSION::STRING + (REV ? ".#{REV}" : "")
|
|
25
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
|
|
26
|
+
RDOC_OPTS = ['--quiet', '--title', 'right_http_connection documentation',
|
|
27
|
+
"--opname", "index.html",
|
|
28
|
+
"--line-numbers",
|
|
29
|
+
"--main", "README",
|
|
30
|
+
"--inline-source"]
|
|
31
|
+
|
|
32
|
+
# Suppress Hoe's self-inclusion as a dependency for our Gem. This also keeps
|
|
33
|
+
# Rake & rubyforge out of the dependency list. Users must manually install
|
|
34
|
+
# these gems to run tests, etc.
|
|
35
|
+
# TRB 2/19/09: also do this for the extra_dev_deps array present in newer hoes.
|
|
36
|
+
# Older versions of RubyGems will try to install developer-dependencies as
|
|
37
|
+
# required runtime dependencies....
|
|
38
|
+
class Hoe
|
|
39
|
+
def extra_deps
|
|
40
|
+
@extra_deps.reject do |x|
|
|
41
|
+
Array(x).first == 'hoe'
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
def extra_dev_deps
|
|
45
|
+
@extra_dev_deps.reject do |x|
|
|
46
|
+
Array(x).first == 'hoe'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Generate all the Rake tasks
|
|
52
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
|
53
|
+
hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
|
54
|
+
p.author = AUTHOR
|
|
55
|
+
p.description = DESCRIPTION
|
|
56
|
+
p.email = EMAIL
|
|
57
|
+
p.summary = DESCRIPTION
|
|
58
|
+
p.url = HOMEPATH
|
|
59
|
+
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
|
60
|
+
p.test_globs = ["test/**/test_*.rb"]
|
|
61
|
+
p.clean_globs = CLEAN #An array of file patterns to delete on clean.
|
|
62
|
+
p.remote_rdoc_dir = "right_http_gem_doc"
|
|
63
|
+
|
|
64
|
+
# == Optional
|
|
65
|
+
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
|
66
|
+
#p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
|
|
67
|
+
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
desc 'Generate website files'
|
|
72
|
+
task :website_generate do
|
|
73
|
+
Dir['website/**/*.txt'].each do |txt|
|
|
74
|
+
sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
desc 'Upload website files to rubyforge'
|
|
79
|
+
task :website_upload do
|
|
80
|
+
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
|
|
81
|
+
host = "#{config["username"]}@rubyforge.org"
|
|
82
|
+
remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/"
|
|
83
|
+
# remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
|
|
84
|
+
local_dir = 'website'
|
|
85
|
+
sh %{rsync -av #{local_dir}/ #{host}:#{remote_dir}}
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
desc 'Generate and upload website files'
|
|
89
|
+
task :website => [:website_generate, :website_upload]
|
|
90
|
+
|
|
91
|
+
desc 'Release the website and new gem version'
|
|
92
|
+
task :deploy => [:check_version, :website, :release]
|
|
93
|
+
|
|
94
|
+
task :check_version do
|
|
95
|
+
unless ENV['VERSION']
|
|
96
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
|
97
|
+
exit
|
|
98
|
+
end
|
|
99
|
+
unless ENV['VERSION'] == VERS
|
|
100
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
|
101
|
+
exit
|
|
102
|
+
end
|
|
103
|
+
end
|