Beispiel #1
0
class SubmitHackerRankTest(unittest.TestCase):
    @unittest.skipIf(not tests.utils.is_logged_in(HackerRankService()),
                     'login is required')
    def test_call_submit_worldcodesprint_mars_exploration(self):
        url = 'https://www.hackerrank.com/contests/worldcodesprint/challenges/mars-exploration'
        code = '''#!/usr/bin/env python3
s = input()
ans = 0
for i in range(len(s) // 3):
    if s[3 * i] != 'S':
        ans += 1
    if s[3 * i + 1] != 'O':
        ans += 1
    if s[3 * i + 2] != 'S':
        ans += 1
print(ans)
'''
        files = [
            {
                'path': 'a.py',
                'data': code
            },
        ]
        with tests.utils.sandbox(files):
            tests.utils.run(['s', '-y', '--no-open', url, 'a.py'], check=True)
Beispiel #2
0
class LoginTest(unittest.TestCase):
    def snippet_call_login_check_failure(self, url):
        with tests.utils.sandbox(files=[]) as tempdir:
            path = 'cookie.jar'  # use dummy cookie to check in an empty state
            proc = tests.utils.run(['--cookie', path, 'login', '--check', url])
            self.assertEqual(proc.returncode, 1)

    def snippet_call_login_check_success(self, url):
        tests.utils.run(['login', '--check', url], check=True)

    def test_call_login_check_atcoder_failure(self):
        self.snippet_call_login_check_failure('https://atcoder.jp/')

    def test_call_login_check_codeforces_failure(self):
        self.snippet_call_login_check_failure('https://codeforces.com/')

    def test_call_login_check_hackerrank_failure(self):
        self.snippet_call_login_check_failure('https://www.hackerrank.com/')

    def test_call_login_check_topcoder_failure(self):
        self.snippet_call_login_check_failure(
            'https://community.topcoder.com/')

    def test_call_login_check_toph_failure(self):
        self.snippet_call_login_check_failure('https://toph.co/')

    def test_call_login_check_yukicoder_failure(self):
        self.snippet_call_login_check_failure('https://yukicoder.me/')

    @unittest.skipIf(not tests.utils.is_logged_in(AtCoderService()),
                     'login is required')
    def test_call_login_check_atcoder_success(self):
        self.snippet_call_login_check_success('https://atcoder.jp/')

    @unittest.skipIf(not tests.utils.is_logged_in(CodeforcesService()),
                     'login is required')
    def test_call_login_check_codeforces_success(self):
        self.snippet_call_login_check_success('https://codeforces.com/')

    @unittest.skipIf(not tests.utils.is_logged_in(HackerRankService()),
                     'login is required')
    def test_call_login_check_hackerrank_success(self):
        self.snippet_call_login_check_success('https://www.hackerrank.com/')

    @unittest.skipIf(not tests.utils.is_logged_in(TopcoderService()),
                     'login is required')
    def test_call_login_check_topcoder_success(self):
        self.snippet_call_login_check_success(
            'https://community.topcoder.com/')

    @unittest.skipIf(not tests.utils.is_logged_in(TophService()),
                     'login is required')
    def test_call_login_check_toph_success(self):
        self.snippet_call_login_check_success('https://toph.co/')

    @unittest.skipIf(not tests.utils.is_logged_in(YukicoderService()),
                     'login is required')
    def test_call_login_check_yukicoder_success(self):
        self.snippet_call_login_check_success('https://yukicoder.me/')