Merge remote-tracking branch 'encukou/git_signature_now'

This commit is contained in:
J. David Ibáñez 2012-09-08 08:38:11 +02:00
commit 8ca19bb723
2 changed files with 21 additions and 2 deletions

@ -49,7 +49,7 @@ Signature_init(Signature *self, PyObject *args, PyObject *kwds)
return -1;
}
if (!PyArg_ParseTuple(args, "OsLi|s",
if (!PyArg_ParseTuple(args, "Os|Lis",
&py_name, &email, &time, &offset, &encoding))
return -1;
@ -57,7 +57,14 @@ Signature_init(Signature *self, PyObject *args, PyObject *kwds)
if (name == NULL)
return -1;
err = git_signature_new(&signature, name, email, time, offset);
if (PySequence_Length(args) == 2) {
err = git_signature_now(&signature, name, email);
} else if (PySequence_Length(args) == 3) {
PyErr_SetString(PyExc_TypeError, "offset must be specified with time");
return -1;
} else {
err = git_signature_new(&signature, name, email, time, offset);
}
free(name);
if (err < 0) {
Error_set(err);

@ -28,6 +28,7 @@
from __future__ import absolute_import
from __future__ import unicode_literals
import unittest
import time
from pygit2 import Signature
from .utils import NoRepoTestCase
@ -50,6 +51,17 @@ class SignatureTest(NoRepoTestCase):
self.assertEqual(signature.name, signature._name.decode(encoding))
self.assertEqual(signature.name.encode(encoding), signature._name)
def test_now(self):
self.assertRaises(TypeError, Signature, 'Foo Ibáñez',
'foo@example.com', 1322174594)
signature = Signature('Foo Ibáñez', 'foo@example.com')
encoding = signature._encoding
self.assertEqual(encoding, 'utf-8')
self.assertEqual(encoding, signature._encoding)
self.assertEqual(signature.name, signature._name.decode(encoding))
self.assertEqual(signature.name.encode(encoding), signature._name)
self.assertTrue(abs(signature.time - time.time()) < 5)
if __name__ == '__main__':
unittest.main()