1package generator_test 2 3import ( 4 "io/ioutil" 5 "os" 6 "os/exec" 7 "path/filepath" 8 "testing" 9 10 "github.com/go-swagger/go-swagger/cmd/swagger/commands/generate" 11 flags "github.com/jessevdk/go-flags" 12) 13 14func TestGenerateAndBuild(t *testing.T) { 15 cases := map[string]struct { 16 spec string 17 }{ 18 "issue 844": { 19 "../fixtures/bugs/844/swagger.json", 20 }, 21 } 22 23 for name, cas := range cases { 24 t.Run(name, func(t *testing.T) { 25 spec := filepath.FromSlash(cas.spec) 26 27 generated, err := ioutil.TempDir(filepath.Dir(spec), "generated") 28 if err != nil { 29 t.Fatalf("TempDir()=%s", generated) 30 } 31 defer os.RemoveAll(generated) 32 33 err = newTestClient(spec, generated).Execute(nil) 34 if err != nil { 35 t.Fatalf("Execute()=%s", err) 36 } 37 38 packages := filepath.Join(generated, "...") 39 40 if p, err := exec.Command("go", "get", packages).CombinedOutput(); err != nil { 41 t.Fatalf("go get %s: %s\n%s", packages, err, p) 42 } 43 44 if p, err := exec.Command("go", "build", packages).CombinedOutput(); err != nil { 45 t.Fatalf("go build %s: %s\n%s", packages, err, p) 46 } 47 }) 48 } 49} 50 51func newTestClient(input, output string) *generate.Client { 52 c := &generate.Client{ 53 DefaultScheme: "http", 54 DefaultProduces: "application/json", 55 } 56 c.Spec = flags.Filename(input) 57 c.Target = flags.Filename(output) 58 c.APIPackage = "operations" 59 c.ModelPackage = "models" 60 c.ServerPackage = "restapi" 61 c.ClientPackage = "client" 62 return c 63} 64