utils.go 801 B

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