Exheredludis/paludis/hooker_TEST_setup.sh
Marvin Schmidt ea2d768830 hooker_TEST: make ordering/py_hook Python3 compatible
Otherwise the test fails with the following error when using Python 3:

13: [ RUN      ] Hooker.Ordering
13: paludis@1565848657: [WARNING hook.python.failure] Hook 'hooker_TEST_dir/ordering/py_hook.py': running hook_run_ordering function failed: 'Traceback (most recent call last):
13:   File "hooker_TEST_dir/ordering/py_hook.py", line 2, in hook_run_ordering
13:     file("hooker_TEST_dir/ordering.out", "a").write("py_hook\n")
13: NameError: name 'file' is not defined'
13: ../paludis/hooker_TEST.cc:76: Failure
13: Expected equality of these values:
13:   0
13:   result.max_exit_status()
13:     Which is: 1
13: ../paludis/hooker_TEST.cc:83: Failure
13: Expected equality of these values:
13:   "e\nc\nf\nd\nb\na\npy_hook\ng\ni\nh\nsohook\nk\nj\n"
13:   line
13:     Which is: "e\nc\nf\nd\nb\na\ng\ni\nh\nsohook\nk\nj\n"
13: With diff:
13: @@ -5,5 @@
13:  b
13:  a
13: -py_hook
13:  g
13:  i
13:
13: [  FAILED  ] Hooker.Ordering (184 ms)
2019-10-22 20:10:52 +02:00

