view test/test_run.py @ 135:e5b4dea52297

Make more of RevisionPackager available to SourcePackager and BinaryPackager. This includes changing how SourcePackager and BinaryPackager are instantiated -- now the RevisionPackager instance is given as the first parameter to the __init__ method and most of the arguments formerly passed to __init__ are now automatiocally taken from that.
author Bernhard Herzog <bh@intevation.de>
date Tue, 27 May 2008 13:12:12 +0000
parents e08b4b09d35f
children a68a4e22549c
line wrap: on
line source
# Copyright (C) 2008 by Intevation GmbH
# Authors:
# Bernhard Herzog <bh@intevation.de>
#
# This program is free software under the GPL (>=v2)
# Read the file COPYING coming with the software for details.

"""Tests for treepkg.run"""

import sys
import os
import unittest

from treepkg.run import call, SubprocessError



class TestCall(unittest.TestCase):

    def test_call_defaults(self):
        call([sys.executable, "-c", "pass"])

    def test_call_error(self):
        """Test call with a subprocess that exits with a non-zero exit code"""
        try:
            call([sys.executable, "-c", "import sys; sys.exit(1)"])
        except SubprocessError, exc:
            self.assertEquals(exc.returncode, 1)
        else:
            self.fail("call did not raise an exception")

    def test_call_extra_env(self):
        """Test call with the extra_env parameter"""
        subprocess_cmd = [sys.executable, "-c",
                          "import sys, os;"
                          "value = os.environ.get('TREEPKG_TEST');"
                          "sys.exit(int(value != 'xyzzy'))"
                          ]
        # sanity check that the extra environment variable we use for
        # the test is not set yet
        self.assertRaises(SubprocessError, call, subprocess_cmd)

        # the actual test
        try:
            call(subprocess_cmd, extra_env=dict(TREEPKG_TEST="xyzzy"))
        except SubprocessError, exc:
            self.fail("the extra_env variables were not set properly")
        else:
            # test OK
            pass
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)