diff --git a/tests/base.py b/tests/base.py
index 076a123..5e1befe 100755
--- a/tests/base.py
+++ b/tests/base.py
@@ -30,6 +30,7 @@
 import string
 import subprocess
 import swiftclient
+import tempfile
 import threading
 import time
 import urllib2
@@ -1361,4 +1362,17 @@
         raise Exception("Key %s not found in reported stats" % key)
 
     def getPipeline(self, name):
-        return self.sched.abide.tenants[0].layout.pipelines.get(name)
+        return self.sched.abide.tenants.values()[0].layout.pipelines.get(name)
+
+    def updateConfigLayout(self, path):
+        root = os.path.join(self.test_root, "config")
+        os.makedirs(root)
+        f = tempfile.NamedTemporaryFile(dir=root, delete=False)
+        f.write("""
+tenants:
+  - name: openstack
+    include:
+      - %s
+        """ % os.path.abspath(path))
+        f.close()
+        self.config.set('zuul', 'tenant_config', f.name)
diff --git a/tests/test_cloner.py b/tests/test_cloner.py
index 0c6d869..82d1812 100644
--- a/tests/test_cloner.py
+++ b/tests/test_cloner.py
@@ -42,8 +42,8 @@
         super(TestCloner, self).setUp()
         self.workspace_root = os.path.join(self.test_root, 'workspace')
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-cloner.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-cloner.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -506,8 +506,8 @@
     def test_periodic(self):
         self.worker.hold_jobs_in_build = True
         self.create_branch('org/project', 'stable/havana')
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-timer.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-timer.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -521,8 +521,8 @@
         self.worker.hold_jobs_in_build = False
         # Stop queuing timer triggered jobs so that the assertions
         # below don't race against more jobs being queued.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-no-timer.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-no-timer.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
         self.worker.release()
diff --git a/tests/test_connection.py b/tests/test_connection.py
index c12d855..cb3abd8 100644
--- a/tests/test_connection.py
+++ b/tests/test_connection.py
@@ -72,8 +72,7 @@
     def setup_config(self,
                      config_file='zuul-connections-multiple-gerrits.conf'):
         super(TestMultipleGerrits, self).setup_config(config_file)
-        self.config.set(
-            'zuul', 'layout_config',
+        self.self.updateConfigLayout(
             'layout-connections-multiple-gerrits.yaml')
 
     def test_multiple_project_separate_gerrits(self):
diff --git a/tests/test_requirements.py b/tests/test_requirements.py
index 4d3d070..1cad659 100644
--- a/tests/test_requirements.py
+++ b/tests/test_requirements.py
@@ -41,8 +41,8 @@
                                                       'project2-trigger')
 
     def _test_require_approval_newer_than(self, project, job):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-newer-than.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-newer-than.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -79,8 +79,8 @@
                                                       'project2-trigger')
 
     def _test_require_approval_older_than(self, project, job):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-older-than.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-older-than.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -117,8 +117,8 @@
                                                     'project2-trigger')
 
     def _test_require_approval_username(self, project, job):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-username.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-username.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -148,8 +148,8 @@
                                                  'project2-trigger')
 
     def _test_require_approval_email(self, project, job):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-email.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-email.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -179,8 +179,8 @@
                                                  'project2-trigger')
 
     def _test_require_approval_vote1(self, project, job):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-vote1.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-vote1.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -216,8 +216,8 @@
                                                  'project2-trigger')
 
     def _test_require_approval_vote2(self, project, job):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-vote2.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-vote2.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -264,9 +264,8 @@
 
     def test_pipeline_require_current_patchset(self):
         "Test pipeline requirement: current-patchset"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-'
-                        'current-patchset.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-current-patchset.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
         # Create two patchsets and let their tests settle out. Then
@@ -293,8 +292,8 @@
 
     def test_pipeline_require_open(self):
         "Test pipeline requirement: open"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-open.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-open.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -311,8 +310,8 @@
 
     def test_pipeline_require_status(self):
         "Test pipeline requirement: status"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-requirement-status.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-requirement-status.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -330,8 +329,7 @@
     def _test_require_reject_username(self, project, job):
         "Test negative username's match"
         # Should only trigger if Jenkins hasn't voted.
