github.com/rohankumardubey/draft-classic@v0.16.0/pkg/draft/pack/pack_test.go (about)

     1  package pack
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"io/ioutil"
     7  	"os"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"k8s.io/helm/pkg/proto/hapi/chart"
    12  )
    13  
    14  const testDockerfile = `FROM nginx:latest
    15  `
    16  const testTasksFile = `[pre-up]
    17  pre-up-task = "echo pre-up"
    18  
    19  [post-deploy]
    20  setup-task = "echo setup"
    21  
    22  [cleanup]
    23  cleanup-task = "echo cleanup"
    24  `
    25  
    26  func TestSaveDir(t *testing.T) {
    27  	p := &Pack{
    28  		Chart: &chart.Chart{
    29  			Metadata: &chart.Metadata{
    30  				Name: "chart-for-nigel-thornberry",
    31  			},
    32  		},
    33  		Files: map[string]io.ReadCloser{
    34  			dockerfileName: ioutil.NopCloser(bytes.NewBufferString(testDockerfile)),
    35  			TasksFileName:  ioutil.NopCloser(bytes.NewBufferString(testTasksFile)),
    36  		},
    37  	}
    38  	dir, err := ioutil.TempDir("", "draft-pack-test")
    39  	if err != nil {
    40  		t.Fatal(err)
    41  	}
    42  	defer os.RemoveAll(dir)
    43  
    44  	if err := p.SaveDir(dir); err != nil {
    45  		t.Errorf("expected there to be no error when writing to %v, got %v", dir, err)
    46  	}
    47  
    48  	_, err = os.Stat(filepath.Join(dir, dockerfileName))
    49  	if err != nil {
    50  		if os.IsNotExist(err) {
    51  			t.Errorf("Expected %s to be created but wasn't", dockerfileName)
    52  		} else {
    53  			t.Fatal(err)
    54  		}
    55  	}
    56  
    57  	tasksPath := filepath.Join(dir, TargetTasksFileName)
    58  	_, err = os.Stat(tasksPath)
    59  	if err != nil {
    60  		if os.IsNotExist(err) {
    61  			t.Errorf("Expected %s to have been created but wasnt", TargetTasksFileName)
    62  		} else {
    63  			t.Fatal(err)
    64  		}
    65  	}
    66  
    67  	data, err := ioutil.ReadFile(tasksPath)
    68  	if err != nil {
    69  		t.Fatal(err)
    70  	}
    71  	if string(data) == "" {
    72  		t.Error("Expected content in .draft-tasks.toml, got empty string")
    73  	}
    74  }
    75  
    76  func TestSaveDirDockerfileExistsInAppDir(t *testing.T) {
    77  	p := &Pack{
    78  		Chart: &chart.Chart{
    79  			Metadata: &chart.Metadata{
    80  				Name: "chart-for-nigel-thornberry",
    81  			},
    82  		},
    83  		Files: map[string]io.ReadCloser{
    84  			dockerfileName: ioutil.NopCloser(bytes.NewBufferString(testDockerfile)),
    85  		},
    86  	}
    87  	dir, err := ioutil.TempDir("", "draft-pack-test")
    88  	if err != nil {
    89  		t.Fatal(err)
    90  	}
    91  	defer os.RemoveAll(dir)
    92  
    93  	tmpfn := filepath.Join(dir, "Dockerfile")
    94  	expectedDockerfile := []byte("FROM draft")
    95  	if err := ioutil.WriteFile(tmpfn, expectedDockerfile, 0644); err != nil {
    96  		t.Fatal(err)
    97  	}
    98  
    99  	if err := p.SaveDir(dir); err != nil {
   100  		t.Errorf("expected there to be no error when writing to %v, got %v", dir, err)
   101  	}
   102  
   103  	savedDockerfile, err := ioutil.ReadFile(tmpfn)
   104  	if err != nil {
   105  		t.Fatal(err)
   106  	}
   107  
   108  	if !bytes.Equal(savedDockerfile, expectedDockerfile) {
   109  		t.Errorf("expected '%s', got '%s'", string(expectedDockerfile), string(savedDockerfile))
   110  	}
   111  }