go-hep.org/x/hep@v0.40.0/cmd/root2arrow/main_test.go (about) 1 // Copyright ©2019 The go-hep Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main // import "go-hep.org/x/hep/cmd/root2arrow" 6 7 import ( 8 "os" 9 "os/exec" 10 "testing" 11 12 "go-hep.org/x/hep/internal/diff" 13 ) 14 15 func TestFile(t *testing.T) { 16 for _, tc := range []struct { 17 file string 18 tree string 19 stream bool 20 want string 21 }{ 22 { 23 file: "../../groot/testdata/simple.root", 24 tree: "tree", 25 want: "testdata/simple.root.file", 26 }, 27 { 28 file: "../../groot/testdata/simple.root", 29 tree: "tree", 30 stream: true, 31 want: "testdata/simple.root.stream", 32 }, 33 { 34 file: "../../groot/testdata/leaves.root", 35 tree: "tree", 36 want: "testdata/leaves.root.file", 37 }, 38 { 39 file: "../../groot/testdata/leaves.root", 40 tree: "tree", 41 stream: true, 42 want: "testdata/leaves.root.stream", 43 }, 44 { 45 file: "../../groot/testdata/embedded-std-vector.root", 46 tree: "modules", 47 want: "testdata/embedded-std-vector.root.file", 48 }, 49 { 50 file: "../../groot/testdata/embedded-std-vector.root", 51 tree: "modules", 52 stream: true, 53 want: "testdata/embedded-std-vector.root.stream", 54 }, 55 } { 56 t.Run(tc.want, func(t *testing.T) { 57 f, err := os.CreateTemp("", "root2arrow-") 58 if err != nil { 59 t.Fatal(err) 60 } 61 f.Close() 62 defer os.Remove(f.Name()) 63 64 err = process(f.Name(), tc.file, tc.tree, tc.stream) 65 if err != nil { 66 t.Fatal(err) 67 } 68 69 want, err := os.ReadFile(tc.want) 70 if err != nil { 71 t.Fatal(err) 72 } 73 74 got, err := arrowCat(f.Name()) 75 if err != nil { 76 t.Fatal(err) 77 } 78 79 if got, want := string(got), string(want); got != want { 80 t.Fatalf( 81 "arrow file/stream differ:\n%s", 82 diff.Format(got, want), 83 ) 84 } 85 }) 86 } 87 88 } 89 90 func arrowCat(fname string) ([]byte, error) { 91 return exec.Command( 92 "go", "tool", 93 "git.sr.ht/~sbinet/go-arrow/ipc/cmd/arrow-cat", 94 fname, 95 ).CombinedOutput() 96 }