addressable 2.2.6 → 2.2.7

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/CHANGELOG CHANGED
@@ -1,33 +1,37 @@
1
- ## Addressable 2.2.6
1
+ # Addressable 2.2.7
2
+ - fixed issues related to Addressable::URI#query_values=
3
+ - the Addressable::URI.parse method is now polymorphic
4
+
5
+ # Addressable 2.2.6
2
6
  - changed the way ambiguous paths are handled
3
7
  - fixed bug with frozen URIs
4
8
  - https supported in heuristic parsing
5
9
 
6
- ## Addressable 2.2.5
10
+ # Addressable 2.2.5
7
11
  - 'parsing' a pre-parsed URI object is now a dup operation
8
12
  - introduced conditional support for libidn
9
13
  - fixed normalization issue on ampersands in query strings
10
14
  - added additional tests around handling of query strings
11
15
 
12
- ## Addressable 2.2.4
16
+ # Addressable 2.2.4
13
17
  - added origin support from draft-ietf-websec-origin-00
14
18
  - resolved issue with attempting to navigate below root
15
19
  - fixed bug with string splitting in query strings
16
20
 
17
- ## Addressable 2.2.3
21
+ # Addressable 2.2.3
18
22
  - added :flat_array notation for query strings
19
23
 
20
- ## Addressable 2.2.2
24
+ # Addressable 2.2.2
21
25
  - fixed issue with percent escaping of '+' character in query strings
22
26
 
23
- ## Addressable 2.2.1
27
+ # Addressable 2.2.1
24
28
  - added support for application/x-www-form-urlencoded.
25
29
 
26
- ## Addressable 2.2.0
30
+ # Addressable 2.2.0
27
31
  - added site methods
28
32
  - improved documentation
29
33
 
30
- ## Addressable 2.1.2
34
+ # Addressable 2.1.2
31
35
  - added HTTP request URI methods
32
36
  - better handling of Windows file paths
33
37
  - validation_deferred boolean replaced with defer_validation block
@@ -35,14 +39,14 @@
35
39
  - fixed issue with constructing URIs with relative paths
36
40
  - fixed warnings
37
41
 
38
- ## Addressable 2.1.1
42
+ # Addressable 2.1.1
39
43
  - more type checking changes
40
44
  - fixed issue with unicode normalization
41
45
  - added method to find template defaults
42
46
  - symbolic keys are now allowed in template mappings
43
47
  - numeric values and symbolic values are now allowed in template mappings
44
48
 
45
- ## Addressable 2.1.0
49
+ # Addressable 2.1.0
46
50
  - refactored URI template support out into its own class
47
51
  - removed extract method due to being useless and unreliable
48
52
  - removed Addressable::URI.expand_template
@@ -56,15 +60,15 @@
56
60
  - worked around issue with freezing URIs
57
61
  - improved specs
58
62
 
59
- ## Addressable 2.0.2
63
+ # Addressable 2.0.2
60
64
  - fixed issue with URI template expansion
61
65
  - fixed issue with percent escaping characters 0-15
62
66
 
63
- ## Addressable 2.0.1
67
+ # Addressable 2.0.1
64
68
  - fixed issue with query string assignment
65
69
  - fixed issue with improperly encoded components
66
70
 
67
- ## Addressable 2.0.0
71
+ # Addressable 2.0.0
68
72
  - the initialize method now takes an options hash as its only parameter
69
73
  - added query_values method to URI class
70
74
  - completely replaced IDNA implementation with pure Ruby
@@ -79,20 +83,20 @@
79
83
  - updated URI Template code to match v 03 of the draft spec
80
84
  - added a bunch of new specifications
81
85
 
82
- ## Addressable 1.0.4
86
+ # Addressable 1.0.4
83
87
  - switched to using RSpec's pending system for specs that rely on IDN
84
88
  - fixed issue with creating URIs with paths that are not prefixed with '/'
85
89
 
86
- ## Addressable 1.0.3
90
+ # Addressable 1.0.3
87
91
  - implemented a hash method
88
92
 
89
- ## Addressable 1.0.2
93
+ # Addressable 1.0.2
90
94
  - fixed minor bug with the extract_mapping method
