--- /dev/null
+exec >&2
+redo-ifchange \
+ file.x.y.z file.z file \
+ a/b/file.x.y.z a/b/file.y.z a/b/file.z a/b/file \
+ a/d/file.x.y.z a/d/file.y.z a/d/file.z a/d/file
+
+(cd a/b && redo-ifchange ../file.x.y.z ../file.y.z ../file.z ../file)
+
+check()
+{
+ if [ "$(cat $1)" != "$2" ]; then
+ echo "$1 should contain '$2'"
+ echo " ...got '$(cat $1)'"
+ exit 44
+ fi
+}
+
+check file.x.y.z "root file.x.y.z ."
+check file.z "root file.z ."
+check file "root file ."
+
+check a/file.x.y.z "default.x.y.z file .x.y.z"
+check a/file.y.z "default.z file.y .z"
+check a/file.z "default.z file .z"
+check a/file "root a/file a"
+
+check a/b/file.x.y.z "file file.x.y.z"
+check a/b/file.y.z "default.y.z file .y.z"
+check a/b/file.z "default.z b/file .z"
+check a/b/file "root a/b/file a/b"
+
+check a/d/file.x.y.z "default file.x.y.z"
+check a/d/file.y.z "default file.y.z"
+check a/d/file.z "default file.z"
+check a/d/file "default file"
+