[pacman-dev] [PATCH v3 08/11] pactest: add hook/script support
Andrew Gregory
andrew.gregory.8 at gmail.com
Sat Oct 17 00:28:30 UTC 2015
Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---
test/pacman/pmfile.py | 27 ++++++++++++++++++++++++++-
test/pacman/pmtest.py | 25 ++++++++++++++++++++-----
2 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/test/pacman/pmfile.py b/test/pacman/pmfile.py
index 7f96f6c..417550d 100644
--- a/test/pacman/pmfile.py
+++ b/test/pacman/pmfile.py
@@ -20,7 +20,32 @@
import util
-class PacmanFile(object):
+class pmfile(object):
+ def __init__(self, path, content, mode=0o644):
+ self.path = path
+ self.content = content
+ self.mode = mode
+
+ def mkfile(self, root):
+ path = os.path.join(root, self.path)
+
+ dir_path = os.path.dirname(path)
+ if dir_path and not os.path.isdir(dir_path):
+ os.makedirs(dir_path, 0o755)
+
+ fd = open(path, "w")
+ if self.content:
+ fd.write(self.content)
+ if self.content[-1] != "\n":
+ fd.write("\n")
+ fd.close()
+
+ os.chmod(path, self.mode)
+
+ return path
+
+
+class snapshot(object):
"""File object
"""
diff --git a/test/pacman/pmtest.py b/test/pacman/pmtest.py
index 7774a7b..a1081cc 100644
--- a/test/pacman/pmtest.py
+++ b/test/pacman/pmtest.py
@@ -179,10 +179,14 @@ def generate(self, pacman):
# Filesystem
vprint(" Populating file system")
for f in self.filesystem:
- vprint("\t%s" % f)
- path = util.mkfile(self.root, f, f)
- if os.path.isfile(path):
- os.utime(path, (355, 355))
+ if type(f) is pmfile.pmfile:
+ vprint("\t%s" % f.path)
+ f.mkfile(self.root);
+ else:
+ vprint("\t%s" % f)
+ path = util.mkfile(self.root, f, f)
+ if os.path.isfile(path):
+ os.utime(path, (355, 355))
for pkg in self.db["local"].pkgs:
vprint("\tinstalling %s" % pkg.fullname())
pkg.install_package(self.root)
@@ -193,10 +197,21 @@ def generate(self, pacman):
# Done.
vprint(" Taking a snapshot of the file system")
for filename in self.snapshots_needed():
- f = pmfile.PacmanFile(self.root, filename)
+ f = pmfile.snapshot(self.root, filename)
self.files.append(f)
vprint("\t%s" % f.name)
+ def add_hook(self, name, content):
+ if not name.endswith(".hook"):
+ name = name + ".hook"
+ path = os.path.join("etc/pacman.d/hooks/", name)
+ self.filesystem.append(pmfile.pmfile(path, content))
+
+ def add_script(self, name, content):
+ if not content.startswith("#!"):
+ content = "#!/bin/sh\n" + content
+ path = os.path.join("bin/", name)
+ self.filesystem.append(pmfile.pmfile(path, content, mode=0o755))
def snapshots_needed(self):
files = set()
--
2.6.1
More information about the pacman-dev
mailing list