Sha256: 64feaac4ea97233460df3b137b112741cef201966769498736b58da238fef468

Contents?: true

Size: 1.42 KB

Versions: 24

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

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::Test

  ROOT = File.expand_path("..", __dir__)

  # rubocop:disable Security/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 Security/Eval


  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 += format("Expected %s to be %s, got %s\n", i.inspect, o.inspect, d.inspect) }
    assert_equal 0, failures.size, message
  end

end

Version data entries

24 entries across 24 versions & 8 rubygems

Version Path
direct7-0.0.18 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.3/test/psl_test.rb
direct7-0.0.17 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.3/test/psl_test.rb
direct7-0.0.16 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.3/test/psl_test.rb
direct7-0.0.13 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.3/test/psl_test.rb
direct7-0.0.12 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.3/test/psl_test.rb
direct7-0.0.11 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.3/test/psl_test.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/psl_test.rb
public_suffix-5.0.3 test/psl_test.rb
cloudsmith-api-2.0.7 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.6 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.5 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.4 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.3 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.2 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
fluent-plugin-google-cloud-logging-on-prem-0.1.0 vendor/ruby/3.1.0/gems/public_suffix-5.0.1/test/psl_test.rb
postfinancecheckout-ruby-sdk-3.3.0 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.1/test/psl_test.rb
wallee-ruby-sdk-3.3.0 vendor/bundle/ruby/2.7.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.1 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
cloudsmith-api-2.0.0 vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.1/test/psl_test.rb
public_suffix-5.0.1 test/psl_test.rb