aboutsummaryrefslogtreecommitdiffstats
path: root/executil/executil_test.go
blob: d3c01f2bc7895699b83349d8e14d7cd2d471d8fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package executil

import (
	"os"
	"path/filepath"
	"strings"
	"testing"
)

func TestCompileCommand(t *testing.T) {
	tmpl := "tar -xf {{.Name}} {{.Base}} {{.Dir}}"
	dir := t.TempDir()
	data := CommandData{
		Name: filepath.Join(dir, "baz.rar"),
		Base: "baz.rar",
		Dir:  dir,
	}
	cmd, err := compileCommand(tmpl, data)
	if err != nil {
		t.Fatal(err)
	}
	if cmd.Dir != data.Dir {
		t.Fatalf("want %q, got %q", data.Dir, cmd.Dir)
	}
	if !strings.Contains(cmd.Path, string(os.PathSeparator)) {
		t.Fatalf("want %q to contain a path separator", cmd.Path)
	}
	if cmd.Args[0] != "tar" {
		t.Fatalf("want %q, got %q", "tar", cmd.Args[0])
	}
	if cmd.Args[1] != "-xf" {
		t.Fatalf("want %q, got %q", "-xf", cmd.Args[1])
	}
	if cmd.Args[2] != data.Name {
		t.Fatalf("want %q, got %q", data.Name, cmd.Args[2])
	}
	if cmd.Args[3] != data.Base {
		t.Fatalf("want %q, got %q", data.Base, cmd.Args[3])
	}
	if cmd.Args[4] != data.Dir {
		t.Fatalf("want %q, got %q", data.Base, cmd.Args[4])
	}
	if _, err := compileCommand("tar -xf {{.Bar}}", data); err == nil {
		t.Fatal("want error")
	}
}