|
@@ -0,0 +1,121 @@
|
|
|
+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")
|
|
|
+}
|