1package container
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8)
9
10func TestHashEnvironment_Deterministic(t *testing.T) {
11 env1 := []string{"B=2", "A=1", "C=3"}
12 env2 := []string{"A=1", "C=3", "B=2"}
13 assert.Equal(t, hashEnvironment(env1), hashEnvironment(env2))
14}
15
16func TestHashEnvironment_DifferentValues(t *testing.T) {
17 env1 := []string{"A=1", "B=2"}
18 env2 := []string{"A=1", "B=3"}
19 assert.NotEqual(t, hashEnvironment(env1), hashEnvironment(env2))
20}
21
22func TestHashEnvironment_DifferentKeys(t *testing.T) {
23 env1 := []string{"A=1", "B=2"}
24 env2 := []string{"A=1", "C=2"}
25 assert.NotEqual(t, hashEnvironment(env1), hashEnvironment(env2))
26}
27
28func TestHashEnvironment_Empty(t *testing.T) {
29 hash := hashEnvironment(nil)
30 require.NotEmpty(t, hash)
31 assert.Equal(t, hash, hashEnvironment([]string{}))
32}
33
34func TestHashEnvironment_ExtraKey(t *testing.T) {
35 env1 := []string{"A=1"}
36 env2 := []string{"A=1", "B=2"}
37 assert.NotEqual(t, hashEnvironment(env1), hashEnvironment(env2))
38}
39
40func TestHashEnvironment_NewlineInValue(t *testing.T) {
41 env1 := []string{"A=1\nB=2"}
42 env2 := []string{"A=1", "B=2"}
43
44 assert.NotEqual(t, hashEnvironment(env1), hashEnvironment(env2))
45}
46
47func TestMergeEnvironmentVariables_Sorted(t *testing.T) {
48 dockerfile := []string{"Z=26", "A=1"}
49 user := []string{"M=13", "B=2"}
50 result := mergeEnvironmentVariables(dockerfile, user)
51 assert.Equal(t, []string{"A=1", "B=2", "M=13", "Z=26"}, result)
52}
53
54func TestMergeEnvironmentVariables_UserOverridesDockerfile(t *testing.T) {
55 dockerfile := []string{"A=old"}
56 user := []string{"A=new"}
57 result := mergeEnvironmentVariables(dockerfile, user)
58 assert.Equal(t, []string{"A=new"}, result)
59}