-        self.config.set(
-            'zuul', 'layout_config',
+        self.updateConfigLayout(
             'tests/fixtures/layout-requirement-reject-username.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
@@ -372,8 +370,7 @@
 
     def _test_require_reject(self, project, job):
         "Test no approval matches a reject param"
-        self.config.set(
-            'zuul', 'layout_config',
+        self.updateConfigLayout(
             'tests/fixtures/layout-requirement-reject.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index 43d58c0..7ef166c 100755
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -922,8 +922,8 @@
     def test_post_ignore_deletes_negative(self):
         "Test that deleting refs does trigger post jobs"
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-dont-ignore-deletes.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-dont-ignore-deletes.yaml')
         self.sched.reconfigure(self.config)
 
         e = {
@@ -1773,8 +1773,8 @@
         self.worker.hold_jobs_in_build = True
 
         # Start timer trigger - also org/project
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-idle.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-idle.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
         # The pipeline triggers every second, so we should have seen
@@ -1783,8 +1783,8 @@
         self.waitUntilSettled()
         # Stop queuing timer triggered jobs so that the assertions
         # below don't race against more jobs being queued.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-no-timer.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-no-timer.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
         self.assertEqual(len(self.builds), 2, "Two timer jobs")
@@ -2079,8 +2079,8 @@
         self.waitUntilSettled()
         self.assertEqual(len(self.gearman_server.getQueue()), 1)
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-no-jobs.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-no-jobs.yaml')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
@@ -2140,8 +2140,8 @@
 
     def _test_skip_if_jobs(self, branch, should_skip):
         "Test that jobs with a skip-if filter run only when appropriate"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-skip-if.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-skip-if.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -2167,7 +2167,7 @@
 
     def test_test_config(self):
         "Test that we can test the config"
-        self.sched.testConfig(self.config.get('zuul', 'layout_config'),
+        self.sched.testConfig(self.config.get('zuul', 'tenant_config'),
                               self.connections)
 
     def test_build_description(self):
@@ -2197,8 +2197,8 @@
         self.assertEqual(q1.name, 'integration')
         self.assertEqual(q2.name, 'integration')
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-bad-queue.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-bad-queue.yaml')
         with testtools.ExpectedException(
             Exception, "More than one name assigned to change queue"):
             self.sched.reconfigure(self.config)
@@ -2278,8 +2278,8 @@
 
     def test_merging_queues(self):
         "Test that transitively-connected change queues are merged"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-merge-queues.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-merge-queues.yaml')
         self.sched.reconfigure(self.config)
         self.assertEqual(len(self.sched.layout.pipelines['gate'].queues), 1)
 
@@ -2355,9 +2355,8 @@
         self.assertEqual(len(self.history), 0)
 
         # Add the "project-test3" job.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-live-'
-                        'reconfiguration-add-job.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-live-reconfiguration-add-job.yaml')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
@@ -2418,9 +2417,8 @@
         self.assertEqual(len(self.history), 2)
 
         # Add the "project-test3" job.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-live-'
-                        'reconfiguration-add-job.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-live-reconfiguration-add-job.yaml')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
@@ -2472,9 +2470,8 @@
         self.assertEqual(len(self.history), 2)
 
         # Remove the test1 job.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-live-'
-                        'reconfiguration-failed-job.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-live-reconfiguration-failed-job.yaml')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
@@ -2522,9 +2519,8 @@
         self.assertEqual(len(self.history), 2)
 
         # Remove the integration job.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-live-'
-                        'reconfiguration-shared-queue.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-live-reconfiguration-shared-queue.yaml')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
@@ -2570,9 +2566,8 @@
         self.assertEqual(len(self.builds), 5)
 
         # This layout defines only org/project, not org/project1
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-live-'
-                        'reconfiguration-del-project.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-live-reconfiguration-del-project.yaml')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
@@ -2613,9 +2608,8 @@
                          'debian')
         self.assertIsNone(self.getJobFromHistory('node-project-test2').node)
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-live-'
-                        'reconfiguration-functions.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-live-reconfiguration-functions.yaml')
         self.sched.reconfigure(self.config)
         self.worker.build_history = []
 
@@ -2630,8 +2624,8 @@
         self.assertIsNone(self.getJobFromHistory('node-project-test2').node)
 
     def test_delayed_repo_init(self):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-delayed-repo-init.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-delayed-repo-init.yaml')
         self.sched.reconfigure(self.config)
 
         self.init_repo("org/new-project")
@@ -2650,8 +2644,8 @@
         self.assertEqual(A.reported, 2)
 
     def test_repo_deleted(self):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-repo-deleted.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-repo-deleted.yaml')
         self.sched.reconfigure(self.config)
 
         self.init_repo("org/delete-project")
