OLD | NEW |
(Empty) | |
| 1 #!/usr/bin/python |
| 2 # Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. |
| 5 |
| 6 """Unit tests for watchlists.py.""" |
| 7 |
| 8 import unittest |
| 9 import super_mox |
| 10 import watchlists |
| 11 |
| 12 |
| 13 class WatchlistsTest(super_mox.SuperMoxTestBase): |
| 14 |
| 15 def setUp(self): |
| 16 super_mox.SuperMoxTestBase.setUp(self) |
| 17 self.mox.StubOutWithMock(watchlists.Watchlists, '_HasWatchlistsFile') |
| 18 self.mox.StubOutWithMock(watchlists.Watchlists, '_ContentsOfWatchlistsFile') |
| 19 self.mox.StubOutWithMock(watchlists.logging, 'error') |
| 20 |
| 21 def testMissingWatchlistsFileOK(self): |
| 22 """Test that we act gracefully if WATCHLISTS file is missing.""" |
| 23 watchlists.Watchlists._HasWatchlistsFile().AndReturn(False) |
| 24 self.mox.ReplayAll() |
| 25 |
| 26 wl = watchlists.Watchlists('/some/random/path') |
| 27 self.assertEqual(wl.GetWatchersForPaths(['some_path']), []) |
| 28 |
| 29 def testGarbledWatchlistsFileOK(self): |
| 30 """Test that we act gracefully if WATCHLISTS file is garbled.""" |
| 31 contents = 'some garbled and unwanted text' |
| 32 watchlists.Watchlists._HasWatchlistsFile().AndReturn(True) |
| 33 watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
| 34 watchlists.logging.error(super_mox.mox.IgnoreArg()) |
| 35 self.mox.ReplayAll() |
| 36 |
| 37 wl = watchlists.Watchlists('/a/path') |
| 38 self.assertEqual(wl.GetWatchersForPaths(['some_path']), []) |
| 39 |
| 40 def testNoWatchers(self): |
| 41 contents = \ |
| 42 """{ |
| 43 'WATCHLIST_DEFINITIONS': { |
| 44 'a_module': { |
| 45 'filepath': 'a_module', |
| 46 }, |
| 47 }, |
| 48 |
| 49 'WATCHLISTS': { |
| 50 'a_module': [], |
| 51 }, |
| 52 } """ |
| 53 watchlists.Watchlists._HasWatchlistsFile().AndReturn(True) |
| 54 watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
| 55 self.mox.ReplayAll() |
| 56 |
| 57 wl = watchlists.Watchlists('/a/path') |
| 58 self.assertEqual(wl.GetWatchersForPaths(['a_module']), []) |
| 59 |
| 60 def testValidWatcher(self): |
| 61 watchers = ['abc@def.com', 'x1@xyz.org'] |
| 62 contents = \ |
| 63 """{ |
| 64 'WATCHLIST_DEFINITIONS': { |
| 65 'a_module': { |
| 66 'filepath': 'a_module', |
| 67 }, |
| 68 }, |
| 69 'WATCHLISTS': { |
| 70 'a_module': %s, |
| 71 }, |
| 72 } """ % watchers |
| 73 watchlists.Watchlists._HasWatchlistsFile().AndReturn(True) |
| 74 watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
| 75 self.mox.ReplayAll() |
| 76 |
| 77 wl = watchlists.Watchlists('/a/path') |
| 78 self.assertEqual(wl.GetWatchersForPaths(['a_module']), watchers) |
| 79 |
| 80 def testMultipleWatchlistsTrigger(self): |
| 81 """Test that multiple watchlists can get triggered for one filepath.""" |
| 82 contents = \ |
| 83 """{ |
| 84 'WATCHLIST_DEFINITIONS': { |
| 85 'mac': { |
| 86 'filepath': 'mac', |
| 87 }, |
| 88 'views': { |
| 89 'filepath': 'views', |
| 90 }, |
| 91 }, |
| 92 'WATCHLISTS': { |
| 93 'mac': ['x1@chromium.org'], |
| 94 'views': ['x2@chromium.org'], |
| 95 }, |
| 96 } """ |
| 97 watchlists.Watchlists._HasWatchlistsFile().AndReturn(True) |
| 98 watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
| 99 self.mox.ReplayAll() |
| 100 |
| 101 wl = watchlists.Watchlists('/a/path') |
| 102 self.assertEqual(wl.GetWatchersForPaths(['file_views_mac']), |
| 103 ['x1@chromium.org', 'x2@chromium.org']) |
| 104 |
| 105 def testDuplicateWatchers(self): |
| 106 """Test that multiple watchlists can get triggered for one filepath.""" |
| 107 watchers = ['someone@chromium.org'] |
| 108 contents = \ |
| 109 """{ |
| 110 'WATCHLIST_DEFINITIONS': { |
| 111 'mac': { |
| 112 'filepath': 'mac', |
| 113 }, |
| 114 'views': { |
| 115 'filepath': 'views', |
| 116 }, |
| 117 }, |
| 118 'WATCHLISTS': { |
| 119 'mac': %s, |
| 120 'views': %s, |
| 121 }, |
| 122 } """ % (watchers, watchers) |
| 123 watchlists.Watchlists._HasWatchlistsFile().AndReturn(True) |
| 124 watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
| 125 self.mox.ReplayAll() |
| 126 |
| 127 wl = watchlists.Watchlists('/a/path') |
| 128 self.assertEqual(wl.GetWatchersForPaths(['file_views_mac']), watchers) |
| 129 |
| 130 |
| 131 if __name__ == '__main__': |
| 132 unittest.main() |
OLD | NEW |