123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #!/usr/bin/env vpython3
- # Copyright (c) 2011 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.
- """Unit tests for watchlists.py."""
- # pylint: disable=E1103,no-value-for-parameter,protected-access
- import os
- import sys
- import unittest
- from unittest import mock
- sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- import watchlists
- class WatchlistsTest(unittest.TestCase):
- def setUp(self):
- super(WatchlistsTest, self).setUp()
- mock.patch('watchlists.Watchlists._HasWatchlistsFile').start()
- mock.patch('watchlists.Watchlists._ContentsOfWatchlistsFile').start()
- mock.patch('watchlists.logging.error').start()
- self.addCleanup(mock.patch.stopall)
- def testMissingWatchlistsFileOK(self):
- """Test that we act gracefully if WATCHLISTS file is missing."""
- watchlists.Watchlists._HasWatchlistsFile.return_value = False
- wl = watchlists.Watchlists('/some/random/path')
- self.assertEqual(wl.GetWatchersForPaths(['some_path']), [])
- def testGarbledWatchlistsFileOK(self):
- """Test that we act gracefully if WATCHLISTS file is garbled."""
- contents = 'some garbled and unwanted text'
- watchlists.Watchlists._HasWatchlistsFile.return_value = True
- watchlists.Watchlists._ContentsOfWatchlistsFile.return_value = contents
- wl = watchlists.Watchlists('/a/path')
- self.assertEqual(wl.GetWatchersForPaths(['some_path']), [])
- def testNoWatchers(self):
- contents = \
- """{
- 'WATCHLIST_DEFINITIONS': {
- 'a_module': {
- 'filepath': 'a_module',
- },
- },
- 'WATCHLISTS': {
- 'a_module': [],
- },
- } """
- watchlists.Watchlists._HasWatchlistsFile.return_value = True
- watchlists.Watchlists._ContentsOfWatchlistsFile.return_value = contents
- wl = watchlists.Watchlists('/a/path')
- self.assertEqual(wl.GetWatchersForPaths(['a_module']), [])
- def testValidWatcher(self):
- watchers = ['abc@def.com', 'x1@xyz.org']
- contents = \
- """{
- 'WATCHLIST_DEFINITIONS': {
- 'a_module': {
- 'filepath': 'a_module',
- },
- },
- 'WATCHLISTS': {
- 'a_module': %s,
- },
- } """ % watchers
- watchlists.Watchlists._HasWatchlistsFile.return_value = True
- watchlists.Watchlists._ContentsOfWatchlistsFile.return_value = contents
- wl = watchlists.Watchlists('/a/path')
- self.assertEqual(wl.GetWatchersForPaths(['a_module']), watchers)
- def testMultipleWatchlistsTrigger(self):
- """Test that multiple watchlists can get triggered for one filepath."""
- contents = \
- """{
- 'WATCHLIST_DEFINITIONS': {
- 'mac': {
- 'filepath': 'mac',
- },
- 'views': {
- 'filepath': 'views',
- },
- },
- 'WATCHLISTS': {
- 'mac': ['x1@chromium.org'],
- 'views': ['x2@chromium.org'],
- },
- } """
- watchlists.Watchlists._HasWatchlistsFile.return_value = True
- watchlists.Watchlists._ContentsOfWatchlistsFile.return_value = contents
- wl = watchlists.Watchlists('/a/path')
- self.assertEqual(wl.GetWatchersForPaths(['file_views_mac']),
- ['x1@chromium.org', 'x2@chromium.org'])
- def testDuplicateWatchers(self):
- """Test that multiple watchlists can get triggered for one filepath."""
- watchers = ['someone@chromium.org']
- contents = \
- """{
- 'WATCHLIST_DEFINITIONS': {
- 'mac': {
- 'filepath': 'mac',
- },
- 'views': {
- 'filepath': 'views',
- },
- },
- 'WATCHLISTS': {
- 'mac': %s,
- 'views': %s,
- },
- } """ % (watchers, watchers)
- watchlists.Watchlists._HasWatchlistsFile.return_value = True
- watchlists.Watchlists._ContentsOfWatchlistsFile.return_value = contents
- wl = watchlists.Watchlists('/a/path')
- self.assertEqual(wl.GetWatchersForPaths(['file_views_mac']), watchers)
- def testWinPathWatchers(self):
- """Test watchers for a windows path (containing backward slashes)."""
- watchers = ['abc@def.com', 'x1@xyz.org']
- contents = \
- """{
- 'WATCHLIST_DEFINITIONS': {
- 'browser': {
- 'filepath': 'chrome/browser/.*',
- },
- },
- 'WATCHLISTS': {
- 'browser': %s,
- },
- } """ % watchers
- saved_sep = watchlists.os.sep
- watchlists.os.sep = '\\' # to pose as win32
- watchlists.Watchlists._HasWatchlistsFile.return_value = True
- watchlists.Watchlists._ContentsOfWatchlistsFile.return_value = contents
- wl = watchlists.Watchlists(r'a\path')
- returned_watchers = wl.GetWatchersForPaths(
- [r'chrome\browser\renderer_host\render_widget_host.h'])
- watchlists.os.sep = saved_sep # revert back os.sep before asserts
- self.assertEqual(returned_watchers, watchers)
- if __name__ == '__main__':
- import unittest
- unittest.main()
|