public_suffix 1.4.6 → 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.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -0
- data/.travis.yml +2 -2
- data/.yardopts +1 -2
- data/CHANGELOG.md +7 -0
- data/LICENSE.txt +1 -1
- data/README.md +65 -55
- data/Rakefile +8 -16
- data/{lib → data}/definitions.txt +1008 -64
- data/lib/public_suffix.rb +3 -10
- data/lib/public_suffix/domain.rb +15 -37
- data/lib/public_suffix/errors.rb +3 -5
- data/lib/public_suffix/list.rb +12 -13
- data/lib/public_suffix/rule.rb +61 -48
- data/lib/public_suffix/version.rb +5 -6
- data/public_suffix.gemspec +6 -6
- data/test/acceptance_test.rb +50 -14
- data/test/unit/list_test.rb +5 -5
- data/test/unit/public_suffix_test.rb +3 -3
- data/test/unit/rule_test.rb +3 -3
- metadata +18 -17
data/public_suffix.gemspec
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: public_suffix 1.4.
|
2
|
+
# stub: public_suffix 1.4.6 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "public_suffix"
|
6
|
-
s.version = "1.4.
|
6
|
+
s.version = "1.4.6"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib"]
|
10
10
|
s.authors = ["Simone Carletti"]
|
11
|
-
s.date = "
|
11
|
+
s.date = "2015-03-24"
|
12
12
|
s.description = "PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains."
|
13
13
|
s.email = "weppos@weppos.net"
|
14
|
-
s.files = [".gemtest", ".gitignore", ".travis.yml", ".yardopts", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "
|
14
|
+
s.files = [".gemtest", ".gitignore", ".ruby-gemset", ".travis.yml", ".yardopts", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "data/definitions.txt", "lib/public_suffix.rb", "lib/public_suffix/domain.rb", "lib/public_suffix/errors.rb", "lib/public_suffix/list.rb", "lib/public_suffix/rule.rb", "lib/public_suffix/version.rb", "public_suffix.gemspec", "test/acceptance_test.rb", "test/test_helper.rb", "test/unit/domain_test.rb", "test/unit/errors_test.rb", "test/unit/list_test.rb", "test/unit/public_suffix_test.rb", "test/unit/rule_test.rb"]
|
15
15
|
s.homepage = "http://simonecarletti.com/code/publicsuffix"
|
16
16
|
s.licenses = ["MIT"]
|
17
|
-
s.required_ruby_version = Gem::Requirement.new(">=
|
18
|
-
s.rubygems_version = "2.
|
17
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.0")
|
18
|
+
s.rubygems_version = "2.4.5"
|
19
19
|
s.summary = "Domain name parser based on the Public Suffix List."
|
20
20
|
s.test_files = ["test/acceptance_test.rb", "test/test_helper.rb", "test/unit/domain_test.rb", "test/unit/errors_test.rb", "test/unit/list_test.rb", "test/unit/public_suffix_test.rb", "test/unit/rule_test.rb"]
|
21
21
|
|
data/test/acceptance_test.rb
CHANGED
@@ -2,16 +2,16 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class AcceptanceTest < Test::Unit::TestCase
|
4
4
|
|
5
|
-
ValidCases =
|
6
|
-
|
7
|
-
|
5
|
+
ValidCases = [
|
6
|
+
["google.com", [nil, "google", "com"]],
|
7
|
+
["foo.google.com", ["foo", "google", "com"]],
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
["verybritish.co.uk", [nil, "verybritish", "co.uk"]],
|
10
|
+
["foo.verybritish.co.uk", ["foo", "verybritish", "co.uk"]],
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
["parliament.uk", [nil, "parliament", "uk"]],
|
13
|
+
["foo.parliament.uk", ["foo", "parliament", "uk"]],
|
14
|
+
]
|
15
15
|
|
16
16
|
def test_valid
|
17
17
|
ValidCases.each do |name, results|
|
@@ -24,19 +24,55 @@ class AcceptanceTest < Test::Unit::TestCase
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
|
27
28
|
InvalidCases = [
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
[" ", PublicSuffix::DomainInvalid],
|
29
|
+
["nic.ke", PublicSuffix::DomainNotAllowed],
|
30
|
+
[nil, PublicSuffix::DomainInvalid],
|
31
|
+
["", PublicSuffix::DomainInvalid],
|
32
|
+
[" ", PublicSuffix::DomainInvalid],
|
33
33
|
]
|
34
34
|
|
35
35
|
def test_invalid
|
36
36
|
InvalidCases.each do |(name, error)|
|
37
|
-
|
37
|
+
assert_raises(error) { PublicSuffix.parse(name) }
|
38
38
|
assert !PublicSuffix.valid?(name)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
|
43
|
+
RejectedCases = [
|
44
|
+
["www. .com", true],
|
45
|
+
["foo.co..uk", true],
|
46
|
+
["goo,gle.com", true],
|
47
|
+
["-google.com", true],
|
48
|
+
["google-.com", true],
|
49
|
+
|
50
|
+
# This case was covered in GH-15.
|
51
|
+
# I decide to cover this case because it's not easily reproducible with URI.parse
|
52
|
+
# and can lead to several false positives.
|
53
|
+
["http://google.com", false],
|
54
|
+
]
|
55
|
+
|
56
|
+
def test_rejected
|
57
|
+
RejectedCases.each do |name, expected|
|
58
|
+
assert_equal expected, PublicSuffix.valid?(name)
|
59
|
+
assert !valid_domain?(name), "#{name} expected to be invalid"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def valid_uri?(name)
|
65
|
+
uri = URI.parse(name)
|
66
|
+
uri.host != nil
|
67
|
+
rescue
|
68
|
+
false
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_domain?(name)
|
72
|
+
uri = URI.parse(name)
|
73
|
+
uri.host != nil && uri.scheme.nil?
|
74
|
+
rescue
|
75
|
+
false
|
76
|
+
end
|
77
|
+
|
42
78
|
end
|
data/test/unit/list_test.rb
CHANGED
@@ -89,11 +89,6 @@ class PublicSuffix::ListTest < Test::Unit::TestCase
|
|
89
89
|
assert_equal 2, list.select("british-library.uk").size
|
90
90
|
end
|
91
91
|
|
92
|
-
def test_select_returns_empty_when_domain_has_scheme
|
93
|
-
assert_equal [], list.select("http://google.com")
|
94
|
-
assert_not_equal [], list.select("google.com")
|
95
|
-
end
|
96
|
-
|
97
92
|
def test_select_returns_empty_when_domain_is_nil
|
98
93
|
assert_equal [], list.select(nil)
|
99
94
|
end
|
@@ -103,6 +98,11 @@ class PublicSuffix::ListTest < Test::Unit::TestCase
|
|
103
98
|
assert_equal [], list.select(" ")
|
104
99
|
end
|
105
100
|
|
101
|
+
def test_select_returns_empty_when_domain_has_scheme
|
102
|
+
assert_equal [], list.select("http://google.com")
|
103
|
+
assert_not_equal [], list.select("google.com")
|
104
|
+
end
|
105
|
+
|
106
106
|
|
107
107
|
def test_self_default_getter
|
108
108
|
assert_equal nil, PublicSuffix::List.class_eval { @default }
|
@@ -78,17 +78,17 @@ class PublicSuffixTest < Test::Unit::TestCase
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def test_self_parse_raises_with_invalid_domain
|
81
|
-
error =
|
81
|
+
error = assert_raises(PublicSuffix::DomainInvalid) { PublicSuffix.parse("example.qqq") }
|
82
82
|
assert_match %r{example\.qqq}, error.message
|
83
83
|
end
|
84
84
|
|
85
85
|
def test_self_parse_raises_with_unallowed_domain
|
86
|
-
error =
|
86
|
+
error = assert_raises(PublicSuffix::DomainNotAllowed) { PublicSuffix.parse("example.ke") }
|
87
87
|
assert_match %r{example\.ke}, error.message
|
88
88
|
end
|
89
89
|
|
90
90
|
def test_self_raises_with_uri
|
91
|
-
error =
|
91
|
+
error = assert_raises(PublicSuffix::DomainInvalid) { PublicSuffix.parse("http://google.com") }
|
92
92
|
assert_match %r{http://google\.com}, error.message
|
93
93
|
end
|
94
94
|
|
data/test/unit/rule_test.rb
CHANGED
@@ -74,15 +74,15 @@ class PublicSuffix::RuleBaseTest < Test::Unit::TestCase
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def test_length
|
77
|
-
|
77
|
+
assert_raises(NotImplementedError) { @klass.new("com").length }
|
78
78
|
end
|
79
79
|
|
80
80
|
def test_parts
|
81
|
-
|
81
|
+
assert_raises(NotImplementedError) { @klass.new("com").parts }
|
82
82
|
end
|
83
83
|
|
84
84
|
def test_decompose
|
85
|
-
|
85
|
+
assert_raises(NotImplementedError) { @klass.new("com").decompose("google.com") }
|
86
86
|
end
|
87
87
|
|
88
88
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: public_suffix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simone Carletti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mocha
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: yard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: PublicSuffix can parse and decompose a domain name into top level domain,
|
@@ -59,16 +59,17 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gemtest
|
63
|
-
- .gitignore
|
64
|
-
- .
|
65
|
-
- .
|
62
|
+
- ".gemtest"
|
63
|
+
- ".gitignore"
|
64
|
+
- ".ruby-gemset"
|
65
|
+
- ".travis.yml"
|
66
|
+
- ".yardopts"
|
66
67
|
- CHANGELOG.md
|
67
68
|
- Gemfile
|
68
69
|
- LICENSE.txt
|
69
70
|
- README.md
|
70
71
|
- Rakefile
|
71
|
-
-
|
72
|
+
- data/definitions.txt
|
72
73
|
- lib/public_suffix.rb
|
73
74
|
- lib/public_suffix/domain.rb
|
74
75
|
- lib/public_suffix/errors.rb
|
@@ -93,17 +94,17 @@ require_paths:
|
|
93
94
|
- lib
|
94
95
|
required_ruby_version: !ruby/object:Gem::Requirement
|
95
96
|
requirements:
|
96
|
-
- -
|
97
|
+
- - ">="
|
97
98
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
99
|
+
version: '2.0'
|
99
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
101
|
requirements:
|
101
|
-
- -
|
102
|
+
- - ">="
|
102
103
|
- !ruby/object:Gem::Version
|
103
104
|
version: '0'
|
104
105
|
requirements: []
|
105
106
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.4.5
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
110
|
summary: Domain name parser based on the Public Suffix List.
|