296 lines
5.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# vim: set ft=sh sw=4 sts=4 et :
mkdir hooker_TEST_dir || exit 2
cd hooker_TEST_dir || exit 3
mkdir simple_hook
cat <<"END" > simple_hook/one.bash
exit 3
END
chmod +x simple_hook/one.bash
mkdir simple_hook_output
cat <<"END" > simple_hook_output/one.bash
echo "foo"
END
chmod +x simple_hook_output/one.bash
mkdir fancy_hook
cat <<"END" > fancy_hook/one.hook
hook_run_fancy_hook() {
return 5
}
hook_depend_fancy_hook() {
echo
}
hook_after_fancy_hook() {
echo
}
END
chmod +x fancy_hook/one.hook
mkdir fancy_hook_output
cat <<"END" > fancy_hook_output/one.hook
hook_run_fancy_hook_output() {
echo foo
}
hook_depend_fancy_hook_output() {
echo
}
hook_after_fancy_hook_output() {
echo
}
END
chmod +x fancy_hook_output/one.hook
mkdir so_hook
ln -s ${TOP_BUILDDIR}/paludis/libpaludissohooks_TEST_${PALUDIS_PC_SLOT}.so.${SO_SUFFIX} so_hook
mkdir so_hook_output
ln -s ${TOP_BUILDDIR}/paludis/libpaludissohooks_TEST_${PALUDIS_PC_SLOT}.so.${SO_SUFFIX} so_hook_output
mkdir py_hook
cat <<"END" > py_hook/hook.py
def hook_run_py_hook(env, hook_env):
pass
END
mkdir py_hook_output
cat <<"END" > py_hook_output/hook.py
def hook_run_py_hook_output(env, hook_env):
return "foo"
END
mkdir several_hooks
cat <<"END" > several_hooks/one.hook
hook_run_several_hooks() {
return 4
}
hook_depend_several_hooks() {
echo
}
END
chmod +x several_hooks/one.hook
cat <<"END" > several_hooks/two.hook
hook_run_several_hooks() {
return 6
}
hook_depend_several_hooks() {
echo
}
END
chmod +x several_hooks/two.hook
cat <<"END" > several_hooks/three.hook
hook_run_several_hooks() {
return 7
}
hook_depend_several_hooks() {
echo
}
END
chmod +x several_hooks/three.hook
mkdir several_hooks_output
cat <<"END" > several_hooks_output/one.hook
hook_run_several_hooks_output() {
echo one
echo one >> hooker_TEST_dir/several_output.out
}
hook_depend_several_hooks_output() {
echo
}
END
chmod +x several_hooks_output/one.hook
cat <<"END" > several_hooks_output/two.hook
hook_run_several_hooks_output() {
echo two
echo two >> hooker_TEST_dir/several_output.out
}
hook_depend_several_hooks_output() {
echo one
}
END
chmod +x several_hooks_output/two.hook
cat <<"END" > several_hooks_output/three.hook
hook_run_several_hooks_output() {
echo three
echo three >> hooker_TEST_dir/several_output.out
}
hook_depend_several_hooks_output() {
echo two
}
END
chmod +x several_hooks_output/three.hook
mkdir several_hooks_output_bad
cat <<"END" > several_hooks_output_bad/one.hook
hook_run_several_hooks_output_bad() {
echo one
echo one >> hooker_TEST_dir/several_output_bad.out
return 1
}
hook_depend_several_hooks_output_bad() {
echo
}
END
chmod +x several_hooks_output_bad/one.hook
cat <<"END" > several_hooks_output_bad/two.hook
hook_run_several_hooks_output_bad() {
echo two
echo two >> hooker_TEST_dir/several_output_bad.out
return 99
}
hook_depend_several_hooks_output_bad() {
echo one
}
END
chmod +x several_hooks_output_bad/two.hook
cat <<"END" > several_hooks_output_bad/three.hook
hook_run_several_hooks_output_bad() {
echo three
echo three >> hooker_TEST_dir/several_output_bad.out
return 2
}
hook_depend_several_hooks_output_bad() {
echo two
}
END
chmod +x several_hooks_output_bad/three.hook
mkdir ordering
cat <<"END" > ordering.common
hook_run_ordering() {
basename ${HOOK_FILE} | sed -e 's,\.hook$,,' >> hooker_TEST_dir/ordering.out
}
hook_depend_ordering() {
case $(basename ${HOOK_FILE} | sed -e 's,\.hook$,,' ) in
a)
echo b
;;
b)
echo c d
;;
c)
echo e
;;
d)
echo e f
;;
h)
esac
}
hook_after_ordering() {
case $(basename ${HOOK_FILE} | sed -e 's,\.hook$,,' ) in
a)
echo x
;;
h)
echo i py_hook
;;
j)
echo k libpaludissohooks_TEST
;;
esac
}
END
chmod +x ordering.common
for a in a b c d e f g h i j k ; do
ln -s ../ordering.common ordering/${a}.hook
done
ln -s ${TOP_BUILDDIR}/paludis/libpaludissohooks_TEST_${PALUDIS_PC_SLOT}.so.${SO_SUFFIX} ordering
cat <<"END" > ordering/py_hook.py
def hook_run_ordering(env, hook_env):
open("hooker_TEST_dir/ordering.out", "a").write("py_hook\n")
def hook_depend_ordering(hook_env):
return ["f"]
END
mkdir bad_hooks
cat <<"END" > bad_hooks.common
hook_run_bad_hooks() {
basename ${HOOK_FILE} | sed -e 's,\.hook$,,' >> hooker_TEST_dir/bad_hooks.out
}
END
chmod +x bad_hooks.common
for a in one three ; do
ln -s ../bad_hooks.common bad_hooks/${a}.hook
done
cat <<"END" > bad_hooks/two.hook
asdf
END
chmod +x bad_hooks/two.hook
cat <<"END" > bad_hooks/four.py
def hook_run_bad_hooks(env, hook_env):
1/0
END
mkdir cycles
cat <<"END" > cycles.common
hook_run_cycles() {
basename ${HOOK_FILE} | sed -e 's,\.hook$,,' >> hooker_TEST_dir/cycles.out
}
hook_depend_cycles() {
case $(basename ${HOOK_FILE} | sed -e 's,\.hook$,,' ) in
c)
echo d;
;;
d)
echo e;
;;
e)
echo c;
;;
f)
echo g;
;;
h)
echo h;
;;
esac
}
hook_after_cycles() {
case $(basename ${HOOK_FILE} | sed -e 's,\.hook$,,' ) in
a)
echo b
;;
esac
}
END
chmod +x cycles.common
for a in a b c d e f g h i ; do
ln -s ../cycles.common cycles/${a}.hook
done