File: localstate_test.go

package info (click to toggle)
docker-buildx 0.13.1%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,356 kB
  • sloc: sh: 299; makefile: 87
file content (99 lines) | stat: -rw-r--r-- 3,548 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package localstate

import (
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestNew(t *testing.T) {
	_ = newls(t)
}

func TestReadRef(t *testing.T) {
	l := newls(t)
	r, err := l.ReadRef(testBuilderName, testNodeName, testStateRefID)
	require.NoError(t, err)
	require.Equal(t, testStateRef, *r)
}

func TestReadGroup(t *testing.T) {
	l := newls(t)
	g, err := l.ReadGroup(testStateGroupID)
	require.NoError(t, err)
	require.Equal(t, testStateGroup, *g)
}

func TestRemoveBuilder(t *testing.T) {
	l := newls(t)
	require.NoError(t, l.RemoveBuilder(testBuilderName))
}

func TestRemoveBuilderNode(t *testing.T) {
	l := newls(t)
	require.NoError(t, l.RemoveBuilderNode(testBuilderName, testNodeName))
}

func newls(t *testing.T) *LocalState {
	t.Helper()
	tmpdir := t.TempDir()

	l, err := New(tmpdir)
	require.NoError(t, err)
	require.DirExists(t, filepath.Join(tmpdir, refsDir))
	require.Equal(t, tmpdir, l.root)

	require.NoError(t, l.SaveRef(testBuilderName, testNodeName, testStateRefID, testStateRef))

	require.NoError(t, l.SaveGroup(testStateGroupID, testStateGroup))
	require.NoError(t, l.SaveRef(testBuilderName, testNodeName, testStateGroupRef1ID, testStateGroupRef1))
	require.NoError(t, l.SaveRef(testBuilderName, testNodeName, testStateGroupRef2ID, testStateGroupRef2))
	require.NoError(t, l.SaveRef(testBuilderName, testNodeName, testStateGroupRef3ID, testStateGroupRef3))

	return l
}

var (
	testBuilderName = "builder"
	testNodeName    = "builder0"

	testStateRefID = "32n3ffqrxjw41ok5zxd2qhume"
	testStateRef   = State{
		Target:         "default",
		LocalPath:      "/home/foo/github.com/docker/docker-bake-action",
		DockerfilePath: "/home/foo/github.com/docker/docker-bake-action/dev.Dockerfile",
	}

	testStateGroupID = "kvqs0sgly2rmitz84r25u9qd0"
	testStateGroup   = StateGroup{
		Definition: []byte(`{"group":{"default":{"targets":["pre-checkin"]},"pre-checkin":{"targets":["vendor-update","format","build"]}},"target":{"build":{"context":".","dockerfile":"dev.Dockerfile","target":"build-update","platforms":["linux/amd64"],"output":["."]},"format":{"context":".","dockerfile":"dev.Dockerfile","target":"format-update","platforms":["linux/amd64"],"output":["."]},"vendor-update":{"context":".","dockerfile":"dev.Dockerfile","target":"vendor-update","platforms":["linux/amd64"],"output":["."]}}}`),
		Targets:    []string{"pre-checkin"},
		Inputs:     []string{"*.platform=linux/amd64"},
		Refs:       []string{"builder/builder0/hx2qf1w11qvz1x3k471c5i8xw", "builder/builder0/968zj0g03jmlx0s8qslnvh6rl", "builder/builder0/naf44f9i1710lf7y12lv5hb1z"},
	}

	testStateGroupRef1ID = "hx2qf1w11qvz1x3k471c5i8xw"
	testStateGroupRef1   = State{
		Target:         "format",
		LocalPath:      "/home/foo/github.com/docker/docker-bake-action",
		DockerfilePath: "/home/foo/github.com/docker/docker-bake-action/dev.Dockerfile",
		GroupRef:       "kvqs0sgly2rmitz84r25u9qd0",
	}

	testStateGroupRef2ID = "968zj0g03jmlx0s8qslnvh6rl"
	testStateGroupRef2   = State{
		Target:         "build",
		LocalPath:      "/home/foo/github.com/docker/docker-bake-action",
		DockerfilePath: "/home/foo/github.com/docker/docker-bake-action/dev.Dockerfile",
		GroupRef:       "kvqs0sgly2rmitz84r25u9qd0",
	}

	testStateGroupRef3ID = "naf44f9i1710lf7y12lv5hb1z"
	testStateGroupRef3   = State{
		Target:         "vendor-update",
		LocalPath:      "/home/foo/github.com/docker/docker-bake-action",
		DockerfilePath: "/home/foo/github.com/docker/docker-bake-action/dev.Dockerfile",
		GroupRef:       "kvqs0sgly2rmitz84r25u9qd0",
	}
)