diff options
-rw-r--r-- | src/build.c | 3 | ||||
-rwxr-xr-x | tests/t0010-check_args.t | 11 |
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 |