utils.go 892 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package test
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "gopkg.in/bblfsh/client-go.v2"
  6. "gopkg.in/bblfsh/sdk.v1/uast"
  7. "gopkg.in/src-d/go-git.v4/plumbing"
  8. core_test "gopkg.in/src-d/hercules.v7/internal/test"
  9. )
  10. // ParseBlobFromTestRepo extracts the UAST from the file by it's hash and name.
  11. func ParseBlobFromTestRepo(hash, name string, client *bblfsh.Client) *uast.Node {
  12. blob, err := core_test.Repository.BlobObject(plumbing.NewHash(hash))
  13. if err != nil {
  14. panic(err)
  15. }
  16. reader, err := blob.Reader()
  17. if err != nil {
  18. panic(err)
  19. }
  20. defer reader.Close()
  21. data, err := ioutil.ReadAll(reader)
  22. if err != nil {
  23. panic(err)
  24. }
  25. request := client.NewParseRequest()
  26. request.Content(string(data))
  27. request.Filename(name)
  28. response, err := request.Do()
  29. if err != nil {
  30. panic(err)
  31. }
  32. if response.UAST == nil {
  33. panic(fmt.Sprintf("empty response for %s %s", name, hash))
  34. }
  35. return response.UAST
  36. }