nginx-ui/internal/nginx/ngx_conf_parse_test.go
2025-03-09 08:36:58 +08:00

56 lines
1.1 KiB
Go

package nginx
import (
"fmt"
"strings"
"testing"
"github.com/tufanbarisyildirim/gonginx/config"
"github.com/tufanbarisyildirim/gonginx/parser"
)
func TestNgxConfParse(t *testing.T) {
p, err := parser.NewParser("conf/nextcloud_ngx.conf")
if err != nil {
fmt.Println(err)
return
}
n, _ := p.Parse()
fn(n.Block, 0)
c, err := ParseNgxConfig("conf/nextcloud_ngx.conf")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(c)
c, err = ParseNgxConfig("conf/test.conf")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(c)
}
func fn(block config.IBlock, deep int) {
if block == nil {
return
}
for _, v := range block.GetDirectives() {
if len(v.GetComment()) > 0 {
for _, c := range v.GetComment() {
fmt.Println(strings.Repeat("\t", deep), c)
}
}
// 将 []config.Parameter 转换为 []string
params := make([]string, len(v.GetParameters()))
for i, p := range v.GetParameters() {
params[i] = p.String()
}
fmt.Printf("%s%s %s\n", strings.Repeat("\t", deep), v.GetName(), strings.Join(params, " "))
fn(v.GetBlock(), deep+1)
}
}