ngx_conf_parse_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package nginx
  2. import (
  3. "fmt"
  4. "strings"
  5. "testing"
  6. "github.com/tufanbarisyildirim/gonginx/config"
  7. "github.com/tufanbarisyildirim/gonginx/parser"
  8. )
  9. func TestNgxConfParse(t *testing.T) {
  10. p, err := parser.NewParser("conf/nextcloud_ngx.conf")
  11. if err != nil {
  12. fmt.Println(err)
  13. return
  14. }
  15. n, _ := p.Parse()
  16. fn(n.Block, 0)
  17. c, err := ParseNgxConfig("conf/nextcloud_ngx.conf")
  18. if err != nil {
  19. fmt.Println(err)
  20. return
  21. }
  22. fmt.Println(c)
  23. c, err = ParseNgxConfig("conf/test.conf")
  24. if err != nil {
  25. fmt.Println(err)
  26. return
  27. }
  28. fmt.Println(c)
  29. }
  30. func fn(block config.IBlock, deep int) {
  31. if block == nil {
  32. return
  33. }
  34. for _, v := range block.GetDirectives() {
  35. if len(v.GetComment()) > 0 {
  36. for _, c := range v.GetComment() {
  37. fmt.Println(strings.Repeat("\t", deep), c)
  38. }
  39. }
  40. // 将 []config.Parameter 转换为 []string
  41. params := make([]string, len(v.GetParameters()))
  42. for i, p := range v.GetParameters() {
  43. params[i] = p.String()
  44. }
  45. fmt.Printf("%s%s %s\n", strings.Repeat("\t", deep), v.GetName(), strings.Join(params, " "))
  46. fn(v.GetBlock(), deep+1)
  47. }
  48. }