

def _test_validate_head_files_helper(self, heads, contract_head='', expand_head=''):
    fake_config = self.configs[0]
    head_files_not_exist = (contract_head == expand_head == '')
    with mock.patch('alembic.script.ScriptDirectory.from_config') as fc, mock.patch('os.path.exists') as os_mock, mock.patch.object(cli, '_use_separate_migration_branches', return_value=True):
        if head_files_not_exist:
            os_mock.return_value = False
        else:
            os_mock.return_value = True
        fc.return_value.get_heads.return_value = heads
        revs = {
            heads[0]: FakeRevision(labels=cli.CONTRACT_BRANCH),
            heads[1]: FakeRevision(labels=cli.EXPAND_BRANCH),
        }
        fc.return_value.get_revision.side_effect = revs.__getitem__
        mock_open_con = self.useFixture(tools.OpenFixture(cli._get_contract_head_file_path(fake_config), (contract_head + '\n'))).mock_open
        mock_open_ex = self.useFixture(tools.OpenFixture(cli._get_expand_head_file_path(fake_config), (expand_head + '\n'))).mock_open
        if ((contract_head in heads) and (expand_head in heads)):
            cli.validate_head_files(fake_config)
        elif head_files_not_exist:
            cli.validate_head_files(fake_config)
            self.assertTrue(self.mock_alembic_warn.called)
        else:
            self.assertRaises(SystemExit, cli.validate_head_files, fake_config)
            self.assertTrue(self.mock_alembic_err.called)
        if ((contract_head in heads) and (expand_head in heads)):
            mock_open_ex.assert_called_with(cli._get_expand_head_file_path(fake_config))
            mock_open_con.assert_called_with(cli._get_contract_head_file_path(fake_config))
        if (not head_files_not_exist):
            fc.assert_called_once_with(fake_config)

dataset/ETHPy150Open openstack/neutron/neutron/tests/unit/db/test_migration.py TestCli._test_validate_head_files_helper/original