mirror of
https://github.com/go-gitea/gitea.git
synced 2026-01-17 01:20:37 +00:00
Partially backport #36336 1. correctly parse git protocol's "OldCommit NewCommit RefName" line, it should be explicitly split by space 2. trim space for the "commit status context name" to follow the same behavior of git_model.NewCommitStatus
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestPktLine(t *testing.T) {
|
|
// test read
|
|
ctx := t.Context()
|
|
s := strings.NewReader("0000")
|
|
r := bufio.NewReader(s)
|
|
result, err := readPktLine(ctx, r, pktLineTypeFlush)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, pktLineTypeFlush, result.Type)
|
|
|
|
s = strings.NewReader("0006a\n")
|
|
r = bufio.NewReader(s)
|
|
result, err = readPktLine(ctx, r, pktLineTypeData)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, pktLineTypeData, result.Type)
|
|
assert.Equal(t, []byte("a\n"), result.Data)
|
|
|
|
// test write
|
|
w := bytes.NewBuffer([]byte{})
|
|
err = writeFlushPktLine(ctx, w)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, []byte("0000"), w.Bytes())
|
|
|
|
w.Reset()
|
|
err = writeDataPktLine(ctx, w, []byte("a\nb"))
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, []byte("0007a\nb"), w.Bytes())
|
|
}
|
|
|
|
func TestParseGitHookCommitRefLine(t *testing.T) {
|
|
oldCommitID, newCommitID, refName, ok := parseGitHookCommitRefLine("a b c")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "a", oldCommitID)
|
|
assert.Equal(t, "b", newCommitID)
|
|
assert.Equal(t, "c", string(refName))
|
|
|
|
_, _, _, ok = parseGitHookCommitRefLine("a\tb\tc")
|
|
assert.False(t, ok)
|
|
|
|
_, _, _, ok = parseGitHookCommitRefLine("a b")
|
|
assert.False(t, ok)
|
|
}
|