github.com/StackExchange/blackbox/v2@v2.0.1-0.20220331193400-d84e904973ab/pkg/bbutil/sortedfile_test.go (about) 1 package bbutil 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 ) 8 9 func TestAddLinesToSortedFile(t *testing.T) { 10 11 var tests = []struct { 12 start string 13 add []string 14 expected string 15 }{ 16 { 17 "", 18 []string{"one"}, 19 "one\n", 20 }, 21 { 22 "begin\ntwo\n", 23 []string{"at top"}, 24 "at top\nbegin\ntwo\n", 25 }, 26 { 27 "begin\ntwo\n", 28 []string{"zbottom"}, 29 "begin\ntwo\nzbottom\n", 30 }, 31 { 32 "begin\ntwo\n", 33 []string{"middle"}, 34 "begin\nmiddle\ntwo\n", 35 }, 36 } 37 38 for i, test := range tests { 39 content := []byte(test.start) 40 tmpfile, err := ioutil.TempFile("", "example") 41 if err != nil { 42 t.Fatal(err) 43 } 44 tmpfilename := tmpfile.Name() 45 defer os.Remove(tmpfilename) 46 47 if _, err := tmpfile.Write(content); err != nil { 48 t.Fatal(err) 49 } 50 if err := tmpfile.Close(); err != nil { 51 t.Fatal(err) 52 } 53 AddLinesToSortedFile(tmpfilename, test.add...) 54 expected := test.expected 55 56 got, err := ioutil.ReadFile(tmpfilename) 57 if err != nil { 58 t.Fatal(err) 59 } 60 if expected != string(got) { 61 t.Errorf("test %v: contents wrong:\nexpected: %q\n got: %q", i, expected, got) 62 } 63 os.Remove(tmpfilename) 64 } 65 66 }