Replace contextFromImageDestOptions by imageDestOptions.newSystemContext

This is analogous to the imageOptions.newSystemContext conversion.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
Miloslav Trmač 2018-07-18 00:58:20 +02:00
parent 3094320203
commit 1d1bf0d393
3 changed files with 23 additions and 25 deletions

View File

@ -16,14 +16,14 @@ import (
"github.com/urfave/cli" "github.com/urfave/cli"
) )
// contextsFromCopyOptions returns source and destionation types.SystemContext depending on c. // contextsFromCopyOptions returns source and destionation types.SystemContext depending on opts.
func contextsFromCopyOptions(c *cli.Context, opts *copyOptions) (*types.SystemContext, *types.SystemContext, error) { func contextsFromCopyOptions(opts *copyOptions) (*types.SystemContext, *types.SystemContext, error) {
sourceCtx, err := opts.srcImage.newSystemContext() sourceCtx, err := opts.srcImage.newSystemContext()
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
destinationCtx, err := contextFromImageDestOptions(c, opts.destImage) destinationCtx, err := opts.destImage.newSystemContext()
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -111,7 +111,7 @@ func (opts *copyOptions) run(c *cli.Context) error {
return fmt.Errorf("Invalid destination name %s: %v", c.Args()[1], err) return fmt.Errorf("Invalid destination name %s: %v", c.Args()[1], err)
} }
sourceCtx, destinationCtx, err := contextsFromCopyOptions(c, opts) sourceCtx, destinationCtx, err := contextsFromCopyOptions(opts)
if err != nil { if err != nil {
return err return err
} }

View File

@ -142,9 +142,9 @@ func imageDestFlags(global *globalOptions, shared *sharedImageOptions, flagPrefi
}...), &opts }...), &opts
} }
// contextFromImageDestOptions returns a *types.SystemContext corresponding to opts. // newSystemContext returns a *types.SystemContext corresponding to opts.
// It is guaranteed to return a fresh instance, so it is safe to make additional updates to it. // It is guaranteed to return a fresh instance, so it is safe to make additional updates to it.
func contextFromImageDestOptions(c *cli.Context, opts *imageDestOptions) (*types.SystemContext, error) { func (opts *imageDestOptions) newSystemContext() (*types.SystemContext, error) {
ctx, err := opts.imageOptions.newSystemContext() ctx, err := opts.imageOptions.newSystemContext()
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -7,12 +7,11 @@ import (
"github.com/containers/image/types" "github.com/containers/image/types"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/urfave/cli"
) )
// fakeGlobalOptions creates globalOptions and sets it according to flags. // fakeGlobalOptions creates globalOptions and sets it according to flags.
// NOTE: This is QUITE FAKE; none of the urfave/cli normalization and the like happens. // NOTE: This is QUITE FAKE; none of the urfave/cli normalization and the like happens.
func fakeGlobalOptions(t *testing.T, flags []string) (*cli.App, *cli.Context, *globalOptions) { func fakeGlobalOptions(t *testing.T, flags []string) *globalOptions {
app, opts := createApp() app, opts := createApp()
flagSet := flag.NewFlagSet(app.Name, flag.ContinueOnError) flagSet := flag.NewFlagSet(app.Name, flag.ContinueOnError)
@ -21,15 +20,14 @@ func fakeGlobalOptions(t *testing.T, flags []string) (*cli.App, *cli.Context, *g
} }
err := flagSet.Parse(flags) err := flagSet.Parse(flags)
require.NoError(t, err) require.NoError(t, err)
ctx := cli.NewContext(app, flagSet, nil)
return app, ctx, opts return opts
} }
// fakeImageOptions creates imageOptions and sets it according to globalFlags/cmdFlags. // fakeImageOptions creates imageOptions and sets it according to globalFlags/cmdFlags.
// NOTE: This is QUITE FAKE; none of the urfave/cli normalization and the like happens. // NOTE: This is QUITE FAKE; none of the urfave/cli normalization and the like happens.
func fakeImageOptions(t *testing.T, flagPrefix string, globalFlags []string, cmdFlags []string) *imageOptions { func fakeImageOptions(t *testing.T, flagPrefix string, globalFlags []string, cmdFlags []string) *imageOptions {
_, _, globalOpts := fakeGlobalOptions(t, globalFlags) globalOpts := fakeGlobalOptions(t, globalFlags)
sharedFlags, sharedOpts := sharedImageFlags() sharedFlags, sharedOpts := sharedImageFlags()
imageFlags, imageOpts := imageFlags(globalOpts, sharedOpts, flagPrefix, "") imageFlags, imageOpts := imageFlags(globalOpts, sharedOpts, flagPrefix, "")
@ -115,39 +113,39 @@ func TestImageOptionsNewSystemContext(t *testing.T) {
assert.Error(t, err) assert.Error(t, err)
} }
// fakeImageDestContext creates inputs for contextFromImageDestOptions. // fakeImageDestOptions creates imageDestOptions and sets it according to globalFlags/cmdFlags.
// NOTE: This is QUITE FAKE; none of the urfave/cli normalization and the like happens. // NOTE: This is QUITE FAKE; none of the urfave/cli normalization and the like happens.
func fakeImageDestContext(t *testing.T, flagPrefix string, globalFlags []string, cmdFlags []string) (*cli.Context, *imageDestOptions) { func fakeImageDestOptions(t *testing.T, flagPrefix string, globalFlags []string, cmdFlags []string) *imageDestOptions {
app, globalCtx, globalOpts := fakeGlobalOptions(t, globalFlags) globalOpts := fakeGlobalOptions(t, globalFlags)
sharedFlags, sharedOpts := sharedImageFlags() sharedFlags, sharedOpts := sharedImageFlags()
imageFlags, imageOpts := imageDestFlags(globalOpts, sharedOpts, flagPrefix, "") imageFlags, imageOpts := imageDestFlags(globalOpts, sharedOpts, flagPrefix, "")
flagSet := flag.NewFlagSet("fakeImageDestContext", flag.ContinueOnError) flagSet := flag.NewFlagSet("fakeImageDestOptions", flag.ContinueOnError)
for _, f := range append(sharedFlags, imageFlags...) { for _, f := range append(sharedFlags, imageFlags...) {
f.Apply(flagSet) f.Apply(flagSet)
} }
err := flagSet.Parse(cmdFlags) err := flagSet.Parse(cmdFlags)
require.NoError(t, err) require.NoError(t, err)
return cli.NewContext(app, flagSet, globalCtx), imageOpts return imageOpts
} }
func TestContextFromImageDestOptions(t *testing.T) { func TestImageDestOptionsNewSystemContext(t *testing.T) {
// Default state // Default state
c, opts := fakeImageDestContext(t, "dest-", []string{}, []string{}) opts := fakeImageDestOptions(t, "dest-", []string{}, []string{})
res, err := contextFromImageDestOptions(c, opts) res, err := opts.newSystemContext()
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{}, res) assert.Equal(t, &types.SystemContext{}, res)
// Explicitly set everything to default, except for when the default is “not present” // Explicitly set everything to default, except for when the default is “not present”
c, opts = fakeImageDestContext(t, "dest-", []string{}, []string{ opts = fakeImageDestOptions(t, "dest-", []string{}, []string{
"--dest-compress=false", "--dest-compress=false",
}) })
res, err = contextFromImageDestOptions(c, opts) res, err = opts.newSystemContext()
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{}, res) assert.Equal(t, &types.SystemContext{}, res)
// Set everything to non-default values. // Set everything to non-default values.
c, opts = fakeImageDestContext(t, "dest-", []string{ opts = fakeImageDestOptions(t, "dest-", []string{
"--registries.d", "/srv/registries.d", "--registries.d", "/srv/registries.d",
"--override-arch", "overridden-arch", "--override-arch", "overridden-arch",
"--override-os", "overridden-os", "--override-os", "overridden-os",
@ -161,7 +159,7 @@ func TestContextFromImageDestOptions(t *testing.T) {
"--dest-tls-verify=false", "--dest-tls-verify=false",
"--dest-creds", "creds-user:creds-password", "--dest-creds", "creds-user:creds-password",
}) })
res, err = contextFromImageDestOptions(c, opts) res, err = opts.newSystemContext()
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{ assert.Equal(t, &types.SystemContext{
RegistriesDirPath: "/srv/registries.d", RegistriesDirPath: "/srv/registries.d",
@ -180,7 +178,7 @@ func TestContextFromImageDestOptions(t *testing.T) {
}, res) }, res)
// Invalid option values in imageOptions // Invalid option values in imageOptions
c, opts = fakeImageDestContext(t, "dest-", []string{}, []string{"--dest-creds", ""}) opts = fakeImageDestOptions(t, "dest-", []string{}, []string{"--dest-creds", ""})
_, err = contextFromImageDestOptions(c, opts) _, err = opts.newSystemContext()
assert.Error(t, err) assert.Error(t, err)
} }