Bug 1315869 - gtestify security/manager/ssl/tests/compiled/*.cpp. r=cykesiopka.
authorNicholas Nethercote <nnethercote@mozilla.com>
Tue, 08 Nov 2016 15:37:06 +1100
changeset 365158 ae039aa6accf827582bf6d3fbee5760d5950e88e
parent 365157 556c13784a9c6704cc7a6a4fa9bda2d44ada96d8
child 365159 63cafb0c2f0ff94ef9a9b99fad972566b6847cb2
push id6795
push userjlund@mozilla.com
push dateMon, 23 Jan 2017 14:19:46 +0000
treeherdermozilla-beta@76101b503191 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerscykesiopka
bugs1315869
milestone52.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1315869 - gtestify security/manager/ssl/tests/compiled/*.cpp. r=cykesiopka.
security/manager/ssl/tests/compiled/TestCertDB.cpp
security/manager/ssl/tests/compiled/TestSTSParser.cpp
security/manager/ssl/tests/compiled/moz.build
security/manager/ssl/tests/gtest/CertDBTest.cpp
security/manager/ssl/tests/gtest/STSParserTest.cpp
security/manager/ssl/tests/gtest/moz.build
security/manager/ssl/tests/moz.build
testing/cppunittest.ini
deleted file mode 100644
--- a/security/manager/ssl/tests/compiled/moz.build
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-CppUnitTests([
-    'TestSTSParser',
-])
-
-GeckoCppUnitTests([
-    'TestCertDB',
-])
-
-USE_LIBS += [
-    'nss',
-]
-
-DEFINES['CERT_AddTempCertToPerm'] = '__CERT_AddTempCertToPerm'
rename from security/manager/ssl/tests/compiled/TestCertDB.cpp
rename to security/manager/ssl/tests/gtest/CertDBTest.cpp
--- a/security/manager/ssl/tests/compiled/TestCertDB.cpp
+++ b/security/manager/ssl/tests/gtest/CertDBTest.cpp
@@ -1,83 +1,60 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "TestHarness.h"
+#include "gtest/gtest.h"
 #include "nsCOMPtr.h"
 #include "nsIPrefService.h"
 #include "nsISimpleEnumerator.h"
 #include "nsIX509Cert.h"
 #include "nsIX509CertDB.h"
 #include "nsIX509CertList.h"
 #include "nsServiceManagerUtils.h"
 
-int
-main(int argc, char* argv[])
+TEST(psm_CertDB, Test)
 {
-  ScopedXPCOM xpcom("TestCertDB");
-  if (xpcom.failed()) {
-    fail("couldn't initialize XPCOM");
-    return 1;
-  }
   {
     nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
-    if (!prefs) {
-      fail("couldn't get nsIPrefBranch");
-      return 1;
-    }
+    ASSERT_TRUE(prefs) << "couldn't get nsIPrefBranch";
+
     // When PSM initializes, it attempts to get some localized strings.
     // As a result, Android flips out if this isn't set.
     nsresult rv = prefs->SetBoolPref("intl.locale.matchOS", true);
-    if (NS_FAILED(rv)) {
-      fail("couldn't set pref 'intl.locale.matchOS'");
-      return 1;
-    }
+    ASSERT_TRUE(NS_SUCCEEDED(rv)) << "couldn't set pref 'intl.locale.matchOS'";
+
     nsCOMPtr<nsIX509CertDB> certdb(do_GetService(NS_X509CERTDB_CONTRACTID));
-    if (!certdb) {
-      fail("couldn't get certdb");
-      return 1;
-    }
+    ASSERT_TRUE(certdb) << "couldn't get certdb";
+
     nsCOMPtr<nsIX509CertList> certList;
     rv = certdb->GetCerts(getter_AddRefs(certList));
-    if (NS_FAILED(rv)) {
-      fail("couldn't get list of certificates");
-      return 1;
-    }
+    ASSERT_TRUE(NS_SUCCEEDED(rv)) << "couldn't get list of certificates";
+
     nsCOMPtr<nsISimpleEnumerator> enumerator;
     rv = certList->GetEnumerator(getter_AddRefs(enumerator));
-    if (NS_FAILED(rv)) {
-      fail("couldn't enumerate certificate list");
-      return 1;
-    }
+    ASSERT_TRUE(NS_SUCCEEDED(rv)) << "couldn't enumerate certificate list";
+
     bool foundBuiltIn = false;
     bool hasMore = false;
     while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMore)) && hasMore) {
       nsCOMPtr<nsISupports> supports;
-      if (NS_FAILED(enumerator->GetNext(getter_AddRefs(supports)))) {
-        fail("couldn't get next certificate");
-        return 1;
-      }
+      ASSERT_TRUE(NS_SUCCEEDED(enumerator->GetNext(getter_AddRefs(supports))))
+        << "couldn't get next certificate";
+
       nsCOMPtr<nsIX509Cert> cert(do_QueryInterface(supports));
-      if (!cert) {
-        fail("couldn't QI to nsIX509Cert");
-        return 1;
-      }
-      if (NS_FAILED(cert->GetIsBuiltInRoot(&foundBuiltIn))) {
-        fail("GetIsBuiltInRoot failed");
-        return 1;
-      }
+      ASSERT_TRUE(cert) << "couldn't QI to nsIX509Cert";
+
+      ASSERT_TRUE(NS_SUCCEEDED(cert->GetIsBuiltInRoot(&foundBuiltIn))) <<
+        "GetIsBuiltInRoot failed";
+
       if (foundBuiltIn) {
         break;
       }
     }
-    if (foundBuiltIn) {
-      passed("successfully loaded at least one built-in certificate");
-    } else {
-      fail("didn't load any built-in certificates");
-      return 1;
-    }
+
+    ASSERT_TRUE(foundBuiltIn) << "didn't load any built-in certificates";
+
+    printf("successfully loaded at least one built-in certificate\n");
+
   } // this scopes the nsCOMPtrs
-  // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-  return 0;
 }
rename from security/manager/ssl/tests/compiled/TestSTSParser.cpp
rename to security/manager/ssl/tests/gtest/STSParserTest.cpp
--- a/security/manager/ssl/tests/compiled/TestSTSParser.cpp
+++ b/security/manager/ssl/tests/gtest/STSParserTest.cpp
@@ -1,189 +1,144 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "TestHarness.h"
 #include <stdio.h>
+
+#include "gtest/gtest.h"
 #include "nsNetUtil.h"
 #include "nsISiteSecurityService.h"
-
-#define EXPECT_SUCCESS(rv, ...) \
-  PR_BEGIN_MACRO \
-  if (NS_FAILED(rv)) { \
-    fail(__VA_ARGS__); \
-    return false; \
-  } \
-  PR_END_MACRO
-
+#include "nsIURI.h"
 
-#define EXPECT_FAILURE(rv, ...) \
-  PR_BEGIN_MACRO \
-  if (NS_SUCCEEDED(rv)) { \
-    fail(__VA_ARGS__); \
-    return false; \
-  } \
-  PR_END_MACRO
-
-#define REQUIRE_EQUAL(a, b, ...) \
-  PR_BEGIN_MACRO \
-  if (a != b) { \
-    fail(__VA_ARGS__); \
-    return false; \
-  } \
-  PR_END_MACRO
-
-bool
+void
 TestSuccess(const char* hdr, bool extraTokens,
             uint64_t expectedMaxAge, bool expectedIncludeSubdomains,
             nsISiteSecurityService* sss)
 {
   nsCOMPtr<nsIURI> dummyUri;
   nsresult rv = NS_NewURI(getter_AddRefs(dummyUri), "https://foo.com/bar.html");
-  EXPECT_SUCCESS(rv, "Failed to create URI");
+  ASSERT_TRUE(NS_SUCCEEDED(rv)) << "Failed to create URI";
 
   uint64_t maxAge = 0;
   bool includeSubdomains = false;
   rv = sss->UnsafeProcessHeader(nsISiteSecurityService::HEADER_HSTS, dummyUri,
                                 hdr, 0, &maxAge, &includeSubdomains, nullptr);
-  EXPECT_SUCCESS(rv, "Failed to process valid header: %s", hdr);
+  ASSERT_TRUE(NS_SUCCEEDED(rv)) << "Failed to process valid header: " << hdr;
 
-  REQUIRE_EQUAL(maxAge, expectedMaxAge, "Did not correctly parse maxAge");
-  REQUIRE_EQUAL(includeSubdomains, expectedIncludeSubdomains, "Did not correctly parse presence/absence of includeSubdomains");
+  ASSERT_EQ(maxAge, expectedMaxAge) << "Did not correctly parse maxAge";
+  EXPECT_EQ(includeSubdomains, expectedIncludeSubdomains) <<
+    "Did not correctly parse presence/absence of includeSubdomains";
 
   if (extraTokens) {
-    REQUIRE_EQUAL(rv, NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA,
-                  "Extra tokens were expected when parsing, but were not encountered.");
+    EXPECT_EQ(rv, NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA) <<
+      "Extra tokens were expected when parsing, but were not encountered.";
   } else {
-    REQUIRE_EQUAL(rv, NS_OK, "Unexpected tokens found during parsing.");
+    EXPECT_EQ(rv, NS_OK) << "Unexpected tokens found during parsing.";
   }
 
-  passed(hdr);
-  return true;
+  printf("%s\n", hdr);
 }
 
-bool TestFailure(const char* hdr,
+void TestFailure(const char* hdr,
                  nsISiteSecurityService* sss)
 {
   nsCOMPtr<nsIURI> dummyUri;
   nsresult rv = NS_NewURI(getter_AddRefs(dummyUri), "https://foo.com/bar.html");
-  EXPECT_SUCCESS(rv, "Failed to create URI");
+  ASSERT_TRUE(NS_SUCCEEDED(rv)) << "Failed to create URI";
 
   rv = sss->UnsafeProcessHeader(nsISiteSecurityService::HEADER_HSTS, dummyUri,
                                 hdr, 0, nullptr, nullptr, nullptr);
-  EXPECT_FAILURE(rv, "Parsed invalid header: %s", hdr);
-  passed(hdr);
-  return true;
+  ASSERT_TRUE(NS_FAILED(rv)) << "Parsed invalid header: " << hdr;
+
+  printf("%s\n", hdr);
 }
 
-
-int
-main(int32_t argc, char *argv[])
+TEST(psm_STSParser, Test)
 {
     nsresult rv;
-    ScopedXPCOM xpcom("STS Parser Tests");
-    if (xpcom.failed())
-      return -1;
-    // Initialize a profile folder to ensure a clean shutdown.
-    nsCOMPtr<nsIFile> profile = xpcom.GetProfileDirectory();
-    if (!profile) {
-      fail("Couldn't get the profile directory.");
-      return -1;
-    }
 
     // grab handle to the service
     nsCOMPtr<nsISiteSecurityService> sss;
     sss = do_GetService("@mozilla.org/ssservice;1", &rv);
-    NS_ENSURE_SUCCESS(rv, -1);
-
-    int rv0, rv1;
-
-    nsTArray<bool> rvs(24);
+    ASSERT_TRUE(NS_SUCCEEDED(rv));
 
     // *** parsing tests
     printf("*** Attempting to parse valid STS headers ...\n");
 
     // SHOULD SUCCEED:
-    rvs.AppendElement(TestSuccess("max-age=100", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("max-age  =100", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess(" max-age=100", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("max-age = 100 ", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("max-age = \"100\" ", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("max-age=\"100\"", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess(" max-age =\"100\" ", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("\tmax-age\t=\t\"100\"\t", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("max-age  =       100             ", false, 100, false, sss));
+    TestSuccess("max-age=100", false, 100, false, sss);
+    TestSuccess("max-age  =100", false, 100, false, sss);
+    TestSuccess(" max-age=100", false, 100, false, sss);
+    TestSuccess("max-age = 100 ", false, 100, false, sss);
+    TestSuccess("max-age = \"100\" ", false, 100, false, sss);
+    TestSuccess("max-age=\"100\"", false, 100, false, sss);
+    TestSuccess(" max-age =\"100\" ", false, 100, false, sss);
+    TestSuccess("\tmax-age\t=\t\"100\"\t", false, 100, false, sss);
+    TestSuccess("max-age  =       100             ", false, 100, false, sss);
 
-    rvs.AppendElement(TestSuccess("maX-aGe=100", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("MAX-age  =100", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("max-AGE=100", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("Max-Age = 100 ", false, 100, false, sss));
-    rvs.AppendElement(TestSuccess("MAX-AGE = 100 ", false, 100, false, sss));
+    TestSuccess("maX-aGe=100", false, 100, false, sss);
+    TestSuccess("MAX-age  =100", false, 100, false, sss);
+    TestSuccess("max-AGE=100", false, 100, false, sss);
+    TestSuccess("Max-Age = 100 ", false, 100, false, sss);
+    TestSuccess("MAX-AGE = 100 ", false, 100, false, sss);
 
-    rvs.AppendElement(TestSuccess("max-age=100;includeSubdomains", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("max-age=100\t; includeSubdomains", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess(" max-age=100; includeSubdomains", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("max-age = 100 ; includeSubdomains", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("max-age  =       100             ; includeSubdomains", false, 100, true, sss));
+    TestSuccess("max-age=100;includeSubdomains", false, 100, true, sss);
+    TestSuccess("max-age=100\t; includeSubdomains", false, 100, true, sss);
+    TestSuccess(" max-age=100; includeSubdomains", false, 100, true, sss);
+    TestSuccess("max-age = 100 ; includeSubdomains", false, 100, true, sss);
+    TestSuccess("max-age  =       100             ; includeSubdomains",
+                false, 100, true, sss);
 
-    rvs.AppendElement(TestSuccess("maX-aGe=100; includeSUBDOMAINS", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("MAX-age  =100; includeSubDomains", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("max-AGE=100; iNcLuDeSuBdoMaInS", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("Max-Age = 100; includesubdomains ", false, 100, true, sss));
-    rvs.AppendElement(TestSuccess("INCLUDESUBDOMAINS;MaX-AgE = 100 ", false, 100, true, sss));
+    TestSuccess("maX-aGe=100; includeSUBDOMAINS", false, 100, true, sss);
+    TestSuccess("MAX-age  =100; includeSubDomains", false, 100, true, sss);
+    TestSuccess("max-AGE=100; iNcLuDeSuBdoMaInS", false, 100, true, sss);
+    TestSuccess("Max-Age = 100; includesubdomains ", false, 100, true, sss);
+    TestSuccess("INCLUDESUBDOMAINS;MaX-AgE = 100 ", false, 100, true, sss);
     // Turns out, the actual directive is entirely optional (hence the
     // trailing semicolon)
-    rvs.AppendElement(TestSuccess("max-age=100;includeSubdomains;", true, 100, true, sss));
+    TestSuccess("max-age=100;includeSubdomains;", true, 100, true, sss);
 
     // these are weird tests, but are testing that some extended syntax is
     // still allowed (but it is ignored)
-    rvs.AppendElement(TestSuccess("max-age=100 ; includesubdomainsSomeStuff", true, 100, false, sss));
-    rvs.AppendElement(TestSuccess("\r\n\t\t    \tcompletelyUnrelated = foobar; max-age= 34520103    \t \t; alsoUnrelated;asIsThis;\tincludeSubdomains\t\t \t", true, 34520103, true, sss));
-    rvs.AppendElement(TestSuccess("max-age=100; unrelated=\"quoted \\\"thingy\\\"\"", true, 100, false, sss));
-
-    rv0 = rvs.Contains(false) ? 1 : 0;
-    if (rv0 == 0)
-      passed("Successfully Parsed STS headers with mixed case and LWS");
-
-    rvs.Clear();
+    TestSuccess("max-age=100 ; includesubdomainsSomeStuff",
+                true, 100, false, sss);
+    TestSuccess("\r\n\t\t    \tcompletelyUnrelated = foobar; max-age= 34520103"
+                "\t \t; alsoUnrelated;asIsThis;\tincludeSubdomains\t\t \t",
+                true, 34520103, true, sss);
+    TestSuccess("max-age=100; unrelated=\"quoted \\\"thingy\\\"\"",
+                true, 100, false, sss);
 
     // SHOULD FAIL:
-    printf("*** Attempting to parse invalid STS headers (should not parse)...\n");
+    printf("* Attempting to parse invalid STS headers (should not parse)...\n");
     // invalid max-ages
-    rvs.AppendElement(TestFailure("max-age", sss));
-    rvs.AppendElement(TestFailure("max-age ", sss));
-    rvs.AppendElement(TestFailure("max-age=p", sss));
-    rvs.AppendElement(TestFailure("max-age=*1p2", sss));
-    rvs.AppendElement(TestFailure("max-age=.20032", sss));
-    rvs.AppendElement(TestFailure("max-age=!20032", sss));
-    rvs.AppendElement(TestFailure("max-age==20032", sss));
+    TestFailure("max-age", sss);
+    TestFailure("max-age ", sss);
+    TestFailure("max-age=p", sss);
+    TestFailure("max-age=*1p2", sss);
+    TestFailure("max-age=.20032", sss);
+    TestFailure("max-age=!20032", sss);
+    TestFailure("max-age==20032", sss);
 
     // invalid headers
-    rvs.AppendElement(TestFailure("foobar", sss));
-    rvs.AppendElement(TestFailure("maxage=100", sss));
-    rvs.AppendElement(TestFailure("maxa-ge=100", sss));
-    rvs.AppendElement(TestFailure("max-ag=100", sss));
-    rvs.AppendElement(TestFailure("includesubdomains", sss));
-    rvs.AppendElement(TestFailure(";", sss));
-    rvs.AppendElement(TestFailure("max-age=\"100", sss));
+    TestFailure("foobar", sss);
+    TestFailure("maxage=100", sss);
+    TestFailure("maxa-ge=100", sss);
+    TestFailure("max-ag=100", sss);
+    TestFailure("includesubdomains", sss);
+    TestFailure(";", sss);
+    TestFailure("max-age=\"100", sss);
     // The max-age directive here doesn't conform to the spec, so it MUST
     // be ignored. Consequently, the REQUIRED max-age directive is not
     // present in this header, and so it is invalid.
-    rvs.AppendElement(TestFailure("max-age=100, max-age=200; includeSubdomains", sss));
-    rvs.AppendElement(TestFailure("max-age=100 includesubdomains", sss));
-    rvs.AppendElement(TestFailure("max-age=100 bar foo", sss));
-    rvs.AppendElement(TestFailure("max-age=100randomstuffhere", sss));
+    TestFailure("max-age=100, max-age=200; includeSubdomains", sss);
+    TestFailure("max-age=100 includesubdomains", sss);
+    TestFailure("max-age=100 bar foo", sss);
+    TestFailure("max-age=100randomstuffhere", sss);
     // All directives MUST appear only once in an STS header field.
-    rvs.AppendElement(TestFailure("max-age=100; max-age=200", sss));
-    rvs.AppendElement(TestFailure("includeSubdomains; max-age=200; includeSubdomains", sss));
-    rvs.AppendElement(TestFailure("max-age=200; includeSubdomains; includeSubdomains", sss));
+    TestFailure("max-age=100; max-age=200", sss);
+    TestFailure("includeSubdomains; max-age=200; includeSubdomains", sss);
+    TestFailure("max-age=200; includeSubdomains; includeSubdomains", sss);
     // The includeSubdomains directive is valueless.
-    rvs.AppendElement(TestFailure("max-age=100; includeSubdomains=unexpected", sss));
+    TestFailure("max-age=100; includeSubdomains=unexpected", sss);
     // LWS must have at least one space or horizontal tab
-    rvs.AppendElement(TestFailure("\r\nmax-age=200", sss));
-
-    rv1 = rvs.Contains(false) ? 1 : 0;
-    if (rv1 == 0)
-      passed("Avoided parsing invalid STS headers");
-
-    return (rv0 + rv1);
+    TestFailure("\r\nmax-age=200", sss);
 }
--- a/security/manager/ssl/tests/gtest/moz.build
+++ b/security/manager/ssl/tests/gtest/moz.build
@@ -1,19 +1,21 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 SOURCES += [
+    'CertDBTest.cpp',
     'DataStorageTest.cpp',
     'DeserializeCertTest.cpp',
     'MD4Test.cpp',
     'OCSPCacheTest.cpp',
+    'STSParserTest.cpp',
     'TLSIntoleranceTest.cpp',
 ]
 
 LOCAL_INCLUDES += [
     '/security/certverifier',
     '/security/manager/ssl',
     '/security/pkix/include',
     '/security/pkix/test/lib',
--- a/security/manager/ssl/tests/moz.build
+++ b/security/manager/ssl/tests/moz.build
@@ -6,16 +6,12 @@
 
 DIRS += ['unit']
 
 TEST_DIRS += [
     'gtest',
     'mochitest',
 ]
 
-TEST_DIRS += [
-  'compiled',
-]
-
 XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
 
 if not CONFIG['MOZ_NO_SMART_CARDS']:
     XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell-smartcards.ini']
--- a/testing/cppunittest.ini
+++ b/testing/cppunittest.ini
@@ -3,17 +3,16 @@
 [TestArray]
 [TestArrayUtils]
 [TestAtomics]
 [TestBinarySearch]
 [TestBind]
 [TestBloomFilter]
 [TestCasting]
 [TestCeilingFloor]
-[TestCertDB]
 [TestCheckedInt]
 [TestCookie]
 [TestCountPopulation]
 [TestCountZeroes]
 [TestDllInterceptor]
 skip-if = os != 'win'
 [TestEndian]
 [TestEnumeratedArray]
@@ -35,17 +34,16 @@ skip-if = os == 'b2g'  #Bug 1038197
 [TestPair]
 [TestPoisonArea]
 skip-if = os == 'android' # Bug 1147630
 [TestRefPtr]
 [TestRollingMean]
 [TestScopeExit]
 [TestSegmentedVector]
 [TestSHA1]
-[TestSTSParser]
 [TestSaturate]
 [TestSplayTree]
 [TestStartupCache]
 skip-if = os == 'b2g' || os == 'android'  # Bug 929655
 support-files = TestStartupCacheTelemetry.js TestStartupCacheTelemetry.manifest
 [TestSyncRunnable]
 [TestTXMgr]
 skip-if = os == 'b2g'  #Bug 919595