def get_summary_files(dirnames):
    """Gets the TeX summary files for each test.

    :param dirnames: the list of directories to merge data from.

    :type dirnames: list

    :returns: a list of summary file names.
    :rtype: list

    """
    # A useful regular expression to get step number in the current directory
    step_nb_re = re.compile(r"^([0-9]+)_\S+")

    # The final list of summary files
    final_summary_files = []

    # For each of the directory
    for dn in dirnames:
        # Getting the step directories
        step_dir = [
            n for n in os.listdir(dn)
            if os.path.isdir(os.path.join(dn, n)) and step_nb_re.match(n)
        ]

        # Sorting the step directories
        step_dir.sort(key=lambda x: int(step_nb_re.match(x).group(1)))

        # Getting the name of the summary file for each of the step directory
        step_summary_files = [
            glob(os.path.join(dn, sn, "*.summary.tex")) for sn in step_dir
        ]

        # Checking we have only one summary file
        for summary_file in step_summary_files:
            if len(summary_file) > 1:
                raise ProgramError("{}: multiple summary files".format(
                    os.path.join(dn, sn),
                ))

            if not summary_file:
                raise ProgramError("{}: missing summary file".format(
                    os.apth.join(dn, sn),
                ))

        final_summary_files.extend(i[0] for i in step_summary_files)

    return [os.path.abspath(fn) for fn in final_summary_files]
Gets the TeX summary files for each test.

    :param dirnames: the list of directories to merge data from.

    :type dirnames: list

    :returns: a list of summary file names.
    :rtype: list