diff --git a/test/core/end2end/end2end_nosec_tests.c b/test/core/end2end/end2end_nosec_tests.c
index 892b2f0..457c188 100644
--- a/test/core/end2end/end2end_nosec_tests.c
+++ b/test/core/end2end/end2end_nosec_tests.c
@@ -43,6 +43,8 @@
 
 static bool g_pre_init_called = false;
 
+extern void authority_not_supported(grpc_end2end_test_config config);
+extern void authority_not_supported_pre_init(void);
 extern void bad_hostname(grpc_end2end_test_config config);
 extern void bad_hostname_pre_init(void);
 extern void binary_metadata(grpc_end2end_test_config config);
@@ -131,12 +133,11 @@
 extern void streaming_error_response_pre_init(void);
 extern void trailing_metadata(grpc_end2end_test_config config);
 extern void trailing_metadata_pre_init(void);
-extern void authority_not_supported(grpc_end2end_test_config config);
-extern void authority_not_supported_pre_init(void);
 
 void grpc_end2end_tests_pre_init(void) {
   GPR_ASSERT(!g_pre_init_called);
   g_pre_init_called = true;
+  authority_not_supported_pre_init();
   bad_hostname_pre_init();
   binary_metadata_pre_init();
   cancel_after_accept_pre_init();
@@ -181,7 +182,6 @@
   simple_request_pre_init();
   streaming_error_response_pre_init();
   trailing_metadata_pre_init();
-  authority_not_supported_pre_init();
 }
 
 void grpc_end2end_tests(int argc, char **argv,
@@ -191,6 +191,7 @@
   GPR_ASSERT(g_pre_init_called);
 
   if (argc <= 1) {
+    authority_not_supported(config);
     bad_hostname(config);
     binary_metadata(config);
     cancel_after_accept(config);
@@ -235,11 +236,14 @@
     simple_request(config);
     streaming_error_response(config);
     trailing_metadata(config);
-    authority_not_supported(config);
     return;
   }
 
   for (i = 1; i < argc; i++) {
+    if (0 == strcmp("authority_not_supported", argv[i])) {
+      authority_not_supported(config);
+      continue;
+    }
     if (0 == strcmp("bad_hostname", argv[i])) {
       bad_hostname(config);
       continue;
@@ -416,10 +420,6 @@
       trailing_metadata(config);
       continue;
     }
-    if (0 == strcmp("authority_not_supported", argv[i])) {
-      authority_not_supported(config);
-      continue;
-    }
     gpr_log(GPR_DEBUG, "not a test: '%s'", argv[i]);
     abort();
   }
