[pacman-dev] [PATCH 2/4] pactest: handle non-default scriptlet shells

Allan McRae allan at archlinux.org
Sun Jan 20 07:08:16 EST 2013


pacman can be configured to use a different shell the /bin/sh for
scriplets.  Pass the cnfigured value to the pactest suite and make the
necessary "copy" of the shell in the test root.

Also update all copyright years in the pactest suite.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 Makefile.am            |  1 +
 test/pacman/pactest.py |  5 +++++
 test/pacman/pmdb.py    |  1 +
 test/pacman/pmenv.py   |  3 ++-
 test/pacman/pmfile.py  |  1 +
 test/pacman/pmpkg.py   |  1 +
 test/pacman/pmrule.py  |  1 +
 test/pacman/pmtest.py  | 10 ++++++++--
 test/pacman/util.py    |  1 +
 9 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index b05feb6..cd69b6e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,6 +28,7 @@ check-local: test-pacman test-pacsort test-vercmp test-parseopts
 test-pacman: test/pacman src/pacman
 	LC_ALL=C $(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
 		--test $(top_srcdir)/test/pacman/tests/*.py \
+		--scriptlet-shell $(SCRIPTLET_SHELL) \
 		-p $(top_builddir)/src/pacman/pacman
 
 test-pacsort: test/util src/util
diff --git a/test/pacman/pactest.py b/test/pacman/pactest.py
index 2fb64ed..ea44be5 100755
--- a/test/pacman/pactest.py
+++ b/test/pacman/pactest.py
@@ -3,6 +3,7 @@
 #  pactest : run automated testing on the pacman binary
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
@@ -81,6 +82,9 @@ def create_parser():
     parser.add_option("--manual-confirm", action = "store_true",
                       dest = "manualconfirm", default = False,
                       help = "do not use --noconfirm for pacman calls")
+    parser.add_option("--scriptlet-shell", type = "string",
+                      dest = "scriptletshell", default = "/bin/sh",
+                      help = "specify path to shell used for install scriptlets")
     return parser
 
 
@@ -99,6 +103,7 @@ def create_parser():
     env.pacman["gdb"] = opts.gdb
     env.pacman["valgrind"] = opts.valgrind
     env.pacman["manual-confirm"] = opts.manualconfirm
+    env.pacman["scriptlet-shell"] = opts.scriptletshell
 
     if opts.testcases is None or len(opts.testcases) == 0:
         print "no tests defined, nothing to do"
diff --git a/test/pacman/pmdb.py b/test/pacman/pmdb.py
index 285c315..b694dff 100644
--- a/test/pacman/pmdb.py
+++ b/test/pacman/pmdb.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
diff --git a/test/pacman/pmenv.py b/test/pacman/pmenv.py
index 0e455ce..9a88262 100644
--- a/test/pacman/pmenv.py
+++ b/test/pacman/pmenv.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Developmet Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
@@ -66,7 +67,7 @@ def run(self):
             print t.description
             print "----------"*8
 
-            t.generate()
+            t.generate(self.pacman)
 
             t.run(self.pacman)
 
diff --git a/test/pacman/pmfile.py b/test/pacman/pmfile.py
index d5aa1a1..49c0274 100644
--- a/test/pacman/pmfile.py
+++ b/test/pacman/pmfile.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
diff --git a/test/pacman/pmpkg.py b/test/pacman/pmpkg.py
index bfc93dd..c0c9f13 100644
--- a/test/pacman/pmpkg.py
+++ b/test/pacman/pmpkg.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
diff --git a/test/pacman/pmrule.py b/test/pacman/pmrule.py
index 778b6aa..3d38b85 100644
--- a/test/pacman/pmrule.py
+++ b/test/pacman/pmrule.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
diff --git a/test/pacman/pmtest.py b/test/pacman/pmtest.py
index 00a0b96..af5d342 100644
--- a/test/pacman/pmtest.py
+++ b/test/pacman/pmtest.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
@@ -102,7 +103,7 @@ def load(self):
         else:
             raise IOError("file %s does not exist!" % self.name)
 
-    def generate(self):
+    def generate(self, pacman):
         print "==> Generating test environment"
 
         # Cleanup leftover files from a previous test session
@@ -120,13 +121,18 @@ def generate(self):
         etcdir = os.path.join(self.root, os.path.dirname(util.PACCONF))
         bindir = os.path.join(self.root, "bin")
         sbindir = os.path.join(self.root, "sbin")
-        sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir, sbindir]
+        shell = pacman["scriptlet-shell"][1:]
+        shelldir = os.path.join(self.root, os.path.dirname(shell))
+        sys_dirs = [dbdir, cachedir, syncdir, tmpdir, logdir, etcdir, bindir,
+                    sbindir, shelldir]
         for sys_dir in sys_dirs:
             if not os.path.isdir(sys_dir):
                 vprint("\t%s" % sys_dir[len(self.root)+1:])
                 os.makedirs(sys_dir, 0755)
         # Only the dynamically linked binary is needed for fakechroot
         shutil.copy("/bin/sh", bindir)
+        if shell != "bin/sh":
+            shutil.copy("/bin/sh", os.path.join(self.root, shell))
         shutil.copy(os.path.join(util.SELFPATH, "ldconfig.stub"),
             os.path.join(sbindir, "ldconfig"))
         ld_so_conf = open(os.path.join(etcdir, "ld.so.conf"), "w")
diff --git a/test/pacman/util.py b/test/pacman/util.py
index d40612d..be99cd5 100644
--- a/test/pacman/util.py
+++ b/test/pacman/util.py
@@ -1,6 +1,7 @@
 #! /usr/bin/python2
 #
 #  Copyright (c) 2006 by Aurelien Foret <orelien at chez.com>
+#  Copyright (c) 2006-2013 Pacman Development Team <pacman-dev at archlinux.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
-- 
1.8.1.1



More information about the pacman-dev mailing list