Fix config test interaction with report_times.

In a config test, the scheduler is created without a config object.
Handle that case gracefully in the pipeline constructor.

Add a test that runs the configtest.

Change-Id: Id59b3194aff7b5347fa04fe1cc29b1069d2a3f7f
Reviewed-on: https://review.openstack.org/27585
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index 5578099..37526f4 100644
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -2071,3 +2071,8 @@
         assert B.data['status'] == 'MERGED'
         assert B.reported == 2
         self.assertEmptyQueues()
+
+    def test_test_config(self):
+        "Test that we can test the config"
+        sched = zuul.scheduler.Scheduler()
+        sched.testConfig(CONFIG.get('zuul', 'layout_config'))
diff --git a/zuul/scheduler.py b/zuul/scheduler.py
index 7abb803..0904f37 100644
--- a/zuul/scheduler.py
+++ b/zuul/scheduler.py
@@ -45,6 +45,7 @@
         self._stopped = False
         self.launcher = None
         self.trigger = None
+        self.config = None
 
         self.trigger_event_queue = Queue.Queue()
         self.result_event_queue = Queue.Queue()
@@ -508,7 +509,8 @@
         self.success_action = {}
         self.failure_action = {}
         self.start_action = {}
-        if self.sched.config.has_option('zuul', 'report_times'):
+        if self.sched.config and self.sched.config.has_option(
+            'zuul', 'report_times'):
             self.report_times = self.sched.config.getboolean(
                 'zuul', 'report_times')
         else: