def METHOD_NAME(
        self,
        mock_subprocess,
        mock_sh_zip,
        mock_sh_cp,
        mock_sh_find,
        mock_walk,
        mock_makedirs,
        mock_chdir,
        mock_copyfile,
        mock_copystat,
):
    fake_compile_dir = '/fake/compile/dir'
    simulated_walk_result = [
        ["/fake_dir", ["__pycache__", "Lib"], ["README", "setup.py"]],
        ["/fake_dir/Lib", ["ctypes"], ["abc.pyc", "abc.py"]],
        ["/fake_dir/Lib/ctypes", [], ["util.pyc", "util.py"]],
    ]
    mock_walk.return_value = simulated_walk_result
    self.recipe.create_python_bundle(fake_compile_dir, self.arch)
    recipe_build_dir = self.recipe.get_build_dir(self.arch.arch)
    modules_build_dir = join(
        recipe_build_dir,
        'android-build',
        'build',
        'lib.linux{}-{}-{}'.format(
            '2' if self.recipe.version[0] == '2' else '',
            self.arch.command_prefix.split('-')[0],
            self.recipe.major_minor_version_string
        ))
    expected_sp_paths = [
        modules_build_dir,
        join(recipe_build_dir, 'Lib'),
        self.ctx.get_python_install_dir(self.arch.arch),
    ]
    for n, (sp_call, kw) in enumerate(mock_subprocess.call_args_list):
        self.assertEqual(sp_call[0][-1], expected_sp_paths[n])
    # we expect two calls to `walk_valid_filens`
    self.assertEqual(len(mock_walk.call_args_list), 2)
    mock_sh_zip.assert_called()
    mock_sh_cp.assert_called()
    mock_sh_find.assert_called()
    mock_makedirs.assert_called()
    mock_chdir.assert_called()
    mock_copyfile.assert_called()
    mock_copystat.assert_called()