| Index: tests/owners_unittest.py | 
| diff --git a/tests/owners_unittest.py b/tests/owners_unittest.py | 
| index 5cc5371e64d80084b3be1ed3544a0d64d109ad4b..0cc6d72979b50e62d19a0251fe9edfad1a40681d 100755 | 
| --- a/tests/owners_unittest.py | 
| +++ b/tests/owners_unittest.py | 
| @@ -73,14 +73,12 @@ class _BaseTestCase(unittest.TestCase): | 
| self.files = self.repo.files | 
| self.root = '/' | 
| self.fopen = self.repo.open_for_reading | 
| -    self.glob = self.repo.glob | 
|  | 
| -  def db(self, root=None, fopen=None, os_path=None, glob=None): | 
| +  def db(self, root=None, fopen=None, os_path=None): | 
| root = root or self.root | 
| fopen = fopen or self.fopen | 
| os_path = os_path or self.repo | 
| -    glob = glob or self.glob | 
| -    return owners.Database(root, fopen, os_path, glob) | 
| +    return owners.Database(root, fopen, os_path) | 
|  | 
|  | 
| class OwnersDatabaseTest(_BaseTestCase): | 
| @@ -150,9 +148,15 @@ class OwnersDatabaseTest(_BaseTestCase): | 
| ['content/content.gyp', 'content/bar/foo.cc', 'content/baz/froboz.h']) | 
|  | 
| def test_per_file(self): | 
| -    # brett isn't allowed to approve ugly.cc | 
| self.files['/content/baz/OWNERS'] = owners_file(brett, | 
| lines=['per-file ugly.*=tom@example.com']) | 
| + | 
| +    # peter isn't allowed to approve ugly.cc | 
| +    self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 
| +                                    [peter], | 
| +                                    ['content/baz/ugly.cc']) | 
| + | 
| +    # brett is allowed to approve ugly.cc | 
| self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 
| [brett], | 
| []) | 
| @@ -167,14 +171,22 @@ class OwnersDatabaseTest(_BaseTestCase): | 
|  | 
| def test_per_file_with_spaces(self): | 
| # This is the same as test_per_file(), except that we include spaces | 
| -    # on the per-file line. brett isn't allowed to approve ugly.cc; | 
| +    # on the per-file line. | 
| # tom is allowed to approve ugly.cc, but not froboz.h | 
| self.files['/content/baz/OWNERS'] = owners_file(brett, | 
| lines=['per-file ugly.* = tom@example.com']) | 
| + | 
| +    # peter isn't allowed to approve ugly.cc | 
| +    self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 
| +                                    [peter], | 
| +                                    ['content/baz/ugly.cc']) | 
| + | 
| +    # brett is allowed to approve ugly.cc | 
| self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 
| [brett], | 
| []) | 
|  | 
| +    # tom is allowed to approve ugly.cc, but not froboz.h | 
| self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 
| [tom], | 
| []) | 
| @@ -182,6 +194,21 @@ class OwnersDatabaseTest(_BaseTestCase): | 
| [tom], | 
| ['content/baz/froboz.h']) | 
|  | 
| +  def test_per_file_with_nonexistent_file(self): | 
| +    self.files['/content/baz/OWNERS'] = owners_file(brett, | 
| +        lines=['per-file ugly.*=tom@example.com']) | 
| + | 
| +    # peter isn't allowed to approve ugly.nonexistent.cc, but brett and tom are. | 
| +    self.assert_files_not_covered_by(['content/baz/ugly.nonexistent.cc'], | 
| +                                    [peter], | 
| +                                    ['content/baz/ugly.nonexistent.cc']) | 
| +    self.assert_files_not_covered_by(['content/baz/ugly.nonexistent.cc'], | 
| +                                    [brett], | 
| +                                    []) | 
| +    self.assert_files_not_covered_by(['content/baz/ugly.nonexistent.cc'], | 
| +                                    [tom], | 
| +                                    []) | 
| + | 
| def test_per_file__set_noparent(self): | 
| self.files['/content/baz/OWNERS'] = owners_file(brett, | 
| lines=['per-file ugly.*=tom@example.com', | 
|  |