aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/build.c3
-rwxr-xr-xtests/t0010-check_args.t11
2 files changed, 13 insertions, 1 deletions
diff --git a/src/build.c b/src/build.c
index 7bf426f..9702bad 100644
--- a/src/build.c
+++ b/src/build.c
@@ -50,6 +50,7 @@ static void free_do_attr(do_attr *thing);
static char **parse_shebang(char *target, char *doscript, char *temp_output);
static char **parsecmd(char *cmd, size_t *i, size_t keep_free);
static char *get_relpath(const char *target);
+static char *xrealpath(const char *path);
static char *get_dep_path(const char *target);
static void write_dep_header(dep_info *dep);
static int handle_ident(dep_info *dep, int ident);
@@ -105,7 +106,7 @@ static int build_target(dep_info *dep) {
free(dirc);
char **argv = parse_shebang(xbasename(dep->target),
- xbasename(doscripts->chosen), xbasename(temp_output));
+ xbasename(doscripts->chosen), xrealpath(temp_output));
/* set "REDO_PARENT_TARGET" */
if (setenv("REDO_PARENT_TARGET", dep->target, 1))
diff --git a/tests/t0010-check_args.t b/tests/t0010-check_args.t
index feae935..ca6d28f 100755
--- a/tests/t0010-check_args.t
+++ b/tests/t0010-check_args.t
@@ -16,8 +16,19 @@ cat > "d/check_args.ext1.ext2.do" <<'EOF'
[ "$3" != "check_args.ext1.ext2" ]
EOF
+cat > "absolute_paths.do" <<'EOF'
+#!/bin/sh -e
+cd /tmp
+echo "test" > $3
+EOF
+
test_expect_success "check arguments" "
redo d/check_args.ext1.ext2
"
+test_expect_success "\$3 should be absolute" "
+ redo absolute_paths &&
+ [ -e absolute_paths ]
+"
+
test_done