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  }