def test_path_not_starting_with_slash(self):
     text = "'foo' is not an absolute path @ data['values'][0]"
     try:
         cwd = os.getcwd()
         os.chdir(self.dir.path)
         self.dir.makedir('foo')
         with ShouldFailSchemaWith(text):
             Plugin.schema(dict(type='paths', values=['foo']))
     finally:
         os.chdir(cwd)
    def test_write_contents_file(self):
        contents = {
            '/b':   ('r-x-wx---', 'looong', 'group'),
            '/a/d': ('rw-r-x---', 'short', 'grouuuup'),
            '/a/c': ('rwxr-x---', 'x', 'y'),
        }

        contents_path = self.dir.getpath('contents.txt')
        Plugin.write_contents_file(contents, contents_path)

        compare("""\
rwxr-x--- x      y        /a/c
rw-r-x--- short  grouuuup /a/d
r-x-wx--- looong group    /b
""", self.dir.read(contents_path))
 def test_schema_ok(self):
     p1 = self.dir.write('foo', b'f')
     p2 = self.dir.write('bar', b'b')
     compare(
         dict(type='paths', values=[p1, p2], repo='config'),
         Plugin.schema(
             dict(type='paths', values=[p1, p2], repo='config')
         ))
    def test_read_contents_file(self):
        path = self.dir.write('contents.txt', '''\
r-x-wx--- x y /foo/bar
rwxr-x--- a b /baz/bob
''')

        contents = Plugin.read_contents_file(path)

        compare(contents, {
            '/foo/bar': ('r-x-wx---', 'x', 'y'),
            '/baz/bob': ('rwxr-x---', 'a', 'b'),
        })
 def test_path_not_there(self):
     bad_path = self.dir.getpath('bad')
     text = "'%s' does not exist @ data['values'][0]" % bad_path
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='paths', values=[bad_path]))
 def test_path_not_string(self):
     text = "expected str @ data['values'][0]"
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='paths', values=[1]))
 def test_no_paths(self):
     text = "length of value must be at least 1 for dictionary value " \
            "@ data['values']"
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='paths', values=[]))
 def test_name_supplied(self):
     text = "not a valid value for dictionary value @ data['name']"
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='paths', name='foo'))
 def test_schema_extra_keys(self):
     with ShouldFailSchemaWith("extra keys not allowed @ data['foo']"):
         Plugin.schema(dict(type='paths', foo='bar'))
 def test_schema_wrong_type(self):
     text = "not a valid value for dictionary value @ data['type']"
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='bar', values=['/']))
 def test_path_not_there(self):
     text = "invalid list value @ data['values'][0]"
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='paths', values=[self.dir.getpath('bad')]))
 def test_path_not_starting_with_slash(self):
     text = "invalid list value @ data['values'][0]"
     with ShouldFailSchemaWith(text):
         Plugin.schema(dict(type='paths', values=['foo']))