diff_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2016 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package gitutil
  5. import (
  6. "html/template"
  7. "testing"
  8. dmp "github.com/sergi/go-diff/diffmatchpatch"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/gogs/git-module"
  11. )
  12. func Test_diffsToHTML(t *testing.T) {
  13. tests := []struct {
  14. diffs []dmp.Diff
  15. lineType git.DiffLineType
  16. expHTML template.HTML
  17. }{
  18. {
  19. diffs: []dmp.Diff{
  20. {Type: dmp.DiffEqual, Text: "foo "},
  21. {Type: dmp.DiffInsert, Text: "bar"},
  22. {Type: dmp.DiffDelete, Text: " baz"},
  23. {Type: dmp.DiffEqual, Text: " biz"},
  24. },
  25. lineType: git.DiffLineAdd,
  26. expHTML: template.HTML(`+ foo <span class="added-code">bar</span> biz`),
  27. },
  28. {
  29. diffs: []dmp.Diff{
  30. {Type: dmp.DiffEqual, Text: "foo "},
  31. {Type: dmp.DiffDelete, Text: "bar"},
  32. {Type: dmp.DiffInsert, Text: " baz"},
  33. {Type: dmp.DiffEqual, Text: " biz"},
  34. },
  35. lineType: git.DiffLineDelete,
  36. expHTML: template.HTML(`- foo <span class="removed-code">bar</span> biz`),
  37. },
  38. }
  39. for _, test := range tests {
  40. t.Run("", func(t *testing.T) {
  41. assert.Equal(t, test.expHTML, diffsToHTML(test.diffs, test.lineType))
  42. })
  43. }
  44. }