package containers import ( "os" "testing" "github.com/stretchr/testify/assert" ) func TestParseRef(t *testing.T) { tcs := map[string]struct { in string expected string error bool isFile bool }{ "rules_docker output": { "2023/12/12 05:40:43 Successfully pushed Docker image to localhost:21700/lumperctl@sha256:48c902505622f3ecdd8ab80f3f98f8f946d31e10c0d50d85e95ae20df602109d", "localhost:21700/lumperctl@sha256:48c902505622f3ecdd8ab80f3f98f8f946d31e10c0d50d85e95ae20df602109d", false, false, }, "space padded output": { " us-east1-docker.pkg.dev/ret-edge-pltf-infra/workloads/lumperctl@sha256:48c902505622f3ecdd8ab80f3f98f8f946d31e10c0d50d85e95ae20df602109d", "us-east1-docker.pkg.dev/ret-edge-pltf-infra/workloads/lumperctl@sha256:48c902505622f3ecdd8ab80f3f98f8f946d31e10c0d50d85e95ae20df602109d", false, false, }, "empty": { "", "", true, false, }, "output is already ref": { "us-east1-docker.pkg.dev/ret-edge-pltf-infra/workloads/lumperctl@sha256:48c902505622f3ecdd8ab80f3f98f8f946d31e10c0d50d85e95ae20df602109d", "us-east1-docker.pkg.dev/ret-edge-pltf-infra/workloads/lumperctl@sha256:48c902505622f3ecdd8ab80f3f98f8f946d31e10c0d50d85e95ae20df602109d", false, false, }, "rules_oci existing logs": { in: "testdata/existing.txt", expected: "us-east1-docker.pkg.dev/ret-edge-pltf-infra/workloads/lumperctl@sha256:933dfb273691e3fe7a82a84039b161eb20a040970b65b426639ca48e6afaeafd", error: false, isFile: true, }, "rules_oci new image logs": { in: "testdata/new.txt", expected: "us-east1-docker.pkg.dev/ret-edge-pltf-infra/workloads/lumperctl@sha256:fde8b0067cd2780aee14b3d900b25fb22d7ca1904c5a2f0e260361d570810669", error: false, isFile: true, }, } for name, tc := range tcs { t.Run(name, func(t *testing.T) { input := tc.in if tc.isFile { text, err := os.ReadFile(tc.in) assert.NoErrorf(t, err, "TestParseRef: failed to read testdata file") input = string(text) } ref, err := parseRef(input) if tc.error { assert.Error(t, err) } else { assert.NoError(t, err) } assert.Equal(t, tc.expected, ref.String()) }) } }