package compiler import ( "testing" "github.com/remogatto/prettytest" "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/config" "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/webdav" ) type testSuite struct { prettytest.Suite } var ( compiler *Compiler client *webdav.Client simpleMain string = ` package main func main() { println("Hello World!") } ` webDAVTemplateProgram string = ` package main import ( "bytes" "fmt" "text/template" "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/webdav" ) func main() { var ( WebDAVUrl = "http://localhost:8082/remote.php/webdav/" WebDavUsername = "admin" WebDAVPassword = "password" data struct{ Data string } output bytes.Buffer ) client, err := webdav.NewClient(WebDAVUrl, WebDavUsername, WebDAVPassword) if err != nil { fmt.Print(err) } content, err := client.Download("Templates/template.tpl") if err != nil { fmt.Print(err) } tpl, err := template.New("template.tpl").Parse(string(content)) if err != nil { fmt.Print(err) } data.Data = "Foo" err = tpl.Execute(&output, data) if err != nil { fmt.Print(err) } err = client.Mkdir("Test") if err != nil { fmt.Print(err) } err = client.Upload(output.Bytes(), "Test/foo.txt") if err != nil { fmt.Print(err) } fmt.Print("ok") } ` ) func TestRunner(t *testing.T) { prettytest.Run( t, new(testSuite), ) } func (t *testSuite) BeforeAll() { var err error compiler = New("http://localhost:8083/compile") client, err = webdav.NewClient( config.WebDAVUrl, config.WebDavUsername, config.WebDAVPassword, ) if err != nil { panic(err) } } func (t *testSuite) TestRunSimpleMain() { program := &Program{simpleMain} result, err := compiler.Run(program) t.Nil(err) t.Equal("Hello World!\n", result.Events[0].Message) } func (t *testSuite) TestWebDAVTemplate() { program := &Program{webDAVTemplateProgram} result, err := compiler.Run(program) t.Nil(err) t.Equal("", result.Errors) if result.Errors == "" { t.Equal("ok", result.Events[0].Message) data, err := client.Download("Test/foo.txt") t.Nil(err) t.Equal("Foo", string(data)) } } func (t *testSuite) After() { client.Delete("Test") }