On 02/14/2015 10:29 PM, Thomas De Schampheleire wrote:
Hi,

I would like to add some tests for the pullrequest controller method
_get_repo_refs(), which returns the list of
revisions/branches/tags/... to populate the select boxes on the pull
request creation page.

Most of the current tests are actually parsing the HTTP response data,
but this is an indirect way of testing. I would prefer testing the
function directly.

I'm a bit stuck on setting up the data correctly. I added the
following in tests/functional/test_pullrequests.py:


     def test_repo_refs(self):
         main = fixture.create_repo('main')
         Session.add(main)
         Session.commit()
         #fork = fixture.create_fork(main, 'fork')

         controller = PullrequestsController()

         print controller._get_repo_refs(main)

         fixture.destroy_repo('main')


but when _get_repo_refs is invoked, an error is thrown:

test_repo_refs 
(kallithea.tests.functional.test_pullrequests.TestPullrequestsController)
... ERROR

======================================================================
ERROR: test_repo_refs
(kallithea.tests.functional.test_pullrequests.TestPullrequestsController)
----------------------------------------------------------------------
Traceback (most recent call last):
   File 
"/home/tdescham/repo/contrib/kallithea-typos/kallithea/tests/functional/test_pullrequests.py",
line 25, in test_repo_refs
     print controller._get_repo_refs(main)
   File 
"/home/tdescham/repo/contrib/kallithea-typos/kallithea/controllers/pullrequests.py",
line 108, in _get_repo_refs
     tiprev = repo.tags.get('tip')
AttributeError: 'Repository' object has no attribute 'tags'


I'm guessing that the repository I created is not yet fully created,
or some other setup action is missing.

Any help or feedback is appreciated.

That must be because fixture.py create_repo returns the raw db.py Repository database record (see fixture.py). _get_repo_refs expects a kallithea/lib/vcs/backends/hg/repository.py MercurialRepository . You can get that by calling .scm_instance on the Repository record, like it is done in PullrequestsController.index before it calls _get_repo_refs .

/Mads
_______________________________________________
kallithea-general mailing list
[email protected]
http://lists.sfconservancy.org/mailman/listinfo/kallithea-general

Reply via email to