github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/fs/mount_helper_test.go (about) 1 package fs 2 3 import ( 4 "os" 5 "strings" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestMountHelperArgs(t *testing.T) { 13 type testCase struct { 14 src []string 15 dst []string 16 env string 17 err string 18 } 19 normalCases := []testCase{{ 20 src: []string{}, 21 dst: []string{"mount", "--daemon"}, 22 }, { 23 src: []string{"-o", `x-systemd.automount,vvv,env.HTTPS_PROXY="a b;c,d?EF",ro,rw,args2env,_netdev`}, 24 dst: []string{"mount", "--read-only", "--verbose=3", "--daemon"}, 25 env: "HTTPS_PROXY=a b;c,d?EF", 26 }} 27 28 for _, tc := range normalCases { 29 exe := []string{"rclone"} 30 src := append(exe, tc.src...) 31 res, err := convertMountHelperArgs(src) 32 33 if tc.err != "" { 34 require.Error(t, err) 35 assert.Contains(t, err.Error(), tc.err) 36 continue 37 } 38 39 require.NoError(t, err) 40 require.Greater(t, len(res), 1) 41 assert.Equal(t, exe[0], res[0]) 42 dst := res[1:] 43 44 //log.Printf("%q -> %q", tc.src, dst) 45 assert.Equal(t, tc.dst, dst) 46 47 if tc.env != "" { 48 idx := strings.Index(tc.env, "=") 49 name, value := tc.env[:idx], tc.env[idx+1:] 50 assert.Equal(t, value, os.Getenv(name)) 51 } 52 } 53 }