utils.go 805 B

12345678910111213141516171819202122232425262728293031323334
  1. package test
  2. import (
  3. "io/ioutil"
  4. "gopkg.in/bblfsh/client-go.v3"
  5. "gopkg.in/bblfsh/sdk.v2/uast/nodes"
  6. "gopkg.in/src-d/go-git.v4/plumbing"
  7. core_test "gopkg.in/src-d/hercules.v10/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) nodes.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().Content(string(data)).Filename(name).Mode(bblfsh.Semantic)
  25. response, _, err := request.UAST()
  26. if err != nil {
  27. panic(err)
  28. }
  29. return response
  30. }