diff options
author | Dan McGee <dan@archlinux.org> | 2007-07-02 02:03:15 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2007-07-02 02:03:15 +0200 |
commit | 19f66083f0aef92af84761fd62245270e97c6f33 (patch) | |
tree | 44f27171bf8450d861e878826de07897a6a3ac80 | |
parent | d70116bfbc535cac9eb941a570c34479e68a1b8d (diff) | |
download | pacman-19f66083f0aef92af84761fd62245270e97c6f33.tar.gz pacman-19f66083f0aef92af84761fd62245270e97c6f33.tar.xz |
Add mode and type checking to pactest for files
Add the ability to check the permissions and type of a file within the
framework of pactest. Two new rules can be used:
self.addrule("FILE_TYPE=bin/foo|file")
self.addrule("FILE_MODE=bin/bar|644")
TODO: add the ability to add different types of files (eg links) via the test
package building framework, and add the ability to change the modes on files.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rwxr-xr-x | pactest/pmrule.py | 45 | ||||
-rw-r--r-- | pactest/tests/mode001.py | 12 | ||||
-rw-r--r-- | pactest/tests/type001.py | 13 |
3 files changed, 54 insertions, 16 deletions
diff --git a/pactest/pmrule.py b/pactest/pmrule.py index 886ac545..d5d0f561 100755 --- a/pactest/pmrule.py +++ b/pactest/pmrule.py @@ -19,7 +19,7 @@ from util import * - +from stat import * class pmrule: """Rule object @@ -108,24 +108,37 @@ class pmrule: if case == "EXIST": if not os.path.isfile(filename): success = 0 - else: - if case == "MODIFIED": - for f in files: - if f.name == key: - if not f.ismodified(): - success = 0 - elif case == "PACNEW": - if not os.path.isfile("%s%s" % (filename, PM_PACNEW)): + elif case == "MODIFIED": + for f in files: + if f.name == key: + if not f.ismodified(): + success = 0 + elif case == "MODE": + mode = os.lstat(filename)[ST_MODE] + if int(value,8) != S_IMODE(mode): + success = 0 + elif case == "TYPE": + if value == "dir": + if not os.path.isdir(filename): success = 0 - elif case == "PACORIG": - if not os.path.isfile("%s%s" % (filename, PM_PACORIG)): + elif value == "file": + if not os.path.isfile(filename): success = 0 - elif case == "PACSAVE": - if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)): + elif value == "link": + if not os.path.islink(filename): success = 0 - else: - print "FILE rule '%s' not found" % case - success = -1 + elif case == "PACNEW": + if not os.path.isfile("%s%s" % (filename, PM_PACNEW)): + success = 0 + elif case == "PACORIG": + if not os.path.isfile("%s%s" % (filename, PM_PACORIG)): + success = 0 + elif case == "PACSAVE": + if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)): + success = 0 + else: + print "FILE rule '%s' not found" % case + success = -1 else: print "Rule kind '%s' not found" % kind success = -1 diff --git a/pactest/tests/mode001.py b/pactest/tests/mode001.py new file mode 100644 index 00000000..ff245a2c --- /dev/null +++ b/pactest/tests/mode001.py @@ -0,0 +1,12 @@ +self.description = "Check the mode of default files in a package" + +p = pmpkg("pkg1") +p.files = ["bin/foo" + "bin/bar"] +self.addpkg(p) + +self.args = "-U %s" % p.filename() + +self.addrule("PACMAN_RETCODE=0") +for f in p.files: + self.addrule("FILE_MODE=%s|644" % f) diff --git a/pactest/tests/type001.py b/pactest/tests/type001.py new file mode 100644 index 00000000..f119f14f --- /dev/null +++ b/pactest/tests/type001.py @@ -0,0 +1,13 @@ +self.description = "Check the types of default files in a package" + +p = pmpkg("pkg1") +p.files = ["bin/foo" + "bin/bar"] +self.addpkg(p) + +self.args = "-U %s" % p.filename() + +self.addrule("PACMAN_RETCODE=0") +for f in p.files: + self.addrule("FILE_TYPE=%s|file" % f) +self.addrule("FILE_TYPE=bin/|dir") |