annotate test/test_run.py @ 171:c0ea6cbb0fd2

Add "--debbuildopts -b" to "pbuilder build" command line to stop pbuilder from creating a source package. The .changes would otherwise contain references to that new source package instead of the one we passed to pbuilder. The checksums for the two source packages would be different so the .changes file would not match the source package that treepkg produces.
author Bernhard Herzog <bh@intevation.de>
date Mon, 23 Jun 2008 16:12:01 +0000
parents c7ac67366492
children 98de92b816d4
rev   line source
123
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2008 by Intevation GmbH
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8 """Tests for treepkg.run"""
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import sys
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import os
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 import unittest
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13
165
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
14 from treepkg.run import call, capture_output, SubprocessError
123
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 class TestCall(unittest.TestCase):
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 def test_call_defaults(self):
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 call([sys.executable, "-c", "pass"])
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 def test_call_error(self):
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 """Test call with a subprocess that exits with a non-zero exit code"""
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 try:
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 call([sys.executable, "-c", "import sys; sys.exit(1)"])
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 except SubprocessError, exc:
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 self.assertEquals(exc.returncode, 1)
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 else:
37aadd33ffab Add tests for treepkg/run.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 self.fail("call did not raise an exception")
124
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
31
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
32 def test_call_extra_env(self):
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
33 """Test call with the extra_env parameter"""
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
34 subprocess_cmd = [sys.executable, "-c",
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
35 "import sys, os;"
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
36 "value = os.environ.get('TREEPKG_TEST');"
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
37 "sys.exit(int(value != 'xyzzy'))"
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
38 ]
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
39 # sanity check that the extra environment variable we use for
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
40 # the test is not set yet
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
41 self.assertRaises(SubprocessError, call, subprocess_cmd)
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
42
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
43 # the actual test
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
44 try:
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
45 call(subprocess_cmd, extra_env=dict(TREEPKG_TEST="xyzzy"))
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
46 except SubprocessError, exc:
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
47 self.fail("the extra_env variables were not set properly")
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
48 else:
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
49 # test OK
e08b4b09d35f New parameter treepkg.run.call: extra_env for additional environment
Bernhard Herzog <bh@intevation.de>
parents: 123
diff changeset
50 pass
164
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
51
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
52 def test_call_inputdata(self):
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
53 """Test call with inputdata passed to the subprocesses stdin"""
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
54 # FIXME: If the feature being tested is not implemented
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
55 # properly, it's likely that the subprocess will wait
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
56 # indefinitely waiting for input.
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
57 data = "1"
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
58 subprocess_cmd = [sys.executable, "-c",
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
59 "import sys; sys.exit(int(raw_input("")))"]
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
60 try:
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
61 call(subprocess_cmd, inputdata=data)
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
62 except SubprocessError, exc:
a68a4e22549c Extend treepkg.run.call so that data can be fed to stdin of the subprocess.
Bernhard Herzog <bh@intevation.de>
parents: 124
diff changeset
63 self.assertEquals(exc.returncode, 1)
165
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
64
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
65 class TestCaptureOutput(unittest.TestCase):
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
66
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
67 def test_capture_output_stdout(self):
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
68 text = "explicit is better than implicit"
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
69 self.assertEquals(capture_output([sys.executable, "-c",
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
70 "print %r" % text]),
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
71 text + "\n")
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
72
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
73 def test_capture_output_stderr(self):
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
74 self.assertEquals(capture_output([sys.executable, "-c",
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
75 "import sys;"
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
76 "print 'on stdout';"
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
77 " sys.stdout.flush();"
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
78 "print >>sys.stderr, 'on stderr'"]),
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
79 "on stdout\non stderr\n")
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
80
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
81 def test_capture_output_exception(self):
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
82 try:
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
83 capture_output([sys.executable, "-c",
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
84 "import sys;"
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
85 "print 'Beautiful is better than ugly';"
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
86 " sys.exit(1)"])
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
87 except SubprocessError, exc:
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
88 self.assertEquals(exc.returncode, 1)
c7ac67366492 Make treepkg.run.capture_output include the output in the
Bernhard Herzog <bh@intevation.de>
parents: 164
diff changeset
89 self.assertEquals(exc.output, "Beautiful is better than ugly\n")
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)