blob: 1cc1e966ad7c4a9ab3ba69f755546eca6556b1e0 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package app
import (
"testing"
)
import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestEnvContainer(t *testing.T) {
t.Parallel()
envContainer := NewEnvContainer(
map[string]string{
"foo1": "bar1",
"foo2": "bar2",
"foo3": "",
},
)
assert.Equal(t, "bar1", envContainer.Env("foo1"))
assert.Equal(t, "bar2", envContainer.Env("foo2"))
assert.Equal(t, "", envContainer.Env("foo3"))
assert.Equal(
t,
[]string{
"foo1=bar1",
"foo2=bar2",
},
Environ(envContainer),
)
assert.Equal(
t,
map[string]string{
"foo1": "bar1",
"foo2": "bar2",
},
EnvironMap(envContainer),
)
envContainer, err := newEnvContainerForEnviron(
[]string{
"foo1=bar1",
"foo2=bar2",
"foo3=bar3",
"foo4=",
},
)
require.NoError(t, err)
assert.Equal(t, "bar1", envContainer.Env("foo1"))
assert.Equal(t, "bar2", envContainer.Env("foo2"))
assert.Equal(t, "bar3", envContainer.Env("foo3"))
assert.Equal(t, "", envContainer.Env("foo4"))
assert.Equal(
t,
[]string{
"foo1=bar1",
"foo2=bar2",
"foo3=bar3",
},
Environ(envContainer),
)
assert.Equal(
t,
map[string]string{
"foo1": "bar1",
"foo2": "bar2",
"foo3": "bar3",
},
EnvironMap(envContainer),
)
envContainer = NewEnvContainerWithOverrides(
envContainer,
map[string]string{
"foo1": "",
"foo2": "baz2",
},
)
assert.Equal(t, "", envContainer.Env("foo1"))
assert.Equal(t, "baz2", envContainer.Env("foo2"))
assert.Equal(t, "bar3", envContainer.Env("foo3"))
assert.Equal(t, "", envContainer.Env("foo4"))
assert.Equal(
t,
[]string{
"foo2=baz2",
"foo3=bar3",
},
Environ(envContainer),
)
assert.Equal(
t,
map[string]string{
"foo2": "baz2",
"foo3": "bar3",
},
EnvironMap(envContainer),
)
_, err = newEnvContainerForEnviron(
[]string{
"foo1=bar1",
"foo2=bar2",
"foo3",
},
)
require.Error(t, err)
}
func TestArgContainer(t *testing.T) {
t.Parallel()
args := []string{"foo", "bar", "baz"}
assert.Equal(t, args, Args(NewArgContainer(args...)))
}
func TestIsDev(t *testing.T) {
t.Parallel()
assert.Equal(t, DevStdinFilePath != "", IsDevStdin(DevStdinFilePath))
assert.Equal(t, DevStdoutFilePath != "", IsDevStdout(DevStdoutFilePath))
assert.Equal(t, DevStderrFilePath != "", IsDevStderr(DevStderrFilePath))
assert.Equal(t, DevNullFilePath != "", IsDevNull(DevNullFilePath))
assert.False(t, IsDevStdin("foo"))
assert.False(t, IsDevStdout("foo"))
assert.False(t, IsDevStderr("foo"))
assert.False(t, IsDevNull("foo"))
}
func TestEnvBool(t *testing.T) {
t.Parallel()
envContainer := NewEnvContainer(
map[string]string{
"foo1": "bar1",
"foo2": "true",
"foo3": "false",
},
)
val, err := EnvBool(envContainer, "foo1", false)
assert.Error(t, err)
assert.Equal(t, false, val)
val, err = EnvBool(envContainer, "foo2", false)
assert.NoError(t, err)
assert.Equal(t, true, val)
val, err = EnvBool(envContainer, "foo3", false)
assert.NoError(t, err)
assert.Equal(t, false, val)
val, err = EnvBool(envContainer, "notset", true)
assert.NoError(t, err)
assert.Equal(t, true, val)
}