Merge "Add unit tests for subunit2sql.shell.main"

This commit is contained in:
Jenkins 2015-11-11 04:50:59 +00:00 committed by Gerrit Code Review
commit 8af81fea4a

View File

@ -14,10 +14,15 @@
# limitations under the License.
import datetime
import sys
import tempfile
import fixtures
import mock
from oslo_config import cfg
from subunit2sql import exceptions
from subunit2sql.migrations import cli as migration_cli
from subunit2sql import shell
from subunit2sql.tests import base
@ -130,3 +135,62 @@ class TestShell(base.TestCase):
}
self.assertRaises(exceptions.UnknownStatus,
shell.increment_counts, fake_test, fake_result)
class TestMain(base.TestCase):
def setUp(self):
super(TestMain, self).setUp()
cfg.CONF.reset()
cfg.CONF.unregister_opt(migration_cli.command_opt)
self.fake_args = ['subunit2sql']
self.useFixture(fixtures.MonkeyPatch('sys.argv', self.fake_args))
@mock.patch('subunit2sql.read_subunit.ReadSubunit')
@mock.patch('subunit2sql.shell.process_results')
def test_main(self, process_results_mock, read_subunit_mock):
fake_read_subunit = mock.MagicMock('ReadSubunit')
fake_get_results = 'fake results'
fake_read_subunit.get_results = mock.MagicMock('get_results')
fake_read_subunit.get_results.return_value = fake_get_results
read_subunit_mock.return_value = fake_read_subunit
shell.main()
read_subunit_mock.assert_called_once_with(sys.stdin,
attachments=False,
attr_regex='\[(.*)\]')
process_results_mock.assert_called_once_with(fake_get_results)
@mock.patch('subunit2sql.read_subunit.ReadSubunit')
@mock.patch('subunit2sql.shell.process_results')
def test_main_multiple_files(self, process_results_mock,
read_subunit_mock):
tfile1 = tempfile.NamedTemporaryFile()
tfile2 = tempfile.NamedTemporaryFile()
tfile1.write('test me later 1')
tfile2.write('test me later 2')
tfile1.flush()
tfile2.flush()
self.fake_args.extend([tfile1.name, tfile2.name])
fake_read_subunit = mock.MagicMock('ReadSubunit')
fake_get_results_1 = 'fake results 1'
fake_get_results_2 = 'fake results 2'
fake_read_subunit.get_results = mock.MagicMock('get_results')
fake_read_subunit.get_results.side_effect = [fake_get_results_1,
fake_get_results_2]
read_subunit_mock.return_value = fake_read_subunit
shell.main()
read_subunit_mock.assert_called_with(mock.ANY,
attachments=False,
attr_regex='\[(.*)\]')
self.assertEqual(2, len(read_subunit_mock.call_args_list))
file_1 = read_subunit_mock.call_args_list[0][0][0]
self.assertIsInstance(file_1, file)
file_1.seek(0)
self.assertEqual('test me later 1', file_1.read())
file_2 = read_subunit_mock.call_args_list[1][0][0]
self.assertIsInstance(file_2, file)
file_2.seek(0)
self.assertEqual('test me later 2', file_2.read())
self.assertEqual(fake_get_results_1,
process_results_mock.call_args_list[0][0][0])
self.assertEqual(fake_get_results_2,
process_results_mock.call_args_list[1][0][0])