blob: 87a7897e99f66215513c8154db81c58ab06e9c8c [file] [log] [blame]
package main
import (
"encoding/json"
"net/http"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.skia.org/infra/go/testutils"
"go.skia.org/infra/gold-client/go/mocks"
"go.skia.org/infra/golden/go/types"
"go.skia.org/infra/golden/go/web/frontend"
)
func TestDiff_LegacyTestParamUsed_Success(t *testing.T) {
workDir := t.TempDir()
setupAuthWithGSUtil(t, workDir)
td := testutils.TestDataDir(t)
mh := &mocks.HTTPClient{}
j, err := json.Marshal(frontend.DigestListResponse{Digests: []types.Digest{a05Digest, a09Digest}})
require.NoError(t, err)
mh.On("Get", "https://my-instance-gold.skia.org/json/v2/digests?grouping=name%3Dpixel-tests%26source_type%3Dmy_corpus").Return(
httpResponse(string(j), "200 OK", http.StatusOK), nil)
a05Bytes, err := os.ReadFile(filepath.Join(td, a05Digest+".png"))
require.NoError(t, err)
a09Bytes, err := os.ReadFile(filepath.Join(td, a09Digest+".png"))
require.NoError(t, err)
mi := &mocks.ImageDownloader{}
mi.On("DownloadImage", testutils.AnyContext, "https://my-instance-gold.skia.org", types.Digest(a05Digest)).Return(a05Bytes, nil)
mi.On("DownloadImage", testutils.AnyContext, "https://my-instance-gold.skia.org", types.Digest(a09Digest)).Return(a09Bytes, nil)
ctx, output, exit := testContext(nil, mh, mi, nil)
env := diffEnv{
deprecatedTest: "pixel-tests",
corpus: "my_corpus",
instanceID: "my-instance",
inputFile: filepath.Join(td, a01Digest+".png"),
outDir: filepath.Join(workDir, "output"),
workDir: workDir,
}
runUntilExit(t, func() {
env.Diff(ctx)
})
logs := output.String()
exit.AssertWasCalledWithCode(t, 0, logs)
assert.Equal(t, `Going to compare f528252cd89506d50cf3b59147b8a6c1.png against 2 other images
Digest a05a05a05a05a05a05a05a05a05a05a0 was closest (combined metric of 0.207104)
`, logs)
}
func TestDiff_GroupingParamUsed_Success(t *testing.T) {
workDir := t.TempDir()
setupAuthWithGSUtil(t, workDir)
td := testutils.TestDataDir(t)
mh := &mocks.HTTPClient{}
j, err := json.Marshal(frontend.DigestListResponse{Digests: []types.Digest{a05Digest, a09Digest}})
require.NoError(t, err)
mh.On("Get", "https://my-instance-gold.skia.org/json/v2/digests?grouping=color_config%3DRGBA8888%26name%3Dpixel-tests%26source_type%3Dmy_corpus").Return(
httpResponse(string(j), "200 OK", http.StatusOK), nil)
a05Bytes, err := os.ReadFile(filepath.Join(td, a05Digest+".png"))
require.NoError(t, err)
a09Bytes, err := os.ReadFile(filepath.Join(td, a09Digest+".png"))
require.NoError(t, err)
mi := &mocks.ImageDownloader{}
mi.On("DownloadImage", testutils.AnyContext, "https://my-instance-gold.skia.org", types.Digest(a05Digest)).Return(a05Bytes, nil)
mi.On("DownloadImage", testutils.AnyContext, "https://my-instance-gold.skia.org", types.Digest(a09Digest)).Return(a09Bytes, nil)
ctx, output, exit := testContext(nil, mh, mi, nil)
env := diffEnv{
grouping: "name=pixel-tests,color_config=RGBA8888",
corpus: "my_corpus",
instanceID: "my-instance",
inputFile: filepath.Join(td, a01Digest+".png"),
outDir: filepath.Join(workDir, "output"),
workDir: workDir,
}
runUntilExit(t, func() {
env.Diff(ctx)
})
logs := output.String()
exit.AssertWasCalledWithCode(t, 0, logs)
assert.Equal(t, `Going to compare f528252cd89506d50cf3b59147b8a6c1.png against 2 other images
Digest a05a05a05a05a05a05a05a05a05a05a0 was closest (combined metric of 0.207104)
`, logs)
}
func TestDiff_GroupingAndTestOmitted_ReturnsError(t *testing.T) {
workDir := t.TempDir()
setupAuthWithGSUtil(t, workDir)
td := testutils.TestDataDir(t)
ctx, output, exit := testContext(nil, nil, nil, nil)
env := diffEnv{
corpus: "my_corpus",
instanceID: "my-instance",
inputFile: filepath.Join(td, a01Digest+".png"),
outDir: filepath.Join(workDir, "output"),
workDir: workDir,
}
runUntilExit(t, func() {
env.Diff(ctx)
})
logs := output.String()
exit.AssertWasCalledWithCode(t, 1, logs)
assert.Equal(t, `Must include either test or grouping`, logs)
}