ryodo 0.3.0 → 0.3.1

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.
@@ -1,7 +1,8 @@
1
1
  require "ryodo/suffix_list_fetcher"
2
2
  require "spec_helper"
3
3
 
4
- describe Ryodo::SuffixListFetcher do
4
+ RSpec.describe Ryodo::SuffixListFetcher do
5
+ subject { described_class }
5
6
  let(:custom_uri) { "http://custom.suffix.list.example.com/foo-bar.dat" }
6
7
  let(:custom_storage) { "#{RYODO_TMP_ROOT}/custom-storage-path.dat" }
7
8
 
@@ -12,21 +13,21 @@ describe Ryodo::SuffixListFetcher do
12
13
  end
13
14
 
14
15
  it "#new creates a new instance with predefined vars" do
15
- fetcher = described_class.new
16
+ fetcher = subject.new
16
17
 
17
18
  expect(fetcher.instance_variable_get("@uri")).to eq URI(Ryodo::PUBLIC_SUFFIX_DATA_URI)
18
19
  expect(fetcher.instance_variable_get("@store")).to be Ryodo::PUBLIC_SUFFIX_STORE
19
20
  end
20
21
 
21
22
  it "#new creates a new instance with custom vars" do
22
- fetcher = described_class.new(custom_uri, custom_storage)
23
+ fetcher = subject.new(custom_uri, custom_storage)
23
24
 
24
25
  expect(fetcher.instance_variable_get("@uri")).to eq URI(custom_uri)
25
26
  expect(fetcher.instance_variable_get("@store")).to be custom_storage
26
27
  end
27
28
 
28
29
  context "data retrieval and storage" do
29
- let(:fetcher) { described_class.new }
30
+ let(:fetcher) { subject.new }
30
31
 
31
32
  it "#fetch_data retrieves remote data" do
32
33
  first_line = /This Source Code Form is subject to the terms of the Mozilla Public/
@@ -58,11 +59,11 @@ describe Ryodo::SuffixListFetcher do
58
59
  let(:storage) { "#{RYODO_TMP_ROOT}/suffixes.dat" }
59
60
 
60
61
  it "and returns true if successful" do
61
- expect(described_class.fetch_and_save!(valid_uri, storage)).to be true
62
+ expect(subject.fetch_and_save!(valid_uri, storage)).to be true
62
63
  end
63
64
 
64
65
  it "and returns false if something failed" do
65
- expect(described_class.fetch_and_save!(invalid_uri, storage)).to be false
66
+ expect(subject.fetch_and_save!(invalid_uri, storage)).to be false
66
67
  end
67
68
  end
68
69
  end
@@ -1,46 +1,45 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Ryodo::SuffixList do
4
- context "singleton" do
3
+ RSpec.describe Ryodo::SuffixList do
4
+ subject { described_class }
5
5
 
6
+ context "singleton" do
6
7
  it "cannot be instanciated via #new" do
7
- expect{ described_class.new }.to raise_error
8
+ expect { subject.new }.to raise_error
8
9
  end
9
10
 
10
11
  it "creates instance by calling the class itself" do
11
- described_class.should_receive(:instance)
12
- described_class.send(:"SuffixList")
12
+ expect(subject).to receive(:instance)
13
+ subject.send(:"SuffixList")
13
14
  end
14
15
 
15
16
  it "has .instance" do
16
- expect(described_class.methods).to include(:instance)
17
+ expect(subject.methods).to include(:instance)
17
18
  end
18
19
 
19
20
  it "instance check" do
20
- o1 = described_class.instance
21
- o2 = described_class.instance
21
+ o1 = subject.instance
22
+ o2 = subject.instance
22
23
 
23
- expect(o1).to be o2
24
+ expect(o1).to be(o2)
24
25
  end
25
26
  end
26
27
 
27
28
  context "methods" do
28
- let(:described_instance) { described_class.instance }
29
+ let(:described_instance) { subject.instance }
29
30
 
