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

From: Carsten Haitzler
Date: Thu Dec 16 2021 - 14:45:46 EST




On 12/16/21 10:22, Daniel Thompson wrote:
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')?

Paranoia. :) Making sure we really only run things that are meant to be run and avoid other junk/tmp/whatever files.

---
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()?

Oh indeed probably should be. My bad. Nothing uses a dot inside the filename yet. I can fix that - will wait for the rest to come in before doing an update