github.com/dnephin/dobi@v0.15.0/tasks/env/env_test.go (about)

     1  package env
     2  
     3  import (
     4  	"testing"
     5  
     6  	"os"
     7  
     8  	"github.com/dnephin/dobi/config"
     9  	"github.com/dnephin/dobi/tasks/task"
    10  	"gotest.tools/v3/assert"
    11  	"gotest.tools/v3/env"
    12  )
    13  
    14  func TestTask_Run(t *testing.T) {
    15  	var testcases = []struct {
    16  		doc      string
    17  		expected bool
    18  		vars     map[string]string
    19  	}{
    20  		{
    21  			doc: "set from variables",
    22  			vars: map[string]string{
    23  				"VAR_ONE": "override",
    24  				"VAR_TWO": "new",
    25  			},
    26  			expected: true,
    27  		},
    28  		{
    29  			doc: "no modifications",
    30  			vars: map[string]string{
    31  				"VAR_ONE": "preset",
    32  			},
    33  		},
    34  	}
    35  
    36  	for _, tc := range testcases {
    37  		t.Run(tc.doc, func(t *testing.T) {
    38  			defer env.PatchAll(t, map[string]string{
    39  				"VAR_ONE": "preset",
    40  			})()
    41  
    42  			envTask := newTask(task.NewName("foo", ""), &config.EnvConfig{
    43  				Variables: toSlice(tc.vars),
    44  			})
    45  
    46  			modified, err := envTask.Run(nil, false)
    47  			assert.NilError(t, err)
    48  			assert.Equal(t, modified, tc.expected)
    49  
    50  			for k, v := range tc.vars {
    51  				assert.Equal(t, os.Getenv(k), v)
    52  			}
    53  		})
    54  	}
    55  }
    56  
    57  func toSlice(m map[string]string) []string {
    58  	p := []string{}
    59  	for k, v := range m {
    60  		p = append(p, k+"="+v)
    61  	}
    62  	return p
    63  }