changes_xpather_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // +build !disable_babelfish
  2. package uast
  3. import (
  4. "log"
  5. "sort"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "gopkg.in/bblfsh/client-go.v3"
  9. "gopkg.in/bblfsh/sdk.v2/uast/nodes"
  10. uast_test "gopkg.in/src-d/hercules.v10/internal/plumbing/uast/test"
  11. "gopkg.in/src-d/hercules.v10/internal/test"
  12. )
  13. func TestChangesXPatherExtractChanged(t *testing.T) {
  14. client, err := bblfsh.NewClient("0.0.0.0:9432")
  15. if err != nil {
  16. log.Panicf("Failed to connect to the Babelfish server at 0.0.0.0:9432: %v", err)
  17. }
  18. hash1 := "a98a6940eb4cfb1eb635c3232485a75c4b63fff3"
  19. hash2 := "42457dc695fa73ec9621b47832d5711f6325410d"
  20. root1 := uast_test.ParseBlobFromTestRepo(hash1, "burndown.go", client)
  21. root2 := uast_test.ParseBlobFromTestRepo(hash2, "burndown.go", client)
  22. gitChange := test.FakeChangeForName("burndown.go", hash1, hash2)
  23. uastChanges := []Change{
  24. {Before: root1, After: root2, Change: gitChange},
  25. {Before: nil, After: root2, Change: gitChange},
  26. {Before: root1, After: nil, Change: gitChange},
  27. }
  28. xpather := ChangesXPather{XPath: "//uast:Comment"}
  29. nodesAdded, nodesRemoved := xpather.Extract(uastChanges)
  30. sort.Slice(nodesRemoved, func(i, j int) bool {
  31. return nodesRemoved[i].(nodes.Object)["Text"].(nodes.String) <
  32. nodesRemoved[j].(nodes.Object)["Text"].(nodes.String)
  33. })
  34. for _, n := range nodesAdded {
  35. assert.True(t, len(n.(nodes.Object)["Text"].(nodes.String)) > 0)
  36. }
  37. for _, n := range nodesRemoved[1:] {
  38. assert.True(t, len(n.(nodes.Object)["Text"].(nodes.String)) > 0)
  39. }
  40. assert.True(t, len(nodesAdded) > 0)
  41. assert.True(t, len(nodesRemoved) > 0)
  42. }