@@ -2689,8 +2683,8 @@
     def test_timer(self):
         "Test that a periodic job is triggered"
         self.worker.hold_jobs_in_build = True
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-timer.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-timer.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -2709,8 +2703,8 @@
         self.worker.hold_jobs_in_build = False
         # Stop queuing timer triggered jobs so that the assertions
         # below don't race against more jobs being queued.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-no-timer.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-no-timer.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
         self.worker.release()
@@ -2741,8 +2735,8 @@
             # Test that timer triggers periodic jobs even across
             # layout config reloads.
             # Start timer trigger
-            self.config.set('zuul', 'layout_config',
-                            'tests/fixtures/layout-idle.yaml')
+            self.updateConfigLayout(
+                'tests/fixtures/layout-idle.yaml')
             self.sched.reconfigure(self.config)
             self.registerJobs()
 
@@ -2753,8 +2747,8 @@
 
             # Stop queuing timer triggered jobs so that the assertions
             # below don't race against more jobs being queued.
-            self.config.set('zuul', 'layout_config',
-                            'tests/fixtures/layout-no-timer.yaml')
+            self.updateConfigLayout(
+                'tests/fixtures/layout-no-timer.yaml')
             self.sched.reconfigure(self.config)
             self.registerJobs()
 
@@ -2765,8 +2759,8 @@
             self.assertEqual(len(self.history), x * 2)
 
     def test_check_smtp_pool(self):
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-smtp.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-smtp.yaml')
         self.sched.reconfigure(self.config)
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
@@ -2798,8 +2792,8 @@
     def test_timer_smtp(self):
         "Test that a periodic job is triggered"
         self.worker.hold_jobs_in_build = True
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-timer-smtp.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-timer-smtp.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -2833,8 +2827,8 @@
 
         # Stop queuing timer triggered jobs and let any that may have
         # queued through so that end of test assertions pass.
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-no-timer.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-no-timer.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
         self.waitUntilSettled()
@@ -3095,8 +3089,8 @@
 
     def test_queue_rate_limiting(self):
         "Test that DependentPipelines are rate limited with dep across window"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-rate-limit.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-rate-limit.yaml')
         self.sched.reconfigure(self.config)
         self.worker.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
@@ -3186,8 +3180,8 @@
 
     def test_queue_rate_limiting_dependent(self):
         "Test that DependentPipelines are rate limited with dep in window"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-rate-limit.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-rate-limit.yaml')
         self.sched.reconfigure(self.config)
         self.worker.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
@@ -3297,8 +3291,8 @@
 
     def test_footer_message(self):
         "Test a pipeline's footer message is correctly added to the report."
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-footer-message.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-footer-message.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -3338,8 +3332,8 @@
     def test_merge_failure_reporters(self):
         """Check that the config is set up correctly"""
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-merge-failure.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-merge-failure.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -3383,8 +3377,8 @@
     def test_merge_failure_reports(self):
         """Check that when a change fails to merge the correct message is sent
         to the correct reporter"""
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-merge-failure.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-merge-failure.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -3417,8 +3411,8 @@
 
     def test_swift_instructions(self):
         "Test that the correct swift instructions are sent to the workers"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-swift.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-swift.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -3980,8 +3974,8 @@
 
     def test_crd_check_ignore_dependencies(self):
         "Test cross-repo dependencies can be ignored"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-ignore-dependencies.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-ignore-dependencies.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -4066,8 +4060,8 @@
     def test_disable_at(self):
         "Test a pipeline will only report to the disabled trigger when failing"
 
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-disable-at.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-disable-at.yaml')
         self.sched.reconfigure(self.config)
 
         self.assertEqual(3, self.sched.layout.pipelines['check'].disable_at)
diff --git a/tests/test_zuultrigger.py b/tests/test_zuultrigger.py
index 0cd259a..0442c2f 100644
--- a/tests/test_zuultrigger.py
+++ b/tests/test_zuultrigger.py
@@ -31,8 +31,8 @@
 
     def test_zuul_trigger_parent_change_enqueued(self):
         "Test Zuul trigger event: parent-change-enqueued"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-zuultrigger-enqueued.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-zuultrigger-enqueued.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
@@ -77,8 +77,8 @@
 
     def test_zuul_trigger_project_change_merged(self):
         "Test Zuul trigger event: project-change-merged"
-        self.config.set('zuul', 'layout_config',
-                        'tests/fixtures/layout-zuultrigger-merged.yaml')
+        self.updateConfigLayout(
+            'tests/fixtures/layout-zuultrigger-merged.yaml')
         self.sched.reconfigure(self.config)
         self.registerJobs()
 
