class JailedGraderTests(unittest.TestCase):
    def setUp(self):
        configure("python", sys.executable, user=getpass.getuser())
        self.grader_root = path(__file__).dirname() / 'fixtures'
        self.g = JailedGrader(grader_root=self.grader_root)

    def test_correct(self):
        code = '''
def foo():
    return "hi"
'''
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 1)

    def test_incorrect(self):
        code = '''
def zoo():
    return "hi"
'''
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, '')
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, 'asdofhpsdfuh')
        self.assertEqual(response['score'], 0)
Ejemplo n.º 2
0
class JailedGraderTests(unittest.TestCase):
    def setUp(self):
        configure("python", sys.executable, user=getpass.getuser())
        self.grader_root = path(__file__).dirname() / 'fixtures'
        self.g = JailedGrader(grader_root=self.grader_root)

    def test_correct(self):
        code = '''
def foo():
    return "hi"
'''
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 1)

    def test_incorrect(self):
        code = '''
def zoo():
    return "hi"
'''
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, '')
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {},
                                'asdofhpsdfuh')
        self.assertEqual(response['score'], 0)
Ejemplo n.º 3
0
 def setUp(self):
     configure("python", sys.executable, user=getpass.getuser())
     py3paths = [os.environ.get('XQUEUEWATCHER_PYTHON3_BIN'), '/usr/bin/python3', '/usr/local/bin/python3']
     for py3path in (p3p for p3p in py3paths if p3p):
         if os.path.exists(py3path):
             configure(
                 "python3",
                 py3path,
                 user=getpass.getuser(),
                 lang=codejail.languages.python3
             )
             break
     self.grader_root = path(__file__).dirname() / 'fixtures'
     self.g = JailedGrader(grader_root=self.grader_root)
     self.g3 = JailedGrader(grader_root=self.grader_root, codejail_python='python3')
Ejemplo n.º 4
0
 def setUp(self):
     configure("python", sys.executable, user=getpass.getuser())
     py3paths = [
         os.environ.get('XQUEUEWATCHER_PYTHON3_BIN'), '/usr/bin/python3',
         '/usr/local/bin/python3'
     ]
     for py3path in (p3p for p3p in py3paths if p3p):
         if os.path.exists(py3path):
             configure("python3",
                       py3path,
                       user=getpass.getuser(),
                       lang=codejail.languages.python3)
             break
     self.grader_root = path(__file__).dirname() / 'fixtures'
     self.g = JailedGrader(grader_root=self.grader_root)
     self.g3 = JailedGrader(grader_root=self.grader_root,
                            codejail_python='python3')
 def setUp(self):
     configure("python", sys.executable, user=getpass.getuser())
     self.grader_root = path(__file__).dirname() / 'fixtures'
     self.g = JailedGrader(grader_root=self.grader_root)
Ejemplo n.º 6
0
class JailedGraderTests(unittest.TestCase):
    def setUp(self):
        configure("python", sys.executable, user=getpass.getuser())
        py3paths = [os.environ.get('XQUEUEWATCHER_PYTHON3_BIN'), '/usr/bin/python3', '/usr/local/bin/python3']
        for py3path in (p3p for p3p in py3paths if p3p):
            if os.path.exists(py3path):
                configure(
                    "python3",
                    py3path,
                    user=getpass.getuser(),
                    lang=codejail.languages.python3
                )
                break
        self.grader_root = path(__file__).dirname() / 'fixtures'
        self.g = JailedGrader(grader_root=self.grader_root)
        self.g3 = JailedGrader(grader_root=self.grader_root, codejail_python='python3')

    def test_correct(self):
        code = textwrap.dedent('''
            def foo():
                return "hi"
        ''')
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 1)

    def test_incorrect(self):
        code = textwrap.dedent('''
            def zoo():
                return "hi"
        ''')
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, '')
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, 'asdofhpsdfuh')
        self.assertEqual(response['score'], 0)

    def test_correct_python3(self):
        # metaclass is to prove we're using python3
        code = textwrap.dedent(u'''
            class foo(metaclass=type):
                def __new__(self):
                    return "hi"
        ''')
        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 1)

        # A python2 grader can't handle this
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

    def test_incorrect_python3(self):
        code = textwrap.dedent('''
            def foo():
                return "heyo!"
        ''')

        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, '')
        self.assertEqual(response['score'], 0)

        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, 'asdofhpsdfuh')
        self.assertEqual(response['score'], 0)
Ejemplo n.º 7
0
 def setUp(self):
     configure("python", sys.executable, user=getpass.getuser())
     self.grader_root = path(__file__).dirname() / 'fixtures'
     self.g = JailedGrader(grader_root=self.grader_root)
Ejemplo n.º 8
0
class JailedGraderTests(unittest.TestCase):
    def setUp(self):
        configure("python", sys.executable, user=getpass.getuser())
        py3paths = [
            os.environ.get('XQUEUEWATCHER_PYTHON3_BIN'), '/usr/bin/python3',
            '/usr/local/bin/python3'
        ]
        for py3path in (p3p for p3p in py3paths if p3p):
            if os.path.exists(py3path):
                configure("python3",
                          py3path,
                          user=getpass.getuser(),
                          lang=codejail.languages.python3)
                break
        self.grader_root = path(__file__).dirname() / 'fixtures'
        self.g = JailedGrader(grader_root=self.grader_root)
        self.g3 = JailedGrader(grader_root=self.grader_root,
                               codejail_python='python3')

    def test_correct(self):
        code = textwrap.dedent('''
            def foo():
                return "hi"
        ''')
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 1)

    def test_incorrect(self):
        code = textwrap.dedent('''
            def zoo():
                return "hi"
        ''')
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, '')
        self.assertEqual(response['score'], 0)

        response = self.g.grade(self.grader_root / 'fake_grader.py', {},
                                'asdofhpsdfuh')
        self.assertEqual(response['score'], 0)

    def test_correct_python3(self):
        # metaclass is to prove we're using python3
        code = textwrap.dedent(u'''
            class foo(metaclass=type):
                def __new__(self):
                    return "hi"
        ''')
        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 1)

        # A python2 grader can't handle this
        response = self.g.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

    def test_incorrect_python3(self):
        code = textwrap.dedent('''
            def foo():
                return "heyo!"
        ''')

        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, code)
        self.assertEqual(response['score'], 0)

        response = self.g3.grade(self.grader_root / 'fake_grader.py', {}, '')
        self.assertEqual(response['score'], 0)

        response = self.g3.grade(self.grader_root / 'fake_grader.py', {},
                                 'asdofhpsdfuh')
        self.assertEqual(response['score'], 0)