(t *testing.T)
| 772 | } |
| 773 | |
| 774 | func TestGetJSONRecursiveOutputsDirectoryAndFileResults(t *testing.T) { |
| 775 | tmpDir := t.TempDir() |
| 776 | dst := filepath.Join(tmpDir, "out") |
| 777 | |
| 778 | mock := &mockFilesClient{ |
| 779 | getMetadataFn: func(arg *files.GetMetadataArg) (files.IsMetadata, error) { |
| 780 | return getTestFolderMetadata(arg.Path), nil |
| 781 | }, |
| 782 | listFolderFn: func(arg *files.ListFolderArg) (*files.ListFolderResult, error) { |
| 783 | return &files.ListFolderResult{ |
| 784 | Entries: []files.IsMetadata{ |
| 785 | getTestFolderMetadata("/remote"), |
| 786 | getTestFolderMetadata("/remote/empty"), |
| 787 | getTestFileMetadata("/remote/file.txt", 4), |
| 788 | }, |
| 789 | HasMore: false, |
| 790 | }, nil |
| 791 | }, |
| 792 | downloadFn: func(arg *files.DownloadArg) (*files.FileMetadata, io.ReadCloser, error) { |
| 793 | return getTestFileMetadata(arg.Path, 4), io.NopCloser(strings.NewReader("data")), nil |
| 794 | }, |
| 795 | } |
| 796 | stubFilesClient(t, mock) |
| 797 | |
| 798 | var stdout, stderr bytes.Buffer |
| 799 | cmd := testGetJSONCmd(&stdout, &stderr) |
| 800 | if err := cmd.Flags().Set("recursive", "true"); err != nil { |
| 801 | t.Fatal(err) |
| 802 | } |
| 803 | if err := get(cmd, []string{"/remote", dst}); err != nil { |
| 804 | t.Fatalf("get error: %v", err) |
| 805 | } |
| 806 | |
| 807 | got := decodeGetOutput(t, &stdout) |
| 808 | if got.Input.Source != "/remote" || got.Input.Target != dst || !got.Input.Recursive || got.Input.Stdout { |
| 809 | t.Fatalf("input = %+v", got.Input) |
| 810 | } |
| 811 | want := map[string]string{ |
| 812 | dst: getStatusCreated, |
| 813 | filepath.Join(dst, "empty"): getStatusCreated, |
| 814 | filepath.Join(dst, "file.txt"): getStatusDownloaded, |
| 815 | } |
| 816 | if len(got.Results) != len(want) { |
| 817 | t.Fatalf("results len = %d, want %d: %+v", len(got.Results), len(want), got.Results) |
| 818 | } |
| 819 | for _, result := range got.Results { |
| 820 | wantStatus, ok := want[result.Input.Target] |
| 821 | if !ok { |
| 822 | t.Fatalf("unexpected target %q", result.Input.Target) |
| 823 | } |
| 824 | if result.Status != wantStatus { |
| 825 | t.Fatalf("status for %s = %s, want %s", result.Input.Target, result.Status, wantStatus) |
| 826 | } |
| 827 | if result.Result == nil { |
| 828 | t.Fatalf("result metadata for %s is nil", result.Input.Target) |
| 829 | } |
| 830 | } |
| 831 | if !strings.Contains(stderr.String(), "Downloading /remote/file.txt") { |
nothing calls this directly
no test coverage detected