import subprocess
import sys
import tempfile
from textwrap import dedent

from bpython import args
from bpython.test import FixLanguageTestCase as TestCase

try:
    import unittest2 as unittest
except ImportError:
    import unittest

try:
    from nose.plugins.attrib import attr
except ImportError:
    def attr(func, *args, **kwargs):
        return func


@attr(speed='slow')
class TestExecArgs(unittest.TestCase):
    def test_exec_dunder_file(self):
        with tempfile.NamedTemporaryFile(mode="w") as f:
            f.write(dedent("""\
                import sys
                sys.stderr.write(__file__)
                sys.stderr.flush()"""))
            f.flush()
            p = subprocess.Popen(
                [sys.executable, "-m", "bpython.curtsies", f.name],
                stderr=subprocess.PIPE,
                universal_newlines=True)
            (_, stderr) = p.communicate()

            self.assertEquals(stderr.strip(), f.name)


class TestParse(TestCase):

    def test_version(self):
        try:
            args.parse(['--version'])
        except SystemExit:
            pass
        else:
            self.fail('Should have raise SystemExit')
