github.com/aneshas/cli@v0.0.0-20180104210444-aec958fa47db/init_test.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/fnproject/cli/langs"
    10  	"github.com/urfave/cli"
    11  	yaml "gopkg.in/yaml.v2"
    12  )
    13  
    14  func TestInit(t *testing.T) {
    15  
    16  	testname := "test-init"
    17  	testdir, err := ioutil.TempDir("", testname)
    18  	if err != nil {
    19  		t.Fatalf("ERROR: Failed to make tmp test directory: err: %v", err)
    20  	}
    21  	defer os.RemoveAll(testdir)
    22  
    23  	err = os.Chdir(testdir)
    24  	if err != nil {
    25  		t.Fatalf("ERROR: Failed to cd to tmp test directory: err: %v", err)
    26  	}
    27  
    28  	helper := &langs.GoLangHelper{}
    29  	helper.GenerateBoilerplate()
    30  
    31  	app := newFn()
    32  	err = app.Command("init").Run(cli.NewContext(app, &flag.FlagSet{}, nil))
    33  	if err != nil {
    34  		t.Fatalf("ERROR: Failed run `init` command: err: %v", err)
    35  	}
    36  
    37  	ffname := "func.yaml"
    38  	b, err := ioutil.ReadFile(ffname)
    39  	if err != nil {
    40  		t.Fatalf("could not open %s for parsing. Error: %v", ffname, err)
    41  	}
    42  	ff := &funcfile{}
    43  	err = yaml.Unmarshal(b, ff)
    44  	if err != nil {
    45  		t.Fatalf("could not parse %s. Error: %v", ffname, err)
    46  	}
    47  	// should have version, runtime and entrypoint
    48  	if ff.Version == "" {
    49  		t.Errorf("no version found in generated %s", ffname)
    50  	}
    51  	if ff.Runtime == "" {
    52  		t.Errorf("no runtime found in generated %s", ffname)
    53  	}
    54  	if ff.Entrypoint == "" {
    55  		t.Errorf("no entrypoint found in generated %s", ffname)
    56  	}
    57  }