Universal Acceptance: Conformance Testing of Librairies and Languages

Reference Documents

List of languages and libraries tested against Viagenie's test tool

Language Name Links Comments Assessment
Python idna Documentation Sources
  • L_A2US2: need to apply PR to pass all tests.

This library currently passes all tests except one which is fixed by the pull request.

Python encodings.idna Documentation Sources

This library is based on IDNA2003. We recommend to not use it nor fix it but use another library such as IDNA.

Python django Documentation Sources
  • H_ES4: Need to apply diff from this PR to pass all tests. Discussed in various tickets:

This library passes all tests but one, solved by the pull request.

Rust idna Documentation Sources

The main API implements IDNA from the WHATWG URL Standard. This API includes some specifics (eg. to keep Firefox compatibility) that makes it not fully compliant with the test suite. However, when using the underlying uts46 module it is possible to get better compliance with the test suite.

  • L_A2U and L_U2A: The uts46 module was tested using the following options:
    • use_std3_ascii_rules: true
    • transitional_processing: false
    • verify_dns_length: true

Tests show that the library let some characters (DISALLOWED or CONTEXTJ) pass through while invalid.

Java Commons Validator Documentation Sources

As the library validates TLD against IANA-recognized list, this library does not validate any syntactic-only checks defined in the test suite (eg. H_DNS and H_ES). In order to still execute the test suite and not be blocked by this check, the TLDs used in the various checks have been imported into the library using the updateTLDOverride() method. This will make eg. HDNS5 fails since the aim of the test is to ensure that checks are only syntactic.

This library passes all tests defined for H_ES. This library passes all tests but one for H_DNS.

Java ICU Documentation Sources
  • L_A2U and L_U2A: the following options were used for these test cases in getUTS46Instance(): IDNA.NONTRANSITIONAL_TO_ASCII | IDNA.NONTRANSITIONAL_TO_UNICODE | IDNA.CHECK_BIDI | IDNA.CHECK_CONTEXTJ | IDNA.CHECK_CONTEXTO | IDNA.USE_STD3_RULES.

Tests show that the library let some characters (DISALLOWED or CONTEXTJ) pass through while invalid.

Java JRE Documentation

Implements IDNA2003 only.

This library implements IDNA2003. We recommend not to use it nor fix it but use another library such as Guava or ICU.

Java Guava Documentation Sources
  • H_DNS3: This test is failling because the library accepts a domain name with no label separator.

This library passes all tests but one for H_DNS.

Test Results

Test results of the libraries and languages listed above from our automated testing tool.