PageRenderTime 44ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/unit/utils/find_test.py

https://github.com/arnisoph/salt
Python | 589 lines | 576 code | 8 blank | 5 comment | 0 complexity | 339d19c6fe1a6ca65a8b4964e66bb439 MD5 | raw file
Possible License(s): Apache-2.0
  1. # -*- coding: utf-8 -*-
  2. # Import python libs
  3. from __future__ import absolute_import
  4. import os
  5. import sys
  6. import shutil
  7. import tempfile
  8. import stat
  9. # Import Salt Testing libs
  10. from salttesting import skipIf, TestCase
  11. from salttesting.helpers import ensure_in_syspath
  12. ensure_in_syspath('../../')
  13. # Import salt libs
  14. import integration
  15. import salt.utils
  16. import salt.utils.find
  17. # Import 3rd-party libs
  18. from salt.ext.six.moves import range # pylint: disable=import-error,redefined-builtin
  19. class TestFind(TestCase):
  20. def test_parse_interval(self):
  21. self.assertRaises(ValueError, salt.utils.find._parse_interval, 'w')
  22. self.assertRaises(ValueError, salt.utils.find._parse_interval, '1')
  23. self.assertRaises(ValueError, salt.utils.find._parse_interval, '1s1w')
  24. self.assertRaises(ValueError, salt.utils.find._parse_interval, '1s1s')
  25. result, resolution, modifier = salt.utils.find._parse_interval('')
  26. self.assertEqual(result, 0)
  27. self.assertIs(resolution, None)
  28. self.assertEqual(modifier, '')
  29. result, resolution, modifier = salt.utils.find._parse_interval('1s')
  30. self.assertEqual(result, 1.0)
  31. self.assertEqual(resolution, 1)
  32. self.assertEqual(modifier, '')
  33. result, resolution, modifier = salt.utils.find._parse_interval('1m')
  34. self.assertEqual(result, 60.0)
  35. self.assertEqual(resolution, 60)
  36. self.assertEqual(modifier, '')
  37. result, resolution, modifier = salt.utils.find._parse_interval('1h')
  38. self.assertEqual(result, 3600.0)
  39. self.assertEqual(resolution, 3600)
  40. self.assertEqual(modifier, '')
  41. result, resolution, modifier = salt.utils.find._parse_interval('1d')
  42. self.assertEqual(result, 86400.0)
  43. self.assertEqual(resolution, 86400)
  44. self.assertEqual(modifier, '')
  45. result, resolution, modifier = salt.utils.find._parse_interval('1w')
  46. self.assertEqual(result, 604800.0)
  47. self.assertEqual(resolution, 604800)
  48. self.assertEqual(modifier, '')
  49. result, resolution, modifier = salt.utils.find._parse_interval('1w3d6h')
  50. self.assertEqual(result, 885600.0)
  51. self.assertEqual(resolution, 3600)
  52. self.assertEqual(modifier, '')
  53. result, resolution, modifier = salt.utils.find._parse_interval('1m1s')
  54. self.assertEqual(result, 61.0)
  55. self.assertEqual(resolution, 1)
  56. self.assertEqual(modifier, '')
  57. result, resolution, modifier = salt.utils.find._parse_interval('1m2s')
  58. self.assertEqual(result, 62.0)
  59. self.assertEqual(resolution, 1)
  60. self.assertEqual(modifier, '')
  61. result, resolution, modifier = salt.utils.find._parse_interval('+1d')
  62. self.assertEqual(result, 86400.0)
  63. self.assertEqual(resolution, 86400)
  64. self.assertEqual(modifier, '+')
  65. result, resolution, modifier = salt.utils.find._parse_interval('-1d')
  66. self.assertEqual(result, 86400.0)
  67. self.assertEqual(resolution, 86400)
  68. self.assertEqual(modifier, '-')
  69. def test_parse_size(self):
  70. self.assertRaises(ValueError, salt.utils.find._parse_size, '')
  71. self.assertRaises(ValueError, salt.utils.find._parse_size, '1s1s')
  72. min_size, max_size = salt.utils.find._parse_size('1')
  73. self.assertEqual(min_size, 1)
  74. self.assertEqual(max_size, 1)
  75. min_size, max_size = salt.utils.find._parse_size('1b')
  76. self.assertEqual(min_size, 1)
  77. self.assertEqual(max_size, 1)
  78. min_size, max_size = salt.utils.find._parse_size('1k')
  79. self.assertEqual(min_size, 1024)
  80. self.assertEqual(max_size, 2047)
  81. min_size, max_size = salt.utils.find._parse_size('1m')
  82. self.assertEqual(min_size, 1048576)
  83. self.assertEqual(max_size, 2097151)
  84. min_size, max_size = salt.utils.find._parse_size('1g')
  85. self.assertEqual(min_size, 1073741824)
  86. self.assertEqual(max_size, 2147483647)
  87. min_size, max_size = salt.utils.find._parse_size('1t')
  88. self.assertEqual(min_size, 1099511627776)
  89. self.assertEqual(max_size, 2199023255551)
  90. min_size, max_size = salt.utils.find._parse_size('0m')
  91. self.assertEqual(min_size, 0)
  92. self.assertEqual(max_size, 1048575)
  93. min_size, max_size = salt.utils.find._parse_size('-1m')
  94. self.assertEqual(min_size, 0)
  95. self.assertEqual(max_size, 1048576)
  96. min_size, max_size = salt.utils.find._parse_size('+1m')
  97. self.assertEqual(min_size, 1048576)
  98. self.assertEqual(max_size, sys.maxint)
  99. min_size, max_size = salt.utils.find._parse_size('+1M')
  100. self.assertEqual(min_size, 1048576)
  101. self.assertEqual(max_size, sys.maxint)
  102. def test_option_requires(self):
  103. option = salt.utils.find.Option()
  104. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  105. def test_name_option_match(self):
  106. option = salt.utils.find.NameOption('name', '*.txt')
  107. self.assertIs(option.match('', '', ''), None)
  108. self.assertIs(option.match('', 'hello.txt', '').group(), 'hello.txt')
  109. self.assertIs(option.match('', 'HELLO.TXT', ''), None)
  110. def test_iname_option_match(self):
  111. option = salt.utils.find.InameOption('name', '*.txt')
  112. self.assertIs(option.match('', '', ''), None)
  113. self.assertIs(option.match('', 'hello.txt', '').group(), 'hello.txt')
  114. self.assertIs(option.match('', 'HELLO.TXT', '').group(), 'HELLO.TXT')
  115. def test_regex_option_match(self):
  116. self.assertRaises(
  117. ValueError, salt.utils.find.RegexOption, 'name', '(.*}'
  118. )
  119. option = salt.utils.find.RegexOption('name', r'.*\.txt')
  120. self.assertIs(option.match('', '', ''), None)
  121. self.assertIs(option.match('', 'hello.txt', '').group(), 'hello.txt')
  122. self.assertIs(option.match('', 'HELLO.TXT', ''), None)
  123. def test_iregex_option_match(self):
  124. self.assertRaises(
  125. ValueError, salt.utils.find.IregexOption, 'name', '(.*}'
  126. )
  127. option = salt.utils.find.IregexOption('name', r'.*\.txt')
  128. self.assertIs(option.match('', '', ''), None)
  129. self.assertIs(option.match('', 'hello.txt', '').group(), 'hello.txt')
  130. self.assertIs(option.match('', 'HELLO.TXT', '').group(), 'HELLO.TXT')
  131. def test_type_option_requires(self):
  132. self.assertRaises(ValueError, salt.utils.find.TypeOption, 'type', 'w')
  133. option = salt.utils.find.TypeOption('type', 'd')
  134. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  135. def test_type_option_match(self):
  136. option = salt.utils.find.TypeOption('type', 'b')
  137. self.assertEqual(option.match('', '', [stat.S_IFREG]), False)
  138. option = salt.utils.find.TypeOption('type', 'c')
  139. self.assertEqual(option.match('', '', [stat.S_IFREG]), False)
  140. option = salt.utils.find.TypeOption('type', 'd')
  141. self.assertEqual(option.match('', '', [stat.S_IFREG]), False)
  142. option = salt.utils.find.TypeOption('type', 'f')
  143. self.assertEqual(option.match('', '', [stat.S_IFREG]), True)
  144. option = salt.utils.find.TypeOption('type', 'l')
  145. self.assertEqual(option.match('', '', [stat.S_IFREG]), False)
  146. option = salt.utils.find.TypeOption('type', 'p')
  147. self.assertEqual(option.match('', '', [stat.S_IFREG]), False)
  148. option = salt.utils.find.TypeOption('type', 's')
  149. self.assertEqual(option.match('', '', [stat.S_IFREG]), False)
  150. option = salt.utils.find.TypeOption('type', 'b')
  151. self.assertEqual(option.match('', '', [stat.S_IFBLK]), True)
  152. option = salt.utils.find.TypeOption('type', 'c')
  153. self.assertEqual(option.match('', '', [stat.S_IFCHR]), True)
  154. option = salt.utils.find.TypeOption('type', 'd')
  155. self.assertEqual(option.match('', '', [stat.S_IFDIR]), True)
  156. option = salt.utils.find.TypeOption('type', 'l')
  157. self.assertEqual(option.match('', '', [stat.S_IFLNK]), True)
  158. option = salt.utils.find.TypeOption('type', 'p')
  159. self.assertEqual(option.match('', '', [stat.S_IFIFO]), True)
  160. option = salt.utils.find.TypeOption('type', 's')
  161. self.assertEqual(option.match('', '', [stat.S_IFSOCK]), True)
  162. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  163. def test_owner_option_requires(self):
  164. self.assertRaises(
  165. ValueError, salt.utils.find.OwnerOption, 'owner', 'notexist'
  166. )
  167. option = salt.utils.find.OwnerOption('owner', 'root')
  168. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  169. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  170. def test_owner_option_match(self):
  171. option = salt.utils.find.OwnerOption('owner', 'root')
  172. self.assertEqual(option.match('', '', [0] * 5), True)
  173. option = salt.utils.find.OwnerOption('owner', '500')
  174. self.assertEqual(option.match('', '', [500] * 5), True)
  175. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  176. def test_group_option_requires(self):
  177. self.assertRaises(
  178. ValueError, salt.utils.find.GroupOption, 'group', 'notexist'
  179. )
  180. if sys.platform.startswith(('darwin', 'freebsd', 'openbsd')):
  181. group_name = 'wheel'
  182. else:
  183. group_name = 'root'
  184. option = salt.utils.find.GroupOption('group', group_name)
  185. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  186. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  187. def test_group_option_match(self):
  188. if sys.platform.startswith(('darwin', 'freebsd', 'openbsd')):
  189. group_name = 'wheel'
  190. else:
  191. group_name = 'root'
  192. option = salt.utils.find.GroupOption('group', group_name)
  193. self.assertEqual(option.match('', '', [0] * 6), True)
  194. option = salt.utils.find.GroupOption('group', '500')
  195. self.assertEqual(option.match('', '', [500] * 6), True)
  196. def test_size_option_requires(self):
  197. self.assertRaises(
  198. ValueError, salt.utils.find.SizeOption, 'size', '1s1s'
  199. )
  200. option = salt.utils.find.SizeOption('size', '+1G')
  201. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  202. def test_size_option_match(self):
  203. option = salt.utils.find.SizeOption('size', '+1k')
  204. self.assertEqual(option.match('', '', [10000] * 7), True)
  205. option = salt.utils.find.SizeOption('size', '+1G')
  206. self.assertEqual(option.match('', '', [10000] * 7), False)
  207. def test_mtime_option_requires(self):
  208. self.assertRaises(
  209. ValueError, salt.utils.find.MtimeOption, 'mtime', '4g'
  210. )
  211. option = salt.utils.find.MtimeOption('mtime', '1d')
  212. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  213. def test_mtime_option_match(self):
  214. option = salt.utils.find.MtimeOption('mtime', '-1w')
  215. self.assertEqual(option.match('', '', [1] * 9), False)
  216. option = salt.utils.find.MtimeOption('mtime', '-1s')
  217. self.assertEqual(option.match('', '', [10 ** 10] * 9), True)
  218. class TestGrepOption(TestCase):
  219. def setUp(self):
  220. super(TestGrepOption, self).setUp()
  221. self.tmpdir = tempfile.mkdtemp(dir=integration.SYS_TMP_DIR)
  222. def tearDown(self):
  223. shutil.rmtree(self.tmpdir)
  224. super(TestGrepOption, self).tearDown()
  225. def test_grep_option_requires(self):
  226. self.assertRaises(
  227. ValueError, salt.utils.find.GrepOption, 'grep', '(foo)|(bar}'
  228. )
  229. option = salt.utils.find.GrepOption('grep', '(foo)|(bar)')
  230. find = salt.utils.find
  231. self.assertEqual(
  232. option.requires(), (find._REQUIRES_CONTENTS | find._REQUIRES_STAT)
  233. )
  234. def test_grep_option_match_regular_file(self):
  235. hello_file = os.path.join(self.tmpdir, 'hello.txt')
  236. fd = salt.utils.fopen(hello_file, 'w')
  237. fd.write("foo")
  238. fd.close()
  239. option = salt.utils.find.GrepOption('grep', 'foo')
  240. self.assertEqual(
  241. option.match(self.tmpdir, 'hello.txt', os.stat(hello_file)),
  242. hello_file
  243. )
  244. option = salt.utils.find.GrepOption('grep', 'bar')
  245. self.assertEqual(
  246. option.match(self.tmpdir, 'hello.txt', os.stat(hello_file)),
  247. None
  248. )
  249. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  250. def test_grep_option_match_dev_null(self):
  251. option = salt.utils.find.GrepOption('grep', 'foo')
  252. self.assertEqual(
  253. option.match('dev', 'null', os.stat('/dev/null')), None
  254. )
  255. class TestPrintOption(TestCase):
  256. def setUp(self):
  257. super(TestPrintOption, self).setUp()
  258. self.tmpdir = tempfile.mkdtemp(dir=integration.SYS_TMP_DIR)
  259. def tearDown(self):
  260. shutil.rmtree(self.tmpdir)
  261. super(TestPrintOption, self).tearDown()
  262. def test_print_option_defaults(self):
  263. option = salt.utils.find.PrintOption('print', '')
  264. self.assertEqual(option.need_stat, False)
  265. self.assertEqual(option.print_title, False)
  266. self.assertEqual(option.fmt, ['path'])
  267. def test_print_option_requires(self):
  268. option = salt.utils.find.PrintOption('print', '')
  269. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  270. option = salt.utils.find.PrintOption('print', 'name')
  271. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  272. option = salt.utils.find.PrintOption('print', 'path')
  273. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  274. option = salt.utils.find.PrintOption('print', 'name,path')
  275. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  276. option = salt.utils.find.PrintOption('print', 'user')
  277. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  278. option = salt.utils.find.PrintOption('print', 'path user')
  279. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  280. def test_print_option_execute(self):
  281. hello_file = os.path.join(self.tmpdir, 'hello.txt')
  282. fd = salt.utils.fopen(hello_file, 'w')
  283. fd.write("foo")
  284. fd.close()
  285. option = salt.utils.find.PrintOption('print', '')
  286. self.assertEqual(option.execute('', [0] * 9), '')
  287. option = salt.utils.find.PrintOption('print', 'path')
  288. self.assertEqual(option.execute('test_name', [0] * 9), 'test_name')
  289. option = salt.utils.find.PrintOption('print', 'name')
  290. self.assertEqual(option.execute('test_name', [0] * 9), 'test_name')
  291. option = salt.utils.find.PrintOption('print', 'size')
  292. self.assertEqual(option.execute(hello_file, os.stat(hello_file)), 3)
  293. option = salt.utils.find.PrintOption('print', 'type')
  294. self.assertEqual(option.execute(hello_file, os.stat(hello_file)), 'f')
  295. option = salt.utils.find.PrintOption('print', 'mode')
  296. self.assertEqual(option.execute(hello_file, range(10)), 0)
  297. option = salt.utils.find.PrintOption('print', 'mtime')
  298. self.assertEqual(option.execute(hello_file, range(10)), 8)
  299. option = salt.utils.find.PrintOption('print', 'md5')
  300. self.assertEqual(
  301. option.execute(hello_file, os.stat(hello_file)),
  302. 'acbd18db4cc2f85cedef654fccc4a4d8'
  303. )
  304. option = salt.utils.find.PrintOption('print', 'path name')
  305. self.assertEqual(
  306. option.execute('test_name', [0] * 9), ['test_name', 'test_name']
  307. )
  308. option = salt.utils.find.PrintOption('print', 'size name')
  309. self.assertEqual(
  310. option.execute('test_name', [0] * 9), [0, 'test_name']
  311. )
  312. @skipIf(sys.platform.startswith('Windows'), "no /dev/null on windows")
  313. def test_print_user(self):
  314. option = salt.utils.find.PrintOption('print', 'user')
  315. self.assertEqual(option.execute('', [0] * 10), 'root')
  316. option = salt.utils.find.PrintOption('print', 'user')
  317. self.assertEqual(option.execute('', [2 ** 31] * 10), 2 ** 31)
  318. @skipIf(sys.platform.startswith('Windows'), "no /dev/null on windows")
  319. def test_print_group(self):
  320. option = salt.utils.find.PrintOption('print', 'group')
  321. if sys.platform.startswith(('darwin', 'freebsd', 'openbsd')):
  322. group_name = 'wheel'
  323. else:
  324. group_name = 'root'
  325. self.assertEqual(option.execute('', [0] * 10), group_name)
  326. # This seems to be not working in Ubuntu 12.04 32 bit
  327. #option = salt.utils.find.PrintOption('print', 'group')
  328. #self.assertEqual(option.execute('', [2 ** 31] * 10), 2 ** 31)
  329. @skipIf(sys.platform.startswith('Windows'), "no /dev/null on windows")
  330. def test_print_md5(self):
  331. option = salt.utils.find.PrintOption('print', 'md5')
  332. self.assertEqual(option.execute('/dev/null', os.stat('/dev/null')), '')
  333. class TestFinder(TestCase):
  334. def setUp(self):
  335. super(TestFinder, self).setUp()
  336. self.tmpdir = tempfile.mkdtemp(dir=integration.SYS_TMP_DIR)
  337. def tearDown(self):
  338. shutil.rmtree(self.tmpdir)
  339. super(TestFinder, self).tearDown()
  340. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  341. def test_init(self):
  342. finder = salt.utils.find.Finder({})
  343. self.assertEqual(
  344. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  345. )
  346. self.assertEqual(finder.criteria, [])
  347. finder = salt.utils.find.Finder({'_': None})
  348. self.assertEqual(
  349. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  350. )
  351. self.assertEqual(finder.criteria, [])
  352. self.assertRaises(ValueError, salt.utils.find.Finder, {'': None})
  353. self.assertRaises(ValueError, salt.utils.find.Finder, {'name': None})
  354. self.assertRaises(
  355. ValueError, salt.utils.find.Finder, {'nonexist': 'somevalue'}
  356. )
  357. finder = salt.utils.find.Finder({'name': 'test_name'})
  358. self.assertEqual(
  359. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  360. )
  361. self.assertEqual(
  362. str(finder.criteria[0].__class__)[-12:-2], 'NameOption'
  363. )
  364. finder = salt.utils.find.Finder({'iname': 'test_name'})
  365. self.assertEqual(
  366. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  367. )
  368. self.assertEqual(
  369. str(finder.criteria[0].__class__)[-13:-2], 'InameOption'
  370. )
  371. finder = salt.utils.find.Finder({'regex': r'.*\.txt'})
  372. self.assertEqual(
  373. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  374. )
  375. self.assertEqual(
  376. str(finder.criteria[0].__class__)[-13:-2], 'RegexOption'
  377. )
  378. finder = salt.utils.find.Finder({'iregex': r'.*\.txt'})
  379. self.assertEqual(
  380. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  381. )
  382. self.assertEqual(
  383. str(finder.criteria[0].__class__)[-14:-2], 'IregexOption'
  384. )
  385. finder = salt.utils.find.Finder({'type': 'd'})
  386. self.assertEqual(
  387. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  388. )
  389. self.assertEqual(
  390. str(finder.criteria[0].__class__)[-12:-2], 'TypeOption'
  391. )
  392. finder = salt.utils.find.Finder({'owner': 'root'})
  393. self.assertEqual(
  394. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  395. )
  396. self.assertEqual(
  397. str(finder.criteria[0].__class__)[-13:-2], 'OwnerOption'
  398. )
  399. if sys.platform.startswith(('darwin', 'freebsd', 'openbsd')):
  400. group_name = 'wheel'
  401. else:
  402. group_name = 'root'
  403. finder = salt.utils.find.Finder({'group': group_name})
  404. self.assertEqual(
  405. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  406. )
  407. self.assertEqual(
  408. str(finder.criteria[0].__class__)[-13:-2], 'GroupOption'
  409. )
  410. finder = salt.utils.find.Finder({'size': '+1G'})
  411. self.assertEqual(
  412. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  413. )
  414. self.assertEqual(
  415. str(finder.criteria[0].__class__)[-12:-2], 'SizeOption'
  416. )
  417. finder = salt.utils.find.Finder({'mtime': '1d'})
  418. self.assertEqual(
  419. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  420. )
  421. self.assertEqual(
  422. str(finder.criteria[0].__class__)[-13:-2], 'MtimeOption'
  423. )
  424. finder = salt.utils.find.Finder({'grep': 'foo'})
  425. self.assertEqual(
  426. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  427. )
  428. self.assertEqual(
  429. str(finder.criteria[0].__class__)[-12:-2], 'GrepOption'
  430. )
  431. finder = salt.utils.find.Finder({'print': 'name'})
  432. self.assertEqual(
  433. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  434. )
  435. self.assertEqual(finder.criteria, [])
  436. def test_find(self):
  437. hello_file = os.path.join(self.tmpdir, 'hello.txt')
  438. fd = salt.utils.fopen(hello_file, 'w')
  439. fd.write("foo")
  440. fd.close()
  441. finder = salt.utils.find.Finder({'name': 'test_name'})
  442. self.assertEqual(list(finder.find('')), [])
  443. finder = salt.utils.find.Finder({'name': 'hello.txt'})
  444. self.assertEqual(list(finder.find(self.tmpdir)), [hello_file])
  445. finder = salt.utils.find.Finder({'type': 'f', 'print': 'path'})
  446. self.assertEqual(list(finder.find(self.tmpdir)),
  447. [os.path.join(self.tmpdir, 'hello.txt')])
  448. finder = salt.utils.find.Finder({'size': '+1G', 'print': 'path'})
  449. self.assertEqual(list(finder.find(self.tmpdir)), [])
  450. finder = salt.utils.find.Finder(
  451. {'name': 'hello.txt', 'print': 'path name'}
  452. )
  453. self.assertEqual(
  454. list(finder.find(self.tmpdir)), [[hello_file, 'hello.txt']]
  455. )
  456. if __name__ == '__main__':
  457. from integration import run_tests
  458. run_tests(
  459. [TestFind, TestGrepOption, TestPrintOption, TestFinder],
  460. needs_daemon=False
  461. )