From 19f66083f0aef92af84761fd62245270e97c6f33 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 1 Jul 2007 20:03:15 -0400 Subject: 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 --- pactest/pmrule.py | 45 +++++++++++++++++++++++++++++---------------- pactest/tests/mode001.py | 12 ++++++++++++ pactest/tests/type001.py | 13 +++++++++++++ 3 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 pactest/tests/mode001.py create mode 100644 pactest/tests/type001.py 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") -- cgit v1.2.3-70-g09d2