示例#1
0
 def test_rename_dirs_wont_leak_above_root_dir(self):
   'Test that we only rename dirs starting at root_dir'
   tmp_dir = self._make_temp_content([
     temp_content('file', 'fruit/fruit/lib/fruit/kiwi.py', 'this is kiwi', 0o0644),
     temp_content('file', 'fruit/fruit/lib/fruit/lemon.py', 'this is lemon', 0o0644),
     temp_content('file', 'fruit/fruit/lib/fruit/constants.py', 'this is constants', 0o0644),
     temp_content('file', 'fruit/fruit/lib/fruit/constants2.py', 'this is constants2', 0o0644),
     temp_content('file', 'fruit/fruit/lib/fruity/constants2b.py', 'this is constants2', 0o0644),
     temp_content('file', 'fruit/fruit/tests/lib/fruit/test_kiwi.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'fruit/fruit/tests/lib/fruit/test_lemon.py', 'this is test lemon', 0o0644),
     temp_content('file', 'fruit/fruit/tests/lib/fruity/test_lemonb.py', 'this is test lemon', 0o0644),
   ])
   options = refactor_options(word_boundary = False)
   refactor_files.rename_dirs(path.join(tmp_dir, 'fruit'), 'fruit', 'cheese', options = options)
   self.assert_filename_list_equal( [
     'fruit',
     'fruit/cheese',
     'fruit/cheese/lib',
     'fruit/cheese/lib/cheese',
     'fruit/cheese/lib/cheese/constants.py',
     'fruit/cheese/lib/cheese/constants2.py',
     'fruit/cheese/lib/cheese/kiwi.py',
     'fruit/cheese/lib/cheese/lemon.py',
     'fruit/cheese/lib/cheesey',
     'fruit/cheese/lib/cheesey/constants2b.py',      
     'fruit/cheese/tests',
     'fruit/cheese/tests/lib',
     'fruit/cheese/tests/lib/cheese',
     'fruit/cheese/tests/lib/cheese/test_kiwi.py',
     'fruit/cheese/tests/lib/cheese/test_lemon.py',
     'fruit/cheese/tests/lib/cheesey',
     'fruit/cheese/tests/lib/cheesey/test_lemonb.py',
   ], file_find.find(tmp_dir, file_type = file_find.ANY) )
示例#2
0
 def test_rename_dirs_one_file(self):
   tmp_dir = self._make_temp_content([
     temp_content('file', 'kiwi/xdata2/kiwi_stuff2/kiwi2.txt', 'foo.txt', 0o0644),
   ])
   options = refactor_options(word_boundary = False)
   refactor_files.rename_dirs(tmp_dir, 'kiwi', 'chocolate', options = options)
   self.assert_filename_list_equal( [
     'chocolate',
     'chocolate/xdata2',
     'chocolate/xdata2/chocolate_stuff2',
     'chocolate/xdata2/chocolate_stuff2/kiwi2.txt',
   ], file_find.find(tmp_dir, file_type = file_find.ANY) )
示例#3
0
 def test_rename_files_with_word_boundary_and_underscore(self):
   tmp_dir = self._make_temp_content([
     temp_content('dir', 'empty_rootdir', None, 0o0755),
     temp_content('dir', 'lib/fruit/emptydir', None, 0o0755),
     temp_content('file', 'lib/fruit/constants.py', 'this is constants', 0o0644),
     temp_content('file', 'lib/fruit/constants2.py', 'this is constants2', 0o0644),
     temp_content('file', 'lib/fruit/kiwi.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/kiwifruit.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/kiwi_fruit.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/lemon.py', 'this is lemon', 0o0644),
     temp_content('file', 'lib/fruity/constants2b.py', 'this is constants2', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwi.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwifruit.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwi_fruit.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_lemon.py', 'this is test lemon', 0o0644),
     temp_content('file', 'tests/lib/fruity/test_lemonb.py', 'this is test lemon', 0o0644),
     temp_content('file', 'xdata/kiwi_stuff/kiwi.txt', 'foo.txt', 0o0644),
     temp_content('file', 'kiwi/xdata2/kiwi_stuff2/kiwi2.txt', 'foo.txt', 0o0644),
   ])
   options = refactor_options(word_boundary = True,
                              word_boundary_chars = word_boundary.CHARS_UNDERSCORE)
   refactor_files.rename_files(tmp_dir, 'kiwi', 'chocolate', options = options)
   self.assert_filename_list_equal( [
     'chocolate',
     'chocolate/xdata2',
     'chocolate/xdata2/chocolate_stuff2',
     'chocolate/xdata2/chocolate_stuff2/kiwi2.txt',
     'empty_rootdir',
     'lib',
     'lib/fruit',
     'lib/fruit/chocolate.py',
     'lib/fruit/chocolate_fruit.py',
     'lib/fruit/constants.py',
     'lib/fruit/constants2.py',
     'lib/fruit/emptydir',
     'lib/fruit/kiwifruit.py',
     'lib/fruit/lemon.py',
     'lib/fruity',
     'lib/fruity/constants2b.py',
     'tests',
     'tests/lib',
     'tests/lib/fruit',
     'tests/lib/fruit/test_chocolate.py',
     'tests/lib/fruit/test_chocolate_fruit.py',
     'tests/lib/fruit/test_kiwifruit.py',
     'tests/lib/fruit/test_lemon.py',
     'tests/lib/fruity',
     'tests/lib/fruity/test_lemonb.py',
     'xdata',
     'xdata/chocolate_stuff',
     'xdata/chocolate_stuff/chocolate.txt',
   ], file_find.find(tmp_dir, file_type = file_find.ANY) )
示例#4
0
 def test_rename_dirs_with_word_boundary(self):
   tmp_dir = self._make_temp_content([
     temp_content('dir', 'empty_rootdir', None, 0o0755),
     temp_content('dir', 'lib/fruit/emptydir', None, 0o0755),
     temp_content('file', 'lib/fruit/constants.py', 'this is constants', 0o0644),
     temp_content('file', 'lib/fruit/constants2.py', 'this is constants2', 0o0644),
     temp_content('file', 'lib/fruit/kiwi.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/kiwifruit.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/kiwi_fruit.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/lemon.py', 'this is lemon', 0o0644),
     temp_content('file', 'lib/fruity/constants2b.py', 'this is constants2', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwi.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwifruit.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwi_fruit.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_lemon.py', 'this is test lemon', 0o0644),
     temp_content('file', 'tests/lib/fruity/test_lemonb.py', 'this is test lemon', 0o0644),
     temp_content('file', 'xdata/kiwi_stuff/kiwi.txt', 'foo.txt', 0o0644),
     temp_content('file', 'kiwi/xdata2/kiwi_stuff2/kiwi2.txt', 'foo.txt', 0o0644),
   ])
   options = refactor_options(word_boundary = True)
   refactor_files.rename_dirs(tmp_dir, 'fruit', 'cheese', options = options)
   self.assert_filename_list_equal( [
     'empty_rootdir',
     'kiwi',
     'kiwi/xdata2',
     'kiwi/xdata2/kiwi_stuff2',
     'kiwi/xdata2/kiwi_stuff2/kiwi2.txt',
     'lib',
     'lib/cheese',
     'lib/cheese/constants.py',
     'lib/cheese/constants2.py',
     'lib/cheese/emptydir',
     'lib/cheese/kiwi.py',
     'lib/cheese/kiwi_fruit.py',
     'lib/cheese/kiwifruit.py',
     'lib/cheese/lemon.py',
     'lib/fruity',
     'lib/fruity/constants2b.py',
     'tests',
     'tests/lib',
     'tests/lib/cheese',
     'tests/lib/cheese/test_kiwi.py',
     'tests/lib/cheese/test_kiwi_fruit.py',
     'tests/lib/cheese/test_kiwifruit.py',
     'tests/lib/cheese/test_lemon.py',
     'tests/lib/fruity',
     'tests/lib/fruity/test_lemonb.py',
     'xdata',
     'xdata/kiwi_stuff',
     'xdata/kiwi_stuff/kiwi.txt',                                     
   ], file_find.find(tmp_dir, file_type = file_find.ANY) )
示例#5
0
 def _test_grep(self, content, text, node_type, word_boundary=False):
     tmp_dir = self._make_temp_content(content)
     options = refactor_options(word_boundary=word_boundary)
     real_result = refactor_ast.grep([tmp_dir],
                                     text,
                                     node_type,
                                     options=options)
     result = []
     for item in real_result:
         filename = file_util.remove_head(item.filename, tmp_dir + os.sep)
         t = (filename, item.snippet, item.snippet_lines)
         result.append(t)
     json = json_util.to_json(result, indent=2)
     return self._test_grep_result(tmp_dir, real_result, json)
示例#6
0
 def test_match_files_with_word_boundary(self):
   tmp_dir = self._make_temp_content([
     temp_content('file', 'lib/fruit/kiwi.py', 'this is kiwi', 0o0644),
     temp_content('file', 'lib/fruit/lemon.py', 'this is lemon', 0o0644),
     temp_content('file', 'lib/fruit/constants.py', 'this is constants', 0o0644),
     temp_content('file', 'lib/fruit/constants2.py', 'this is constants2', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_kiwi.py', 'this is test kiwi', 0o0644),
     temp_content('file', 'tests/lib/fruit/test_lemon.py', 'this is test lemon', 0o0644),
   ])
   options = refactor_options(word_boundary = True)
   self.assert_filename_list_equal( [
     f'{tmp_dir}/lib/fruit/kiwi.py',
     f'{tmp_dir}/tests/lib/fruit/test_kiwi.py',
   ], refactor_files.match_files( file_find.find(tmp_dir, relative = False), 'kiwi', options = options) )
示例#7
0
    def test_function_add_arg(self):
        tmp_dir = self._make_temp_content([
            temp_content('file', 'fruit/lemon.py', f'{self._LEMON_PY}',
                         0o0644),
            temp_content('file', 'fruit/kiwi.py', f'{self._KIWI_PY}', 0o0644),
            temp_content('file', 'orange.py', f'{self._ORANGE_PY}', 0o0644),
        ])
        options = refactor_options(word_boundary=True)
        refactor_ast.function_add_arg([tmp_dir],
                                      'foo',
                                      'added_arg',
                                      options=options)
        self.assert_text_file_equal_fuzzy(
            '''\
from .kiwi import kiwi
class lemon(kiwi):
  def foo(self, added_arg):
    return 1

  def bar(self):
    return 2
''', f'{tmp_dir}/fruit/lemon.py')

        self.assert_text_file_equal_fuzzy(
            '''\
class kiwi(object):
  def foo(self, added_arg):
    return 1

  def bar(self):
    return 2
''', f'{tmp_dir}/fruit/kiwi.py')

        self.assert_text_file_equal_fuzzy(
            '''\
class orange(kiwi):
  def foo(self, added_arg):
    return 1

  def bar(self):
    return 2

  def foo2(self):
    return 3

  def foo_prime(self):
    return 3

  def foo_test(self, *kargs, **kwargs):
    return 3

  def foo_test2(self, a, b, sweet = True):
    return 3

  def foo_test3(self, *kargs):
    return 3

  def foo_test4(self, **kwargs):
    return 3

  def foo_test5(self, a, b,
                c, d):
    return 3
''', f'{tmp_dir}/orange.py')
示例#8
0
    def test_rename(self):
        r = self._make_temp_content([
            temp_content('dir', 'empty_rootdir', None, 0o0755),
            temp_content('dir', 'lib/fruit/emptydir', None, 0o0755),
            temp_content('file', 'lib/fruit/constants.py', self.CONSTANTS_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/constants2.py', self.CONSTANTS2_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/kiwi.py', self.KIWI_PY, 0o0644),
            temp_content('file', 'lib/fruit/kiwifruit.py', self.KIWI_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/kiwi_fruit.py', self.KIWI_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/lemon.py', self.LEMON_PY, 0o0644),
            temp_content('file', 'lib/fruity/constants2b.py',
                         self.CONSTANTS2_PY, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_kiwi.py',
                         self.TEST_KIWI_py, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_kiwifruit.py',
                         self.TEST_KIWI_py, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_kiwi_fruit.py',
                         self.TEST_KIWI_py, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_lemon.py',
                         self.TEST_LEMON_py, 0o0644),
            temp_content('file', 'tests/lib/fruity/test_lemonb.py',
                         self.TEST_LEMON_py, 0o0644),
            temp_content('file', 'xdata/kiwi_stuff/kiwi.png',
                         unit_test_media.PNG_SMALLEST_POSSIBLE, 0o0644),
            temp_content('file', 'kiwi/xdata2/kiwi_stuff2/kiwi2.png',
                         unit_test_media.PNG_SMALLEST_POSSIBLE, 0o0644),
        ])
        args = [
            f'{r.root}/lib',
            f'{r.root}/tests',
            f'{r.root}/xdata',
            f'{r.root}/kiwi',
        ]
        options = refactor_options(try_git=True, word_boundary=False)
        refactor_project.rename(args, 'fruit', 'cheese', options=options)
        self.assert_string_equal_fuzzy(
            '''\
R lib/fruit/constants.py -> lib/cheese/constants.py
R lib/fruit/constants2.py -> lib/cheese/constants2.py
R lib/fruit/kiwi.py -> lib/cheese/kiwi.py
R lib/fruit/kiwi_fruit.py -> lib/cheese/kiwi_cheese.py
R lib/fruit/kiwifruit.py -> lib/cheese/kiwicheese.py
R lib/fruit/lemon.py -> lib/cheese/lemon.py
R lib/fruity/constants2b.py -> lib/cheesey/constants2b.py
R tests/lib/fruit/test_kiwi.py -> tests/lib/cheese/test_kiwi.py
R tests/lib/fruit/test_kiwi_fruit.py -> tests/lib/cheese/test_kiwi_cheese.py
R tests/lib/fruit/test_kiwifruit.py -> tests/lib/cheese/test_kiwicheese.py
R tests/lib/fruit/test_lemon.py -> tests/lib/cheese/test_lemon.py
R tests/lib/fruity/test_lemonb.py -> tests/lib/cheesey/test_lemonb.py
''', r.status_as_string('.'))
        self.assert_string_equal_fuzzy(
            '''\
empty_rootdir
kiwi
kiwi/xdata2
kiwi/xdata2/kiwi_stuff2
kiwi/xdata2/kiwi_stuff2/kiwi2.png
lib
lib/cheese
lib/cheese/constants.py
lib/cheese/constants2.py
lib/cheese/kiwi.py
lib/cheese/kiwi_cheese.py
lib/cheese/kiwicheese.py
lib/cheese/lemon.py
lib/cheesey
lib/cheesey/constants2b.py
lib/fruit
lib/fruit/emptydir
tests
tests/lib
tests/lib/cheese
tests/lib/cheese/test_kiwi.py
tests/lib/cheese/test_kiwi_cheese.py
tests/lib/cheese/test_kiwicheese.py
tests/lib/cheese/test_lemon.py
tests/lib/cheesey
tests/lib/cheesey/test_lemonb.py
xdata
xdata/kiwi_stuff
xdata/kiwi_stuff/kiwi.png
''', r.find_all_files_as_string(file_type=file_find.ANY))
示例#9
0
    def test_copy(self):
        r = self._make_temp_content([
            temp_content('dir', 'empty_rootdir', None, 0o0755),
            temp_content('dir', 'lib/fruit/emptydir', None, 0o0755),
            temp_content('file', 'lib/fruit/constants.py', self.CONSTANTS_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/constants2.py', self.CONSTANTS2_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/kiwi.py', self.KIWI_PY, 0o0644),
            temp_content('file', 'lib/fruit/kiwifruit.py', self.KIWI_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/kiwi_fruit.py', self.KIWI_PY,
                         0o0644),
            temp_content('file', 'lib/fruit/lemon.py', self.LEMON_PY, 0o0644),
            temp_content('file', 'lib/fruity/constants2b.py',
                         self.CONSTANTS2_PY, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_kiwi.py',
                         self.TEST_KIWI_py, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_kiwifruit.py',
                         self.TEST_KIWI_py, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_kiwi_fruit.py',
                         self.TEST_KIWI_py, 0o0644),
            temp_content('file', 'tests/lib/fruit/test_lemon.py',
                         self.TEST_LEMON_py, 0o0644),
            temp_content('file', 'tests/lib/fruity/test_lemonb.py',
                         self.TEST_LEMON_py, 0o0644),
            temp_content('file', 'xdata/kiwi_stuff/kiwi.png',
                         unit_test_media.PNG_SMALLEST_POSSIBLE, 0o0644),
            temp_content('file', 'kiwi/xdata2/kiwi_stuff2/kiwi2.png',
                         unit_test_media.PNG_SMALLEST_POSSIBLE, 0o0644),
        ])
        args = [
            f'{r.root}/lib',
            f'{r.root}/tests',
            f'{r.root}/xdata',
            f'{r.root}/kiwi',
        ]
        options = refactor_options(try_git=True, word_boundary=False)
        refactor_project.copy(args, 'kiwi', 'cheese', False, options=options)
        self.assertEqual([
            ('A', 'kiwi/xdata2/kiwi_stuff2/cheese2.png', None),
            ('AM', 'lib/fruit/cheese.py', None),
            ('AM', 'lib/fruit/cheese_fruit.py', None),
            ('AM', 'lib/fruit/cheesefruit.py', None),
            ('AM', 'tests/lib/fruit/test_cheese.py', None),
            ('AM', 'tests/lib/fruit/test_cheese_fruit.py', None),
            ('AM', 'tests/lib/fruit/test_cheesefruit.py', None),
            ('A', 'xdata/kiwi_stuff/cheese.png', None),
        ], r.status('.'))
        self.assert_filename_list_equal([
            'empty_rootdir',
            'kiwi',
            'kiwi/xdata2',
            'kiwi/xdata2/kiwi_stuff2',
            'kiwi/xdata2/kiwi_stuff2/cheese2.png',
            'kiwi/xdata2/kiwi_stuff2/kiwi2.png',
            'lib',
            'lib/fruit',
            'lib/fruit/cheese.py',
            'lib/fruit/cheese_fruit.py',
            'lib/fruit/cheesefruit.py',
            'lib/fruit/constants.py',
            'lib/fruit/constants2.py',
            'lib/fruit/emptydir',
            'lib/fruit/kiwi.py',
            'lib/fruit/kiwi_fruit.py',
            'lib/fruit/kiwifruit.py',
            'lib/fruit/lemon.py',
            'lib/fruity',
            'lib/fruity/constants2b.py',
            'tests',
            'tests/lib',
            'tests/lib/fruit',
            'tests/lib/fruit/test_cheese.py',
            'tests/lib/fruit/test_cheese_fruit.py',
            'tests/lib/fruit/test_cheesefruit.py',
            'tests/lib/fruit/test_kiwi.py',
            'tests/lib/fruit/test_kiwi_fruit.py',
            'tests/lib/fruit/test_kiwifruit.py',
            'tests/lib/fruit/test_lemon.py',
            'tests/lib/fruity',
            'tests/lib/fruity/test_lemonb.py',
            'xdata',
            'xdata/kiwi_stuff',
            'xdata/kiwi_stuff/cheese.png',
            'xdata/kiwi_stuff/kiwi.png',
        ], r.find_all_files(file_type=file_find.ANY))

        self.assert_text_file_equal_fuzzy(self.KIWI_PY,
                                          r.file_path('lib/fruit/kiwi.py'))
        self.assert_text_file_equal_fuzzy(
            '''\
class cheese(object):
  def __init__(self, x):
    self._x = x

  @property
  def x(self):
    return self._x

  @classmethod
  def make_cheese(clazz, x):
    return cheese(x)
''', r.file_path('lib/fruit/cheese.py'))
示例#10
0
  def test_copy_files_with_dirs(self):
    tmp_dir = self._make_temp_content([
      temp_content('dir', 'empty_rootdir', None, 0o0755),
      temp_content('dir', 'lib/fruit/emptydir', None, 0o0755),
      temp_content('file', 'lib/fruit/constants.py', 'this is constants', 0o0644),
      temp_content('file', 'lib/fruit/constants2.py', 'this is constants2', 0o0644),
      temp_content('file', 'lib/fruit/kiwi.py', 'this is kiwi', 0o0644),
      temp_content('file', 'lib/fruit/kiwifruit.py', 'this is kiwi', 0o0644),
      temp_content('file', 'lib/fruit/kiwi_fruit.py', 'this is kiwi', 0o0644),
      temp_content('file', 'lib/fruit/lemon.py', 'this is lemon', 0o0644),
      temp_content('file', 'lib/fruity/constants2b.py', 'this is constants2', 0o0644),
      temp_content('file', 'tests/lib/fruit/test_kiwi.py', 'this is test kiwi', 0o0644),
      temp_content('file', 'tests/lib/fruit/test_kiwifruit.py', 'this is test kiwi', 0o0644),
      temp_content('file', 'tests/lib/fruit/test_kiwi_fruit.py', 'this is test kiwi', 0o0644),
      temp_content('file', 'tests/lib/fruit/test_lemon.py', 'this is test lemon', 0o0644),
      temp_content('file', 'tests/lib/fruity/test_lemonb.py', 'this is test lemon', 0o0644),
      temp_content('file', 'xdata/kiwi_stuff/kiwi.txt', 'foo.txt', 0o0644),
      temp_content('file', 'kiwi/xdata2/kiwi_stuff2/kiwi2.txt', 'foo.txt', 0o0644),
    ])
    options = refactor_options(word_boundary = False)
    items = refactor_files.copy_files(tmp_dir, 'fruit', 'cheese', True, options = options)
    '''
    self.assert_filename_list_equal( [
      f'{tmp_dir}/kiwi/xdata2/kiwi_stuff2/kiwi2.txt',
      f'{tmp_dir}/lib/fruit/kiwi.py',
      f'{tmp_dir}/lib/fruit/kiwi_fruit.py',
      f'{tmp_dir}/lib/fruit/kiwifruit.py',
      f'{tmp_dir}/tests/lib/fruit/test_kiwi.py',
      f'{tmp_dir}/tests/lib/fruit/test_kiwi_fruit.py',
      f'{tmp_dir}/tests/lib/fruit/test_kiwifruit.py',
      f'{tmp_dir}/xdata/kiwi_stuff/kiwi.txt',
    ], sorted([ item.src for item in items ]) )
    self.assert_filename_list_equal( [
      f'{tmp_dir}/kiwi/xdata2/kiwi_stuff2/chocolate2.txt',
      f'{tmp_dir}/lib/fruit/chocolate.py',
      f'{tmp_dir}/lib/fruit/chocolate_fruit.py',
      f'{tmp_dir}/lib/fruit/chocolatefruit.py',
      f'{tmp_dir}/tests/lib/fruit/test_chocolate.py',
      f'{tmp_dir}/tests/lib/fruit/test_chocolate_fruit.py',
      f'{tmp_dir}/tests/lib/fruit/test_chocolatefruit.py',
      f'{tmp_dir}/xdata/kiwi_stuff/chocolate.txt',
    ], sorted([ item.dst for item in items ]) )
'''
    self.assert_filename_list_equal( [
      'empty_rootdir',
      'kiwi',
      'kiwi/xdata2',
      'kiwi/xdata2/kiwi_stuff2',
      'kiwi/xdata2/kiwi_stuff2/kiwi2.txt',
      'lib',
      'lib/cheese',
      'lib/cheese/constants.py',
      'lib/cheese/constants2.py',
      'lib/cheese/kiwi.py',
      'lib/cheese/kiwi_cheese.py',
      'lib/cheese/kiwicheese.py',
      'lib/cheese/lemon.py',
      'lib/cheesey',
      'lib/cheesey/constants2b.py',
      'lib/fruit',
      'lib/fruit/constants.py',
      'lib/fruit/constants2.py',
      'lib/fruit/emptydir',
      'lib/fruit/kiwi.py',
      'lib/fruit/kiwi_fruit.py',
      'lib/fruit/kiwifruit.py',
      'lib/fruit/lemon.py',
      'lib/fruity',
      'lib/fruity/constants2b.py',
      'tests',
      'tests/lib',
      'tests/lib/cheese',
      'tests/lib/cheese/test_kiwi.py',
      'tests/lib/cheese/test_kiwi_cheese.py',
      'tests/lib/cheese/test_kiwicheese.py',
      'tests/lib/cheese/test_lemon.py',
      'tests/lib/cheesey',
      'tests/lib/cheesey/test_lemonb.py',      
      'tests/lib/fruit',
      'tests/lib/fruit/test_kiwi.py',
      'tests/lib/fruit/test_kiwi_fruit.py',
      'tests/lib/fruit/test_kiwifruit.py',
      'tests/lib/fruit/test_lemon.py',
      'tests/lib/fruity',
      'tests/lib/fruity/test_lemonb.py',
      'xdata',
      'xdata/kiwi_stuff',
      'xdata/kiwi_stuff/kiwi.txt',
    ], file_find.find(tmp_dir, file_type = file_find.ANY) )