Files
zuul/tests/test_layoutvalidator.py
T
James E. BlairandMonty Taylor 6c358e72ea Support multiple triggers
Add the ability for Zuul to accept inputs from multiple trigger
sources simultaneously.

Pipelines are associated with exactly one trigger, which must now
be named in the configuration file.

Co-Authored-By: Monty Taylor <mordred@inaugust.com>

Change-Id: Ief2b31a7b8d85d30817f2747c1e2635f71ea24b9
2013-08-01 11:56:52 -07:00

65 lines
2.2 KiB
Python

#!/usr/bin/env python
# Copyright 2013 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import os
import re
import testtools
import voluptuous
import yaml
import zuul.layoutvalidator
FIXTURE_DIR = os.path.join(os.path.dirname(__file__),
'fixtures')
LAYOUT_RE = re.compile(r'^(good|bad)_.*\.yaml$')
class TestLayoutValidator(testtools.TestCase):
def test_layouts(self):
"""Test layout file validation"""
print
errors = []
for fn in os.listdir(os.path.join(FIXTURE_DIR, 'layouts')):
m = LAYOUT_RE.match(fn)
if not m:
continue
print fn
layout = os.path.join(FIXTURE_DIR, 'layouts', fn)
data = yaml.load(open(layout))
validator = zuul.layoutvalidator.LayoutValidator()
if m.group(1) == 'good':
try:
validator.validate(data)
except voluptuous.Invalid, e:
raise Exception(
'Unexpected YAML syntax error in %s:\n %s' %
(fn, str(e)))
else:
try:
validator.validate(data)
raise Exception("Expected a YAML syntax error in %s." %
fn)
except voluptuous.Invalid, e:
error = str(e)
print ' ', error
if error in errors:
raise Exception("Error has already beed tested: %s" %
error)
else:
errors.append(error)
pass