[py-configparser-cvs] r11 - trunk/tests
ehuelsmann at common-lisp.net
ehuelsmann at common-lisp.net
Sat Jan 19 13:57:31 UTC 2008
Author: ehuelsmann
Date: Sat Jan 19 08:57:30 2008
New Revision: 11
Added:
trunk/tests/
trunk/tests/py-configparser-tests.asd
trunk/tests/tests.lisp
Log:
Add tests.
Added: trunk/tests/py-configparser-tests.asd
==============================================================================
--- (empty file)
+++ trunk/tests/py-configparser-tests.asd Sat Jan 19 08:57:30 2008
@@ -0,0 +1,17 @@
+
+
+(in-package #:cl-user)
+
+(defpackage #:py-configparser-tests-system
+ (:use #:cl #:asdf))
+
+(in-package #:py-configparser-tests-system)
+
+(defsystem py-configparser-tests
+ :name "py-configparser-tests"
+ :author "Erik Huelsmann"
+ :version "1.0-dev"
+ :license "MIT"
+ :description "Tests for 'Common Lisp implementation of the Python ConfigParser module'"
+ :depends-on (#:py-configparser)
+ :components ((:file "tests")))
Added: trunk/tests/tests.lisp
==============================================================================
--- (empty file)
+++ trunk/tests/tests.lisp Sat Jan 19 08:57:30 2008
@@ -0,0 +1,304 @@
+
+(defpackage #:py-configparser-tests
+ (:use (#:cl #:py-configparser #:rt)))
+
+(in-package :py-configparser-tests)
+
+;; test 1
+;; should succeed
+(deftest basic.parser
+ (typep (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+")
+ (read-stream (make-config) s)) 'config)
+ T)
+
+(deftest basic.get-option.1
+ (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+ and some more
+")
+ (equal (get-option (read-stream (make-config) s) "n" "z")
+ "q and some more"))
+ T)
+
+(deftest basic.get-option.2
+ (with-input-from-string (s "[n]
+p=q
+delta=%(gamma)s
+z=%(p)s
+ and some more
+")
+ (equal (get-option (read-stream (make-config) s) "n" "delta" :defaults '(("gamma" . "the gamma value")))
+ "the gamma value"))
+ T)
+
+(deftest basic.get-option.3
+ (with-input-from-string (s "[n]
+p=15
+delta=%(gamma)s
+z=%(p)s
+ and some more
+")
+ (equal (get-option (read-stream (make-config) s) "n" "p" :type :number)
+ 15))
+ T)
+
+(deftest basic.get-option.4
+ (with-input-from-string (s "[n]
+p=yes
+delta=%(gamma)s
+z=%(p)s
+ and some more
+")
+ (equal (get-option (read-stream (make-config) s) "n" "p" :type :boolean)
+ T))
+ T)
+
+(deftest basic.get-option.5
+ (with-input-from-string (s "[n]
+p=q
+delta=%(gamma)s
+z=%(p)s
+ and some more
+
+[DEFAULT]
+gamma=the gamma value
+")
+ (equal (get-option (read-stream (make-config) s) "n" "delta")
+ "the gamma value"))
+ T)
+
+
+(deftest basic.sections
+ (with-input-from-string (s "[n] post-section header gunk ignored
+p=q
+z=%(p)s
+")
+ (equal (sections (read-stream (make-config) s))
+ '("n")))
+ T)
+
+(deftest basic.comments-only
+ (typep (with-input-from-string (s "#comments only
+")
+ (read-stream (make-config) s)) 'config)
+ T)
+
+(deftest basic.no-newline
+ (typep (with-input-from-string (s "#comments without trailing \#Newline")
+ (read-stream (make-config) s))
+ 'config)
+ T)
+
+(deftest basic.with-defaults
+ (equal (with-input-from-string (s "[DEFAULT]
+def-option = options without trailing newline")
+ (get-option (read-stream (make-config) s) "DEFAULT" "def-option"))
+ "options without trailing newline")
+ T)
+
+;; newlines only
+(deftest basic.newlines-only
+ (with-input-from-string (s "
+
+
+")
+ (typep (get-option read-stream (make-config) s)
+ 'config))
+ T)
+
+;; options
+(deftest basic.options
+ (equal (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+")
+ (options (read-stream (make-config) s) "n")) '("z" "p"))
+ T)
+
+;; items
+(deftest basic.items.1
+ (equal (with-inputfrom-string (s "[n]
+p=q
+z=%(p)s
+")
+ (items (read-stream (make-config) s) "n" :expand nil)) '(("z" "%(p)s") ("p" . "q")))
+ T)
+
+(deftest basic.items.2
+ (equal (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+")
+ (items (read-stream (make-config) s) "n" :expand t)) '(("z" . "q") ("p" . "q")))
+ T)
+
+(deftest basic.items.3
+ (equal (with-input-from-string (s "[n]
+p=q
+delta=%(gamma)s
+z=%(p)s
+")
+ (items (read-stream (make-config) s) "n" :expand t
+ :defaults '(("gamma" . "the gamma"))))
+ '(("z" . "q") ("delta" . "the gamma") ("p" . "q")))
+ T)
+
+
+;; sections
+(deftest basic.sections.1
+ (equal (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[v]
+[t]
+")
+ (sections (read-stream (make-config) s))) '("t" "v" "n"))
+ T)
+
+(deftest basic.sections.2
+ (equal (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[v]
+[t]
+
+[DEFAULT]
+p=t
+")
+ (sections (read-stream (make-config) s))) '("t" "v" "n"))
+ T)
+
+;; add-section
+(deftest basic.add-section
+ (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[t]
+
+")
+ (let ((c (read-stream (make-config) s)))
+ (unless (has-section-p c "v")
+ (add-section c "v")
+ (not (null (has-section-p c "v"))))))
+ T)
+
+;; set-option
+(deftest basic.set-option.1
+ (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[t]
+
+")
+ (let ((c (read-stream (make-config) s)))
+ (unless (has-option-p c "t" "b")
+ (set-option c "t" "b" "ok")
+ (equal (get-option c "t" "b") "ok"))))
+ T)
+
+(deftest basic.set-option.2
+ (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[t]
+
+")
+ (let ((c (read-stream (make-config) s)))
+ (set-option c "n" "p" "ok")
+ (equal (get-option c "n" "p") "ok")))
+ T)
+
+;; remove-option
+(deftest basic.remove-option
+ (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[t]
+
+")
+ (let ((c (read-stream (make-config) s)))
+ (when (has-option-p c "n" "p")
+ (remove-option c "n" "p")
+ (null (has-option-p c "n" "p")))))
+ T)
+
+;; remove-section
+(deftest basic.remove-section
+ (with-input-from-string (s "[n]
+p=q
+z=%(p)s
+
+[t]
+
+")
+ (let ((c (read-stream (make-config) s)))
+ (when (has-section-p c "t")
+ (remove-section c "t")
+ (null (has-section-p c "t")))))
+ T)
+
+
+
+;; now the tests that fail
+(deftest failures.no-header
+ (with-input-from-string (s "option-before = section
+[header]")
+ (handler-case
+ (progn
+ (read-stream (make-config) s)
+ nil)
+ (missing-section-header-error () T)))
+ T)
+
+(deftest failures.no-spaced-option-names
+ (with-input-from-string (s "[n]
+option with space = not allowed
+")
+ (handler-case
+ (progn
+ (read-stream (make-config) s)
+ nil)
+ (parsing-error () T)))
+ T)
+
+(deftest failures.recursion
+ (with-input-from-string (s "[n]
+p=%(z)s
+z=%(p)s
+")
+ (handler-case
+ (get-option (read-stream (make-config) s)
+ "n" ;; section
+ "p" ;; option
+ :expand t)
+ (interpolation-depth-error () T)))
+ T)
+
+;; non-erroring non-parsing tests
+(deftest miscelaneous
+ (with-input-from-string (s "[n]
+p=%(__name__)s
+q=%(z)s
+z=hello
+")
+ (let ((p (read-stream (make-config) s)))
+ (unless (string= (get-option p "n" "p" :expand t) "n")
+ (error "Unexpected output"))
+ (unless (string= (get-option p "n" "q" :expand nil) "%(z)s")
+ (error "Unexpected output"))
+ (unless (string= (get-option p "n" "q" :expand t) "hello")
+ (error "Unexpected output"))
+ (unless (string= (get-option p "n" "z") "hello")
+ (error "Unexpected output"))
+ NIL))
+ NIL)
\ No newline at end of file
More information about the Py-configparser-cvs
mailing list