summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2007-07-01 20:03:15 -0400
committerDan McGee <dan@archlinux.org>2007-07-01 20:03:15 -0400
commit19f66083f0aef92af84761fd62245270e97c6f33 (patch)
tree44f27171bf8450d861e878826de07897a6a3ac80
parentd70116bfbc535cac9eb941a570c34479e68a1b8d (diff)
downloadpacman-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-xpactest/pmrule.py45
-rw-r--r--pactest/tests/mode001.py12
-rw-r--r--pactest/tests/type001.py13
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")