All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Aníbal Limón" <limon.anibal@gmail.com>
To: yocto@yoctoproject.org
Cc: joshua.g.lock@intel.com, "Aníbal Limón" <anibal.limon@linaro.org>
Subject: [ptest-runner][PATCHv2 2/3] Add support to avoid load/run twice a run_ptest script
Date: Thu,  7 Dec 2017 17:42:45 -0600	[thread overview]
Message-ID: <20171207234246.6364-2-limon.anibal@gmail.com> (raw)
In-Reply-To: <20171207234246.6364-1-limon.anibal@gmail.com>

From: Aníbal Limón <anibal.limon@linaro.org>

In some ptest packages exists symlink in the ptest directory causing
to load/run twice the same ptest,

For example in perl5:

/usr/lib/perl -> /usr/lib/perl5

Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
---
 ptest_list.c       | 40 ++++++++++++++++++++++++++++++++++++++++
 ptest_list.h       |  3 +++
 tests/data/python3 |  1 +
 tests/utils.c      |  1 +
 utils.c            |  6 ++++++
 5 files changed, 51 insertions(+)
 create mode 120000 tests/data/python3

diff --git a/ptest_list.c b/ptest_list.c
index 2e1aa30..3e393d5 100644
--- a/ptest_list.c
+++ b/ptest_list.c
@@ -110,6 +110,46 @@ ptest_list_search(struct ptest_list *head, char *ptest)
 	return q;
 }
 
+
+struct ptest_list *
+ptest_list_search_by_file(struct ptest_list *head, char *run_ptest, struct stat st_buf)
+{
+	struct ptest_list *q = NULL;
+	struct ptest_list *p;
+	struct stat st_buf_p;
+
+	VALIDATE_PTR_RNULL(head);
+	VALIDATE_PTR_RNULL(run_ptest);
+
+	for (p = head; p != NULL; p = p->next) {
+		if (p->ptest == NULL) 
+			continue;
+
+		if (stat(p->run_ptest, &st_buf_p) == -1)
+			continue;
+
+		if (strcmp(p->run_ptest, run_ptest) == 0) {
+			q = p;
+			break;
+		}
+
+		/* *
+		 * In some ptest packages exists symlink in the ptest directory
+		 * causing to load/run twice the same ptest, 
+		 *
+		 * For example in perl5:
+		 * /usr/lib/perl -> /usr/lib/perl5
+		 * */
+		if (st_buf.st_dev == st_buf_p.st_dev &&
+		    st_buf.st_ino == st_buf_p.st_ino) {
+			q = p;
+			break;
+		}
+	}
+
+	return q;
+}
+
 struct ptest_list *
 ptest_list_add(struct ptest_list *head, char *ptest, char *run_ptest)
 {
diff --git a/ptest_list.h b/ptest_list.h
index 8b39485..03d7539 100644
--- a/ptest_list.h
+++ b/ptest_list.h
@@ -28,6 +28,8 @@
 #define PTEST_LIST_ITERATE_START(head, p) for (p = head->next; p != NULL; p = p->next) { 
 #define PTEST_LIST_ITERATE_END }
 
+#include <sys/stat.h>
+
 struct ptest_list {
 	char *ptest;
 	char *run_ptest;
@@ -42,6 +44,7 @@ extern int ptest_list_free_all(struct ptest_list *);
 
 extern int ptest_list_length(struct ptest_list *);
 extern struct ptest_list *ptest_list_search(struct ptest_list *, char *);
+extern struct ptest_list *ptest_list_search_by_file(struct ptest_list *, char *, struct stat);
 extern struct ptest_list *ptest_list_add(struct ptest_list *, char *, char *);
 extern struct ptest_list *ptest_list_remove(struct ptest_list *, char *, int);
 
diff --git a/tests/data/python3 b/tests/data/python3
new file mode 120000
index 0000000..d8654aa
--- /dev/null
+++ b/tests/data/python3
@@ -0,0 +1 @@
+python
\ No newline at end of file
diff --git a/tests/utils.c b/tests/utils.c
index ecf3e8a..cf09379 100644
--- a/tests/utils.c
+++ b/tests/utils.c
@@ -48,6 +48,7 @@ static int ptests_found_length = 6;
 static char *ptests_not_found[] = {
 	"busybox",
 	"perl",
+	"python3",
 	NULL,
 };
 
diff --git a/utils.c b/utils.c
index 933eced..ed2eff7 100644
--- a/utils.c
+++ b/utils.c
@@ -143,6 +143,12 @@ get_available_ptests(const char *dir)
 				continue;
 			}
 
+			if (ptest_list_search_by_file(head, run_ptest, st_buf)) {
+				free(run_ptest);
+				free(d_name);
+				continue;
+			}
+
 			struct ptest_list *p = ptest_list_add(head,
 				d_name, run_ptest);
 			CHECK_ALLOCATION(p, sizeof(struct ptest_list *), 0);
-- 
2.11.0



  reply	other threads:[~2017-12-07 23:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-07 23:42 [ptest-runner][PATCHv2 1/3] Makefile: libcheck now requires to link subunit Aníbal Limón
2017-12-07 23:42 ` Aníbal Limón [this message]
2017-12-07 23:45   ` [ptest-runner][PATCHv2 2/3] Add support to avoid load/run twice a run_ptest script Anibal Limón
2017-12-07 23:42 ` [ptest-runner][PATCHv2 3/3] README.md: Update to my current email Aníbal Limón

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171207234246.6364-2-limon.anibal@gmail.com \
    --to=limon.anibal@gmail.com \
    --cc=anibal.limon@linaro.org \
    --cc=joshua.g.lock@intel.com \
    --cc=yocto@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.