12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # -*- coding: utf-8 -*-
- # vim: tabstop=4 shiftwidth=4 softtabstop=4
- # Copyright 2013, Red Hat, Inc.
- #
- # 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 sys
- import StringIO
- from unittest import TestCase
- from packstack.installer import utils
- from packstack.installer.core.sequences import *
- from ..test_base import PackstackTestCaseMixin
- class StepTestCase(PackstackTestCaseMixin, TestCase):
- def setUp(self):
- super(StepTestCase, self).setUp()
- self._stdout = sys.stdout
- sys.stdout = StringIO.StringIO()
- def tearDown(self):
- super(StepTestCase, self).tearDown()
- sys.stdout = self._stdout
- def test_run(self):
- """
- Test packstack.instaler.core.sequences.Step run.
- """
- def func(config, messages):
- if 'test' not in config:
- raise AssertionError('Missing config value.')
- step = Step('test', func, title='Running test')
- step.run(config={'test': 'test'})
- contents = sys.stdout.getvalue()
- state = '[ %s ]\n' % utils.color_text('DONE', 'green')
- if(not contents.startswith('Running test') or
- not contents.endswith(state)):
- raise AssertionError('Step run test failed: %s' % contents)
- class SequenceTestCase(PackstackTestCaseMixin, TestCase):
- def setUp(self):
- super(SequenceTestCase, self).setUp()
- self._stdout = sys.stdout
- sys.stdout = StringIO.StringIO()
- self.steps = [{'name': '1', 'function': lambda x, y: True,
- 'title': 'Step 1'},
- {'name': '2', 'function': lambda x, y: True,
- 'title': 'Step 2'},
- {'name': '3', 'function': lambda x, y: True,
- 'title': 'Step 3'}]
- self.seq = Sequence('test', self.steps, condition='test',
- cond_match='test')
- def tearDown(self):
- super(SequenceTestCase, self).tearDown()
- sys.stdout = self._stdout
- def test_run(self):
- """
- Test packstack.instaler.core.sequences.Sequence run.
- """
- self.seq.run()
- contents = sys.stdout.getvalue()
- self.assertEqual(contents, '')
- self.seq.run(config={'test': 'test'}, step='2')
- contents = sys.stdout.getvalue()
- assert contents.startswith('Step 2')
- output = []
- self.steps.insert(0, {'title': 'Step 2'})
- for i in self.steps:
- output.append('%s\n' % utils.state_message(i['title'],
- 'DONE', 'green'))
- self.seq.run(config={'test': 'test'})
- contents = sys.stdout.getvalue()
- self.assertEqual(contents, ''.join(output))
|