(lines []*diffLineData, diffHeaderIndex int)
| 93 | } |
| 94 | |
| 95 | func (fancyDiffProcessor *fancyDiffProcessor) processDiffHeader(lines []*diffLineData, diffHeaderIndex int) (generatedLines []*diffLineData, currentFile string, err error) { |
| 96 | var oldFile, newFile, oldFileMode, newFileMode string |
| 97 | var isBinary bool |
| 98 | var headerSeen bool |
| 99 | status := fileModified |
| 100 | |
| 101 | OuterLoop: |
| 102 | for lineIndex := diffHeaderIndex; lineIndex < len(lines); lineIndex++ { |
| 103 | line := lines[lineIndex] |
| 104 | |
| 105 | switch line.lineType { |
| 106 | case dltGitDiffHeaderDiff: |
| 107 | if headerSeen { |
| 108 | break OuterLoop |
| 109 | } |
| 110 | |
| 111 | matches := diffHeaderRegex.FindStringSubmatch(line.line) |
| 112 | if len(matches) != 3 { |
| 113 | err = fmt.Errorf("line: \"%v\" doesn't have expected diff header format: %v", line.line, matches) |
| 114 | return |
| 115 | } |
| 116 | |
| 117 | newFile = matches[1] |
| 118 | headerSeen = true |
| 119 | case dltGitDiffHeaderNewFile: |
| 120 | newFile = oldNewFileRegex.ReplaceAllString(line.line, "") |
| 121 | case dltGitDiffHeaderOldFile: |
| 122 | oldFile = oldNewFileRegex.ReplaceAllString(line.line, "") |
| 123 | case dltGitDiffHeaderNewMode: |
| 124 | newFileMode = oldNewModeRegex.ReplaceAllString(line.line, "") |
| 125 | case dltGitDiffHeaderOldMode: |
| 126 | oldFileMode = oldNewModeRegex.ReplaceAllString(line.line, "") |
| 127 | case dltGitDiffHeaderNewFileMode: |
| 128 | status = fileAdded |
| 129 | case dltGitDiffHeaderDeletedFileMode: |
| 130 | status = fileDeleted |
| 131 | case dltGitDiffHeaderSimilarityIndex: |
| 132 | status = fileRenamed |
| 133 | case dltGitDiffHeaderRenameFrom: |
| 134 | oldFile = renameFromToRegex.ReplaceAllString(line.line, "") |
| 135 | case dltGitDiffHeaderRenameTo: |
| 136 | newFile = renameFromToRegex.ReplaceAllString(line.line, "") |
| 137 | case dltGitDiffHeaderBinaryFile: |
| 138 | isBinary = true |
| 139 | case dltGitDiffHeaderIndex: |
| 140 | default: |
| 141 | break OuterLoop |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | if newFile == "" { |
| 146 | err = fmt.Errorf("Unable to determine new file from diff headers") |
| 147 | return |
| 148 | } |
| 149 | |
| 150 | currentFile = newFile |
| 151 | if status == fileDeleted && oldFile != "" { |
| 152 | currentFile = oldFile |
no test coverage detected