Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1999)

Unified Diff: tests/watchlists_unittest.py

Issue 126272: Add unit tests for watchlists (Closed) Base URL: svn://chrome-svn/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « PRESUBMIT.py ('k') | watchlists.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
+ *
« no previous file with comments | « PRESUBMIT.py ('k') | watchlists.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698