from test.test_support import run_unittest
import unittest
import StringIO

class SoftspaceTests(unittest.TestCase):
    def test_bug_480215(self):
        # SF bug 480215:  softspace confused in nested print
        f = StringIO.StringIO()
        class C:
            def __str__(self):
                print >> f, 'a'
                return 'b'

        print >> f, C(), 'c ', 'd\t', 'e'
        print >> f, 'f', 'g'
        # In 2.2 & earlier, this printed ' a\nbc  d\te\nf g\n'
        self.assertEqual(f.getvalue(), 'a\nb c  d\te\nf g\n')

def test_main():
    run_unittest(SoftspaceTests)

if __name__ == '__main__':
    test_main()
