def test_can_remove_labels(): labeled_messages = [ "(one two three) Message", "(one) Message", ] for message in labeled_messages: assert remove_labels(message) == 'Message' assert remove_labels('(abc) Two sets (def ghi)') == "Two sets (def ghi)"
def test_leaves_unlabeled_untouched(): unlabeled_messages = [ "A simple message", "() No real labels", "Misplaced (abc def ghi) labels", ] for message in unlabeled_messages: assert remove_labels(message) == message.strip()
def parse_labels(git_log): """ Annotates git log entries with their gitlabels. Args: git_log: A git log tokenized by tokenize_git_log. Returns: The same git log with each entry annotated with: - labels: A dictionary of labels. - pretty_labels: A list of label representations. - message: The unlabeled commit message. """ for entry in git_log: labels = get_labels(entry['message']) entry['labels'] = labels entry['pretty_labels'] = sorted( "%s:%s" % (k, v) if v else k for k, v in labels.items()) entry['message'] = remove_labels(entry['message']) return git_log