init: pristine aerc 0.20.0 source
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
package patch
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.sr.ht/~rjarry/aerc/lib/pama/models"
|
||||
)
|
||||
|
||||
func TestRebase_reorder(t *testing.T) {
|
||||
newCommits := func(order []string) []models.Commit {
|
||||
var commits []models.Commit
|
||||
for _, s := range order {
|
||||
commits = append(commits, models.Commit{ID: s})
|
||||
}
|
||||
return commits
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
commits []models.Commit
|
||||
now []string
|
||||
by []string
|
||||
want []models.Commit
|
||||
}{
|
||||
{
|
||||
name: "nothing to reorder",
|
||||
commits: newCommits([]string{"1", "2", "3"}),
|
||||
now: []string{"1", "2", "3"},
|
||||
by: []string{"1", "2", "3"},
|
||||
want: newCommits([]string{"1", "2", "3"}),
|
||||
},
|
||||
{
|
||||
name: "reorder",
|
||||
commits: newCommits([]string{"1", "3", "2"}),
|
||||
now: []string{"1", "3", "2"},
|
||||
by: []string{"1", "2", "3"},
|
||||
want: newCommits([]string{"1", "2", "3"}),
|
||||
},
|
||||
{
|
||||
name: "reorder inverted",
|
||||
commits: newCommits([]string{"3", "2", "1"}),
|
||||
now: []string{"3", "2", "1"},
|
||||
by: []string{"1", "2", "3"},
|
||||
want: newCommits([]string{"1", "2", "3"}),
|
||||
},
|
||||
{
|
||||
name: "changed hash: do not sort",
|
||||
commits: newCommits([]string{"1", "6", "3"}),
|
||||
now: []string{"1", "6", "3"},
|
||||
by: []string{"1", "2", "3"},
|
||||
want: newCommits([]string{"1", "6", "3"}),
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
reorder(test.commits, test.now, test.by)
|
||||
if !reflect.DeepEqual(test.commits, test.want) {
|
||||
t.Errorf("test '%s' failed to reorder: got %v but "+
|
||||
"want %v", test.name, test.commits, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func newCommit(id, subj, tag string) models.Commit {
|
||||
return models.Commit{
|
||||
ID: id,
|
||||
Subject: subj,
|
||||
Tag: tag,
|
||||
}
|
||||
}
|
||||
|
||||
func TestRebase_parse(t *testing.T) {
|
||||
input := `
|
||||
# some header info
|
||||
hello_v1 123 same info
|
||||
hello_v1 456 same info
|
||||
untracked 789 same info
|
||||
hello_v2 012 diff info
|
||||
untracked 345 diff info # not very useful comment
|
||||
# some footer info
|
||||
`
|
||||
commits := []models.Commit{
|
||||
newCommit("123123", "same info", "hello_v1"),
|
||||
newCommit("456456", "same info", "hello_v1"),
|
||||
newCommit("789789", "same info", models.Untracked),
|
||||
newCommit("012012", "diff info", "hello_v2"),
|
||||
newCommit("345345", "diff info", models.Untracked),
|
||||
}
|
||||
|
||||
var order []string
|
||||
for _, c := range commits {
|
||||
order = append(order, fmt.Sprintf("%3.3s", c.ID))
|
||||
}
|
||||
|
||||
table := make(map[string]models.Commit)
|
||||
for i, shortId := range order {
|
||||
table[shortId] = commits[i]
|
||||
}
|
||||
|
||||
rebase := &rebase{
|
||||
commits: commits,
|
||||
table: table,
|
||||
order: order,
|
||||
}
|
||||
|
||||
results := rebase.parse(strings.NewReader(input))
|
||||
|
||||
if len(results) != 3 {
|
||||
t.Errorf("failed to return correct number of commits: "+
|
||||
"got %d but wanted 3", len(results))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user