github.com/anchorlabsinc/go-swagger@v0.19.0/generator/build_test.go (about) 1 package generator_test 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "log" 7 "os" 8 "os/exec" 9 "path/filepath" 10 "strings" 11 "testing" 12 13 "github.com/stretchr/testify/assert" 14 15 "github.com/go-swagger/go-swagger/cmd/swagger/commands/generate" 16 flags "github.com/jessevdk/go-flags" 17 ) 18 19 const ( 20 defaultAPIPackage = "operations" 21 defaultClientPackage = "client" 22 defaultModelPackage = "models" 23 defaultServerPackage = "restapi" 24 ) 25 26 func TestGenerateAndBuild(t *testing.T) { 27 defer func() { 28 log.SetOutput(os.Stdout) 29 }() 30 31 cases := map[string]struct { 32 spec string 33 }{ 34 "issue 844": { 35 "../fixtures/bugs/844/swagger.json", 36 }, 37 "issue 844 (with params)": { 38 "../fixtures/bugs/844/swagger-bis.json", 39 }, 40 "issue 1216": { 41 "../fixtures/bugs/1216/swagger.yml", 42 }, 43 } 44 45 for name, cas := range cases { 46 var captureLog bytes.Buffer 47 log.SetOutput(&captureLog) 48 49 t.Run(name, func(t *testing.T) { 50 spec := filepath.FromSlash(cas.spec) 51 52 generated, err := ioutil.TempDir(filepath.Dir(spec), "generated") 53 if err != nil { 54 t.Fatalf("TempDir()=%s", generated) 55 } 56 defer func() { _ = os.RemoveAll(generated) }() 57 58 err = newTestClient(spec, generated).Execute(nil) 59 if err != nil { 60 t.Fatalf("Execute()=%s", err) 61 } 62 63 //fmt.Println(captureLog.String()) 64 assert.Contains(t, strings.ToLower(captureLog.String()), "generation completed") 65 66 packages := filepath.Join(generated, "...") 67 68 if p, err := exec.Command("go", "get", packages).CombinedOutput(); err != nil { 69 t.Fatalf("go get %s: %s\n%s", packages, err, p) 70 } 71 72 if p, err := exec.Command("go", "build", packages).CombinedOutput(); err != nil { 73 t.Fatalf("go build %s: %s\n%s", packages, err, p) 74 } 75 }) 76 } 77 } 78 79 func newTestClient(input, output string) *generate.Client { 80 c := &generate.Client{ 81 DefaultScheme: "http", 82 DefaultProduces: "application/json", 83 } 84 c.Spec = flags.Filename(input) 85 c.Target = flags.Filename(output) 86 c.APIPackage = defaultAPIPackage 87 c.ModelPackage = defaultModelPackage 88 c.ServerPackage = defaultServerPackage 89 c.ClientPackage = defaultClientPackage 90 return c 91 }