Esempio n. 1
0
    def handle_files(self):
        """ Process files
            :return: None
        """
        if not self.files:
            return

        total_lines = 0
        covered_lines = 0
        dirs = {}

        for file_ in self.files:
            Statistics.calculate(file_)

            dir_name = os.path.dirname(file_.path)
            if dir_name not in dirs:
                dirs[dir_name] = Folder(dir_name)
            dirs[dir_name].add_file(file_)

        for dir_ in dirs.values():
            total_lines = total_lines + dir_.total_lines
            covered_lines = covered_lines + dir_.covered_lines

        open_file = open(
            os.path.join(CC_BASE, HTML.INDEX_FILE + HTML.FILE_EXT), "w")

        root_link = HTML.get_link(CC_BASE, HTML.LINK_ROOT, "")

        open_file.write(HTML.get_header(root_link, HTML.TABLE_HEADER))

        for dir_ in dirs.values():
            path = os.path.join(self.ROOT_PATH, dir_.name[1:],
                                HTML.INDEX_FILE + HTML.FILE_EXT).replace(
                                    '//', '/')

            last_pos = dir_.name.rfind("/")

            open_file.write(
                HTML.get_line(path, dir_.name[last_pos + 1:], dir_.total_lines,
                              dir_.covered_lines))

        open_file.write(HTML.get_footer(total_lines, covered_lines))
        open_file.close()

        for dir_ in dirs.values():

            path = (CC_BASE + "/" + self.ROOT_PATH + dir_.name)\
                .replace('//', '/')

            if not os.path.exists(path):
                os.makedirs(path)

            open_file = open(
                os.path.join(path, HTML.INDEX_FILE + HTML.FILE_EXT), "w")

            open_file.write(
                HTML.get_header(root_link + dir_.basename, HTML.TABLE_HEADER))

            for file_ in dir_.files:
                open_file.write(
                    HTML.get_line(file_.basename + HTML.FILE_EXT,
                                  file_.basename, file_.total_lines,
                                  file_.covered_lines))

            open_file.write(
                HTML.get_footer(dir_.total_lines, dir_.covered_lines))
            open_file.close()

        for file_ in self.files:
            self.handle_file(file_)