This repository has been archived on 2025-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
Files
drone-runner-podman/engine/compiler/os_test.go
2019-10-10 19:01:58 -07:00

129 lines
3.1 KiB
Go

// Copyright 2019 Drone.IO Inc. All rights reserved.
// Use of this source code is governed by the Polyform License
// that can be found in the LICENSE file.
package compiler
import (
"reflect"
"testing"
"github.com/drone/runner-go/shell/bash"
"github.com/drone/runner-go/shell/powershell"
"github.com/dchest/uniuri"
)
func Test_tempdir(t *testing.T) {
// replace the default random function with one that
// is deterministic, for testing purposes.
random = notRandom
// restore the default random function and the previously
// specified temporary directory
defer func() {
random = uniuri.New
}()
tests := []struct {
os string
path string
}{
{os: "windows", path: "C:\\Windows\\Temp\\drone-random"},
{os: "linux", path: "/tmp/drone-random"},
{os: "openbsd", path: "/tmp/drone-random"},
{os: "netbsd", path: "/tmp/drone-random"},
{os: "freebsd", path: "/tmp/drone-random"},
}
for _, test := range tests {
if got, want := tempdir(test.os), test.path; got != want {
t.Errorf("Want tempdir %s, got %s", want, got)
}
}
}
func Test_join(t *testing.T) {
tests := []struct {
os string
a []string
b string
}{
{os: "windows", a: []string{"C:", "Windows", "Temp"}, b: "C:\\Windows\\Temp"},
{os: "linux", a: []string{"/tmp", "foo", "bar"}, b: "/tmp/foo/bar"},
}
for _, test := range tests {
if got, want := join(test.os, test.a...), test.b; got != want {
t.Errorf("Want %s, got %s", want, got)
}
}
}
func Test_getExt(t *testing.T) {
tests := []struct {
os string
a string
b string
}{
{os: "windows", a: "clone", b: "clone.ps1"},
{os: "linux", a: "clone", b: "clone"},
}
for _, test := range tests {
if got, want := getExt(test.os, test.a), test.b; got != want {
t.Errorf("Want %s, got %s", want, got)
}
}
}
func Test_getCommand(t *testing.T) {
cmd, args := getCommand("linux", "clone.sh")
if got, want := cmd, "/bin/sh"; got != want {
t.Errorf("Want command %s, got %s", want, got)
}
if !reflect.DeepEqual(args, []string{"-e", "clone.sh"}) {
t.Errorf("Unexpected args %v", args)
}
cmd, args = getCommand("windows", "clone.ps1")
if got, want := cmd, "powershell"; got != want {
t.Errorf("Want command %s, got %s", want, got)
}
if !reflect.DeepEqual(args, []string{"-noprofile", "-noninteractive", "-command", "clone.ps1"}) {
t.Errorf("Unexpected args %v", args)
}
}
func Test_getNetrc(t *testing.T) {
tests := []struct {
os string
name string
}{
{os: "windows", name: "_netrc"},
{os: "linux", name: ".netrc"},
{os: "openbsd", name: ".netrc"},
{os: "netbsd", name: ".netrc"},
{os: "freebsd", name: ".netrc"},
}
for _, test := range tests {
if got, want := getNetrc(test.os), test.name; got != want {
t.Errorf("Want %s on %s, got %s", want, test.os, got)
}
}
}
func Test_getScript(t *testing.T) {
commands := []string{"go build"}
a := genScript("windows", commands)
b := powershell.Script(commands)
if !reflect.DeepEqual(a, b) {
t.Errorf("Generated windows linux script")
}
a = genScript("linux", commands)
b = bash.Script(commands)
if !reflect.DeepEqual(a, b) {
t.Errorf("Generated invalid linux script")
}
}