Skip to content
quarry Artifact [f66ff81869]
Login

Artifact [f66ff81869]

Artifact f66ff8186927e9969de530545922a5a636e297173fb13680ae585bb900d6d935:


package zitcli

import (
	"bufio"
	"strings"
	"testing"
)

func TestParseCrosslink(t *testing.T) {
	stream := "crosslink 1\n" +
		"checkin aa11 890923558000\n" +
		"comment 22\ninitial empty check-in\n" +
		"tag *branch * trunk\n" +
		"tag *sym-trunk *\n" +
		"end\n" +
		"checkin bb22 893869787000 aa11\n" +
		"user first\\slast\n" +
		"comment 9\nmulti\nne\\s\n" + // raw bytes, newline inside
		"file M src/main.c\n" +
		"file D old\\sname.txt\n" +
		"end\n" +
		"checkin cc33 900000000000 bb22\n" +
		"comment 0\n\n" +
		"files unknown\n" +
		"end\n"
	var got []CrosslinkRecord
	if err := parseCrosslink(bufio.NewReader(strings.NewReader(stream)),
		func(r CrosslinkRecord) error { got = append(got, r); return nil }); err != nil {
		t.Fatal(err)
	}
	if len(got) != 3 {
		t.Fatalf("records = %d", len(got))
	}
	a, b, c := got[0], got[1], got[2]
	if a.User != "anonymous" || a.Comment != "initial empty check-in" ||
		len(a.Tags) != 2 || a.Tags[0].Value != "trunk" || !a.FilesKnown {
		t.Fatalf("record a: %+v", a)
	}
	if b.User != "first last" || b.Comment != "multi\nne\\s" ||
		len(b.Changes) != 2 || b.Changes[1] != "old name.txt" ||
		b.Parents[0] != "aa11" {
		t.Fatalf("record b: %+v", b)
	}
	if c.FilesKnown || c.Comment != "" {
		t.Fatalf("record c: %+v", c)
	}
}