(t *testing.T)
| 917 | } |
| 918 | |
| 919 | func TestPutJSONRecursiveOutputsDirectoryAndFileResults(t *testing.T) { |
| 920 | dir := t.TempDir() |
| 921 | if err := os.MkdirAll(filepath.Join(dir, "empty"), 0755); err != nil { |
| 922 | t.Fatal(err) |
| 923 | } |
| 924 | if err := os.WriteFile(filepath.Join(dir, "file.txt"), []byte("file"), 0644); err != nil { |
| 925 | t.Fatal(err) |
| 926 | } |
| 927 | |
| 928 | mock := &mockFilesClient{ |
| 929 | uploadFn: func(arg *files.UploadArg, content io.Reader) (*files.FileMetadata, error) { |
| 930 | if _, err := io.ReadAll(content); err != nil { |
| 931 | t.Fatal(err) |
| 932 | } |
| 933 | return putFileMetadata(arg.Path, 4), nil |
| 934 | }, |
| 935 | createFolderV2Fn: func(arg *files.CreateFolderArg) (*files.CreateFolderResult, error) { |
| 936 | return files.NewCreateFolderResult(putFolderMetadata(arg.Path)), nil |
| 937 | }, |
| 938 | } |
| 939 | stubFilesClient(t, mock) |
| 940 | |
| 941 | var stdout, stderr bytes.Buffer |
| 942 | cmd := testPutJSONCmd(&stdout, &stderr) |
| 943 | if err := cmd.Flags().Set("recursive", "true"); err != nil { |
| 944 | t.Fatal(err) |
| 945 | } |
| 946 | if err := put(cmd, []string{dir, "/remote"}); err != nil { |
| 947 | t.Fatalf("put error: %v", err) |
| 948 | } |
| 949 | |
| 950 | got := decodePutOutput(t, &stdout) |
| 951 | if !got.Input.Recursive || got.Input.Source != dir || got.Input.Target != "/remote" { |
| 952 | t.Fatalf("input = %+v", got.Input) |
| 953 | } |
| 954 | want := map[string]string{ |
| 955 | "/remote/file.txt": putStatusUploaded, |
| 956 | "/remote": putStatusCreated, |
| 957 | "/remote/empty": putStatusCreated, |
| 958 | } |
| 959 | if len(got.Results) != len(want) { |
| 960 | t.Fatalf("results len = %d, want %d: %+v", len(got.Results), len(want), got.Results) |
| 961 | } |
| 962 | for _, result := range got.Results { |
| 963 | wantStatus, ok := want[result.Input.Target] |
| 964 | if !ok { |
| 965 | t.Fatalf("unexpected result target %q", result.Input.Target) |
| 966 | } |
| 967 | if result.Status != wantStatus { |
| 968 | t.Fatalf("status for %s = %s, want %s", result.Input.Target, result.Status, wantStatus) |
| 969 | } |
| 970 | if result.Result == nil { |
| 971 | t.Fatalf("result metadata for %s is nil", result.Input.Target) |
| 972 | } |
| 973 | } |
| 974 | if !strings.Contains(stderr.String(), "Processing ") || !strings.Contains(stderr.String(), "Creating directory ") { |
| 975 | t.Fatalf("stderr = %q, want recursive status", stderr.String()) |
| 976 | } |
nothing calls this directly
no test coverage detected