Add a test case for the logfile functionality of portage.spawn().
authorZac Medico <zmedico@gentoo.org>
Tue, 19 Jun 2007 07:22:18 +0000 (07:22 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 19 Jun 2007 07:22:18 +0000 (07:22 -0000)
svn path=/main/trunk/; revision=6870

pym/portage/tests/__init__.py
pym/portage/tests/ebuild/__init__.py [new file with mode: 0644]
pym/portage/tests/ebuild/test_spawn.py [new file with mode: 0644]

index 60a19de6c4ad88cb5ed56745b1c7642dff68803b..e3702e08e9e1937bfff4cfdcbb7a873fa9c2f332 100644 (file)
@@ -7,7 +7,8 @@ import os, sys, time, unittest
 import portage.tests
 
 def main():
-       testDirs = ["bin", "util","versions", "dep", "xpak", "env/config"]
+       testDirs = ["bin", "dep", "ebuild",
+               "env/config", "util", "versions", "xpak"]
        suite = unittest.TestSuite()
        basedir = os.path.dirname(__file__)
        for mydir in testDirs:
diff --git a/pym/portage/tests/ebuild/__init__.py b/pym/portage/tests/ebuild/__init__.py
new file mode 100644 (file)
index 0000000..d67b0cd
--- /dev/null
@@ -0,0 +1,3 @@
+# Copyright 1998-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
diff --git a/pym/portage/tests/ebuild/test_spawn.py b/pym/portage/tests/ebuild/test_spawn.py
new file mode 100644 (file)
index 0000000..66e8f9e
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright 1998-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+import errno, os, sys
+from portage.tests import TestCase
+
+class SpawnTestCase(TestCase):
+
+       def testLogfile(self):
+               from portage import settings, spawn
+               from tempfile import mkstemp
+               logfile = None
+               try:
+                       fd, logfile = mkstemp()
+                       os.close(fd)
+                       null_fd = os.open('/dev/null', os.O_RDWR)
+                       test_string = 2 * "blah blah blah\n"
+                       spawn("echo -n '%s'" % test_string, settings, logfile=logfile,
+                               fd_pipes={0:sys.stdin.fileno(), 1:null_fd, 2:null_fd})
+                       os.close(null_fd)
+                       f = open(logfile, 'r')
+                       log_content = f.read()
+                       f.close()
+                       # When logging passes through a pty, it's lines will be separated
+                       # by '\r\n', so use splitlines before comparing results.
+                       self.assertEqual(test_string.splitlines(),
+                               log_content.splitlines())
+               finally:
+                       if logfile:
+                               try:
+                                       os.unlink(logfile)
+                               except EnvironmentError, e:
+                                       if e.errno != errno.ENOENT:
+                                               raise
+                                       del e