def test_sample_gen_with_single_config_file(self, main, isfile, isdir):
        isfile.side_effect = [False, True]
        isdir.return_value = True

        config = mock.Mock(config_generator_config_file='nova-gen.conf',
                           sample_config_basename='nova')
        app = mock.Mock(srcdir='/opt/nova', config=config)
        sphinxconfiggen.generate_sample(app)

        main.assert_called_once_with(args=[
            '--config-file', '/opt/nova/nova-gen.conf', '--output-file',
            '/opt/nova/nova.conf.sample'
        ])
    def test_sample_gen_with_single_config_file_no_base(self, main, isfile,
                                                        isdir):
        isfile.side_effect = [False, True]
        isdir.return_value = True

        config = mock.Mock(config_generator_config_file='nova-gen.conf',
                           sample_config_basename=None)
        app = mock.Mock(srcdir='/opt/nova', config=config)
        sphinxconfiggen.generate_sample(app)

        main.assert_called_once_with(args=['--config-file',
                                           '/opt/nova/nova-gen.conf',
                                           '--output-file',
                                           '/opt/nova/sample.config'])
    def test_multi_sample_gen_with_without_one_base(self, main, isfile, isdir):
        isfile.side_effect = [False, True, False, True]
        isdir.return_value = True

        multiple_configs = [('glance-api-gen.conf', 'glance-api'),
                            ('glance-reg-gen.conf', None)]
        config = mock.Mock(config_generator_config_file=multiple_configs)
        app = mock.Mock(srcdir='/opt/glance', config=config)
        sphinxconfiggen.generate_sample(app)

        self.assertEqual(main.call_count, 2)
        main.assert_any_call(args=[
            '--config-file', '/opt/glance/glance-api-gen.conf',
            '--output-file', '/opt/glance/glance-api.conf.sample'
        ])
        main.assert_any_call(args=[
            '--config-file', '/opt/glance/glance-reg-gen.conf',
            '--output-file', '/opt/glance/glance-reg-gen.conf.sample'
        ])
    def test_multi_sample_gen_with_without_one_base(self, main, isfile, isdir):
        isfile.side_effect = [False, True, False, True]
        isdir.return_value = True

        multiple_configs = [('glance-api-gen.conf', 'glance-api'),
                            ('glance-reg-gen.conf', None)]
        config = mock.Mock(config_generator_config_file=multiple_configs)
        app = mock.Mock(srcdir='/opt/glance', config=config)
        sphinxconfiggen.generate_sample(app)

        self.assertEqual(main.call_count, 2)
        main.assert_any_call(args=['--config-file',
                                   '/opt/glance/glance-api-gen.conf',
                                   '--output-file',
                                   '/opt/glance/glance-api.conf.sample'])
        main.assert_any_call(args=['--config-file',
                                   '/opt/glance/glance-reg-gen.conf',
                                   '--output-file',
                                   '/opt/glance/glance-reg-gen.conf.sample'])