30
31
  it ".reload can retrieve a fresh suffix list" do
31
32
  expect(described_instance).to receive(:load_file).and_return(true)
32
- described_class.reload
33
+ subject.reload
33
34
  end
34
35
 
35
36
  it ".reload fails if given file doesn't exist" do
36
- expect { described_class.reload("#{RYODO_TMP_ROOT}/invalid-file.dat") }.to raise_error
37
+ expect { subject.reload("#{RYODO_TMP_ROOT}/invalid-file.dat") }.to raise_error
37
38
  end
38
39
 
39
40
  it ".list returns an array of arrays" do
40
- expect(described_class.list).to be_an(Array)
41
- expect(
42
- described_class.list.all? { |e| e.is_a?(Array) }
43
- ).to be true
41
+ expect(subject.list).to be_an(Array)
42
+ expect(subject.list.all? { |e| e.is_a?(Array) }).to be(true)
44
43
  end
45
44
  end
46
45
  end
@@ -1,5 +1,13 @@
1
- require "coveralls"
2
- Coveralls.wear!
1
+ if ENV["TRAVIS"] || ENV["CI"]
2
+ require "codeclimate-test-reporter"
3
+ require "coveralls"
4
+
5
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
+ Coveralls::SimpleCov::Formatter,
7
+ CodeClimate::TestReporter::Formatter
8
+ ]
9
+ SimpleCov.start
10
+ end
3
11
 
4
12
  require "fileutils"
5
13
  require "fakeweb"
@@ -9,16 +17,17 @@ require "ryodo"
9
17
  RYODO_SPEC_ROOT = File.expand_path("..", __FILE__)
10
18
  RYODO_TMP_ROOT = File.expand_path("../../tmp/spec", __FILE__)
11
19
 
12
- FileUtils.mkdir_p RYODO_TMP_ROOT unless File.exists?(RYODO_TMP_ROOT)
20
+ FileUtils.mkdir_p RYODO_TMP_ROOT unless File.exist?(RYODO_TMP_ROOT)
13
21
 
