47 lines
		
	
	
		
			850 B
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			850 B
		
	
	
	
		
			Go
		
	
	
	
|  | package fileutils | ||
|  | 
 | ||
|  | import "testing" | ||
|  | 
 | ||
|  | func TestCommonPrefix(t *testing.T) { | ||
|  | 	testCases := map[string]struct { | ||
|  | 		paths []string | ||
|  | 		want  string | ||
|  | 	}{ | ||
|  | 		"same lvl": { | ||
|  | 			paths: []string{ | ||
|  | 				"/home/user/file1", | ||
|  | 				"/home/user/file2", | ||
|  | 			}, | ||
|  | 			want: "/home/user", | ||
|  | 		}, | ||
|  | 		"sub folder": { | ||
|  | 			paths: []string{ | ||
|  | 				"/home/user/folder", | ||
|  | 				"/home/user/folder/file", | ||
|  | 			}, | ||
|  | 			want: "/home/user/folder", | ||
|  | 		}, | ||
|  | 		"relative path": { | ||
|  | 			paths: []string{ | ||
|  | 				"/home/user/folder", | ||
|  | 				"/home/user/folder/../folder2", | ||
|  | 			}, | ||
|  | 			want: "/home/user", | ||
|  | 		}, | ||
|  | 		"no common path": { | ||
|  | 			paths: []string{ | ||
|  | 				"/home/user/folder", | ||
|  | 				"/etc/file", | ||
|  | 			}, | ||
|  | 			want: "", | ||
|  | 		}, | ||
|  | 	} | ||
|  | 	for name, tt := range testCases { | ||
|  | 		t.Run(name, func(t *testing.T) { | ||
|  | 			if got := CommonPrefix('/', tt.paths...); got != tt.want { | ||
|  | 				t.Errorf("CommonPrefix() = %v, want %v", got, tt.want) | ||
|  | 			} | ||
|  | 		}) | ||
|  | 	} | ||
|  | } |