From bf96757828d2ae663f5f54147c0e229f74fc9357 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 8 Nov 2021 18:08:05 +0300 Subject: [PATCH] default.do-s must not depend on themselves --- do.go | 4 ++-- doc/news.texi | 9 +++++++++ t/goredo-default.do.t | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100755 t/goredo-default.do.t diff --git a/do.go b/do.go index 516b143..c4a5696 100644 --- a/do.go +++ b/do.go @@ -60,7 +60,7 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { doFile = strings.Join(append( []string{"default"}, append(exts, "do")..., ), ".") - if len(levels) > 0 || doFile != doFileOrig { + if len(levels) > 0 || (doFile != doFileOrig && doFile != tgt) { exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile)) if err != nil { return "", 0, err @@ -72,7 +72,7 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { exts = exts[1:] } doFile = "default.do" - if len(levels) > 0 || doFile != doFileOrig { + if len(levels) > 0 || (doFile != doFileOrig && doFile != tgt) { exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile)) if err != nil { return "", 0, err diff --git a/doc/news.texi b/doc/news.texi index f83bbc1..4f5ab5b 100644 --- a/doc/news.texi +++ b/doc/news.texi @@ -1,6 +1,15 @@ @node News @unnumbered News +@anchor{Release 1_19_0} +@section Release 1.19.0 +@itemize +@item + Skip target itself, when searching for corresponding @file{.do} + file. For example @file{default.do} must use @file{../default.do} + instead of the self. +@end itemize + @anchor{Release 1_18_0} @section Release 1.18.0 @itemize diff --git a/t/goredo-default.do.t b/t/goredo-default.do.t new file mode 100755 index 0000000..f178256 --- /dev/null +++ b/t/goredo-default.do.t @@ -0,0 +1,17 @@ +#!/bin/sh + +testname=`basename "$0"` +test_description="Building of default.do must not depend on itself" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export REDO_TOP_DIR="`pwd`" REDO_NO_PROGRESS=1 + +mkdir foo +echo echo echo ok > default.do +redo foo/default.do +test_expect_success "repeated" "redo foo/default.do" +test_expect_success "repeated again" "redo foo/default.do" +redo foo/bar +bar=`cat foo/bar` +test_expect_success "default is fine" '[ "$bar" = "ok" ]' + +test_done -- 2.44.0