1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-09 21:40:33 +02:00

* standalone/test-bad-identifiers: New test.

* standalone/Makefile.am (check_SCRIPTS, TESTS): Add it.
This commit is contained in:
Neil Jerram 2007-12-29 01:35:47 +00:00
parent 5c004b6d6a
commit d69668b7de
3 changed files with 77 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2007-12-29 Neil Jerram <neil@ossau.uklinux.net>
* standalone/test-bad-identifiers: New test.
* standalone/Makefile.am (check_SCRIPTS, TESTS): Add it.
2007-12-13 Stephen Compall <s11@member.fsf.org>
* tests/srfi-69.test (SRFI-69)[can use all arguments, including

View file

@ -49,6 +49,9 @@ CLEANFILES = *.x
check_SCRIPTS += test-system-cmds
TESTS += test-system-cmds
check_SCRIPTS += test-bad-identifiers
TESTS += test-bad-identifiers
check_SCRIPTS += test-require-extension
TESTS += test-require-extension

View file

@ -0,0 +1,69 @@
#!/bin/sh
exec guile -s "$0" "$@"
!#
(define bad-identifiers
'(
;; On AIX 5.2 and 5.3, /usr/include/sys/timer.h includes:
;; #ifndef _LINUX_SOURCE_COMPAT
;; #define func_data t_union.data
;; #endif
;; So we want to avoid using func_data in Guile source code.
"func_data"
))
(use-modules (ice-9 regex) (ice-9 rdelim))
(define bad-id-regexp
(make-regexp (string-append "\\<("
(string-join (map regexp-quote bad-identifiers) "|")
")\\>")))
(define exit-status 0)
;; Non-exported code from (ice-9 ftw).
(define (directory-files dir)
(let ((dir-stream (opendir dir)))
(let loop ((new (readdir dir-stream))
(acc '()))
(if (eof-object? new)
(begin
(closedir dir-stream)
acc)
(loop (readdir dir-stream)
(if (or (string=? "." new) ;;; ignore
(string=? ".." new)) ;;; ignore
acc
(cons (in-vicinity dir new) acc)))))))
(define (directory-files-matching dir pattern)
(let ((file-name-regexp (make-regexp pattern)))
(filter (lambda (fn)
(regexp-exec file-name-regexp fn))
(directory-files dir))))
(let loop ((file-names (directory-files-matching "../../libguile"
"\\.[ch]$")))
(or (null? file-names)
(begin
(with-input-from-file (car file-names)
(lambda ()
(let loop ((linenum 1) (line (read-line)))
(or (eof-object? line)
(begin
(if (regexp-exec bad-id-regexp line)
(begin
(set! exit-status 1)
(format (current-error-port)
"~a:~a: ~a\n"
(car file-names)
linenum
line)))
(loop (+ linenum 1) (read-line)))))))
(loop (cdr file-names)))))
(exit exit-status)
;; Local Variables:
;; mode: scheme
;; End: