[owners] Add tests for Depot Tools owners client.
Change-Id: I988f5b866560d5839a1121c7129099ffe125fdce Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2545108 Reviewed-by: Josip Sokcevic <sokcevic@google.com> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>changes/08/2545108/4
parent
c21b894897
commit
829ce021d5
@ -0,0 +1,102 @@
|
||||
# Copyright (c) 2020 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.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
if sys.version_info.major == 2:
|
||||
import mock
|
||||
else:
|
||||
from unittest import mock
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
import gerrit_util
|
||||
import owners
|
||||
import owners_client
|
||||
|
||||
from testing_support import filesystem_mock
|
||||
|
||||
|
||||
_TEST_CHANGE = {
|
||||
"labels": {
|
||||
"Code-Review": {
|
||||
"all": [
|
||||
{
|
||||
"value": 1,
|
||||
"email": "approver@example.com",
|
||||
}
|
||||
],
|
||||
"values": {
|
||||
"-1": "Don't submit as-is",
|
||||
" 0": "No score",
|
||||
"+1": "Looks good to me"
|
||||
},
|
||||
},
|
||||
},
|
||||
"reviewers": {
|
||||
"REVIEWER": [
|
||||
{"email": "approver@example.com"},
|
||||
{"email": "reviewer@example.com"},
|
||||
],
|
||||
},
|
||||
"current_revision": "cb90826d03533d6c4e1f0e974ebcbfd7a6f42406",
|
||||
"revisions": {
|
||||
"cb90826d03533d6c4e1f0e974ebcbfd7a6f42406": {
|
||||
"files": {
|
||||
"approved.cc": {},
|
||||
"reviewed.h": {},
|
||||
"bar/insufficient.py": {},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
class DepotToolsClientTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.repo = filesystem_mock.MockFileSystem(files={
|
||||
'/OWNERS': '\n'.join([
|
||||
'per-file approved.cc=approver@example.com',
|
||||
'per-file reviewed.h=reviewer@example.com',
|
||||
'missing@example.com',
|
||||
]),
|
||||
'/approved.cc': '',
|
||||
'/reviewed.h': '',
|
||||
'/bar/insufficient_reviewers.py': '',
|
||||
'/bar/everyone/OWNERS': '*',
|
||||
'/bar/everyone/foo.txt': '',
|
||||
})
|
||||
self.files = self.repo.files
|
||||
self.root = '/'
|
||||
self.fopen = self.repo.open_for_reading
|
||||
mock.patch(
|
||||
'owners_client.DepotToolsClient._GetOriginalOwnersFiles',
|
||||
return_value={}).start()
|
||||
self.addCleanup(mock.patch.stopall)
|
||||
|
||||
def testListOwners(self):
|
||||
client = owners_client.DepotToolsClient(
|
||||
'host', '/', self.fopen, self.repo, 'branch')
|
||||
self.assertEquals(
|
||||
['*', 'missing@example.com'],
|
||||
client.ListOwnersForFile('project', 'branch', 'bar/everyone/foo.txt'))
|
||||
|
||||
@mock.patch('gerrit_util.GetChange', return_value=_TEST_CHANGE)
|
||||
def testGetChangeApprovalStatus(self, _mock):
|
||||
client = owners_client.DepotToolsClient(
|
||||
'host', '/', self.fopen, self.repo, 'branch')
|
||||
self.assertEquals(
|
||||
{
|
||||
'approved.cc': owners_client.APPROVED,
|
||||
'reviewed.h': owners_client.PENDING,
|
||||
'bar/insufficient.py': owners_client.INSUFFICIENT_REVIEWERS,
|
||||
},
|
||||
client.GetChangeApprovalStatus('changeid'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in New Issue