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  }