diff --git a/builder.py b/builder.py index 5c8b4ea..1a33270 100644 --- a/builder.py +++ b/builder.py @@ -1,4 +1,4 @@ -import sys, os, random, errno +import sys, os, random, errno, stat import vars, jwack, state from helpers import log, log_, debug2, err, unlink, close_on_exec @@ -122,7 +122,7 @@ class BuildJob: before_tmp = os.fstat(f.fileno()) after_tmp = _try_stat(tmpname) after_where = os.lseek(f.fileno(), 0, os.SEEK_CUR) - if after_t != before_t: + if after_t != before_t and not stat.S_ISDIR(after_t.st_mode): err('%r modified %r directly!\n' % (self.argv[2], t)) err('...you should update $3 (a temp file) instead of $1.\n') rv = 206 diff --git a/t/clean.do b/t/clean.do index 20f1ef3..27c473d 100644 --- a/t/clean.do +++ b/t/clean.do @@ -1,4 +1,4 @@ redo example/clean curse/clean deps/clean "space dir/clean" rm -f c c.c c.c.c c.c.c.b c.c.c.b.b d mode1 rm -f hello [by]ellow *.o *~ .*~ CC LD passfail - +rm -rf makedir \ No newline at end of file diff --git a/t/makedir.do b/t/makedir.do new file mode 100644 index 0000000..a110c2f --- /dev/null +++ b/t/makedir.do @@ -0,0 +1,2 @@ +[ -e "$1" ] && rmdir $1 +mkdir $1 diff --git a/t/test.do b/t/test.do index 9b94af4..898fd6c 100644 --- a/t/test.do +++ b/t/test.do @@ -1,4 +1,4 @@ redo-ifchange all ./hello >&2 redo deltest deltest2 test.args test2.args passfailtest \ - curse/test deps/test "space dir/test" modetest + curse/test deps/test "space dir/test" modetest makedir