mirror of https://github.com/pkg/sftp.git
				
				
				
			
		
			
	
	
		
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
|  | //go:build !windows
 | ||
|  | // +build !windows
 | ||
|  | 
 | ||
|  | package sftp | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"testing" | ||
|  | ) | ||
|  | 
 | ||
|  | func TestServer_toLocalPath(t *testing.T) { | ||
|  | 	tests := []struct { | ||
|  | 		name        string | ||
|  | 		withWorkDir string | ||
|  | 		p           string | ||
|  | 		want        string | ||
|  | 	}{ | ||
|  | 		{ | ||
|  | 			name: "empty path with no workdir", | ||
|  | 			p:    "", | ||
|  | 			want: "", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name: "relative path with no workdir", | ||
|  | 			p:    "file", | ||
|  | 			want: "file", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name: "absolute path with no workdir", | ||
|  | 			p:    "/file", | ||
|  | 			want: "/file", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name:        "workdir and empty path", | ||
|  | 			withWorkDir: "/home/user", | ||
|  | 			p:           "", | ||
|  | 			want:        "/home/user", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name:        "workdir and relative path", | ||
|  | 			withWorkDir: "/home/user", | ||
|  | 			p:           "file", | ||
|  | 			want:        "/home/user/file", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name:        "workdir and relative path with .", | ||
|  | 			withWorkDir: "/home/user", | ||
|  | 			p:           ".", | ||
|  | 			want:        "/home/user", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name:        "workdir and relative path with . and file", | ||
|  | 			withWorkDir: "/home/user", | ||
|  | 			p:           "./file", | ||
|  | 			want:        "/home/user/file", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name:        "workdir and absolute path", | ||
|  | 			withWorkDir: "/home/user", | ||
|  | 			p:           "/file", | ||
|  | 			want:        "/file", | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			name:        "workdir and non-unixy path prefixes workdir", | ||
|  | 			withWorkDir: "/home/user", | ||
|  | 			p:           "C:\\file", | ||
|  | 			// This may look like a bug but it is the result of passing
 | ||
|  | 			// invalid input (a non-unixy path) to the server.
 | ||
|  | 			want: "/home/user/C:\\file", | ||
|  | 		}, | ||
|  | 	} | ||
|  | 	for _, tt := range tests { | ||
|  | 		t.Run(tt.name, func(t *testing.T) { | ||
|  | 			// We don't need to initialize the Server further to test
 | ||
|  | 			// toLocalPath behavior.
 | ||
|  | 			s := &Server{} | ||
|  | 			if tt.withWorkDir != "" { | ||
|  | 				if err := WithServerWorkingDirectory(tt.withWorkDir)(s); err != nil { | ||
|  | 					t.Fatal(err) | ||
|  | 				} | ||
|  | 			} | ||
|  | 
 | ||
|  | 			if got := s.toLocalPath(tt.p); got != tt.want { | ||
|  | 				t.Errorf("Server.toLocalPath() = %q, want %q", got, tt.want) | ||
|  | 			} | ||
|  | 		}) | ||
|  | 	} | ||
|  | } |