mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Import python libs
|
|
from __future__ import absolute_import
|
|
import os
|
|
from os.path import join
|
|
from shutil import rmtree
|
|
from tempfile import mkdtemp
|
|
|
|
# Import Salt Testing libs
|
|
from salttesting import TestCase
|
|
from salttesting.helpers import ensure_in_syspath
|
|
ensure_in_syspath('../../')
|
|
|
|
# Import salt libs
|
|
import integration
|
|
import salt.utils
|
|
import salt.utils.find
|
|
|
|
|
|
class TestUtils(TestCase):
|
|
|
|
def test_safe_walk_symlink_recursion(self):
|
|
tmp = mkdtemp(dir=integration.SYS_TMP_DIR)
|
|
try:
|
|
if os.stat(tmp).st_ino == 0:
|
|
self.skipTest('inodes not supported in {0}'.format(tmp))
|
|
os.mkdir(join(tmp, 'fax'))
|
|
os.makedirs(join(tmp, 'foo/bar'))
|
|
os.symlink('../..', join(tmp, 'foo/bar/baz'))
|
|
os.symlink('foo', join(tmp, 'root'))
|
|
expected = [
|
|
(join(tmp, 'root'), ['bar'], []),
|
|
(join(tmp, 'root/bar'), ['baz'], []),
|
|
(join(tmp, 'root/bar/baz'), ['fax', 'foo', 'root'], []),
|
|
(join(tmp, 'root/bar/baz/fax'), [], []),
|
|
]
|
|
paths = []
|
|
for root, dirs, names in salt.utils.safe_walk(join(tmp, 'root')):
|
|
paths.append((root, sorted(dirs), names))
|
|
if paths != expected:
|
|
raise AssertionError(
|
|
'\n'.join(
|
|
['got:'] + [repr(p) for p in paths] +
|
|
['', 'expected:'] + [repr(p) for p in expected]
|
|
)
|
|
)
|
|
finally:
|
|
rmtree(tmp)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from integration import run_tests
|
|
run_tests(TestUtils, needs_daemon=False)
|