summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Buch <daniel.buch@gmail.com>2010-05-06 15:56:47 -0400
committerDan Buch <daniel.buch@gmail.com>2010-05-06 15:56:47 -0400
commit5911819cbd55d61a0948d69ddc0ad2dc4d32bc41 (patch)
treec18e93260a444ea7aa68593fa15b32041451ca26
parent2f1e0bc5d58839f32c9520e09e1b3e2915becfe1 (diff)
downloadhg_sshsign-5911819cbd55d61a0948d69ddc0ad2dc4d32bc41.tar.bz2
hg_sshsign-5911819cbd55d61a0948d69ddc0ad2dc4d32bc41.tar.xz
hg_sshsign-5911819cbd55d61a0948d69ddc0ad2dc4d32bc41.zip
filling in remainder of test setup stuff and first simple case test (with an XFAIL for now)HEADmaster
-rw-r--r--hgsshsign/tests/_support.py39
-rw-r--r--hgsshsign/tests/itest_all.py94
2 files changed, 130 insertions, 3 deletions
diff --git a/hgsshsign/tests/_support.py b/hgsshsign/tests/_support.py
new file mode 100644
index 0000000..ef08932
--- /dev/null
+++ b/hgsshsign/tests/_support.py
@@ -0,0 +1,39 @@
1# vim:filetype=python:fileencoding=utf-8
2import os
3import tempfile
4import subprocess
5
6
7def make_test_repo():
8 tmpdir = tempfile.mkdtemp('.tmp', __name__.replace('.', '_'))
9
10 os.chdir(tmpdir)
11 subprocess.call('hg init test-repo.hg', shell=True)
12 os.chdir('test-repo.hg')
13
14 for filename, text, is_new, message in SKEL_FILES:
15 write_commit_file(filename, is_new=is_new, text=text, message=message)
16
17 return tmpdir, os.path.join(tmpdir, 'test-repo.hg')
18
19
20def write_commit_file(filename, is_new=True, text='', message=''):
21 handle = open(filename, 'w')
22 handle.write(text)
23 handle.close()
24
25 if is_new:
26 subprocess.call('hg add %s' % filename, shell=True)
27
28 subprocess.call('hg ci -m %r %s' % (message, filename),
29 shell=True)
30
31
32SKEL_FILES = (
33 ('foo', 'bar', True, 'this is my foo'),
34 ('ham', 'bones', True, 'this is my ham'),
35 ('qwx', 'schnizzle', True, 'this is for testing'),
36 ('foo', 'bar\npatoot', False, 'my foo. it grows.'),
37 ('ham', 'booones', False, 'this ham is better'),
38 ('qwx', '', False, 'I grew tired of this qwx'),
39)
diff --git a/hgsshsign/tests/itest_all.py b/hgsshsign/tests/itest_all.py
index 79645ad..8017077 100644
--- a/hgsshsign/tests/itest_all.py
+++ b/hgsshsign/tests/itest_all.py
@@ -1,18 +1,106 @@
1# vim:filetype=python:fileencoding=utf-8 1# vim:filetype=python:fileencoding=utf-8
2import os
2import sys 3import sys
4import shutil
3import unittest 5import unittest
4 6
7import mercurial.dispatch
8
9from hgsshsign.tests._support import make_test_repo
10
11
12PUBKEY = """ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeWqRjW5fHhnH/AN7DM/""" \
13"""fBoVFehB8++SwBy6WlEK6bR1jvwBzQUuOpbb4jiv5OVK4JjYWph5HLmsbKvOrH4ZorV""" \
14"""o7ZsFq2KlTA/G5Nqhbnj9mgBtp4FQ5rPjh7MApM8xXgVC/5ZGzTU2ygJBgf6gG99bxv""" \
15"""spN1dCEWYwlIRd33Fp1flBcATGp8Yyt6ERtgqCwsM/T4V0qFSMUH1guRg5jT3LxdDew""" \
16"""p1V1oj5BlZGPZYKX1HqpOUMDFqzrESJjiDIuHy4ltiWLQNxGY6udLp9srmjsWp4LiTK""" \
17"""/BUf0m46qR83zJpaFfCdagi2tLH/zQAK21TMrVJQcjKry+dLT/OJIZ dummy@localhost"""
18PRIVKEY = """\
19"dummy@localhost" RSA private key
20This key has no passphrase and is intended for testing
21purposes only.
22
23-----BEGIN RSA PRIVATE KEY-----
24MIIEogIBAAKCAQEAnlqkY1uXx4Zx/wDewzP3waFRXoQfPvksAculpRCum0dY78Ac
250FLjqW2+I4r+TlSuCY2FqYeRy5rGyrzqx+GaK1aO2bBatipUwPxuTaoW54/ZoAba
26eBUOaz44ezAKTPMV4FQv+WRs01NsoCQYH+oBvfW8b7KTdXQhFmMJSEXd9xadX5QX
27AExqfGMrehEbYKgsLDP0+FdKhUjFB9YLkYOY09y8XQ3sKdVdaI+QZWRj2WCl9R6q
28TlDAxas6xEiY4gyLh8uJbYli0DcRmOrnS6fbK5o7FqeC4kyvwVH9JuOqkfN8yaWh
29XwnWoItrSx/80ACttUzK1SUHIyq8vnS0/ziSGQIDAQABAoIBAEnMGDwtnUhhAZND
30ho0WFOpqEY+opx8j5DxZ+bI5WgYHdA0XTNZRKsP03t2VkvpSQGE3UQk2ot1uHiKx
31dAD+xGhaCGyu4Tdv9tuRSJ5tHAuCYHtRdlLsDTIxZwUR2FsQFivbUBg7kvPRNxhS
32eeO1nGY4tT6gzFO6cQkL0nGaDd1uMvAu1zENBWAtH7iZyJ5u+GEdlmWs7GTUb0lu
33vURjy1iqJTP4tDQtVpQexLeypOKlL89vaPoLQjw6bxxc8uujUXkEbBy0gjSaivSu
34qgWnoTF64tuYHhDFm9zzQXTPJ6nQRz7Mxa9mkrPyL/955fvKxHyAlXl+HQnXbE97
35Uk4M09kCgYEAy49rVd5uHpaGPFLLEBYSmiSGklXjuNY3sHH3zHk2hVgaxCQt6u1U
365pSPMwsnk0VXtf0B+YSLoxwZNS726Z/TiJ2iPFoQmYY920IgtB9tJ5wpq76Zkmzo
37MheRV4e5D9ZWRwOZjQtUlu1TAgvsbEeGcelvNlNzjPYKFt68+Q4uG+cCgYEAxyXs
38tjQFkgtcBXwvuKTcW234Y/+lqKK0cVLpzsBQ1VpaCQBy55BGPLZrNck4If0+cZCe
39cF6UjH3+5Dd1Q23SxsNryyn2sQoHsys1B5nZyGNvHYwZDnmep+uB7h/oRB95/0hA
40YN56ATNFhViISxmctuHeEQK+lQP38bSr3f5+If8CgYA16iCVt7oW4+td4tfhxNbc
41eLwj2hfchvBtDWKCh8BHBRThymtXA9Eu2T4sWNH8kasvinmRaufJJdIPYgcHzcsr
42LgUgUwJ+hy2u+w7KZmB000m+MVdfjvTY/6EBO/NqHGzxliR/VPbsmqMXsazG6RLU
437O0FyIicVzZI5GnM1VKlFQKBgEFMhSZlPmJZyS2fP8KKhBqSn3yiib4Ww5XY+wMo
44+hhLDPSgqgyVuQIVSmgTd41ljUENi3YK/Shn89j++jtG2nMEBudR9iqswEOWakf4
45wXk8aWXF1z1w0X378dmTqsQTkhwLo9hfep/EIQqNMft2BXXN79OiE72m1Hjzpdsf
46pFofAoGARtxV/WP0nK9aHQQSPPmXB8C+15s4fTCV0krAPj2L5mOB/V63XOJ77IUB
471MXm6iFwsteyQsEJVeP03S1ToRurMXxw6nlkRPP2M5flYCT1EapqduI9dfXnlhu/
48ea7iH7LLWTDQ5X97VHu8WTQLSZfH2vT7vuOG5V4R3wOj7rQh6n0=
49-----END RSA PRIVATE KEY-----
50"""
51
5 52
6class TestHgSSHSign(unittest.TestCase): 53class TestHgSSHSign(unittest.TestCase):
54 _orig_dir = ''
55 _tmp_repo = ''
56 _tmpdir = ''
57 _public_key = ''
58 _private_key = ''
59
60 _orig_env = os.environ.copy()
61 _testenv = None
7 62
8 def setUp(self): 63 def setUp(self):
9 pass 64 self._orig_dir = os.getcwd()
65
66 self._tmpdir, self._tmp_repo = make_test_repo()
67 self._public_key = os.path.join(self._tmpdir, 'id_rsa.pub')
68 self._private_key = os.path.join(self._tmpdir, 'id_rsa')
69
70 pubkey = open(self._public_key, 'w')
71 pubkey.write(PUBKEY)
72 pubkey.close()
73
74 privkey = open(self._private_key, 'w')
75 privkey.write(PRIVKEY)
76 privkey.close()
77
78 self._testenv = self._orig_env.copy()
79 if 'SSH_AUTH_SOCK' in self._testenv:
80 self._testenv.pop('SSH_AUTH_SOCK')
81
82 sys._real_argv = sys.argv
83 sys.argv = ['hg', '--config', 'sshsign.public_key=' + self._public_key,
84 '--config', 'extensions.hgsshsign=']
85
86 os.chdir(self._tmp_repo)
10 87
11 def tearDown(self): 88 def tearDown(self):
12 pass 89 os.chdir(self._orig_dir)
90 os.environ = self._orig_env
91
92 if self._tmpdir:
93 shutil.rmtree(self._tmpdir)
94
95 sys.argv = sys._real_argv
13 96
14 def test_sign_simple_case(self): 97 def test_sign_simple_case(self):
15 pass 98 try:
99 sys.argv.append('sshsign')
100 mercurial.dispatch.run()
101 except ValueError:
102 # in reality, this is an XFAIL for now
103 pass
16 104
17 105
18def tests(): 106def tests():