You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

109 lines
3.2 KiB

  1. package main
  2. import (
  3. "go/ast"
  4. "go/parser"
  5. "go/token"
  6. "testing"
  7. )
  8. func TestFileParser_ParseFile(t *testing.T) {
  9. fs := token.NewFileSet()
  10. file, err := parser.ParseFile(fs, "internal/tests/custom_package_name/greeter/greeter.go", nil, 0)
  11. if err != nil {
  12. t.Fatalf("Unexpected error: %v", err)
  13. }
  14. p := fileParser{
  15. fileSet: fs,
  16. imports: make(map[string]string),
  17. importedInterfaces: make(map[string]map[string]*ast.InterfaceType),
  18. }
  19. pkg, err := p.parseFile("", file)
  20. if err != nil {
  21. t.Fatalf("Unexpected error: %v", err)
  22. }
  23. checkGreeterImports(t, p.imports)
  24. expectedName := "greeter"
  25. if pkg.Name != expectedName {
  26. t.Fatalf("Expected name to be %v but got %v", expectedName, pkg.Name)
  27. }
  28. expectedInterfaceName := "InputMaker"
  29. if pkg.Interfaces[0].Name != expectedInterfaceName {
  30. t.Fatalf("Expected interface name to be %v but got %v", expectedInterfaceName, pkg.Interfaces[0].Name)
  31. }
  32. }
  33. func TestFileParser_ParsePackage(t *testing.T) {
  34. fs := token.NewFileSet()
  35. _, err := parser.ParseFile(fs, "internal/tests/custom_package_name/greeter/greeter.go", nil, 0)
  36. if err != nil {
  37. t.Fatalf("Unexpected error: %v", err)
  38. }
  39. p := fileParser{
  40. fileSet: fs,
  41. imports: make(map[string]string),
  42. importedInterfaces: make(map[string]map[string]*ast.InterfaceType),
  43. }
  44. err = p.parsePackage("github.com/golang/mock/mockgen/internal/tests/custom_package_name/greeter")
  45. if err != nil {
  46. t.Fatalf("Unexpected error: %v", err)
  47. }
  48. checkGreeterImports(t, p.imports)
  49. }
  50. func TestImportsOfFile(t *testing.T) {
  51. fs := token.NewFileSet()
  52. file, err := parser.ParseFile(fs, "internal/tests/custom_package_name/greeter/greeter.go", nil, 0)
  53. if err != nil {
  54. t.Fatalf("Unexpected error: %v", err)
  55. }
  56. imports, _ := importsOfFile(file)
  57. checkGreeterImports(t, imports)
  58. }
  59. func checkGreeterImports(t *testing.T, imports map[string]string) {
  60. // check that imports have stdlib package "fmt"
  61. if fmtPackage, ok := imports["fmt"]; !ok {
  62. t.Errorf("Expected imports to have key \"fmt\"")
  63. } else {
  64. expectedFmtPackage := "fmt"
  65. if fmtPackage != expectedFmtPackage {
  66. t.Errorf("Expected fmt key to have value %s but got %s", expectedFmtPackage, fmtPackage)
  67. }
  68. }
  69. // check that imports have package named "validator"
  70. if validatorPackage, ok := imports["validator"]; !ok {
  71. t.Errorf("Expected imports to have key \"fmt\"")
  72. } else {
  73. expectedValidatorPackage := "github.com/golang/mock/mockgen/internal/tests/custom_package_name/validator"
  74. if validatorPackage != expectedValidatorPackage {
  75. t.Errorf("Expected validator key to have value %s but got %s", expectedValidatorPackage, validatorPackage)
  76. }
  77. }
  78. // check that imports have package named "client"
  79. if clientPackage, ok := imports["client"]; !ok {
  80. t.Errorf("Expected imports to have key \"client\"")
  81. } else {
  82. expectedClientPackage := "github.com/golang/mock/mockgen/internal/tests/custom_package_name/client/v1"
  83. if clientPackage != expectedClientPackage {
  84. t.Errorf("Expected client key to have value %s but got %s", expectedClientPackage, clientPackage)
  85. }
  86. }
  87. // check that imports don't have package named "v1"
  88. if _, ok := imports["v1"]; ok {
  89. t.Errorf("Expected import not to have key \"v1\"")
  90. }
  91. }