-
-
Notifications
You must be signed in to change notification settings - Fork 111
/
Copy pathpsl_test.rb
49 lines (38 loc) · 1.38 KB
/
psl_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require "test_helper"
require "public_suffix"
# This test runs against the current PSL file and ensures
# the definitions satisfies the test suite.
class PslTest < Minitest::Unit::TestCase
ROOT = File.expand_path("../../", __FILE__)
# rubocop:disable Lint/Eval
def self.tests
File.readlines(File.join(ROOT, "test/tests.txt")).map do |line|
line = line.strip
next if line.empty?
next if line.start_with?("//")
input, output = line.split(", ")
# handle the case of eval("null"), it must be eval("nil")
input = "nil" if input == "null"
output = "nil" if output == "null"
input = eval(input)
output = eval(output)
[input, output]
end
end
# rubocop:enable
def test_valid
# Parse the PSL and run the tests
data = File.read(PublicSuffix::List::DEFAULT_LIST_PATH)
PublicSuffix::List.default = PublicSuffix::List.parse(data)
failures = []
self.class.tests.each do |input, output|
# Punycode domains are not supported ATM
next if input =~ /xn\-\-/
domain = PublicSuffix.domain(input) rescue nil
failures << [input, output, domain] if output != domain
end
message = "The following #{failures.size} tests fail:\n"
failures.each { |i, o, d| message += "Expected %s to be %s, got %s\n" % [i.inspect, o.inspect, d.inspect] }
assert_equal 0, failures.size, message
end
end