/*
 * This file contains expectations for tests that we'd like to eventually fix, but aren't urgent.
 */
[
{
  description: "libcore.java.io.OldFileTest#test_deleteOnExit fails on IRM05 mysid-user",
  name: "libcore.java.io.OldFileTest#test_deleteOnExit",
  bug: 5834665
},
{
  description: "libcore.java.net.URLConnectionTest#testServerShutdownInput fails on ICL27 mysid-userdebug (5534202 is caused by 5731252)",
  name: "libcore.java.net.URLConnectionTest#testServerShutdownInput",
  bug: 5534202
},
{
  description: "This test has been failing in our continuous build recently.",
  names: [
    "libcore.java.net.URLConnectionTest#testConnectTimeouts"
  ],
  bug: 3441111
},
{
  description: "We're retiring the security manager. Unfortunately, tests all over the place
                need to check that they're secure, so they all fail when we refuse to install
                a security manager. This suppresses all of these failures.",
  result: EXEC_FAILED,
  failure: "disable securityManager",
  pattern: ".*java.lang.SecurityException\\s+at java.lang.System.setSecurityManager.*",
  bug: 2585285
},
{
  description: "ignore compilation errors due to different available APIs",
  result: COMPILE_FAILED,
  failure: "ignore compilation errors",
  pattern: ".*\\.java:\\d+: cannot find symbol.*"
},
{
  description: "the average length of possible UTF-8 sequences is 2 bytes.",
  result: EXEC_FAILED,
  name: "org.apache.harmony.tests.java.nio.charset.UTFCharsetEncoderTest#testSpecificDefaultValue",
  substring: "junit.framework.AssertionFailedError: expected:<1.1> but was:<2.0>"
},
{
  description: "Some tests (ExcludedProxyTest) connect to a public webserver to check that the HTTP client works",
  result: EXEC_FAILED,
  failure: "connect to the Internet",
  pattern: ".*java.net.UnknownHostException:.*jcltest.apache.org.*"
},
{
  description: "Some tests depend on ICU data, which has changed. Others make assumptions about floating point rounding",
  result: EXEC_FAILED,
  names: [
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_BigDecimalExceptionOrder",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_DateTimeConversion",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionE",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionF",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_FloatConversionG",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_FloatDoubleBigDecimalExceptionOrder",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_GeneralConversionOther",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_LineSeparator",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_Percent",
    "org.apache.harmony.tests.java.util.FormatterTest#test_formatLjava_lang_String$Ljava_lang_Object_Width"
  ]
},
{
  description: "(Needs investigation) Some tests make assertions that don't make sense, others use broken port allocation logic.",
  result: EXEC_FAILED,
  names: [
    "org.apache.harmony.tests.java.net.Inet6AddressTest#test_getByNameLjava_lang_String",
    "org.apache.harmony.tests.java.net.InetAddressTest#test_equalsLjava_lang_Object",
    "org.apache.harmony.tests.java.net.InetAddressTest#test_getByNameLjava_lang_String",
    "org.apache.harmony.tests.java.net.InetAddressTest#test_isReachableLjava_net_NetworkInterfaceII_loopbackInterface"
  ]
},
{
  description: "(Needs investigation) Test failures from the harmony import of external/apache-harmony/archive",
  bug: 12189307,
  result: EXEC_FAILED,
  names: [
    "org.apache.harmony.tests.java.util.jar.ManifestTest#testNul",
    "org.apache.harmony.tests.java.util.jar.ManifestTest#testRead",
    "org.apache.harmony.tests.java.util.jar.ManifestTest#testStreamConstructor"
  ]
},
{
  description: "Potentially flakey because they rely on a specific local TCP port being free.",
  result: EXEC_FAILED,
  names: [
      "org.apache.harmony.tests.java.nio.channels.ServerSocketChannelTest#test_bind_explicitPort"
  ]
},
{
  description: "The ResourceBundle code under test is probably not used much on Android and needs a lot of attention.",
  modes: [device],
  bug: 13747957,
  result: EXEC_FAILED,
  names: [
      "org.apache.harmony.tests.java.util.ControlTest#test_needsReload_LStringLLocaleLStringLClassLoaderResourceBundleJ"
  ]
},
{
  description: "Fails in CTS, passes in CoreTestRunner.",
  result: EXEC_FAILED,
  modes: [device],
  names: [
      "org.apache.harmony.tests.java.net.URLConnection#test_getContentEncoding",
      "libcore.java.text.OldNumberFormatTest#test_parseLjava_lang_String",
      "libcore.java.nio.channels.OldSocketChannelTest#test_writeLjava_nio_ByteBuffer_Nonblocking_HugeData",
      "org.apache.harmony.tests.java.lang.ProcessManagerTest#testSleep",
      "libcore.java.security.cert.OldPKIXParametersTest#testPKIXParametersKeyStore04"
  ]
},
{
  description: "Suffers from DH slowness, disabling for now.",
  result: EXEC_FAILED,
  names: [
      "libcore.java.security.OldDHTest#testDHGen",
      "libcore.java.security.OldKeyPairGeneratorTestDH#testKeyPairGenerator",
      "libcore.javax.crypto.spec.KeyPairGeneratorTestDH#testKeyPairGenerator",
      "libcore.javax.crypto.spec.AlgorithmParametersTestDH#testAlgorithmParameters",
      "libcore.javax.crypto.spec.AlgorithmParameterGeneratorTestDH#testAlgorithmParameterGenerator"
  ]
},
{
  description: "Destroys MD5 provider, hurts succeeding tests",
  result: EXEC_FAILED,
  names: [
      "tests.api.javax.security.cert.X509CertificateTest#testVerifyPublicKey",
      "tests.api.javax.security.cert.X509CertificateTest#testVerifyPublicKeyString"
  ]
},
{
  description: "Suffers from side effect of other, currently unknown test",
  result: EXEC_FAILED,
  names: [
      "org.apache.harmony.luni.tests.internal.net.www.protocol.http.HttpURLConnectionTest#testProxyAuthorization"
  ]
},
{
  description: "Support_TestWebServer requires isolation.",
  result: EXEC_FAILED,
  names: [
      "libcore.java.net.OldURLClassLoaderTest#test_findResourceLjava_lang_String"
  ]
},
{
  description: "Causes OutOfMemoryError to test finalization",
  result: EXEC_FAILED,
  names: [
      "org.apache.harmony.tests.java.lang.ref.SoftReferenceTest#test_get_SoftReference",
      "org.apache.harmony.crypto.tests.javax.crypto#ExemptionMechanismTest#test_finalize"
  ]
},
{
  description: "Causes open dex file error",
  result: EXEC_FAILED,
  modes: [device],
  names: [
      "org.apache.harmony.tests.java.lang.reflect.GenericSignatureFormatErrorTest#test_signatureFormatError"
  ]
}
]
