Re: [PATCH 02/12] perf test: Shell - only run .sh shell files to skip other files

From: Daniel Thompson
Date: Thu Dec 16 2021 - 05:22:26 EST


On Wed, Dec 15, 2021 at 04:03:53PM +0000, carsten.haitzler@xxxxxxxxxxxx wrote:
> From: Carsten Haitzler <carsten.haitzler@xxxxxxx>
>
> You edit your scripts in the tests and end up with your usual shell
> backup files with ~ or .bak or something else at the end, but then your
> next perf test run wants to run the backups too. You might also have perf
> .data files in the directory or something else undesireable as well. You end
> up chasing which test is the one you edited and the backup and have to keep
> removing all the backup files, so automatically skip any files that are
> not plain *.sh scripts to limit the time wasted in chasing ghosts.
>
> Signed-off-by: Carsten Haitzler <carsten.haitzler@xxxxxxx>

Why require both executable *and* endswith('.sh')?


> ---
> tools/perf/tests/builtin-test.c | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
> index ece272b55587..849737ead9fd 100644
> --- a/tools/perf/tests/builtin-test.c
> +++ b/tools/perf/tests/builtin-test.c
> @@ -297,7 +297,20 @@ static const char *shell_test__description(char *description, size_t size,
> for (int __i = 0; __i < nr && (ent = entlist[__i]); __i++) \
> if (!is_directory(base, ent) && \
> is_executable_file(base, ent) && \
> - ent->d_name[0] != '.')
> + ent->d_name[0] != '.' && \
> + (shell_file_is_sh(ent->d_name) == 0))
> +
> +static int shell_file_is_sh(const char *file)
> +{
> + const char *ext;
> +
> + ext = strchr(file, '.');

Shouldn't this be strrchr()?


Daniel.