blob: d2ce91365ea0dd54f5fb22db463931a40a987036 [file] [log] [blame]
package repo_manager
import (
"context"
"errors"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/go/exec"
"go.skia.org/infra/go/testutils"
)
func TestGetPreUploadStep(t *testing.T) {
testutils.SmallTest(t)
// Test for existing steps.
infraStep, err := GetPreUploadStep("TrainInfra")
assert.NoError(t, err)
assert.NotNil(t, infraStep)
flutterStep, err := GetPreUploadStep("FlutterLicenseScripts")
assert.NoError(t, err)
assert.NotNil(t, flutterStep)
// Test for missing step.
missingStep, err := GetPreUploadStep("I don't exist")
assert.Error(t, err)
assert.Equal(t, "No such pre-upload step: I don't exist", err.Error())
assert.Nil(t, missingStep)
}
func TestFlutterLicenseScripts(t *testing.T) {
testutils.SmallTest(t)
pubErr := error(nil)
dartErr := error(nil)
gitErr := error(nil)
mockRun := &exec.CommandCollector{}
mockRun.SetDelegateRun(func(cmd *exec.Command) error {
pubCmd := "get"
dartCmd := "lib/main.dart --src ../../.. --out testing/out/licenses --golden testing/dir/ci/licenses_golden"
if cmd.Name == "testing/third_party/dart/tools/sdks/dart-sdk/bin/pub" && strings.Join(cmd.Args, " ") == pubCmd {
return pubErr
} else if cmd.Name == "testing/third_party/dart/tools/sdks/dart-sdk/bin/dart" && strings.Join(cmd.Args, " ") == dartCmd {
return dartErr
} else if cmd.Name == "git" {
expectedCheckoutArgs := "checkout -- pubspec.lock"
expectedCommitArgs := "commit -a --amend --no-edit"
if strings.Join(cmd.Args, " ") == expectedCheckoutArgs || strings.Join(cmd.Args, " ") == expectedCommitArgs {
return gitErr
}
}
return exec.DefaultRun(cmd)
})
ctx := exec.NewContext(context.Background(), mockRun.Run)
// No errors should be throw.
err := FlutterLicenseScripts(ctx, nil, "testing/dir")
assert.NoError(t, err)
// Now test for errors.
pubErr = errors.New("pub error")
err = FlutterLicenseScripts(ctx, nil, "testing/dir")
assert.Error(t, err)
assert.Equal(t, "Error when running pub get: pub error; Stdout+Stderr:\n", err.Error())
pubErr = error(nil)
dartErr = errors.New("dart error")
err = FlutterLicenseScripts(ctx, nil, "testing/dir")
assert.Error(t, err)
assert.Equal(t, "Error when running dart license script: dart error", err.Error())
pubErr = error(nil)
dartErr = error(nil)
err = FlutterLicenseScripts(ctx, nil, "testing/dir")
assert.NoError(t, err)
}