source: codereviewerplugin/0.12/coderev/util/test/reviewer_test.py

Last change on this file was 14033, checked in by Ryan J Ollos, 9 years ago

Changed license to 3-Clause BSD with permission of author. Refs #11832.

File size: 5.1 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2012 Rob Guttman <guttman@alum.mit.edu>
4# All rights reserved.
5#
6# This software is licensed as described in the file COPYING, which
7# you should have received as part of this distribution.
8#
9
10import os
11import sys
12import shutil
13import time
14import unittest
15
16dir = os.path.abspath(os.path.join(os.path.dirname(__file__),'..'))
17if dir not in sys.path:
18    sys.path.append(dir)
19from reviewer import Reviewer
20
21"""
22[Wed May 16 12:39:28 root@vookdev:/home/vook/workspace/myrepo] # git log
23commit 82555dc3c5960646e60df09fb33ab288f209a65b
24Author: rob <rob@example.com>
25Date:   Wed May 16 11:13:48 2012 -0400
26
27    ref #3: changeset 4
28
29commit 71cd80944c7c8cdeff9f394b493a372b2b70ebb1
30Author: rob <rob@example.com>
31Date:   Wed May 16 11:10:57 2012 -0400
32
33    ref #2, #3: changeset 3
34
35commit d57f050a265b303ef1748a26cecb71d9e9ab92b9
36Author: rob <rob@example.com>
37Date:   Wed May 16 11:04:25 2012 -0400
38
39    ref #2: changeset 2
40
41commit 8bebe6d50698dccb68586042e3e94de4aecba945
42Author: rob <rob@example.com>
43Date:   Wed May 16 10:11:44 2012 -0400
44
45    ref #1: changeset 1
46
47commit f79ab3734db0e5230dfc93fa7182591fd900bb87
48Author: rob <rob@example.com>
49Date:   Wed May 16 10:08:23 2012 -0400
50
51    initial commit
52"""
53
54class TestReviewer(unittest.TestCase):
55
56    def setUp(self):
57        testdata_dir = os.path.join(os.path.dirname(__file__),'testdata')
58
59        # clean workdir for each test
60        workdir = os.path.join('/tmp','reviewer')
61        if os.path.exists(workdir):
62            shutil.rmtree(workdir)
63        os.mkdir(workdir)
64        src_file = os.path.join(testdata_dir,'changeset.dev')
65        data_file = os.path.join(workdir,'changeset.dev')
66        shutil.copy(src_file, data_file)
67
68        # instatiate reviewer
69        self.reviewer = Reviewer(
70            trac_env=os.path.join(testdata_dir,'trac_env'),
71            repo_dir=os.path.join(testdata_dir,'myrepo'),
72            target_ref="master",
73            data_file=data_file)
74
75    def test_is_complete__changeset1(self):
76        changeset1 = '8bebe6d50698dccb68586042e3e94de4aecba945'
77        self.assertTrue(self.reviewer.is_complete(changeset1))
78
79    def test_is_complete__changeset2(self):
80        changeset2 = 'd57f050a265b303ef1748a26cecb71d9e9ab92b9'
81        self.assertTrue(self.reviewer.is_complete(changeset2))
82
83    def test_is_complete__changeset3(self):
84        changeset3 = '71cd80944c7c8cdeff9f394b493a372b2b70ebb1'
85        self.assertFalse(self.reviewer.is_complete(changeset3))
86
87    def test_get_next_changeset__initial(self):
88        # expect changeset 3 because ticket #2 is last fully reviewed ticket
89        actual = self.reviewer.get_next_changeset() # changeset 3
90        expected = 'd57f050a265b303ef1748a26cecb71d9e9ab92b9'
91        self.assertEqual(actual,expected)
92        self.assertEqual(self.reviewer.get_current_changeset(),expected)
93
94    def test_get_next_changeset__initial_no_save(self):
95        # expect changeset 3 because ticket #2 is last fully reviewed ticket
96        actual = self.reviewer.get_next_changeset(save=False) # changeset 3
97        expected = 'd57f050a265b303ef1748a26cecb71d9e9ab92b9'
98        self.assertEqual(actual,expected)
99        self.assertNotEqual(self.reviewer.get_current_changeset(),expected)
100
101    def test_get_next_changeset__at_next(self):
102        data = '{"current": "d57f050a265b303ef1748a26cecb71d9e9ab92b9"}'
103        open(self.reviewer.data_file,'w').write(data)
104        actual = self.reviewer.get_next_changeset() # changeset 3
105        expected = 'd57f050a265b303ef1748a26cecb71d9e9ab92b9'
106        self.assertEqual(actual,expected)
107        self.assertEqual(self.reviewer.get_current_changeset(),expected)
108
109    def test_get_next_changeset__at_last(self):
110        data = '{"current": "82555dc3c5960646e60df09fb33ab288f209a65b"}'
111        open(self.reviewer.data_file,'w').write(data)
112        expected = self.reviewer.get_next_changeset() # changeset 4
113        self.assertEqual(expected,'82555dc3c5960646e60df09fb33ab288f209a65b')
114
115    def test_get_review__initial(self):
116        # ensure this method doesn't go away
117        expected = '71cd80944c7c8cdeff9f394b493a372b2b70ebb1'
118        review = self.reviewer.get_review(expected)
119        self.assertEqual(review.changeset,expected)
120
121    def test_get_blocking_changeset__initial(self):
122        # expect changeset 3 because ticket #2 is last fully reviewed ticket
123        actual = self.reviewer.get_blocking_changeset() # changeset 3
124        expected = '71cd80944c7c8cdeff9f394b493a372b2b70ebb1'
125        self.assertEqual(actual,expected)
126
127    def test_get_blocked_tickets__initial(self):
128        actual = self.reviewer.get_blocked_tickets()
129        self.assertEqual([t.id for t in actual],[2,3])
130
131    def test_get_blocked_tickets__at_second_changeset(self):
132        data = '{"current": "71cd80944c7c8cdeff9f394b493a372b2b70ebb1"}'
133        open(self.reviewer.data_file,'w').write(data)
134        actual = self.reviewer.get_blocked_tickets()
135        self.assertEqual(len(actual),1)
136        self.assertEqual(actual[0].id,3)
137        expected = time.mktime(time.strptime("Wed May 16 11:13:48 2012","%a %B %d %H:%M:%S %Y"))
138        self.assertEqual(actual[0].first_changeset_when,long(expected*1000000)) # changeset 4
139
140
141if __name__ == '__main__':
142    unittest.main()
Note: See TracBrowser for help on using the repository browser.