blob: 0dafd8ab537b022d1741c221c990fa253c2f4584 [file] [log] [blame]
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Integration tests for bug hunter."""
import csv
from optparse import Values
import os
import unittest
from bug_hunter import BugHunter
try:
import gdata.data
import gdata.projecthosting.client
except ImportError:
logging.error('gdata-client needs to be installed. Please install\n'
'and try again (http://code.google.com/p/gdata-python-client/)')
sys.exit(1)
class BugHunterTest(unittest.TestCase):
"""Unit tests for the Bug Hunter class."""
_TEST_FILENAME = 'test.csv'
def _CleanTestFile(self):
if os.path.exists(self._TEST_FILENAME):
os.remove(self._TEST_FILENAME)
def setUp(self):
self._CleanTestFile()
def tearDown(self):
self._CleanTestFile()
def _GetIssue(self):
return [{'issue_id': '0', 'title': 'title', 'author': 'author',
'status': 'status', 'state': 'state', 'content': 'content',
'comments': [], 'labels': [], 'urls': []}]
def _GetDefaultOption(self, set_10_days_ago, query='steps'):
ops = Values()
ops.query = query
if set_10_days_ago:
ops.interval_value = 10
ops.interval_unit = 'days'
else:
ops.interval_value = None
ops.email_entries = ['comments']
ops.project_name = 'chromium'
ops.query_title = 'query title'
ops.max_comments = None
return ops
def testGetIssueReturnedIssue(self):
bh = BugHunter(
self._GetDefaultOption(False,
query=('audio opened-after:2010/10/10'
' opened-before:2010/10/20')))
self.assertEquals(len(bh.GetIssues()), 18)
def testGetIssueReturnedIssueWithStatus(self):
ops = self._GetDefaultOption(False)
ops.query = 'Feature:Media* Status:Unconfirmed'
issues = BugHunter(ops).GetIssues()
for issue in issues:
self.assertEquals(issue['status'], 'Unconfirmed')
def testGetIssueReturnNoIssue(self):
ops = self._GetDefaultOption(True)
ops.query = 'thisshouldnotmatchpleaseignorethis*'
self.assertFalse(BugHunter(ops).GetIssues())
def testGetComments(self):
comments = BugHunter(self._GetDefaultOption(False)).GetComments(100000, 2)
self.assertEquals(len(comments), 2)
expected_comments = [(None, 'rby...@chromium.org',
'2011-10-31T19:54:40.000Z'),
(None, 'backer@chromium.org',
'2011-10-14T13:59:37.000Z')]
self.assertEquals(comments, expected_comments)
def testWriteIssuesToFileInCSV(self):
ops = self._GetDefaultOption(False)
bh = BugHunter(ops)
bh.WriteIssuesToFileInCSV(self._GetIssue(), self._TEST_FILENAME)
with open(self._TEST_FILENAME, 'r') as f:
reader = csv.reader(f)
self.assertEquals(reader.next(), ['status', 'content', 'state',
'issue_id', 'urls', 'title', 'labels',
'author', 'comments'])
self.assertEquals(reader.next(), ['status', 'content', 'state', '0',
'[]', 'title', '[]', 'author', '[]'])
self.assertRaises(StopIteration, reader.next)