github.com/webwurst/docker@v1.7.0/builder/shell_parser_test.go (about)

     1  package builder
     2  
     3  import (
     4  	"bufio"
     5  	"os"
     6  	"strings"
     7  	"testing"
     8  )
     9  
    10  func TestShellParser(t *testing.T) {
    11  	file, err := os.Open("words")
    12  	if err != nil {
    13  		t.Fatalf("Can't open 'words': %s", err)
    14  	}
    15  	defer file.Close()
    16  
    17  	scanner := bufio.NewScanner(file)
    18  	envs := []string{"PWD=/home", "SHELL=bash"}
    19  	for scanner.Scan() {
    20  		line := scanner.Text()
    21  
    22  		// Trim comments and blank lines
    23  		i := strings.Index(line, "#")
    24  		if i >= 0 {
    25  			line = line[:i]
    26  		}
    27  		line = strings.TrimSpace(line)
    28  
    29  		if line == "" {
    30  			continue
    31  		}
    32  
    33  		words := strings.Split(line, "|")
    34  		if len(words) != 2 {
    35  			t.Fatalf("Error in 'words' - should be 2 words:%q", words)
    36  		}
    37  
    38  		words[0] = strings.TrimSpace(words[0])
    39  		words[1] = strings.TrimSpace(words[1])
    40  
    41  		newWord, err := ProcessWord(words[0], envs)
    42  
    43  		if err != nil {
    44  			newWord = "error"
    45  		}
    46  
    47  		if newWord != words[1] {
    48  			t.Fatalf("Error. Src: %s  Calc: %s  Expected: %s", words[0], newWord, words[1])
    49  		}
    50  	}
    51  }