fix extra log messages (#1253)

* fix extra log messages

* add small test, move flag to isindex
This commit is contained in:
Zachary Rice 2023-04-13 09:53:21 -05:00 committed by GitHub
parent 1db22599af
commit 458c79165a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 1 deletions

View file

@ -193,6 +193,7 @@ func (c *Parser) FromReader(ctx context.Context, stdOut io.Reader, commitChan ch
outReader := bufio.NewReader(stdOut)
var currentCommit *Commit
var currentDiff *Diff
var recentlyPassedAuthor bool
defer common.RecoverWithExit(ctx)
defer close(commitChan)
@ -225,6 +226,7 @@ func (c *Parser) FromReader(ctx context.Context, stdOut io.Reader, commitChan ch
}
case isAuthorLine(line):
currentCommit.Author = strings.TrimRight(string(line[8:]), "\n")
recentlyPassedAuthor = true
case isDateLine(line):
date, err := time.Parse(c.dateFormat, strings.TrimSpace(string(line[6:])))
if err != nil {
@ -261,6 +263,7 @@ func (c *Parser) FromReader(ctx context.Context, stdOut io.Reader, commitChan ch
case isModeLine(line):
// NoOp
case isIndexLine(line):
recentlyPassedAuthor = false
// NoOp
case isPlusFileLine(line):
currentDiff.PathB = strings.TrimRight(strings.TrimRight(string(line[6:]), "\n"), "\t") // Trim the newline and tab characters. https://github.com/trufflesecurity/trufflehog/issues/1060
@ -271,7 +274,9 @@ func (c *Parser) FromReader(ctx context.Context, stdOut io.Reader, commitChan ch
case isMinusDiffLine(line):
// NoOp. We only care about additions.
case isMessageLine(line):
currentCommit.Message.Write(line[4:])
if recentlyPassedAuthor {
currentCommit.Message.Write(line[4:])
}
case isContextDiffLine(line):
currentDiff.Content.Write([]byte("\n"))
case isBinaryLine(line):

View file

@ -2,6 +2,7 @@ package gitparse
import (
"bytes"
"fmt"
"strings"
"testing"
"time"
@ -228,6 +229,38 @@ func TestMaxCommitSize(t *testing.T) {
}
func TestMessageParsing(t *testing.T) {
r := bytes.NewReader([]byte(fmt.Sprintf(singleCommitTabbedContent, ` `)))
commitChan := make(chan Commit)
parser := NewParser()
expectedMessage := singleCommitSingleDiffMessage
go func() {
parser.FromReader(context.TODO(), r, commitChan)
}()
for commit := range commitChan {
if commit.Message.String() != expectedMessage {
t.Errorf("Message does not match. Got:\n%s\nexpected:\n%s", commit.Message.String(), expectedMessage)
}
}
}
const singleCommitTabbedContent = `commit 70001020fab32b1fcf2f1f0e5c66424eae649826 (HEAD -> master, origin/master, origin/HEAD)
Author: Dustin Decker <humanatcomputer@gmail.com>
Date: Mon Mar 15 23:27:16 2021 -0700
Update aws
diff --git a/aws b/aws
index 2ee133b..12b4843 100644
--- a/aws
+++ b/aws
@@ -1,7 +1,5 @@
+[default]
%saws_access_key_id = AKIAXYZDQCEN4B6JSJQI
+aws_secret_access_key = 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
`
const singleCommitSingleDiff = `commit 70001020fab32b1fcf2f1f0e5c66424eae649826 (HEAD -> master, origin/master, origin/HEAD)
Author: Dustin Decker <humanatcomputer@gmail.com>
Date: Mon Mar 15 23:27:16 2021 -0700