def _run_it(self, setup=None, asserts=None):
        package_name = 'index_test'

        project_dir = os.path.join(self.sandbox_dir, package_name)
        os.mkdir(project_dir)

        if setup:
            setup(project_dir)

        logger.setconsumer('console', logger.STDOUT)
        console_log = logger.MultipleProducer('cheesecake console')

        # Aliasing package_name because of Python optimizations.
        #     ("package_name = package_name" will simply not work)
        pkg_name = package_name

        class CheesecakeMockup(Cheesecake):
            def __init__(self):
                pass
            sandbox = self.sandbox_dir
            package_name = pkg_name
            log = console_log

        cheesecake = CheesecakeMockup()
        cheesecake.walk_pkg()

        if asserts:
            asserts(cheesecake)

        index = IndexUnitTested()
        index.compute_with(cheesecake)

        # Unit tests presence should be discovered and package should get maximum score.
        print "Index: %d/%d -- %s" % (index.value, index.max_value, index.details)
        assert index.value == index.max_value
    def test_unit_tests_index(self):
        test_dir = os.path.join(self.project_dir, 'test')
        os.mkdir(test_dir)

        test_filename = os.path.join(test_dir, 'test_some_function.py')
        dump_str_to_file(test_contents, test_filename)

        logger.setconsumer('console', logger.STDOUT)
        console_log = logger.MultipleProducer('cheesecake console')

        class CheesecakeMockup(object):
            files_list = [test_filename]
            functions = ["some_module.some_function",
                         "some_module.other_function"]
            classes = ["some_module.SomeClass",
                       "some_module.NotTestedClass"]
            package_dir = self.project_dir
            log = console_log

        index = IndexUnitTests()

        index.compute_with(CheesecakeMockup())

        print("Index: %d/%d -- %s" %
              (index.value, index.max_value, index.details))
        assert index.value == int(ceil(index.max_value * 2.0/4.0))
    def test_long_file_list(self):
        "Test if pylint index works for long files lists."
        _package_dir = tempfile.mkdtemp()
        _files_list = map(lambda x: 'long_module_with_a_number_%d.py' % x, xrange(4000))

        for filename in _files_list:
            create_empty_file(os.path.join(_package_dir, filename))

        logger.setconsumer('console', logger.STDOUT)
        console_log = logger.MultipleProducer('cheesecake console')

        class CheesecakeMockup(object):
            package_dir = _package_dir
            files_list = _files_list
            log = console_log

        index = IndexPyLint()
        cheesecake = CheesecakeMockup()

        index.compute_with(cheesecake)
        assert index.details != "encountered an error during pylint execution"

        # Clean up.
        rmtree(_package_dir)