/*
 * 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: "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 (ExcludedProxyTest) connect to a public webserver to check that the HTTP client works",
  result: EXEC_FAILED,
  names: [
    "com.android.org.apache.harmony.luni.tests.java.net.ExcludedProxyTest"
  ]
},
{
  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_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,
  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: [
      "org.apache.harmony.tests.api.javax.security.cert.X509CertificateTest#testVerifyPublicKey",
      "org.apache.harmony.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",
  modes: [device],
  names: [
      "org.apache.harmony.tests.java.lang.reflect.GenericSignatureFormatErrorTest#test_signatureFormatError"
  ]
},
{
  description: "Requires functional Support_Jetty",
  bug: 28535961,
  result: EXEC_FAILED,
  names: [
      "com.android.org.apache.harmony.luni.tests.java.net.URLClassLoaderTest"
  ]
},
{
  description: "Unable to execute Support_AvailTest",
  result: EXEC_FAILED,
  bug: 28535603,
  names: [
      "com.android.org.apache.harmony.luni.tests.internal.process.SystemProcessTest#test_interrupt"
  ]
}
]
