All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sandeep Patil <sspatil@google.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2 2/2] android: getcwd02: use temp dir from $TMPDIR if present
Date: Mon, 28 Aug 2017 09:40:43 -0700	[thread overview]
Message-ID: <20170828164043.93407-3-sspatil@google.com> (raw)
In-Reply-To: <20170828164043.93407-1-sspatil@google.com>

getcwd02 test are broken on an Android system as the device doesn't have
"/tmp", so make sure the test checks if a directory exists before using
it as a temporary directory. Look for an altternative path in 'TMPDIR'
environment variable and fallback to using that as the temporary
directory for the test if /tmp is not found.

Signed-off-by: Sandeep Patil <sspatil@google.com>
---
 testcases/kernel/syscalls/getcwd/getcwd02.c | 43 +++++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/syscalls/getcwd/getcwd02.c b/testcases/kernel/syscalls/getcwd/getcwd02.c
index 384157d42..cff2124b7 100644
--- a/testcases/kernel/syscalls/getcwd/getcwd02.c
+++ b/testcases/kernel/syscalls/getcwd/getcwd02.c
@@ -27,9 +27,12 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
 #include "tst_test.h"
 
-#define TMPDIR "/tmp"
+#define GETCWD_TMPDIR_PATH	"/tmp"
 
 static char exp_buf[PATH_MAX];
 static char buffer[PATH_MAX];
@@ -43,6 +46,38 @@ static struct t_case {
 	{NULL, PATH_MAX}
 };
 
+static int dir_exists(const char *dirpath)
+{
+	struct stat sb;
+
+	if (!stat(dirpath, &sb) && S_ISDIR(sb.st_mode))
+		return 1;
+
+	return 0;
+}
+
+static const char *get_tmpdir_path(void)
+{
+	char *tmpdir = GETCWD_TMPDIR_PATH;
+
+	if (dir_exists(tmpdir))
+		goto done;
+
+	/* fallback to $TMPDIR */
+	tmpdir = getenv("TMPDIR");
+	if (!tmpdir)
+		tst_brk(TBROK | TERRNO, "Failed to get $TMPDIR");
+
+	if (tmpdir[0] != '/')
+		tst_brk(TBROK, "$TMPDIR must be an absolute path");
+
+	if (!dir_exists(tmpdir))
+		tst_brk(TBROK | TERRNO, "TMPDIR '%s' doesn't exist", tmpdir);
+
+done:
+	return tmpdir;
+}
+
 static void verify_getcwd(unsigned int n)
 {
 	struct t_case *tc = &tcases[n];
@@ -71,9 +106,11 @@ end:
 
 static void setup(void)
 {
-	SAFE_CHDIR(TMPDIR);
+	const char *tmpdir = get_tmpdir_path();
+
+	SAFE_CHDIR(tmpdir);
 
-	if (!realpath(TMPDIR, exp_buf))
+	if (!realpath(tmpdir, exp_buf))
 		tst_brk(TBROK | TERRNO, "realpath() failed");
 
 	tst_res(TINFO, "Expected path '%s'", exp_buf);
-- 
2.14.1.342.g6490525c54-goog


  parent reply	other threads:[~2017-08-28 16:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28 16:40 [LTP] [PATCH v2 0/2] Fix getcwd0[12] tests for Android devices Sandeep Patil
2017-08-28 16:40 ` [LTP] [PATCH v2 1/2] getcwd01: Remove unnecessary usage of temporary directory Sandeep Patil
2017-08-29 11:21   ` Cyril Hrubis
2017-08-28 16:40 ` Sandeep Patil [this message]
2017-08-29 11:22   ` [LTP] [PATCH v2 2/2] android: getcwd02: use temp dir from $TMPDIR if present Cyril Hrubis

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=20170828164043.93407-3-sspatil@google.com \
    --to=sspatil@google.com \
    --cc=ltp@lists.linux.it \
    /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.