summaryrefslogtreecommitdiffstats
path: root/tests/includeextra.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/includeextra.test')
-rw-r--r--tests/includeextra.test857
1 files changed, 857 insertions, 0 deletions
diff --git a/tests/includeextra.test b/tests/includeextra.test
new file mode 100644
index 0000000..33d9cc1
--- /dev/null
+++ b/tests/includeextra.test
@@ -0,0 +1,857 @@
+set -u
+. "$TESTSDIR"/test.inc
+
+# first create a fake package with logs and byhand files:
+mkdir documentation-9876AD
+cd documentation-9876AD
+mkdir debian
+cat > debian/rules <<'EOF'
+#!/usr/bin/make
+tmp = $(CURDIR)/debian/tmp
+binary-indep:
+ install -m 755 -d $(tmp)/DEBIAN $(tmp)/usr/share/doc/documentation
+ echo "I have told you so" > $(tmp)/usr/share/doc/documentation/NEWS
+ gzip -c9 debian/changelog > $(tmp)/usr/share/doc/documentation/changelog.gz
+ chown -R root.root $(tmp) && chmod -R go=rX $(tmp)
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+ echo "I forgot" >> ../manifesto.txt
+ echo "What?" >> ../history.txt
+ dpkg-distaddfile manifesto.txt byhand -
+ dpkg-distaddfile history.txt byhand -
+
+.PHONY: clean binary-arch binary-indep binary build build-indep buil-arch
+EOF
+chmod a+x debian/rules
+cat > debian/changelog <<EOF
+documentation (9876AD) test; urgency=low
+
+ * everything fixed
+
+ -- Sky.NET <nowhere@example.com> Sat, 15 Jan 2011 17:12:05 +2700
+EOF
+
+cat > debian/control <<EOF
+Source: documentation
+Section: doc
+Priority: standard
+Maintainer: Sky.NET <nowhere@example.com>
+Standards-Version: Aleph_17
+
+Package: documentation
+Architecture: all
+Description: documentation
+ documentation
+EOF
+
+cd ..
+dpkg-source -b documentation-9876AD ""
+cd documentation-9876AD
+
+fakeroot make -f debian/rules binary-indep > ../documentation_9876AD_coal+all.log
+OUTPUT=test.changes
+dpkg-genchanges > "$OUTPUT".pre
+# simulate dpkg-genchanges behaviour currently in sid so the testsuite runs for backports, too
+awk 'BEGIN{inheader=0} /^Files:/ || (inheader && /^ /) {inheader = 1; next} {inheader = 0 ; print}' "$OUTPUT".pre | sed -e 's/ \+$//' >../"$OUTPUT"
+echo "Files:" >> ../"$OUTPUT"
+awk 'BEGIN{inheader=0} (inheader && /^ .*\.deb$/) {print ; next} /^Files:/ || (inheader && /^ /) {inheader = 1; next} {inheader = 0 ;next}' "$OUTPUT".pre >>../"$OUTPUT"
+awk 'BEGIN{inheader=0} (inheader && /^ .*\.txt$/) {print ; next} /^Files:/ || (inheader && /^ /) {inheader = 1; next} {inheader = 0 ;next}' "$OUTPUT".pre >>../"$OUTPUT"
+awk 'BEGIN{inheader=0} /^Files:/ || (inheader && /^ .*\.(deb|txt)$/) {inheader = 1 ; next } (inheader && /^ /) {print ; next} {inheader = 0 ;next}' "$OUTPUT".pre >>../"$OUTPUT"
+cd ..
+rm -r documentation-9876AD
+
+ed -s test.changes <<EOF
+/^Files:/a
+ $(mdandsize documentation_9876AD_coal+all.log) - - documentation_9876AD_coal+all.log
+.
+w
+q
+EOF
+
+mkdir conf
+# first check files are properly ingored:
+cat > conf/distributions <<EOF
+Codename: test
+Architectures: coal source
+Components: main
+EOF
+
+testrun - include test test.changes 3<<EOF
+stderr
+*=Ignoring byhand file: 'manifesto.txt'!
+*=Ignoring byhand file: 'history.txt'!
+*=Ignoring log file: 'documentation_9876AD_coal+all.log'!
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+rm -r pool dists db
+
+# now include the byhand file:
+cat > conf/distributions <<EOF
+Codename: test
+Architectures: coal source
+Components: main
+Tracking: minimal includebyhand
+EOF
+
+testrun - include test test.changes 3<<EOF
+stderr
+*=Ignoring log file: 'documentation_9876AD_coal+all.log'!
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+-v2*=Created directory "./pool/main/d/documentation/documentation_9876AD_byhand"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+cat >results.expected <<EOF
+Distribution: test
+Source: documentation
+Version: 9876AD
+Files:
+ pool/main/d/documentation/documentation_9876AD.dsc s 1
+ pool/main/d/documentation/documentation_9876AD.tar.gz s 1
+ pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt x 0
+ pool/main/d/documentation/documentation_9876AD_byhand/history.txt x 0
+ pool/main/d/documentation/documentation_9876AD_all.deb a 1
+
+EOF
+testout - dumptracks test 3<<EOF
+EOF
+dodiff results.expected results
+testrun - retrack 3<<EOF
+stdout
+-v1*=Retracking test...
+EOF
+testout - dumptracks test 3<<EOF
+EOF
+dodiff results.expected results
+testrun - _listchecksums 3<<EOF
+stdout
+*=pool/main/d/documentation/documentation_9876AD.dsc $(fullchecksum documentation_9876AD.dsc)
+*=pool/main/d/documentation/documentation_9876AD.tar.gz $(fullchecksum documentation_9876AD.tar.gz)
+*=pool/main/d/documentation/documentation_9876AD_all.deb $(fullchecksum documentation_9876AD_all.deb)
+*=pool/main/d/documentation/documentation_9876AD_byhand/history.txt $(fullchecksum history.txt)
+
+*=pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt $(fullchecksum manifesto.txt)
+EOF
+
+testrun - remove test documentation 3<<EOF
+stdout
+$(opd 'documentation' unset test main coal deb)
+$(opd 'documentation' unset test main source dsc)
+-v0*=Exporting indices...
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= replacing './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v6*= looking for changes in 'test|main|source'...
+-v6*= replacing './dists/test/main/source/Sources' (gzipped)
+$(otd 'documentation' '9876AD' 'test')
+-v0*=Deleting files no longer referenced...
+$(ofd 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(ofd 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+-v2*=removed now empty directory ./pool/main/d/documentation/documentation_9876AD_byhand
+-v2*=removed now empty directory ./pool/main/d/documentation
+-v2*=removed now empty directory ./pool/main/d
+-v2*=removed now empty directory ./pool/main
+-v2*=removed now empty directory ./pool
+EOF
+dodo test ! -e pool
+rm -r dists db
+
+# now include the log file, too:
+cat > conf/distributions <<EOF
+Codename: test
+Architectures: coal source
+Components: main
+Tracking: minimal includebyhand includelogs
+EOF
+
+testrun - include test test.changes 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_coal+all.log')
+-v2*=Created directory "./pool/main/d/documentation/documentation_9876AD_byhand"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+cat >results.expected <<EOF
+Distribution: test
+Source: documentation
+Version: 9876AD
+Files:
+ pool/main/d/documentation/documentation_9876AD.dsc s 1
+ pool/main/d/documentation/documentation_9876AD.tar.gz s 1
+ pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt x 0
+ pool/main/d/documentation/documentation_9876AD_byhand/history.txt x 0
+ pool/main/d/documentation/documentation_9876AD_all.deb a 1
+ pool/main/d/documentation/documentation_9876AD_coal+all.log l 0
+
+EOF
+
+testout - dumptracks test 3<<EOF
+EOF
+dodiff results.expected results
+
+rm -r dists db pool
+
+# and now everything at once, too:
+cat > conf/distributions <<EOF
+Codename: test
+Architectures: coal source
+Components: main
+Tracking: minimal includebyhand includelogs includechanges
+EOF
+
+testrun - include test test.changes 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_source+all.changes')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_coal+all.log')
+-v2*=Created directory "./pool/main/d/documentation/documentation_9876AD_byhand"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+cat >results.expected <<EOF
+Distribution: test
+Source: documentation
+Version: 9876AD
+Files:
+ pool/main/d/documentation/documentation_9876AD.dsc s 1
+ pool/main/d/documentation/documentation_9876AD.tar.gz s 1
+ pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt x 0
+ pool/main/d/documentation/documentation_9876AD_byhand/history.txt x 0
+ pool/main/d/documentation/documentation_9876AD_all.deb a 1
+ pool/main/d/documentation/documentation_9876AD_coal+all.log l 0
+ pool/main/d/documentation/documentation_9876AD_source+all.changes c 0
+
+EOF
+testout - dumptracks test 3<<EOF
+EOF
+dodiff results.expected results
+testrun - _listchecksums 3<<EOF
+stdout
+*=pool/main/d/documentation/documentation_9876AD_coal+all.log $(fullchecksum documentation_9876AD_coal+all.log)
+*=pool/main/d/documentation/documentation_9876AD_source+all.changes $(fullchecksum test.changes)
+*=pool/main/d/documentation/documentation_9876AD.dsc $(fullchecksum documentation_9876AD.dsc)
+*=pool/main/d/documentation/documentation_9876AD.tar.gz $(fullchecksum documentation_9876AD.tar.gz)
+*=pool/main/d/documentation/documentation_9876AD_all.deb $(fullchecksum documentation_9876AD_all.deb)
+*=pool/main/d/documentation/documentation_9876AD_byhand/history.txt $(fullchecksum history.txt)
+
+*=pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt $(fullchecksum manifesto.txt)
+EOF
+
+testrun - remove test documentation 3<<EOF
+stdout
+$(opd 'documentation' unset test main coal deb)
+$(opd 'documentation' unset test main source dsc)
+-v0*=Exporting indices...
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= replacing './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v6*= looking for changes in 'test|main|source'...
+-v6*= replacing './dists/test/main/source/Sources' (gzipped)
+$(otd 'documentation' '9876AD' 'test')
+-v0*=Deleting files no longer referenced...
+$(ofd 'pool/main/d/documentation/documentation_9876AD_source+all.changes')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_coal+all.log')
+$(ofd 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(ofd 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofd 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+-v2*=removed now empty directory ./pool/main/d/documentation/documentation_9876AD_byhand
+-v2*=removed now empty directory ./pool/main/d/documentation
+-v2*=removed now empty directory ./pool/main/d
+-v2*=removed now empty directory ./pool/main
+-v2*=removed now empty directory ./pool
+EOF
+dodo test ! -e pool
+rm -r dists db
+
+mkdir i j tmp
+mv *.txt documentation_9876AD* test.changes j/
+cp j/* i/
+cat > conf/incoming <<EOF
+Name: foo
+IncomingDir: i
+TempDir: tmp
+Default: test
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_source+all.changes')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_coal+all.log')
+-v2*=Created directory "./pool/main/d/documentation/documentation_9876AD_byhand"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD_coal+all.log'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+cat >results.expected <<EOF
+Distribution: test
+Source: documentation
+Version: 9876AD
+Files:
+ pool/main/d/documentation/documentation_9876AD_all.deb a 1
+ pool/main/d/documentation/documentation_9876AD.dsc s 1
+ pool/main/d/documentation/documentation_9876AD.tar.gz s 1
+ pool/main/d/documentation/documentation_9876AD_byhand/history.txt x 0
+ pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt x 0
+ pool/main/d/documentation/documentation_9876AD_coal+all.log l 0
+ pool/main/d/documentation/documentation_9876AD_source+all.changes c 0
+
+EOF
+
+testout - dumptracks test 3<<EOF
+EOF
+dodiff results.expected results
+
+rm -r db pool dists
+
+cp j/* i/
+ed -s conf/distributions <<EOF
+g/^Tracking: /s/include[^ ]*//g
+w
+q
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+stderr
+*=Error: 'test.changes' contains unused file 'documentation_9876AD_coal+all.log'!
+*=(Do Permit: unused_files to conf/incoming to ignore and
+*= additionally Cleanup: unused_files to delete them)
+*=Alternatively, you can also add a LogDir: for 'foo' into conf/incoming
+*=then files like that will be stored there.
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat >> conf/incoming <<EOF
+Logdir: log
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+-v2*=Created directory "./log"
+-v2*=Created directory "./log/documentation_9876AD_source+all.0000000"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD_coal+all.log'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+
+ls log/documentation_9876AD_source+all.0000000 | sort > results
+cat > results.expected <<EOF
+documentation_9876AD_coal+all.log
+history.txt
+manifesto.txt
+test.changes
+EOF
+dodiff results.expected results
+
+rm -r db pool dists
+
+cp j/* i/
+ed -s conf/distributions <<EOF
+g/^Tracking: /d
+a
+Tracking: all includechanges includelogs includebyhand
+.
+w
+q
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+-v2*=Created directory "./log/documentation_9876AD_source+all.0000001"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_source+all.changes')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_coal+all.log')
+-v2*=Created directory "./pool/main/d/documentation/documentation_9876AD_byhand"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD_coal+all.log'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+EOF
+
+ls log/documentation_9876AD_source+all.0000001 | sort > results
+cat > results.expected <<EOF
+documentation_9876AD_coal+all.log
+test.changes
+EOF
+dodiff results.expected results
+
+# Now add a script to manually handle byhand files:
+
+rm -r db pool dists
+
+cp j/* i/
+
+cat >> conf/distributions <<EOF
+ByhandHooks:
+ byhand * manifesto.txt handle-byhand.sh
+EOF
+
+# first without the script, to check the error:
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./log/documentation_9876AD_source+all.0000002"
+stderr
+*=Error 2 executing './conf/handle-byhand.sh': No such file or directory
+*=Byhandhook './conf/handle-byhand.sh' 'test' 'byhand' '-' 'manifesto.txt' './tmp/manifesto.txt' failed with exit code 255!
+-v0*=There have been errors!
+return 255
+EOF
+
+# then with the script
+
+cat > conf/handle-byhand.sh <<'EOF'
+#!/bin/sh
+echo "byhand-script called with: " "'$*'" >&2
+EOF
+cat > conf/handle-alternate.sh <<'EOF'
+#!/bin/sh
+echo "alternate-script called with: " "'$*'" >&2
+EOF
+chmod u+x conf/handle-alternate.sh
+chmod u+x conf/handle-byhand.sh
+
+testrun - processincoming foo 3<<EOF
+stdout
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+-v2*=Created directory "./log/documentation_9876AD_source+all.0000003"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_source+all.changes')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_coal+all.log')
+-v2*=Created directory "./pool/main/d/documentation/documentation_9876AD_byhand"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/history.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_byhand/manifesto.txt')
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD_coal+all.log'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+stderr
+*=byhand-script called with: 'test byhand - manifesto.txt ./tmp/manifesto.txt'
+EOF
+
+ls log/documentation_9876AD_source+all.0000003 | sort > results
+cat > results.expected <<EOF
+documentation_9876AD_coal+all.log
+test.changes
+EOF
+dodiff results.expected results
+
+# then don't install byhand, now the unprocessed ones should end up in the log
+
+rm -r db dists pool
+cp j/* i/
+ed -s conf/distributions <<EOF
+g/^Tracking: /d
+i
+Tracking: all
+.
+w
+q
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+-v2*=Created directory "./log/documentation_9876AD_source+all.0000004"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+$(ota 'test' 'documentation')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD_coal+all.log'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+stderr
+*=byhand-script called with: 'test byhand - manifesto.txt ./tmp/manifesto.txt'
+EOF
+
+ls log/documentation_9876AD_source+all.0000004 | sort > results
+cat > results.expected <<EOF
+documentation_9876AD_coal+all.log
+history.txt
+test.changes
+EOF
+dodiff results.expected results
+
+# then do without tracking at all
+
+rm -r db dists pool
+cp j/* i/
+ed -s conf/distributions <<EOF
+g/^Tracking: /d
+w
+q
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+-v2*=Created directory "./log/documentation_9876AD_source+all.0000005"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD_coal+all.log'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+stderr
+*=byhand-script called with: 'test byhand - manifesto.txt ./tmp/manifesto.txt'
+EOF
+
+ls log/documentation_9876AD_source+all.0000005 | sort > results
+cat > results.expected <<EOF
+documentation_9876AD_coal+all.log
+history.txt
+test.changes
+EOF
+dodiff results.expected results
+
+# then do without tracking and without log dir
+
+rm -r db dists pool
+cp j/* i/
+ed -s conf/incoming <<EOF
+g/^Logdir: /d
+w
+q
+EOF
+ed -s i/test.changes <<'EOF'
+g/^ .*\.log$/d
+w
+q
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+stderr
+*=Error: 'test.changes' contains unused file 'history.txt'!
+*=(Do Permit: unused_files to conf/incoming to ignore and
+*= additionally Cleanup: unused_files to delete them)
+*=Alternatively, you can also add a LogDir: for 'foo' into conf/incoming
+*=then files like that will be stored there.
+-v0*=There have been errors!
+returns 255
+EOF
+
+# add more hooks:
+
+cat >> conf/distributions <<EOF
+ * * * handle-alternate.sh
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists"
+-v2*=Created directory "./dists/test"
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+stderr
+*=byhand-script called with: 'test byhand - manifesto.txt ./tmp/manifesto.txt'
+*=alternate-script called with: 'test byhand - history.txt ./tmp/history.txt'
+EOF
+
+# try a more real-worl example.
+
+rm -r db dists pool
+cp j/* i/
+ed -s i/test.changes <<'EOF'
+g/^ .*\.log$/d
+w
+q
+EOF
+ed -s conf/distributions <<EOF
+g/handle-/d
+a
+ byhand - * $SRCDIR/docs/copybyhand.example
+.
+w
+q
+EOF
+
+testrun - processincoming foo 3<<EOF
+stdout
+$(odb)
+-v2*=Created directory "./pool"
+-v2*=Created directory "./pool/main"
+-v2*=Created directory "./pool/main/d"
+-v2*=Created directory "./pool/main/d/documentation"
+$(ofa 'pool/main/d/documentation/documentation_9876AD_all.deb')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.tar.gz')
+$(ofa 'pool/main/d/documentation/documentation_9876AD.dsc')
+$(opa 'documentation' x 'test' 'main' 'coal' 'deb')
+$(opa 'documentation' x 'test' 'main' 'source' 'dsc')
+-v3*=deleting './i/documentation_9876AD_all.deb'...
+-v3*=deleting './i/documentation_9876AD.tar.gz'...
+-v3*=deleting './i/history.txt'...
+-v3*=deleting './i/manifesto.txt'...
+-v3*=deleting './i/documentation_9876AD.dsc'...
+-v3*=deleting './i/test.changes'...
+-v0*=Exporting indices...
+-v2*=Created directory "./dists/test/main"
+-v2*=Created directory "./dists/test/main/binary-coal"
+-v6*= looking for changes in 'test|main|coal'...
+-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped)
+-v2*=Created directory "./dists/test/main/source"
+-v6*= looking for changes in 'test|main|source'...
+-v6*= creating './dists/test/main/source/Sources' (gzipped)
+stderr
+EOF
+
+ls dists/test/extra/ | sort > results
+cat > results.expected <<EOF
+history.txt
+manifesto.txt
+EOF
+dodiff results.expected results
+
+# TODO: check for multiple distributions
+# some storing some not, and when the handling script is implemented
+
+rm -r db pool dists
+rm -r i j tmp conf results results.expected log
+testsuccess