14
- FakeWeb.register_uri(:get,
22
+ FakeWeb.register_uri(
23
+ :get,
15
24
  Ryodo::PUBLIC_SUFFIX_DATA_URI,
16
- :body => File.read("#{RYODO_SPEC_ROOT}/_files/mozilla_effective_tld_names.dat")
25
+ body: File.read("#{RYODO_SPEC_ROOT}/_files/mozilla_effective_tld_names.dat")
17
26
  )
18
27
 
19
28
  FakeWeb.register_uri(
20
29
  :get,
21
30
  "#{Ryodo::PUBLIC_SUFFIX_DATA_URI}&invalid_file",
22
- :body => "Oops!",
23
- :status => [404,"Not Found"]
31
+ body: "Oops!",
32
+ status: [404, "Not Found"]
24
33
  )
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH << "lib"
3
+ require "ryodo"
4
+
5
+ module SuffixChecker
6
+ module_function
7
+
8
+ def check_public_suffix(query, expectation)
9
+ query = Ryodo.parse(query)
10
+ calculated = query.domain.nil? ? "NULL" : query.domain
11
+ result = calculated == expectation
12
+ passed = result ? " OK" : "FAIL"
13
+
14
+ puts "#{passed} === Q: #{query.ljust(26)} | #{expectation.rjust(16)} <=> #{calculated.ljust(16)}"
15
+
16
+ result
17
+ end
18
+
19
+ def run!
20
+ results = []
21
+
22
+ # Following test data can be found at:
23
+ # <http://mxr.mozilla.org/mozilla-central/source/netwerk/test/unit/data/test_psl.txt?raw=1>
24
+
25
+ # NULL input.
26
+ results << check_public_suffix("NULL", "NULL")
27
+ # Mixed case.
28
+ results << check_public_suffix("COM", "NULL")
29
+ results << check_public_suffix("example.COM", "example.com")
30
+ results << check_public_suffix("WwW.example.COM", "example.com")
31
+ # Leading dot.
32
+ results << check_public_suffix(".com", "NULL")
33
+ results << check_public_suffix(".example", "NULL")
34
+ results << check_public_suffix(".example.com", "NULL")
35
+ results << check_public_suffix(".example.example", "NULL")
36
+ # Unlisted TLD.
37
+ results << check_public_suffix("example", "NULL")
38
+ results << check_public_suffix("example.example", "example.example")
39
+ results << check_public_suffix("b.example.example", "example.example")
40
+ results << check_public_suffix("a.b.example.example", "example.example")
41
+ # Listed, but non-Internet, TLD.
42
+ # results << check_public_suffix('local', 'NULL')
43
+ # results << check_public_suffix('example.local', 'NULL')
44
+ # results << check_public_suffix('b.example.local', 'NULL')
45
+ # results << check_public_suffix('a.b.example.local', 'NULL')
46
+ # TLD with only 1 rule.
47
+ results << check_public_suffix("biz", "NULL")
48
+ results << check_public_suffix("domain.biz", "domain.biz")
49
+ results << check_public_suffix("b.domain.biz", "domain.biz")
50
+ results << check_public_suffix("a.b.domain.biz", "domain.biz")
51
+ # TLD with some 2-level rules.
52
+ results << check_public_suffix("com", "NULL")
53
+ results << check_public_suffix("example.com", "example.com")
54
+ results << check_public_suffix("b.example.com", "example.com")
55
+ results << check_public_suffix("a.b.example.com", "example.com")
56
+ results << check_public_suffix("uk.com", "NULL")
57
+ results << check_public_suffix("example.uk.com", "example.uk.com")
58
+ results << check_public_suffix("b.example.uk.com", "example.uk.com")
59
+ results << check_public_suffix("a.b.example.uk.com", "example.uk.com")
60
+ results << check_public_suffix("test.ac", "test.ac")
61
+ # TLD with only 1 (wildcard) rule.
62
+ results << check_public_suffix("cy", "NULL")
63
+ results << check_public_suffix("c.cy", "NULL")
64
+ results << check_public_suffix("b.c.cy", "b.c.cy")
65
+ results << check_public_suffix("a.b.c.cy", "b.c.cy")
66
+ # More complex TLD.
67
+ results << check_public_suffix("jp", "NULL")
68
+ results << check_public_suffix("test.jp", "test.jp")
69
+ results << check_public_suffix("www.test.jp", "test.jp")
70
+ results << check_public_suffix("ac.jp", "NULL")
71
+ results << check_public_suffix("test.ac.jp", "test.ac.jp")
72
+ results << check_public_suffix("www.test.ac.jp", "test.ac.jp")
73
+ results << check_public_suffix("kyoto.jp", "NULL")
74
+ results << check_public_suffix("test.kyoto.jp", "test.kyoto.jp")
75
+ results << check_public_suffix("ide.kyoto.jp", "NULL")
76
+ results << check_public_suffix("b.ide.kyoto.jp", "b.ide.kyoto.jp")
77
+ results << check_public_suffix("a.b.ide.kyoto.jp", "b.ide.kyoto.jp")
78
+ results << check_public_suffix("c.kobe.jp", "NULL")
79
+ results << check_public_suffix("b.c.kobe.jp", "b.c.kobe.jp")
80
+ results << check_public_suffix("a.b.c.kobe.jp", "b.c.kobe.jp")
81
+ results << check_public_suffix("city.kobe.jp", "city.kobe.jp")
82
+ results << check_public_suffix("www.city.kobe.jp", "city.kobe.jp")
83
+ # TLD with a wildcard rule and exceptions.
84
+ results << check_public_suffix("ck", "NULL")
85
+ results << check_public_suffix("test.ck", "NULL")
86
+ results << check_public_suffix("b.test.ck", "b.test.ck")
87
+ results << check_public_suffix("a.b.test.ck", "b.test.ck")
88
+ results << check_public_suffix("www.ck", "www.ck")
89
+ results << check_public_suffix("www.www.ck", "www.ck")
90
+ # US K12.
91
+ results << check_public_suffix("us", "NULL")
92
+ results << check_public_suffix("test.us", "test.us")
93
+ results << check_public_suffix("www.test.us", "test.us")
94
+ results << check_public_suffix("ak.us", "NULL")
95
+ results << check_public_suffix("test.ak.us", "test.ak.us")
96
+ results << check_public_suffix("www.test.ak.us", "test.ak.us")
97
+ results << check_public_suffix("k12.ak.us", "NULL")
98
+ results << check_public_suffix("test.k12.ak.us", "test.k12.ak.us")
99
+ results << check_public_suffix("www.test.k12.ak.us", "test.k12.ak.us")
100
+ # IDN labels.
101
+ results << check_public_suffix("食狮.com.cn", "食狮.com.cn")
102
+ results << check_public_suffix("食狮.公司.cn", "食狮.公司.cn")
103
+ results << check_public_suffix("www.食狮.公司.cn", "食狮.公司.cn")
104
+ results << check_public_suffix("shishi.公司.cn", "shishi.公司.cn")
105
+ results << check_public_suffix("公司.cn", "NULL")
106
+ results << check_public_suffix("食狮.中国", "食狮.中国")
107
+ results << check_public_suffix("www.食狮.中国", "食狮.中国")
108
+ results << check_public_suffix("shishi.中国", "shishi.中国")
109
+ results << check_public_suffix("中国", "NULL")
110
+ # Same as above, but punycoded.
111
+ results << check_public_suffix('xn--85x722f.com.cn', 'xn--85x722f.com.cn')
112
+ # results << check_public_suffix('xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn')
113
+ # results << check_public_suffix('www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn')
114
+ # results << check_public_suffix('shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn')
115
+ # results << check_public_suffix('xn--55qx5d.cn', 'NULL')
116
+ # results << check_public_suffix('xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s')
117
+ # results << check_public_suffix('www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s')
118
+ # results << check_public_suffix('shishi.xn--fiqs8s', 'shishi.xn--fiqs8s')
119
+ results << check_public_suffix('xn--fiqs8s', 'NULL')
120
+
121
+ exit_code = results.all? ? 0 : 1
122
+ case exit_code
123
+ when 0 then puts "All okay! ✔"
124
+ when 1 then puts "Some checks failed! ✘"
125
+ end
126
+ exit(exit_code)
127
+ end
128
+ end
129
+
130
+ SuffixChecker.run!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ryodo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Grabo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-26 00:00:00.000000000 Z
11
+ date: 2015-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -28,44 +28,30 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.5'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.5'
41
- - !ruby/object:Gem::Dependency
42
- name: coveralls
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: 0.7.1
33
+ version: '0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: 0.7.1
40
+ version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rspec
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: 3.1.0
47
+ version: 3.2.0
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: 3.1.0
54
+ version: 3.2.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: fakeweb
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -118,13 +104,13 @@ extra_rdoc_files: []
118
104
  files:
119
105
  - ".gitignore"
120
106
  - ".rspec"
107
+ - ".rubocop.yml"
121
108
  - ".travis.yml"
122
109
  - Gemfile
123
110
  - Gemfile.lock
124
111
  - LICENSE
125
112
  - README.md
126
113
  - Rakefile
127
- - checks/matching.rb
128
114
  - data/suffix.dat
129
115
  - lib/ryodo.rb
130
116
  - lib/ryodo/convenience.rb
@@ -143,8 +129,8 @@ files:
143
129
  - spec/_files/mozilla_effective_tld_names.dat
144
130
  - spec/ryodo/suffix_list_fetcher_spec.rb
145
131
  - spec/ryodo/suffix_list_spec.rb
146
- - spec/ryodo_spec.rb
147
132
  - spec/spec_helper.rb
133
+ - spec/suffix_checker.rb
148
134
  homepage: http://github.com/asaaki/ryodo
149
135
  licenses:
150
136
  - MIT
@@ -165,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
151
  version: '0'
166
152
  requirements: []
167
153
  rubyforge_project:
168
- rubygems_version: 2.2.2
154
+ rubygems_version: 2.4.5
169
155
  signing_key:
170
156
  specification_version: 4
171
157
  summary: ryōdo【領土】 りょうど — A domain name parser using public suffix list
@@ -173,6 +159,6 @@ test_files:
173
159
  - spec/_files/mozilla_effective_tld_names.dat
174
160
  - spec/ryodo/suffix_list_fetcher_spec.rb
175
161
  - spec/ryodo/suffix_list_spec.rb
176
- - spec/ryodo_spec.rb
177
162
  - spec/spec_helper.rb
163
+ - spec/suffix_checker.rb
178
164
  has_rdoc:
@@ -1,107 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH << "lib"
3
- require "ryodo"
4
-
5
- def checkPublicSuffix(query, expectation)
6
- query = Ryodo[query]
7
- calculated = query.domain.nil? ? "NULL" : query.domain
8
- passed = calculated == expectation ? " OK" : "FAIL"
9
-
10
- puts "#{passed} === Q: #{query.ljust(26)} | #{expectation.rjust(16)} <=> #{calculated.ljust(16)}"
11
- end
12
-
13
- # NULL input.
14
- checkPublicSuffix('NULL', 'NULL')
15
- # Mixed case.
16
- checkPublicSuffix('COM', 'NULL')
17
- checkPublicSuffix('example.COM', 'example.com')
18
- checkPublicSuffix('WwW.example.COM', 'example.com')
19
- # Leading dot.
20
- checkPublicSuffix('.com', 'NULL')
21
- checkPublicSuffix('.example', 'NULL')
22
- checkPublicSuffix('.example.com', 'NULL')
23
- checkPublicSuffix('.example.example', 'NULL')
24
- # Unlisted TLD.
25
- checkPublicSuffix('example', 'NULL')
26
- checkPublicSuffix('example.example', 'example.example')
27
- checkPublicSuffix('b.example.example', 'example.example')
28
- checkPublicSuffix('a.b.example.example', 'example.example')
29
- # Listed, but non-Internet, TLD.
30
- #checkPublicSuffix('local', 'NULL')
31
- #checkPublicSuffix('example.local', 'NULL')
32
- #checkPublicSuffix('b.example.local', 'NULL')
33
- #checkPublicSuffix('a.b.example.local', 'NULL')
34
- # TLD with only 1 rule.
35
- checkPublicSuffix('biz', 'NULL')
36
- checkPublicSuffix('domain.biz', 'domain.biz')
37
- checkPublicSuffix('b.domain.biz', 'domain.biz')
38
- checkPublicSuffix('a.b.domain.biz', 'domain.biz')
39
- # TLD with some 2-level rules.
40
- checkPublicSuffix('com', 'NULL')
41
- checkPublicSuffix('example.com', 'example.com')
42
- checkPublicSuffix('b.example.com', 'example.com')
43
- checkPublicSuffix('a.b.example.com', 'example.com')
44
- checkPublicSuffix('uk.com', 'NULL')
45
- checkPublicSuffix('example.uk.com', 'example.uk.com')
46
- checkPublicSuffix('b.example.uk.com', 'example.uk.com')
47
- checkPublicSuffix('a.b.example.uk.com', 'example.uk.com')
48
- checkPublicSuffix('test.ac', 'test.ac')
49
- # TLD with only 1 (wildcard) rule.
50
- checkPublicSuffix('cy', 'NULL')
51
- checkPublicSuffix('c.cy', 'NULL')
52
- checkPublicSuffix('b.c.cy', 'b.c.cy')
53
- checkPublicSuffix('a.b.c.cy', 'b.c.cy')
54
- # More complex TLD.
55
- checkPublicSuffix('jp', 'NULL')
56
- checkPublicSuffix('test.jp', 'test.jp')
57
- checkPublicSuffix('www.test.jp', 'test.jp')
58
- checkPublicSuffix('ac.jp', 'NULL')
59
- checkPublicSuffix('test.ac.jp', 'test.ac.jp')
60
- checkPublicSuffix('www.test.ac.jp', 'test.ac.jp')
61
- checkPublicSuffix('kyoto.jp', 'NULL')
62
- checkPublicSuffix('test.kyoto.jp', 'test.kyoto.jp')
63
- checkPublicSuffix('ide.kyoto.jp', 'NULL')
64
- checkPublicSuffix('b.ide.kyoto.jp', 'b.ide.kyoto.jp')
65
- checkPublicSuffix('a.b.ide.kyoto.jp', 'b.ide.kyoto.jp')
66
- checkPublicSuffix('c.kobe.jp', 'NULL')
67
- checkPublicSuffix('b.c.kobe.jp', 'b.c.kobe.jp')
68
- checkPublicSuffix('a.b.c.kobe.jp', 'b.c.kobe.jp')
69
- checkPublicSuffix('city.kobe.jp', 'city.kobe.jp')
70
- checkPublicSuffix('www.city.kobe.jp', 'city.kobe.jp')
71
- # TLD with a wildcard rule and exceptions.
72
- checkPublicSuffix('ck', 'NULL')
73
- checkPublicSuffix('test.ck', 'NULL')
74
- checkPublicSuffix('b.test.ck', 'b.test.ck')
75
- checkPublicSuffix('a.b.test.ck', 'b.test.ck')
76
- checkPublicSuffix('www.ck', 'www.ck')
77
- checkPublicSuffix('www.www.ck', 'www.ck')
78
- # US K12.
79
- checkPublicSuffix('us', 'NULL')
80
- checkPublicSuffix('test.us', 'test.us')
81
- checkPublicSuffix('www.test.us', 'test.us')
82
- checkPublicSuffix('ak.us', 'NULL')
83
- checkPublicSuffix('test.ak.us', 'test.ak.us')
84
- checkPublicSuffix('www.test.ak.us', 'test.ak.us')
85
- checkPublicSuffix('k12.ak.us', 'NULL')
86
- checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us')
87
- checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us')
88
- # IDN labels.
89
- checkPublicSuffix('食狮.com.cn', '食狮.com.cn')
90
- checkPublicSuffix('食狮.公司.cn', '食狮.公司.cn')
91
- checkPublicSuffix('www.食狮.公司.cn', '食狮.公司.cn')
92
- checkPublicSuffix('shishi.公司.cn', 'shishi.公司.cn')
93
- checkPublicSuffix('公司.cn', 'NULL')
94
- checkPublicSuffix('食狮.中国', '食狮.中国')
95
- checkPublicSuffix('www.食狮.中国', '食狮.中国')
96
- checkPublicSuffix('shishi.中国', 'shishi.中国')
97
- checkPublicSuffix('中国', 'NULL')
98
- # Same as above, but punycoded.
99
- # checkPublicSuffix('xn--85x722f.com.cn', 'xn--85x722f.com.cn')
100
- # checkPublicSuffix('xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn')
101
- # checkPublicSuffix('www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn')
102
- # checkPublicSuffix('shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn')
103
- # checkPublicSuffix('xn--55qx5d.cn', 'NULL')
104
- # checkPublicSuffix('xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s')
105
- # checkPublicSuffix('www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s')
106
- # checkPublicSuffix('shishi.xn--fiqs8s', 'shishi.xn--fiqs8s')
107
- # checkPublicSuffix('xn--fiqs8s', 'NULL')