def _parse_log(self, log_path):
     log_path = self.input().path
     lines = fu.tail(log_path, 3)
     lines = [' '.join(ll.split()[2:]) for ll in lines]
     # load
     if lines[0].startswith("saving results to"):
         path = lines[0].split()[-1]
         assert os.path.exists(path)
         return path
     else:
         raise RuntimeError("Could not parse log file.")
    def test_tail(self):
        from cluster_tools.utils.function_utils import tail
        l1 = 'abcd'
        l2 = '1234'
        l3 = '5678'
        l4 = 'wxyz'
        lines = (l1, l2, l3, l4)

        path = os.path.join(self.tmp_dir, 'out.txt')
        with open(path, 'w') as f:
            for l in lines:
                f.write(l + '\n')

        n_lines = 3
        out_lines = tail(path, n_lines)
        self.assertEqual(len(out_lines), n_lines)
        for li, lo in zip(lines[1:], out_lines):
            self.assertEqual(li, lo)