PageRenderTime 54ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/unit/utils/find_test.py

https://github.com/babilen5/salt
Python | 594 lines | 581 code | 8 blank | 5 comment | 0 complexity | decd5eb5eaa6199e9b491a77ae3418ba 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. with salt.utils.fopen(hello_file, 'w') as fp_:
  237. fp_.write('foo')
  238. option = salt.utils.find.GrepOption('grep', 'foo')
  239. self.assertEqual(
  240. option.match(self.tmpdir, 'hello.txt', os.stat(hello_file)),
  241. hello_file
  242. )
  243. option = salt.utils.find.GrepOption('grep', 'bar')
  244. self.assertEqual(
  245. option.match(self.tmpdir, 'hello.txt', os.stat(hello_file)),
  246. None
  247. )
  248. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  249. def test_grep_option_match_dev_null(self):
  250. option = salt.utils.find.GrepOption('grep', 'foo')
  251. self.assertEqual(
  252. option.match('dev', 'null', os.stat('/dev/null')), None
  253. )
  254. class TestPrintOption(TestCase):
  255. def setUp(self):
  256. super(TestPrintOption, self).setUp()
  257. self.tmpdir = tempfile.mkdtemp(dir=integration.SYS_TMP_DIR)
  258. def tearDown(self):
  259. shutil.rmtree(self.tmpdir)
  260. super(TestPrintOption, self).tearDown()
  261. def test_print_option_defaults(self):
  262. option = salt.utils.find.PrintOption('print', '')
  263. self.assertEqual(option.need_stat, False)
  264. self.assertEqual(option.print_title, False)
  265. self.assertEqual(option.fmt, ['path'])
  266. def test_print_option_requires(self):
  267. option = salt.utils.find.PrintOption('print', '')
  268. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  269. option = salt.utils.find.PrintOption('print', 'name')
  270. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  271. option = salt.utils.find.PrintOption('print', 'path')
  272. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  273. option = salt.utils.find.PrintOption('print', 'name,path')
  274. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_PATH)
  275. option = salt.utils.find.PrintOption('print', 'user')
  276. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  277. option = salt.utils.find.PrintOption('print', 'path user')
  278. self.assertEqual(option.requires(), salt.utils.find._REQUIRES_STAT)
  279. def test_print_option_execute(self):
  280. hello_file = os.path.join(self.tmpdir, 'hello.txt')
  281. with salt.utils.fopen(hello_file, 'w') as fp_:
  282. fp_.write('foo')
  283. option = salt.utils.find.PrintOption('print', '')
  284. self.assertEqual(option.execute('', [0] * 9), '')
  285. option = salt.utils.find.PrintOption('print', 'path')
  286. self.assertEqual(option.execute('test_name', [0] * 9), 'test_name')
  287. option = salt.utils.find.PrintOption('print', 'name')
  288. self.assertEqual(option.execute('test_name', [0] * 9), 'test_name')
  289. option = salt.utils.find.PrintOption('print', 'size')
  290. self.assertEqual(option.execute(hello_file, os.stat(hello_file)), 3)
  291. option = salt.utils.find.PrintOption('print', 'type')
  292. self.assertEqual(option.execute(hello_file, os.stat(hello_file)), 'f')
  293. option = salt.utils.find.PrintOption('print', 'mode')
  294. self.assertEqual(option.execute(hello_file, range(10)), 0)
  295. option = salt.utils.find.PrintOption('print', 'mtime')
  296. self.assertEqual(option.execute(hello_file, range(10)), 8)
  297. option = salt.utils.find.PrintOption('print', 'md5')
  298. self.assertEqual(
  299. option.execute(hello_file, os.stat(hello_file)),
  300. 'acbd18db4cc2f85cedef654fccc4a4d8'
  301. )
  302. option = salt.utils.find.PrintOption('print', 'path name')
  303. self.assertEqual(
  304. option.execute('test_name', [0] * 9), ['test_name', 'test_name']
  305. )
  306. option = salt.utils.find.PrintOption('print', 'size name')
  307. self.assertEqual(
  308. option.execute('test_name', [0] * 9), [0, 'test_name']
  309. )
  310. @skipIf(sys.platform.startswith('Windows'), "no /dev/null on windows")
  311. def test_print_user(self):
  312. option = salt.utils.find.PrintOption('print', 'user')
  313. self.assertEqual(option.execute('', [0] * 10), 'root')
  314. option = salt.utils.find.PrintOption('print', 'user')
  315. self.assertEqual(option.execute('', [2 ** 31] * 10), 2 ** 31)
  316. @skipIf(sys.platform.startswith('Windows'), "no /dev/null on windows")
  317. def test_print_group(self):
  318. option = salt.utils.find.PrintOption('print', 'group')
  319. if sys.platform.startswith(('darwin', 'freebsd', 'openbsd')):
  320. group_name = 'wheel'
  321. else:
  322. group_name = 'root'
  323. self.assertEqual(option.execute('', [0] * 10), group_name)
  324. # This seems to be not working in Ubuntu 12.04 32 bit
  325. #option = salt.utils.find.PrintOption('print', 'group')
  326. #self.assertEqual(option.execute('', [2 ** 31] * 10), 2 ** 31)
  327. @skipIf(sys.platform.startswith('Windows'), "no /dev/null on windows")
  328. def test_print_md5(self):
  329. option = salt.utils.find.PrintOption('print', 'md5')
  330. self.assertEqual(option.execute('/dev/null', os.stat('/dev/null')), '')
  331. class TestFinder(TestCase):
  332. def setUp(self):
  333. super(TestFinder, self).setUp()
  334. self.tmpdir = tempfile.mkdtemp(dir=integration.SYS_TMP_DIR)
  335. def tearDown(self):
  336. shutil.rmtree(self.tmpdir)
  337. super(TestFinder, self).tearDown()
  338. @skipIf(sys.platform.startswith('win'), 'No /dev/null on Windows')
  339. def test_init(self):
  340. finder = salt.utils.find.Finder({})
  341. self.assertEqual(
  342. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  343. )
  344. self.assertEqual(finder.criteria, [])
  345. finder = salt.utils.find.Finder({'_': None})
  346. self.assertEqual(
  347. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  348. )
  349. self.assertEqual(finder.criteria, [])
  350. self.assertRaises(ValueError, salt.utils.find.Finder, {'': None})
  351. self.assertRaises(ValueError, salt.utils.find.Finder, {'name': None})
  352. self.assertRaises(
  353. ValueError, salt.utils.find.Finder, {'nonexist': 'somevalue'}
  354. )
  355. finder = salt.utils.find.Finder({'name': 'test_name'})
  356. self.assertEqual(
  357. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  358. )
  359. self.assertEqual(
  360. str(finder.criteria[0].__class__)[-12:-2], 'NameOption'
  361. )
  362. finder = salt.utils.find.Finder({'iname': 'test_name'})
  363. self.assertEqual(
  364. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  365. )
  366. self.assertEqual(
  367. str(finder.criteria[0].__class__)[-13:-2], 'InameOption'
  368. )
  369. finder = salt.utils.find.Finder({'regex': r'.*\.txt'})
  370. self.assertEqual(
  371. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  372. )
  373. self.assertEqual(
  374. str(finder.criteria[0].__class__)[-13:-2], 'RegexOption'
  375. )
  376. finder = salt.utils.find.Finder({'iregex': r'.*\.txt'})
  377. self.assertEqual(
  378. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  379. )
  380. self.assertEqual(
  381. str(finder.criteria[0].__class__)[-14:-2], 'IregexOption'
  382. )
  383. finder = salt.utils.find.Finder({'type': 'd'})
  384. self.assertEqual(
  385. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  386. )
  387. self.assertEqual(
  388. str(finder.criteria[0].__class__)[-12:-2], 'TypeOption'
  389. )
  390. finder = salt.utils.find.Finder({'owner': 'root'})
  391. self.assertEqual(
  392. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  393. )
  394. self.assertEqual(
  395. str(finder.criteria[0].__class__)[-13:-2], 'OwnerOption'
  396. )
  397. if sys.platform.startswith(('darwin', 'freebsd', 'openbsd')):
  398. group_name = 'wheel'
  399. else:
  400. group_name = 'root'
  401. finder = salt.utils.find.Finder({'group': group_name})
  402. self.assertEqual(
  403. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  404. )
  405. self.assertEqual(
  406. str(finder.criteria[0].__class__)[-13:-2], 'GroupOption'
  407. )
  408. finder = salt.utils.find.Finder({'size': '+1G'})
  409. self.assertEqual(
  410. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  411. )
  412. self.assertEqual(
  413. str(finder.criteria[0].__class__)[-12:-2], 'SizeOption'
  414. )
  415. finder = salt.utils.find.Finder({'mtime': '1d'})
  416. self.assertEqual(
  417. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  418. )
  419. self.assertEqual(
  420. str(finder.criteria[0].__class__)[-13:-2], 'MtimeOption'
  421. )
  422. finder = salt.utils.find.Finder({'grep': 'foo'})
  423. self.assertEqual(
  424. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  425. )
  426. self.assertEqual(
  427. str(finder.criteria[0].__class__)[-12:-2], 'GrepOption'
  428. )
  429. finder = salt.utils.find.Finder({'print': 'name'})
  430. self.assertEqual(
  431. str(finder.actions[0].__class__)[-13:-2], 'PrintOption'
  432. )
  433. self.assertEqual(finder.criteria, [])
  434. def test_find(self):
  435. hello_file = os.path.join(self.tmpdir, 'hello.txt')
  436. with salt.utils.fopen(hello_file, 'w') as fp_:
  437. fp_.write('foo')
  438. finder = salt.utils.find.Finder({})
  439. self.assertEqual(list(finder.find(self.tmpdir)), [self.tmpdir, hello_file])
  440. finder = salt.utils.find.Finder({'mindepth': 1})
  441. self.assertEqual(list(finder.find(self.tmpdir)), [hello_file])
  442. finder = salt.utils.find.Finder({'maxdepth': 0})
  443. self.assertEqual(list(finder.find(self.tmpdir)), [self.tmpdir])
  444. finder = salt.utils.find.Finder({'name': 'hello.txt'})
  445. self.assertEqual(list(finder.find(self.tmpdir)), [hello_file])
  446. finder = salt.utils.find.Finder({'type': 'f', 'print': 'path'})
  447. self.assertEqual(list(finder.find(self.tmpdir)), [hello_file])
  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. finder = salt.utils.find.Finder({'name': 'test_name'})
  457. self.assertEqual(list(finder.find('')), [])
  458. if __name__ == '__main__':
  459. from integration import run_tests
  460. run_tests(
  461. [TestFind, TestGrepOption, TestPrintOption, TestFinder],
  462. needs_daemon=False
  463. )