91
95
 
92
- ## Addressable 1.0.1
96
+ # Addressable 1.0.1
93
97
  - fixed minor bug with the extract_mapping method
94
98
 
95
- ## Addressable 1.0.0
99
+ # Addressable 1.0.0
96
100
  - heuristic parse method added
97
101
  - parsing is slightly more strict
98
102
  - replaced to_h with to_hash
@@ -101,16 +105,16 @@
101
105
  - improved heckle rake task
102
106
  - no surviving heckle mutations
103
107
 
104
- ## Addressable 0.1.2
108
+ # Addressable 0.1.2
105
109
  - improved normalization
106
110
  - fixed bug in joining algorithm
107
111
  - updated specifications
108
112
 
109
- ## Addressable 0.1.1
113
+ # Addressable 0.1.1
110
114
  - updated documentation
111
115
  - added URI Template variable extraction
112
116
 
113
- ## Addressable 0.1.0
117
+ # Addressable 0.1.0
114
118
  - initial release
115
119
  - implementation based on RFC 3986, 3987
116
120
  - support for IRIs via libidn
@@ -931,7 +931,7 @@ module Addressable
931
931
  values.pop if values[-1] == ""
932
932
 
933
933
  if processor && processor.respond_to?(:restore)
934
- values.map! { |value| processor.restore(variables.first, value) }
934
+ values.map! { |val| processor.restore(variables.first, val) }
935
935
  end
936
936
  values = values.first if values.size == 1
937
937
  if mapping[variables.first] == nil || mapping[variables.first] == values
@@ -965,7 +965,7 @@ module Addressable
965
965
  values = value.split(argument, -1)
966
966
  values.pop if values[-1] == ""
967
967
  if processor && processor.respond_to?(:restore)
968
- values.map! { |value| processor.restore(variables.first, value) }
968
+ values.map! { |val| processor.restore(variables.first, val) }
969
969
  end
970
970
  values = values.first if values.size == 1
971
971
  if mapping[variables.first] == nil || mapping[variables.first] == values
@@ -1034,7 +1034,7 @@ module Addressable
1034
1034
  values = value.split(argument, -1)
1035
1035
  values.pop if values[-1] == ""
1036
1036
  if processor && processor.respond_to?(:restore)
1037
- values.map! { |value| processor.restore(variables.first, value) }
1037
+ values.map! { |val| processor.restore(variables.first, val) }
1038
1038
  end
1039
1039
  if mapping[variables.first] == nil || mapping[variables.first] == values
1040
1040
  mapping[variables.first] = values
@@ -127,7 +127,7 @@ module Addressable
127
127
  port = nil
128
128
  end
129
129
 
