"""
Test the internal getargs.c implementation

 PyArg_ParseTuple() is defined here.

The test here is not intended to test all of the module, just the
single case that failed between 2.1 and 2.2a2.
"""

# marshal.loads() uses PyArg_ParseTuple(args, "s#:loads")
# The s code will cause a Unicode conversion to occur.  This test
# verify that the error is propagated properly from the C code back to
# Python.

import marshal
import unittest
from test import test_support

class GetArgsTest(unittest.TestCase):
    # If the encoding succeeds using the current default encoding,
    # this test will fail because it does not test the right part of the
    # PyArg_ParseTuple() implementation.
    def test_with_marshal(self):
        arg = unicode(r'\222', 'unicode-escape')
        self.assertRaises(UnicodeError, marshal.loads, arg)

def test_main():
    test_support.run_unittest(GetArgsTest)

if __name__ == '__main__':
    test_main()
