gitlab.com/apertussolutions/u-root@v7.0.0+incompatible/cmds/core/dirname/dirname_test.go (about) 1 // Copyright 2016 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 "testing" 10 11 "github.com/u-root/u-root/pkg/testutil" 12 ) 13 14 type test struct { 15 args []string 16 out string 17 err string 18 } 19 20 var dirnameTests = []test{ 21 // For no args it seems we have to print an error. 22 // It should be missing operand[s] but that's not the standard. 23 {args: []string{}, err: "dirname: missing operand\n"}, 24 {args: []string{""}, out: ".\n"}, 25 {args: []string{"/this/that"}, out: "/this\n"}, 26 {args: []string{"/this/that", "/other"}, out: "/this\n/\n"}, 27 {args: []string{"/this/that", "/other thing/space"}, out: "/this\n/other thing\n"}, 28 } 29 30 func TestDirName(t *testing.T) { 31 // Table-driven testing 32 for _, tt := range dirnameTests { 33 c := testutil.Command(t, tt.args...) 34 stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{} 35 c.Stdout, c.Stderr = stdout, stderr 36 err := c.Run() 37 if err != nil && tt.err == "" { 38 t.Errorf("Test %v: got %q, want nil", tt.args, err) 39 continue 40 } 41 42 t.Logf("RUN: %v: got %q, %q", tt.args, stdout, stderr) 43 if stdout.String() != tt.out { 44 t.Errorf("%v: stdout got %q, wants %q", tt.args, stdout.String(), tt.out) 45 } 46 if err != nil && stderr.String() != "" && stderr.String()[len("yyyy/mm/dd hh:mm:ss "):] != tt.err { 47 t.Errorf("%v: stderr got %q, wants %q", tt.args, stderr.String(), tt.err) 48 } 49 50 } 51 } 52 53 func TestMain(m *testing.M) { 54 testutil.Run(m, main) 55 }