]> Cypherpunks.ru repositories - goredo.git/commitdiff
default.do-s must not depend on themselves
authorSergey Matveev <stargrave@stargrave.org>
Mon, 8 Nov 2021 15:08:05 +0000 (18:08 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 8 Nov 2021 15:19:44 +0000 (18:19 +0300)
do.go
doc/news.texi
t/goredo-default.do.t [new file with mode: 0755]

diff --git a/do.go b/do.go
index 516b1438c28d5751d477f645c57c45aae47f0956..c4a569665b51f029aa9161d2cf03238fa6ce20e0 100644 (file)
--- 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")...,
                        ), ".")
                        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
                                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"
                        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
                        exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile))
                        if err != nil {
                                return "", 0, err
index f83bbc1925bb6ce7c413339466e3b1f0bad0332e..4f5ab5b437009779190e60a6f99812feeb676509 100644 (file)
@@ -1,6 +1,15 @@
 @node News
 @unnumbered News
 
 @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
 @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 (executable)
index 0000000..f178256
--- /dev/null
@@ -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