diff --git a/run_tests.sh b/run_tests.sh
index 3a92df5..20c430c 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -86,7 +86,7 @@
     local missing_py_packages=false
     for py_lib in {coverage,mock};
     do
-        if ! pip list --format=legacy | grep $py_lib &> /dev/null; then
+        if ! pip list | grep $py_lib &> /dev/null; then
             echo "Missing required python package: $py_lib (pip install $py_lib)"
             missing_py_packages=true
         fi
diff --git a/setup/gcp_setup_runner_test.py b/setup/gcp_setup_runner_test.py
index 9f4a252..e125a10 100644
--- a/setup/gcp_setup_runner_test.py
+++ b/setup/gcp_setup_runner_test.py
@@ -242,12 +242,14 @@
         self.gcp_env_runner._CreateStableHostImage()
         self.assertEqual(mock_update.call_count, 1)
 
+    @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_CheckBillingEnable")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_NeedProjectSetup")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_SetupStorageBucket")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_SetupClientIDSecret")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_UpdateProject")
     def testSetupProjectNoChange(self, mock_setproj, mock_setid,
-                                 mock_setstorage, mock_chkproj):
+                                 mock_setstorage, mock_chkproj,
+                                 mock_check_billing):
         """test setup project and project not be changed."""
         # Test project didn't change, and no need to setup client id/secret
         mock_chkproj.return_value = False
@@ -256,18 +258,22 @@
         self.assertEqual(mock_setproj.call_count, 0)
         self.assertEqual(mock_setid.call_count, 0)
         mock_setstorage.assert_called_once()
+        mock_check_billing.assert_called_once()
         # Test project didn't change, but client_id is empty
         self.gcp_env_runner.client_id = ""
         self.gcp_env_runner._SetupProject(self.gcloud_runner)
         self.assertEqual(mock_setproj.call_count, 0)
         mock_setid.assert_called_once()
+        self.assertEqual(mock_check_billing.call_count, 2)
 
+    @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_CheckBillingEnable")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_NeedProjectSetup")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_SetupStorageBucket")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_SetupClientIDSecret")
     @mock.patch.object(gcp_setup_runner.GcpTaskRunner, "_UpdateProject")
     def testSetupProjectChanged(self, mock_setproj, mock_setid,
-                                mock_setstorage, mock_chkproj):
+                                mock_setstorage, mock_chkproj,
+                                mock_check_billing):
         """test setup project when project changed."""
         mock_chkproj.return_value = True
         mock_setproj.return_value = True
@@ -275,6 +281,7 @@
         mock_setproj.assert_called_once()
         mock_setid.assert_called_once()
         mock_setstorage.assert_called_once()
+        mock_check_billing.assert_called_once()
 
     @mock.patch.object(utils, "GetUserAnswerYes")
     def testNeedProjectSetup(self, mock_ans):
