# This file is part of cfpeek -*- autotest -*- # Copyright (C) 2011 Sergey Poznyakoff # # Cfpeek is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # Cfpeek is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cfpeek. If not, see . AT_SETUP([Guile: iteration over nodes]) AT_KEYWORDS([guile listing]) CFPEEK_TEST_GUILE([ user smith; group mail; pidfile "/var/run/example"; logging { facility daemon; tag example; } program a { command "a.out"; logging { facility local0; tag a; } } program b { command "b.out"; wait yes; pidfile /var/run/b.pid; } ], [(define (cfpeek node) (if (not (= (grecs-node-type node) grecs-node-root)) (let ((loc (grecs-node-locus node))) (display (car loc)) (display ":") (display (cdr loc)) (display ": ") (display (grecs-node-ident node)) (display ": ") (display (grecs-node-path node)) (cond ((grecs-node-has-value? node) (display ":: ") (display (grecs-node-value node)))) (newline))) (if (grecs-node-down? node) (cfpeek (grecs-node-down node))) (if (grecs-node-next? node) (cfpeek (grecs-node-next node)))) ], [cfpeek @ .], [EX_OK], [./test.cf:2: user: .user:: smith ./test.cf:3: group: .group:: mail ./test.cf:4: pidfile: .pidfile:: /var/run/example ./test.cf:6: logging: .logging ./test.cf:7: facility: .logging.facility:: daemon ./test.cf:8: tag: .logging.tag:: example ./test.cf:11: program: .program="a":: a ./test.cf:12: command: .program="a".command:: a.out ./test.cf:13: logging: .program="a".logging ./test.cf:14: facility: .program="a".logging.facility:: local0 ./test.cf:15: tag: .program="a".logging.tag:: a ./test.cf:19: program: .program="b":: b ./test.cf:20: command: .program="b".command:: b.out ./test.cf:21: wait: .program="b".wait:: yes ./test.cf:22: pidfile: .program="b".pidfile:: /var/run/b.pid ]) AT_CLEANUP