Index: tests/watchlists_unittest.py |
=================================================================== |
--- tests/watchlists_unittest.py (revision 0) |
+++ tests/watchlists_unittest.py (revision 0) |
@@ -0,0 +1,132 @@ |
+#!/usr/bin/python |
+# Copyright (c) 2009 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.""" |
+ |
+import unittest |
+import super_mox |
+import watchlists |
+ |
+ |
+class WatchlistsTest(super_mox.SuperMoxTestBase): |
+ |
+ def setUp(self): |
+ super_mox.SuperMoxTestBase.setUp(self) |
+ self.mox.StubOutWithMock(watchlists.Watchlists, '_HasWatchlistsFile') |
+ self.mox.StubOutWithMock(watchlists.Watchlists, '_ContentsOfWatchlistsFile') |
+ self.mox.StubOutWithMock(watchlists.logging, 'error') |
+ |
+ def testMissingWatchlistsFileOK(self): |
+ """Test that we act gracefully if WATCHLISTS file is missing.""" |
+ watchlists.Watchlists._HasWatchlistsFile().AndReturn(False) |
+ self.mox.ReplayAll() |
+ |
+ 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().AndReturn(True) |
+ watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
+ watchlists.logging.error(super_mox.mox.IgnoreArg()) |
+ self.mox.ReplayAll() |
+ |
+ 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().AndReturn(True) |
+ watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
+ self.mox.ReplayAll() |
+ |
+ 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().AndReturn(True) |
+ watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
+ self.mox.ReplayAll() |
+ |
+ 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().AndReturn(True) |
+ watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
+ self.mox.ReplayAll() |
+ |
+ 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().AndReturn(True) |
+ watchlists.Watchlists._ContentsOfWatchlistsFile().AndReturn(contents) |
+ self.mox.ReplayAll() |
+ |
+ wl = watchlists.Watchlists('/a/path') |
+ self.assertEqual(wl.GetWatchersForPaths(['file_views_mac']), watchers) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |
Property changes on: tests/watchlists_unittest.py |
___________________________________________________________________ |
Name: svn:executable |
+ * |