package testutils

import (
	"context"
	"strings"
	"testing"
	"time"

	"github.com/stretchr/testify/require"
	"go.skia.org/infra/go/exec"
	"go.skia.org/infra/go/testutils/unittest"
)

func TestGitSetup(t *testing.T) {
	unittest.MediumTest(t)
	ctx := context.Background()
	g := GitInit(t, ctx)
	defer g.Cleanup()
	commits := GitSetup(ctx, g)

	output, err := exec.RunCwd(ctx, g.Dir(), g.git, "log", "-n", "6", "--format=format:%H:%P", "HEAD")
	require.NoError(t, err)
	t.Log(ctx, output)
	lines := strings.Split(output, "\n")
	require.Equal(t, 5, len(lines))

	cmap := make(map[string][]string, 5)
	for i, l := range lines {
		split := strings.Split(l, ":")
		require.Equal(t, 2, len(split))
		require.Equal(t, commits[len(commits)-1-i], split[0])
		if len(split[1]) == 0 {
			cmap[split[0]] = []string{}
		} else {
			cmap[split[0]] = strings.Split(split[1], " ")
		}
	}

	c1, c2, c3, c4, c5 := commits[0], commits[1], commits[2], commits[3], commits[4]
	require.Equal(t, 0, len(cmap[c1]))
	require.Equal(t, 1, len(cmap[c2]))
	require.Equal(t, []string{c1}, cmap[c2])
	require.Equal(t, 1, len(cmap[c3]))
	require.Equal(t, []string{c2}, cmap[c3])
	require.Equal(t, 1, len(cmap[c4]))
	require.Equal(t, []string{c2}, cmap[c4])
	require.Equal(t, 2, len(cmap[c5]))
	require.Equal(t, []string{c4, c3}, cmap[c5])
}

func TestGitBuilderCommitTime(t *testing.T) {
	unittest.MediumTest(t)
	ctx := context.Background()
	g := GitInit(t, ctx)
	defer g.Cleanup()

	g.AddGen(ctx, "a.txt")
	c1 := g.CommitMsgAt(ctx, "Gonna party like it's", time.Date(1999, 12, 31, 23, 59, 59, 0, time.UTC))

	// Commit timestamps are second resolution.
	now := time.Now().Round(time.Second)
	g.AddGen(ctx, "a.txt")
	c2 := g.CommitMsgAt(ctx, "No time like the present", now)

	g.AddGen(ctx, "a.txt")
	c3 := g.CommitMsgAt(ctx, "The last time this will work is", time.Date(2099, 12, 31, 23, 59, 59, 0, time.UTC))

	output, err := exec.RunCwd(ctx, g.Dir(), g.git, "log", "-n", "3", "--format=format:%H %s %aD", "HEAD")
	require.NoError(t, err)

	lines := strings.Split(output, "\n")
	require.Equal(t, 3, len(lines))
	require.Equal(t, c3+" The last time this will work is Thu, 31 Dec 2099 23:59:59 +0000", lines[0])
	require.Equal(t, c2+" No time like the present "+now.UTC().Format("Mon, 2 Jan 2006 15:04:05 -0700"), lines[1])
	require.Equal(t, c1+" Gonna party like it's Fri, 31 Dec 1999 23:59:59 +0000", lines[2])
}
