[pacman-dev] [PATCH] Update pactest to allow setting modes on created files

Dan McGee dan at archlinux.org
Mon Apr 28 23:34:09 EDT 2008


This should allow some future tests to set modes and ensure they are set
after installation. It is also in anticipation of a test for checking
permissions on pacnew files.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 pactest/tests/mode001.py |    2 +-
 pactest/tests/mode002.py |   12 ++++++++++++
 pactest/util.py          |   40 +++++++++++++++++++++-------------------
 3 files changed, 34 insertions(+), 20 deletions(-)
 create mode 100644 pactest/tests/mode002.py

diff --git a/pactest/tests/mode001.py b/pactest/tests/mode001.py
index ff245a2..4ec11e1 100644
--- a/pactest/tests/mode001.py
+++ b/pactest/tests/mode001.py
@@ -1,7 +1,7 @@
 self.description = "Check the mode of default files in a package"
 
 p = pmpkg("pkg1")
-p.files = ["bin/foo"
+p.files = ["bin/foo",
            "bin/bar"]
 self.addpkg(p)
 
diff --git a/pactest/tests/mode002.py b/pactest/tests/mode002.py
new file mode 100644
index 0000000..cc4a8fe
--- /dev/null
+++ b/pactest/tests/mode002.py
@@ -0,0 +1,12 @@
+self.description = "Check execute mode on files in a package"
+
+p = pmpkg("pkg1")
+p.files = ["bin/foo|755",
+           "bin/bar|755"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_MODE=bin/foo|755")
+self.addrule("FILE_MODE=bin/bar|755")
diff --git a/pactest/util.py b/pactest/util.py
index 3f0b096..c6d5a59 100755
--- a/pactest/util.py
+++ b/pactest/util.py
@@ -58,35 +58,35 @@ def vprint(msg):
 def getfilename(name):
     """
     """
-    filename = ""
-    link = ""
-    if name.find(" -> ") != -1:
-        filename, link = name.split(" -> ")
-    elif name[-1] == "*":
-        filename = name.rstrip("*")
-    else:
-        filename = name
+    filename = name
+    extra = ""
+    if filename[-1] == "*":
+        filename = filename.rstrip("*")
+    if filename.find(" -> ") != -1:
+        filename, extra = filename.split(" -> ")
+    elif filename.find("|") != -1:
+        filename, extra = filename.split("|")
     return filename
 
 def mkfile(name, data = ""):
     """
     """
-
-    isaltered = 0
     isdir = 0
     islink = 0
+    setperms = 0
+    filename = name
     link = ""
-    filename = ""
+    perms = ""
 
-    if name.find(" -> ") != -1:
+    if filename[-1] == "*":
+        filename = filename.rstrip("*")
+    if filename.find(" -> ") != -1:
         islink = 1
-        filename, link = name.split(" -> ")
-    elif name[-1] == "*":
-        isaltered = 1
-        filename = name.rstrip("*")
-    else:
-        filename = name
-    if name[-1] == "/":
+        filename, link = filename.split(" -> ")
+    elif filename.find("|") != -1:
+        setperms = 1
+        filename, perms = filename.split("|")
+    if filename[-1] == "/":
         isdir = 1
 
     if isdir:
@@ -114,6 +114,8 @@ def mkfile(name, data = ""):
             if data[-1] != "\n":
                 fd.write("\n")
         fd.close()
+        if setperms:
+            os.chmod(filename, int(perms, 8))
 
 def mkdescfile(filename, pkg):
     """
-- 
1.5.5.1





More information about the pacman-dev mailing list