summaryrefslogtreecommitdiff
diff options
authorMichael Vogt <mvo@ubuntu.com>2016-06-10 21:43:18 +0200
committerMichael Vogt <mvo@ubuntu.com>2016-06-10 21:43:18 +0200
commitee927737a86bddc3a018b49c68f2efe41e174b81 (patch)
treefa8742adadeb725e447579655945f715190c3221
parent5693d1b0d20ff5f4ed19ef5313e5848dbb47f1d5 (diff)
address review feedbackfeature/snap-run2.1
-rw-r--r--cmd/snap/cmd_run.go10
-rw-r--r--cmd/snap/cmd_run_test.go12
-rw-r--r--cmd/snap/export_test.go20
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
+ }
+}