Merge pull request #5579 from mtrmac/macOS-unit-tests

Make macOS unit tests runnable
This commit is contained in:
OpenShift Merge Robot
2020-03-21 14:48:50 +01:00
committed by GitHub
10 changed files with 226 additions and 133 deletions

View File

@ -0,0 +1,44 @@
// +build !remoteclient,!linux
package main
// The ONLY purpose of this file is to allow the subpackage to compile. Dont expect anything
// to work.
import (
"syscall"
"github.com/spf13/cobra"
)
const remote = false
func setSyslog() error {
return nil
}
func profileOn(cmd *cobra.Command) error {
return nil
}
func profileOff(cmd *cobra.Command) error {
return nil
}
func setupRootless(cmd *cobra.Command, args []string) error {
return nil
}
func setRLimits() error {
return nil
}
func setUMask() {
// Be sure we can create directories with 0755 mode.
syscall.Umask(0022)
}
// checkInput can be used to verify any of the globalopt values
func checkInput() error {
return nil
}

View File

@ -0,0 +1,119 @@
package shared
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestGenerateCommand(t *testing.T) {
inputCommand := "docker run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo \"hello world\""
correctCommand := "/proc/self/exe run -it --name bar -e NAME=bar -e IMAGE=foo foo echo hello world"
newCommand, err := GenerateCommand(inputCommand, "foo", "bar", "")
assert.Nil(t, err)
assert.Equal(t, "hello world", newCommand[11])
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandCheckSubstitution(t *testing.T) {
type subsTest struct {
input string
expected string
shouldFail bool
}
absTmpFile, err := ioutil.TempFile("", "podmanRunlabelTestAbsolutePath")
assert.Nil(t, err, "error creating tempfile")
defer os.Remove(absTmpFile.Name())
relTmpFile, err := ioutil.TempFile("./", "podmanRunlabelTestRelativePath")
assert.Nil(t, err, "error creating tempfile")
defer os.Remove(relTmpFile.Name())
relTmpCmd, err := filepath.Abs(relTmpFile.Name())
assert.Nil(t, err, "error getting absolute path for relative tmpfile")
// this has a (low) potential of race conditions but no other way
removedTmpFile, err := ioutil.TempFile("", "podmanRunlabelTestRemove")
assert.Nil(t, err, "error creating tempfile")
os.Remove(removedTmpFile.Name())
absTmpCmd := fmt.Sprintf("%s --flag1 --flag2 --args=foo", absTmpFile.Name())
tests := []subsTest{
{
input: "docker run -it alpine:latest",
expected: "/proc/self/exe run -it alpine:latest",
shouldFail: false,
},
{
input: "podman run -it alpine:latest",
expected: "/proc/self/exe run -it alpine:latest",
shouldFail: false,
},
{
input: absTmpCmd,
expected: absTmpCmd,
shouldFail: false,
},
{
input: "./" + relTmpFile.Name(),
expected: relTmpCmd,
shouldFail: false,
},
{
input: "ls -la",
expected: "ls -la",
shouldFail: false,
},
{
input: removedTmpFile.Name(),
expected: "",
shouldFail: true,
},
}
for _, test := range tests {
newCommand, err := GenerateCommand(test.input, "foo", "bar", "")
if test.shouldFail {
assert.NotNil(t, err)
} else {
assert.Nil(t, err)
}
assert.Equal(t, test.expected, strings.Join(newCommand, " "))
}
}
func TestGenerateCommandPath(t *testing.T) {
inputCommand := "docker run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it --name bar -e NAME=bar -e IMAGE=foo foo echo install"
newCommand, _ := GenerateCommand(inputCommand, "foo", "bar", "")
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandNoSetName(t *testing.T) {
inputCommand := "docker run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it --name foo -e NAME=foo -e IMAGE=foo foo echo install"
newCommand, err := GenerateCommand(inputCommand, "foo", "", "")
assert.Nil(t, err)
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandNoName(t *testing.T) {
inputCommand := "docker run -it -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it -e IMAGE=foo foo echo install"
newCommand, err := GenerateCommand(inputCommand, "foo", "", "")
assert.Nil(t, err)
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandAlreadyPodman(t *testing.T) {
inputCommand := "podman run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it --name bar -e NAME=bar -e IMAGE=foo foo echo install"
newCommand, err := GenerateCommand(inputCommand, "foo", "bar", "")
assert.Nil(t, err)
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}

View File

@ -1,11 +1,6 @@
package shared package shared
import ( import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
"testing" "testing"
"github.com/containers/libpod/pkg/util" "github.com/containers/libpod/pkg/util"
@ -17,113 +12,6 @@ var (
imageName = "bar" imageName = "bar"
) )
func TestGenerateCommand(t *testing.T) {
inputCommand := "docker run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo \"hello world\""
correctCommand := "/proc/self/exe run -it --name bar -e NAME=bar -e IMAGE=foo foo echo hello world"
newCommand, err := GenerateCommand(inputCommand, "foo", "bar", "")
assert.Nil(t, err)
assert.Equal(t, "hello world", newCommand[11])
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandCheckSubstitution(t *testing.T) {
type subsTest struct {
input string
expected string
shouldFail bool
}
absTmpFile, err := ioutil.TempFile("", "podmanRunlabelTestAbsolutePath")
assert.Nil(t, err, "error creating tempfile")
defer os.Remove(absTmpFile.Name())
relTmpFile, err := ioutil.TempFile("./", "podmanRunlabelTestRelativePath")
assert.Nil(t, err, "error creating tempfile")
defer os.Remove(relTmpFile.Name())
relTmpCmd, err := filepath.Abs(relTmpFile.Name())
assert.Nil(t, err, "error getting absolute path for relative tmpfile")
// this has a (low) potential of race conditions but no other way
removedTmpFile, err := ioutil.TempFile("", "podmanRunlabelTestRemove")
assert.Nil(t, err, "error creating tempfile")
os.Remove(removedTmpFile.Name())
absTmpCmd := fmt.Sprintf("%s --flag1 --flag2 --args=foo", absTmpFile.Name())
tests := []subsTest{
{
input: "docker run -it alpine:latest",
expected: "/proc/self/exe run -it alpine:latest",
shouldFail: false,
},
{
input: "podman run -it alpine:latest",
expected: "/proc/self/exe run -it alpine:latest",
shouldFail: false,
},
{
input: absTmpCmd,
expected: absTmpCmd,
shouldFail: false,
},
{
input: "./" + relTmpFile.Name(),
expected: relTmpCmd,
shouldFail: false,
},
{
input: "ls -la",
expected: "ls -la",
shouldFail: false,
},
{
input: removedTmpFile.Name(),
expected: "",
shouldFail: true,
},
}
for _, test := range tests {
newCommand, err := GenerateCommand(test.input, "foo", "bar", "")
if test.shouldFail {
assert.NotNil(t, err)
} else {
assert.Nil(t, err)
}
assert.Equal(t, test.expected, strings.Join(newCommand, " "))
}
}
func TestGenerateCommandPath(t *testing.T) {
inputCommand := "docker run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it --name bar -e NAME=bar -e IMAGE=foo foo echo install"
newCommand, _ := GenerateCommand(inputCommand, "foo", "bar", "")
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandNoSetName(t *testing.T) {
inputCommand := "docker run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it --name foo -e NAME=foo -e IMAGE=foo foo echo install"
newCommand, err := GenerateCommand(inputCommand, "foo", "", "")
assert.Nil(t, err)
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandNoName(t *testing.T) {
inputCommand := "docker run -it -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it -e IMAGE=foo foo echo install"
newCommand, err := GenerateCommand(inputCommand, "foo", "", "")
assert.Nil(t, err)
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateCommandAlreadyPodman(t *testing.T) {
inputCommand := "podman run -it --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE echo install"
correctCommand := "/proc/self/exe run -it --name bar -e NAME=bar -e IMAGE=foo foo echo install"
newCommand, err := GenerateCommand(inputCommand, "foo", "bar", "")
assert.Nil(t, err)
assert.Equal(t, correctCommand, strings.Join(newCommand, " "))
}
func TestGenerateRunEnvironment(t *testing.T) { func TestGenerateRunEnvironment(t *testing.T) {
opts := make(map[string]string) opts := make(map[string]string)
opts["opt1"] = "one" opts["opt1"] = "one"

View File

@ -4,6 +4,12 @@ package libpod
import "github.com/containers/libpod/libpod/define" import "github.com/containers/libpod/libpod/define"
// Top gathers statistics about the running processes in a container. It returns a
// []string for output
func (c *Container) Top(descriptors []string) ([]string, error) {
return nil, define.ErrNotImplemented
}
// GetContainerPidInformation returns process-related data of all processes in // GetContainerPidInformation returns process-related data of all processes in
// the container. The output data can be controlled via the `descriptors` // the container. The output data can be controlled via the `descriptors`
// argument which expects format descriptors and supports all AIXformat // argument which expects format descriptors and supports all AIXformat

View File

@ -1,3 +1,5 @@
// +build linux
package shm package shm
import ( import (

View File

@ -25,7 +25,7 @@ func assembleSystemdCgroupName(baseSlice, newSlice string) (string, error) {
// LabelVolumePath takes a mount path for a volume and gives it an // LabelVolumePath takes a mount path for a volume and gives it an
// selinux label of either shared or not // selinux label of either shared or not
func LabelVolumePath(path string, shared bool) error { func LabelVolumePath(path string) error {
return define.ErrNotImplemented return define.ErrNotImplemented
} }

View File

@ -0,0 +1,23 @@
// +build !linux
package adapter
import (
"context"
"os"
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/define"
)
// ExecAttachCtr execs and attaches to a container
func ExecAttachCtr(ctx context.Context, ctr *libpod.Container, tty, privileged bool, env map[string]string, cmd []string, user, workDir string, streams *libpod.AttachStreams, preserveFDs uint, detachKeys string) (int, error) {
return -1, define.ErrNotImplemented
}
// StartAttachCtr starts and (if required) attaches to a container
// if you change the signature of this function from os.File to io.Writer, it will trigger a downstream
// error. we may need to just lint disable this one.
func StartAttachCtr(ctx context.Context, ctr *libpod.Container, stdout, stderr, stdin *os.File, detachKeys string, sigProxy bool, startContainer bool, recursive bool) error { //nolint-interfacer
return define.ErrNotImplemented
}

View File

@ -3,10 +3,11 @@
package specgen package specgen
import ( import (
"github.com/containers/libpod/libpod/image"
spec "github.com/opencontainers/runtime-spec/specs-go" spec "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors" "github.com/pkg/errors"
) )
func (s *SpecGenerator) getSeccompConfig(configSpec *spec.Spec) (*spec.LinuxSeccomp, error) { func (s *SpecGenerator) getSeccompConfig(configSpec *spec.Spec, img *image.Image) (*spec.LinuxSeccomp, error) {
return nil, errors.New("function not supported on non-linux OS's") return nil, errors.New("function not supported on non-linux OS's")
} }

View File

@ -0,0 +1,29 @@
package util
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestGetImageConfigStopSignal(t *testing.T) {
// Linux-only beause parsing signal names is not supported on non-Linux systems by
// pkg/signal.
stopSignalValidInt, err := GetImageConfig([]string{"STOPSIGNAL 9"})
require.Nil(t, err)
assert.Equal(t, stopSignalValidInt.StopSignal, "9")
stopSignalValidString, err := GetImageConfig([]string{"STOPSIGNAL SIGKILL"})
require.Nil(t, err)
assert.Equal(t, stopSignalValidString.StopSignal, "9")
_, err = GetImageConfig([]string{"STOPSIGNAL 0"})
assert.NotNil(t, err)
_, err = GetImageConfig([]string{"STOPSIGNAL garbage"})
assert.NotNil(t, err)
_, err = GetImageConfig([]string{"STOPSIGNAL "})
assert.NotNil(t, err)
}

View File

@ -219,25 +219,6 @@ func TestGetImageConfigLabel(t *testing.T) {
assert.NotNil(t, err) assert.NotNil(t, err)
} }
func TestGetImageConfigStopSignal(t *testing.T) {
stopSignalValidInt, err := GetImageConfig([]string{"STOPSIGNAL 9"})
require.Nil(t, err)
assert.Equal(t, stopSignalValidInt.StopSignal, "9")
stopSignalValidString, err := GetImageConfig([]string{"STOPSIGNAL SIGKILL"})
require.Nil(t, err)
assert.Equal(t, stopSignalValidString.StopSignal, "9")
_, err = GetImageConfig([]string{"STOPSIGNAL 0"})
assert.NotNil(t, err)
_, err = GetImageConfig([]string{"STOPSIGNAL garbage"})
assert.NotNil(t, err)
_, err = GetImageConfig([]string{"STOPSIGNAL "})
assert.NotNil(t, err)
}
func TestGetImageConfigOnBuild(t *testing.T) { func TestGetImageConfigOnBuild(t *testing.T) {
onBuildOne, err := GetImageConfig([]string{"ONBUILD ADD /testdir1"}) onBuildOne, err := GetImageConfig([]string{"ONBUILD ADD /testdir1"})
require.Nil(t, err) require.Nil(t, err)