130
- return Addressable::URI.new(
130
+ return new(
131
131
  :scheme => scheme,
132
132
  :user => user,
133
133
  :password => password,
@@ -325,7 +325,11 @@ module Addressable
325
325
  return nil if component.nil?
326
326
 
327
327
  begin
328
- component = component.to_str
328
+ if component.kind_of?(Symbol) || component.kind_of?(Numeric)
329
+ component = component.to_s
330
+ else
331
+ component = component.to_str
332
+ end
329
333
  rescue TypeError, NoMethodError
330
334
  raise TypeError, "Can't convert #{component.class} into String."
331
335
  end if !component.is_a? String
@@ -715,6 +719,7 @@ module Addressable
715
719
  self.authority = options[:authority] if options[:authority]
716
720
  self.path = options[:path] if options[:path]
717
721
  self.query = options[:query] if options[:query]
722
+ self.query_values = options[:query_values] if options[:query_values]
718
723
  self.fragment = options[:fragment] if options[:fragment]
719
724
  end
720
725
  end
@@ -1015,6 +1020,14 @@ module Addressable
1015
1020
  validate()
1016
1021
  end
1017
1022
 
1023
+ ##
1024
+ # @see Addressable::URI#host
1025
+ alias_method :hostname, :host
1026
+
1027
+ ##
1028
+ # @see Addressable::URI#host=
1029
+ alias_method :hostname=, :host=
1030
+
1018
1031
  ##
1019
1032
  # The authority component for this URI.
1020
1033
  # Combines the user, password, host, and port components.
@@ -1415,7 +1428,7 @@ module Addressable
1415
1428
  end
1416
1429
  end
1417
1430
  if hash != {} && hash.keys.all? { |key| key =~ /^\d+$/ }
1418
- hash.sort.inject([]) do |accu, (key, value)|
1431
+ hash.sort.inject([]) do |accu, (_, value)|
1419
1432
  accu << value; accu
1420
1433
  end
1421
1434
  else
@@ -1497,39 +1510,55 @@ module Addressable
1497
1510
  # Only to be used for non-Array inputs. Arrays should preserve order.
1498
1511
  new_query_values.sort!
1499
1512
  end
1500
- # new_query_values have form [['key1', 'value1'], ['key2', 'value2']]
1501
1513
 
1502
- # Algorithm shamelessly stolen from Julien Genestoux, slightly modified
1503
- buffer = ""
1504
- stack = []
1505
- e = lambda do |component|
1506
- component = component.to_s if component.kind_of?(Symbol)
1507
- URI.encode_component(component, CharacterClasses::UNRESERVED)
1508
- end
1509
- new_query_values.each do |key, value|
1510
- if value.kind_of?(Hash)
1511
- stack << [key, value]
1512
- elsif value.kind_of?(Array)
1513
- stack << [
1514
- key,
1515
- value.inject({}) { |accu, x| accu[accu.size.to_s] = x; accu }
1516
- ]
1514
+ ##
1515
+ # Joins and converts parent and value into a properly encoded and
1516
+ # ordered URL query.
1517
+ #
1518
+ # @private
1519
+ # @param [String] parent an URI encoded component.
1520
+ # @param [Array, Hash, Symbol, #to_str] value
1521
+ #
1522
+ # @return [String] a properly escaped and ordered URL query.
1523
+ to_query = lambda do |parent, value|
1524
+ if value.is_a?(Hash)
1525
+ value = value.map do |key, val|
1526
+ [
1527
+ URI.encode_component(key, CharacterClasses::UNRESERVED),
1528
+ val
1529
+ ]
1530
+ end
1531
+ value.sort!
1532
+ buffer = ""
1533
+ value.each do |key, val|
1534
+ new_parent = "#{parent}[#{key}]"
1535
+ buffer << "#{to_query.call(new_parent, val)}&"
1536
+ end
1537
+ return buffer.chop
1538
+ elsif value.is_a?(Array)
1539
+ buffer = ""
1540
+ value.each_with_index do |val, i|
1541
+ new_parent = "#{parent}[#{i}]"
1542
+ buffer << "#{to_query.call(new_parent, val)}&"
1543
+ end
1544
+ return buffer.chop
1517
1545
  elsif value == true
1518
- buffer << "#{e.call(key)}&"
1546
+ return parent
1519
1547
  else
1520
- buffer << "#{e.call(key)}=#{e.call(value)}&"
1548
+ encoded_value = URI.encode_component(
1549
+ value, CharacterClasses::UNRESERVED
1550
+ )
1551
+ return "#{parent}=#{encoded_value}"
1521
1552
  end
1522
1553
  end
1523
- stack.each do |(parent, hash)|
1524
- (hash.sort_by { |key| key.to_s }).each do |(key, value)|
1525
- if value.kind_of?(Hash)
1526
- stack << ["#{parent}[#{key}]", value]
1527
- elsif value == true
1528
- buffer << "#{parent}[#{e.call(key)}]&"
1529
- else
1530
- buffer << "#{parent}[#{e.call(key)}]=#{e.call(value)}&"
1531
- end
1532
- end
1554
+
1555
+ # new_query_values have form [['key1', 'value1'], ['key2', 'value2']]
1556
+ buffer = ""
1557
+ new_query_values.each do |parent, value|
1558
+ encoded_parent = URI.encode_component(
1559
+ parent, CharacterClasses::UNRESERVED
1560
+ )
1561
+ buffer << "#{to_query.call(encoded_parent, value)}&"
1533
1562
  end
1534
1563
  self.query = buffer.chop
1535
1564
  end
@@ -2182,7 +2211,7 @@ module Addressable
2182
2211
  parent = normalized_path.match(NPATH2)
2183
2212
  if parent && ((parent[1] != PARENT1 && parent[1] != PARENT2) \
2184
2213
  || (parent[2] != PARENT1 && parent[2] != PARENT2))
2185
- mod ||= normalized_path.gsub!(/\/#{parent[1]}\/\.\.\/|(\/#{parent[2]}\/\.\.$)/, SLASH)
2214
+ mod ||= normalized_path.gsub!(/\/#{Regexp.escape(parent[1].to_s)}\/\.\.\/|(\/#{Regexp.escape(parent[2].to_s)}\/\.\.$)/, SLASH)
2186
2215
  end
2187
2216
 
2188
2217
  mod ||= normalized_path.gsub!(NPATH3, EMPTYSTR)
@@ -22,7 +22,7 @@ if !defined?(Addressable::VERSION)
22
22
  module VERSION
23
23
  MAJOR = 2
24
24
  MINOR = 2
25
- TINY = 6
25
+ TINY = 7
26
26
 
27
27
  STRING = [MAJOR, MINOR, TINY].join('.')
28
28
  end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ # Copyright (C) 2006-2011 Bob Aman
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+
17
+ require "addressable/uri"
18
+ require "net/http"
19
+
20
+ describe Net::HTTP do
21
+ it "should be compatible with Addressable" do
22
+ response_body =
23
+ Net::HTTP.get(Addressable::URI.parse('http://www.google.com/'))
24
+ response_body.should_not be_nil
25
+ end
26
+ end
@@ -1013,11 +1013,11 @@ describe Addressable::URI, "when parsed from " +
1013
1013
  end
1014
1014
 
1015
1015
  it "should have the correct password after assignment" do
1016
- @uri.password = "secret@123!"
1017
- @uri.password.should == "secret@123!"
1018
- @uri.normalized_password.should == "secret%40123%21"
1016
+ @uri.password = "#secret@123!"
1017
+ @uri.password.should == "#secret@123!"
1018
+ @uri.normalized_password.should == "%23secret%40123%21"
1019
1019
  @uri.user.should == ""
1020
- @uri.normalize.to_s.should == "http://:secret%40123%21@example.com/"
1020
+ @uri.normalize.to_s.should == "http://:%23secret%40123%21@example.com/"
1021
1021
  @uri.omit(:password).to_s.should == "http://example.com"
1022
1022
  end
1023
1023
 
@@ -1844,6 +1844,82 @@ describe Addressable::URI, "when parsed from " +
1844
1844
  end
1845
1845
  end
1846
1846
 
1847
+ describe Addressable::URI, "when parsed from " +
1848
+ "'http://example.com/path(/..'" do
1849
+ before do
1850
+ @uri = Addressable::URI.parse("http://example.com/path(/..")
1851
+ end
1852
+
1853
+ it "should have the correct port" do
1854
+ @uri.inferred_port.should == 80
1855
+ end
1856
+
1857
+ it "should not be considered to be in normal form" do
1858
+ @uri.normalize.should_not be_eql(@uri)
1859
+ end
1860
+
1861
+ it "should normalize to 'http://example.com/'" do
1862
+ @uri.normalize.should === "http://example.com/"
1863
+ end
1864
+ end
1865
+
1866
+ describe Addressable::URI, "when parsed from " +
1867
+ "'http://example.com/(path)/..'" do
1868
+ before do
1869
+ @uri = Addressable::URI.parse("http://example.com/(path)/..")
1870
+ end
1871
+
1872
+ it "should have the correct port" do
1873
+ @uri.inferred_port.should == 80
1874
+ end
1875
+
1876
+ it "should not be considered to be in normal form" do
1877
+ @uri.normalize.should_not be_eql(@uri)
1878
+ end
1879
+
1880
+ it "should normalize to 'http://example.com/'" do
1881
+ @uri.normalize.should === "http://example.com/"
1882
+ end
1883
+ end
1884
+
1885
+ describe Addressable::URI, "when parsed from " +
1886
+ "'http://example.com/path(/../'" do
1887
+ before do
1888
+ @uri = Addressable::URI.parse("http://example.com/path(/../")
1889
+ end
1890
+
1891
+ it "should have the correct port" do
1892
+ @uri.inferred_port.should == 80
1893
+ end
1894
+
1895
+ it "should not be considered to be in normal form" do
1896
+ @uri.normalize.should_not be_eql(@uri)
1897
+ end
1898
+
1899
+ it "should normalize to 'http://example.com/'" do
1900
+ @uri.normalize.should === "http://example.com/"
1901
+ end
1902
+ end
1903
+
1904
+ describe Addressable::URI, "when parsed from " +
1905
+ "'http://example.com/(path)/../'" do
1906
+ before do
1907
+ @uri = Addressable::URI.parse("http://example.com/(path)/../")
1908
+ end
1909
+
1910
+ it "should have the correct port" do
1911
+ @uri.inferred_port.should == 80
1912
+ end
1913
+
1914
+ it "should not be considered to be in normal form" do
1915
+ @uri.normalize.should_not be_eql(@uri)
1916
+ end
1917
+
1918
+ it "should normalize to 'http://example.com/'" do
1919
+ @uri.normalize.should === "http://example.com/"
1920
+ end
1921
+ end
1922
+
1847
1923
  describe Addressable::URI, "when parsed from " +
1848
1924
  "'http://example.com/path/to/resource/'" do
1849
1925
  before do
@@ -2777,7 +2853,8 @@ describe Addressable::URI, "when parsed from " +
2777
2853
  @uri.query_values.should == { 'q' => 'Q&A' }
2778
2854
  end
2779
2855
 
2780
- it "should normalize to the original uri (with the ampersand properly percent-encoded)" do
2856
+ it "should normalize to the original uri " +
2857
+ "(with the ampersand properly percent-encoded)" do
2781
2858
  @uri.normalize.to_s.should == "http://example.com/search?q=Q%26A"
2782
2859
  end
2783
2860
  end
@@ -4422,25 +4499,25 @@ end
4422
4499
  describe Addressable::URI, "when encoding a bogus object" do
4423
4500
  it "should raise a TypeError" do
4424
4501
  (lambda do
4425
- Addressable::URI.encode(42)
4502
+ Addressable::URI.encode(Object.new)
4426
4503
  end).should raise_error(TypeError)
4427
4504
  end
4428
4505
 
4429
4506
  it "should raise a TypeError" do
4430
4507
  (lambda do
4431
- Addressable::URI.normalized_encode(42)
4508
+ Addressable::URI.normalized_encode(Object.new)
4432
4509
  end).should raise_error(TypeError)
4433
4510
  end
4434
4511
 
4435
4512
  it "should raise a TypeError" do
4436
4513
  (lambda do
4437
- Addressable::URI.encode_component("günther", 42)
4514
+ Addressable::URI.encode_component("günther", Object.new)
4438
4515
  end).should raise_error(TypeError)
4439
4516
  end
4440
4517
 
4441
4518
  it "should raise a TypeError" do
4442
4519
  (lambda do
4443
- Addressable::URI.encode_component(42)
4520
+ Addressable::URI.encode_component(Object.new)
4444
4521
  end).should raise_error(TypeError)
4445
4522
  end
4446
4523
  end
@@ -4457,7 +4534,9 @@ describe Addressable::URI, "when given the input " +
4457
4534
  end
4458
4535
 
4459
4536
  it "should not raise error when frozen" do
4460
- lambda {Addressable::URI.heuristic_parse(@input).freeze.to_s}.should_not raise_error
4537
+ (lambda do
4538
+ Addressable::URI.heuristic_parse(@input).freeze.to_s
4539
+ end).should_not raise_error
4461
4540
  end
4462
4541
  end
4463
4542
 
@@ -4653,8 +4732,19 @@ describe Addressable::URI, "when assigning query values" do
4653
4732
  @uri.query.should == "a=a&b[0]=c&b[1]=d&b[2]=e"
4654
4733
  end
4655
4734
 
4735
+ it "should correctly assign {'a' => {'b' => [ 'c']}}" do
4736
+ @uri.query_values = { 'a' => {'b' => [ 'c'] } }
4737
+ @uri.query.should == "a[b][0]=c"
4738
+ end
4739
+
4740
+ it "should correctly assign {:b => '2', :a => {:c => '1'}}" do
4741
+ @uri.query_values = {:b => '2', :a => { :c => '1' }}
4742
+ @uri.query.should == "a[c]=1&b=2"
4743
+ end
4744
+
4656
4745
  it "should correctly assign " +
4657
- "{:a => 'a', :b => [{:c => 'c', :d => 'd'}, {:e => 'e', :f => 'f'}]}" do
4746
+ "{:a => 'a', :b => [{:c => 'c', :d => 'd'}, " +
4747
+ "{:e => 'e', :f => 'f'}]}" do
4658
4748
  @uri.query_values = {
4659
4749
  :a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}]
4660
4750
  }
@@ -4662,7 +4752,8 @@ describe Addressable::URI, "when assigning query values" do
4662
4752
  end
4663
4753
 
4664
4754
  it "should correctly assign " +
4665
- "{:a => 'a', :b => [{:c => true, :d => 'd'}, {:e => 'e', :f => 'f'}]}" do
4755
+ "{:a => 'a', :b => [{:c => true, :d => 'd'}, " +
4756
+ "{:e => 'e', :f => 'f'}]}" do
4666
4757
  @uri.query_values = {
4667
4758
  :a => 'a', :b => [{:c => true, :d => 'd'}, {:e => 'e', :f => 'f'}]
4668
4759
  }
@@ -4678,13 +4769,32 @@ describe Addressable::URI, "when assigning query values" do
4678
4769
  end
4679
4770
 
4680
4771
  it "should correctly assign " +
4681
- "{:a => 'a', :b => {:c => true, :d => 'd'}, :e => []}" do
4772
+ "{:a => 'a', :b => {:c => true, :d => 'd'}}" do
4682
4773
  @uri.query_values = {
4683
4774
  :a => 'a', :b => {:c => true, :d => 'd'}
4684
4775
  }
4685
4776
  @uri.query.should == "a=a&b[c]&b[d]=d"
4686
4777
  end
4687
4778
 
4779
+ it "should correctly assign {:a => 1, :b => 1.5}" do
4780
+ @uri.query_values = { :a => 1, :b => 1.5 }
4781
+ @uri.query.should == "a=1&b=1.5"
4782
+ end
4783
+
4784
+ it "should correctly assign " +
4785
+ "{:z => 1, :f => [2, {999.1 => [3,'4']}, ['h', 'i']], " +
4786
+ ":a => {:b => ['c', 'd'], :e => true, :y => 0.5}}" do
4787
+ @uri.query_values = {
4788
+ :z => 1,
4789
+ :f => [ 2, {999.1 => [3,'4']}, ['h', 'i'] ],
4790
+ :a => { :b => ['c', 'd'], :e => true, :y => 0.5 }
4791
+ }
4792
+ @uri.query.should == (
4793
+ "a[b][0]=c&a[b][1]=d&a[e]&a[y]=0.5&f[0]=2&" +
4794
+ "f[1][999.1][0]=3&f[1][999.1][1]=4&f[2][0]=h&f[2][1]=i&z=1"
4795
+ )
4796
+ end
4797
+
4688
4798
  it "should correctly assign {}" do
4689
4799
  @uri.query_values = {}
4690
4800
  @uri.query.should == ''
@@ -81,4 +81,6 @@ end
81
81
  desc "Alias to gem:package"
82
82
  task "gem" => "gem:package"
83
83
 
84
+ task "gem:release" => "gem:gemspec"
85
+
84
86
  task "clobber" => ["gem:clobber_package"]
@@ -19,10 +19,15 @@ namespace :git do
19
19
  v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
20
20
  abort "Versions don't match #{v} vs #{PKG_VERSION}" if v != PKG_VERSION
21
21
 
22
+ git_status = `git status`
23
+ if git_status !~ /nothing to commit \(working directory clean\)/
24
+ abort "Working directory isn't clean."
25
+ end
26
+
22
27
  tag = "#{PKG_NAME}-#{PKG_VERSION}"
23
28
  msg = "Release #{PKG_NAME}-#{PKG_VERSION}"
24
29
 
25
- existing_tags = `git tag -l instrument-*`.split("\n")
30
+ existing_tags = `git tag -l #{PKG_NAME}-*`.split('\n')
26
31
  if existing_tags.include?(tag)
27
32
  warn("Tag already exists, deleting...")
28
33
  unless system "git tag -d #{tag}"
@@ -18,6 +18,13 @@ namespace :spec do
18
18
  end
19
19
 
20
20
  Spec::Rake::SpecTask.new(:normal) do |t|
21
+ t.libs = %w[lib spec]
22
+ t.spec_files = FileList['spec/**/*_spec.rb'].exclude(/compat/)
23
+ t.spec_opts = ['--color', '--format', 'specdoc']
24
+ t.rcov = false
25
+ end
26
+
27
+ Spec::Rake::SpecTask.new(:all) do |t|
21
28
  t.libs = %w[lib spec]
22
29
  t.spec_files = FileList['spec/**/*_spec.rb']
23
30
  t.spec_opts = ['--color', '--format', 'specdoc']
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: addressable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 2
8
7
  - 2
9
- - 6
10
- version: 2.2.6
8
+ - 7
9
+ version: 2.2.7
11
10
  platform: ruby
12
11
  authors:
13
12
  - Bob Aman
@@ -15,18 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-05-12 00:00:00 -07:00
17
+ date: 2012-02-16 00:00:00 +03:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rake
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ">="
28
26
  - !ruby/object:Gem::Version
29
- hash: 5
30
27
  segments:
31
28
  - 0
32
29
  - 7
@@ -38,11 +35,9 @@ dependencies:
38
35
  name: rspec
39
36
  prerelease: false
40
37
  requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
39
  - - ">="
44
40
  - !ruby/object:Gem::Version
45
- hash: 7
46
41
  segments:
47
42
  - 1
48
43
  - 0
@@ -54,11 +49,9 @@ dependencies:
54
49
  name: launchy
55
50
  prerelease: false
56
51
  requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
53
  - - ">="
60
54
  - !ruby/object:Gem::Version
61
- hash: 23
62
55
  segments:
63
56
  - 0
64
57
  - 3
@@ -70,11 +63,9 @@ dependencies:
70
63
  name: diff-lcs
71
64
  prerelease: false
72
65
  requirement: &id004 !ruby/object:Gem::Requirement
73
- none: false
74
66
  requirements:
75
67
  - - ">="
76
68
  - !ruby/object:Gem::Version
77
- hash: 23
78
69
  segments:
79
70
  - 1
80
71
  - 1
@@ -102,6 +93,7 @@ files:
102
93
  - lib/addressable/uri.rb
103
94
  - lib/addressable/version.rb
104
95
  - spec/addressable/idna_spec.rb
96
+ - spec/addressable/net_http_compat_spec.rb
105
97
  - spec/addressable/template_spec.rb
106
98
  - spec/addressable/uri_spec.rb
107
99
  - tasks/clobber.rake
@@ -128,27 +120,23 @@ rdoc_options:
128
120
  require_paths:
129
121
  - lib
130
122
  required_ruby_version: !ruby/object:Gem::Requirement
131
- none: false
132
123
  requirements:
133
124
  - - ">="
134
125
  - !ruby/object:Gem::Version
135
- hash: 3
136
126
  segments:
137
127
  - 0
138
128
  version: "0"
139
129
  required_rubygems_version: !ruby/object:Gem::Requirement
140
- none: false
141
130
  requirements:
142
131
  - - ">="
143
132
  - !ruby/object:Gem::Version
144
- hash: 3
145
133
  segments:
146
134
  - 0
147
135
  version: "0"
148
136
  requirements: []
149
137
 
150
138
  rubyforge_project: addressable
151
- rubygems_version: 1.4.1
139
+ rubygems_version: 1.3.6
152
140
  signing_key:
153
141
  specification_version: 3
154
142
  summary: URI Implementation