github.com/oweisse/u-root@v0.0.0-20181109060735-d005ad25fef1/cmds/mktemp/mktemp_test.go (about)

     1  // Copyright 2018 the u-root 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
     6  
     7  import (
     8  	"bytes"
     9  	"fmt"
    10  	"strings"
    11  	"testing"
    12  
    13  	"github.com/u-root/u-root/pkg/testutil"
    14  )
    15  
    16  type test struct {
    17  	flags      []string
    18  	out        string
    19  	stdErr     string
    20  	exitStatus int
    21  }
    22  
    23  func TestMkTemp(t *testing.T) {
    24  
    25  	var tests = []test{
    26  		{
    27  			flags:      []string{},
    28  			out:        "/tmp/",
    29  			stdErr:     "",
    30  			exitStatus: 0,
    31  		},
    32  		{
    33  			flags:      []string{"-d"},
    34  			out:        "/tmp",
    35  			stdErr:     "",
    36  			exitStatus: 0,
    37  		},
    38  		{
    39  			flags:      []string{"foofoo.XXXX"},
    40  			out:        "/tmp/foofoo",
    41  			stdErr:     "",
    42  			exitStatus: 0,
    43  		},
    44  		{
    45  			flags:      []string{"foo.XXXXX", "--suffix", "baz"},
    46  			out:        "/tmp/foo.baz",
    47  			stdErr:     "",
    48  			exitStatus: 0,
    49  		},
    50  		{
    51  			flags:      []string{"-u", "-q"},
    52  			out:        "",
    53  			stdErr:     "",
    54  			exitStatus: 0,
    55  		},
    56  	}
    57  
    58  	// Table-driven testing
    59  	for _, tt := range tests {
    60  		t.Run(fmt.Sprintf("Using flags %s", tt.flags), func(t *testing.T) {
    61  			var out, stdErr bytes.Buffer
    62  			cmd := testutil.Command(t, tt.flags...)
    63  			cmd.Stdout = &out
    64  			cmd.Stderr = &stdErr
    65  			err := cmd.Run()
    66  
    67  			if !strings.HasPrefix(out.String(), tt.out) {
    68  				t.Errorf("stdout got:\n%s\nwant starting with:\n%s", out.String(), tt.out)
    69  			}
    70  
    71  			if !strings.HasPrefix(stdErr.String(), tt.stdErr) {
    72  				t.Errorf("stderr got:\n%s\nwant starting with:\n%s", stdErr.String(), tt.stdErr)
    73  			}
    74  
    75  			if tt.exitStatus == 0 && err != nil {
    76  				t.Errorf("expected to exit with %d, but exited with err %s", tt.exitStatus, err)
    77  			}
    78  		})
    79  	}
    80  }
    81  
    82  func TestMain(m *testing.M) {
    83  	testutil.Run(m, main)
    84  }