diff options
| author | Michael Vogt <mvo@ubuntu.com> | 2016-06-10 21:43:18 +0200 |
|---|---|---|
| committer | Michael Vogt <mvo@ubuntu.com> | 2016-06-10 21:43:18 +0200 |
| commit | ee927737a86bddc3a018b49c68f2efe41e174b81 (patch) | |
| tree | fa8742adadeb725e447579655945f715190c3221 | |
| parent | 5693d1b0d20ff5f4ed19ef5313e5848dbb47f1d5 (diff) | |
address review feedbackfeature/snap-run2.1
| -rw-r--r-- | cmd/snap/cmd_run.go | 10 | ||||
| -rw-r--r-- | cmd/snap/cmd_run_test.go | 12 | ||||
| -rw-r--r-- | cmd/snap/export_test.go | 20 |
3 files changed, 31 insertions, 11 deletions
diff --git a/cmd/snap/cmd_run.go b/cmd/snap/cmd_run.go index c7092a1aa6..d0535cb2f4 100644 --- a/cmd/snap/cmd_run.go +++ b/cmd/snap/cmd_run.go @@ -89,7 +89,7 @@ func snapExecAppEnv(app *snap.AppInfo) []string { } func createUserDataDirs(info *snap.Info) error { - usr, err := UserCurrent() + usr, err := userCurrent() if err != nil { return fmt.Errorf("cannot get the current user: %s", err) } @@ -105,8 +105,8 @@ func createUserDataDirs(info *snap.Info) error { return nil } -var SyscallExec = syscall.Exec -var UserCurrent = user.Current +var syscallExec = syscall.Exec +var userCurrent = user.Current func snapRun(snapApp, command string, args []string) error { snapName, appName := snap.SplitSnapApp(snapApp) @@ -121,7 +121,7 @@ func snapRun(snapApp, command string, args []string) error { } if err := createUserDataDirs(info); err != nil { - logger.Noticef("WARNING: cannot create user data: %s", err) + logger.Noticef("WARNING: cannot create user data directory: %s", err) } // build command to run @@ -141,5 +141,5 @@ func snapRun(snapApp, command string, args []string) error { env := append(os.Environ(), snapExecAppEnv(app)...) // launch! - return SyscallExec(cmd[0], cmd, env) + return syscallExec(cmd[0], cmd, env) } diff --git a/cmd/snap/cmd_run_test.go b/cmd/snap/cmd_run_test.go index f2230d77e9..924f052e34 100644 --- a/cmd/snap/cmd_run_test.go +++ b/cmd/snap/cmd_run_test.go @@ -26,7 +26,6 @@ import ( "os/user" "path/filepath" "sort" - "syscall" "gopkg.in/check.v1" @@ -95,13 +94,13 @@ func (s *SnapSuite) TestSnapRunIntegration(c *check.C) { execArg0 := "" execArgs := []string{} execEnv := []string{} - snaprun.SyscallExec = func(arg0 string, args []string, envv []string) error { + restorer := snaprun.MockSyscallExec(func(arg0 string, args []string, envv []string) error { execArg0 = arg0 execArgs = args execEnv = envv return nil - } - defer func() { snaprun.SyscallExec = syscall.Exec }() + }) + defer restorer() // and run it! err := snaprun.SnapRun("snapname.app", "", []string{"arg1", "arg2"}) @@ -117,9 +116,10 @@ func (s *SnapSuite) TestSnapRunCreateDataDirs(c *check.C) { info.SideInfo.Revision = snap.R(42) fakeHome := c.MkDir() - snaprun.UserCurrent = func() (*user.User, error) { + restorer := snaprun.MockUserCurrent(func() (*user.User, error) { return &user.User{HomeDir: fakeHome}, nil - } + }) + defer restorer() err = snaprun.CreateUserDataDirs(info) c.Assert(err, check.IsNil) diff --git a/cmd/snap/export_test.go b/cmd/snap/export_test.go index 9f7dbcb72c..74308b06e0 100644 --- a/cmd/snap/export_test.go +++ b/cmd/snap/export_test.go @@ -20,6 +20,10 @@ package main +import ( + "os/user" +) + var RunMain = run var ( @@ -27,3 +31,19 @@ var ( SnapRun = snapRun CreateUserDataDirs = createUserDataDirs ) + +func MockSyscallExec(f func(string, []string, []string) error) (restore func()) { + syscallExecOrig := syscallExec + syscallExec = f + return func() { + syscallExec = syscallExecOrig + } +} + +func MockUserCurrent(f func() (*user.User, error)) (restore func()) { + userCurrentOrig := userCurrent + userCurrent = f + return func() { + userCurrent = userCurrentOrig + } +} |
