summaryrefslogtreecommitdiffabout
path: root/tests/guile-itr.at
blob: 47cb660e35d1636e1a140a875c65a063246da1b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# This file is part of cfpeek -*- autotest -*-
# Copyright (C) 2011, 2012, 2015 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 <http://www.gnu.org/licenses/>.

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

Return to:

Send suggestions and report system problems to the System administrator.