From a5759cb0d7a65d3637e0065258b7478530b75b7a Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Fri, 16 Oct 2015 20:28:31 -0400 Subject: add hook tests Signed-off-by: Allan McRae --- test/pacman/tests/TESTS | 9 ++++++ test/pacman/tests/hook-abortonfail.py | 25 +++++++++++++++++ test/pacman/tests/hook-file-change-packages.py | 32 ++++++++++++++++++++++ .../pacman/tests/hook-file-remove-trigger-match.py | 24 ++++++++++++++++ test/pacman/tests/hook-file-upgrade-nomatch.py | 27 ++++++++++++++++++ test/pacman/tests/hook-invalid-trigger.py | 25 +++++++++++++++++ .../pacman/tests/hook-pkg-install-trigger-match.py | 23 ++++++++++++++++ test/pacman/tests/hook-pkg-remove-trigger-match.py | 23 ++++++++++++++++ .../pacman/tests/hook-pkg-upgrade-trigger-match.py | 26 ++++++++++++++++++ test/pacman/tests/hook-upgrade-trigger-no-match.py | 23 ++++++++++++++++ 10 files changed, 237 insertions(+) create mode 100644 test/pacman/tests/hook-abortonfail.py create mode 100644 test/pacman/tests/hook-file-change-packages.py create mode 100644 test/pacman/tests/hook-file-remove-trigger-match.py create mode 100644 test/pacman/tests/hook-file-upgrade-nomatch.py create mode 100644 test/pacman/tests/hook-invalid-trigger.py create mode 100644 test/pacman/tests/hook-pkg-install-trigger-match.py create mode 100644 test/pacman/tests/hook-pkg-remove-trigger-match.py create mode 100644 test/pacman/tests/hook-pkg-upgrade-trigger-match.py create mode 100644 test/pacman/tests/hook-upgrade-trigger-no-match.py diff --git a/test/pacman/tests/TESTS b/test/pacman/tests/TESTS index cce0d582..8ad1b9c0 100644 --- a/test/pacman/tests/TESTS +++ b/test/pacman/tests/TESTS @@ -50,6 +50,15 @@ TESTS += test/pacman/tests/fileconflict025.py TESTS += test/pacman/tests/fileconflict030.py TESTS += test/pacman/tests/fileconflict031.py TESTS += test/pacman/tests/fileconflict032.py +TESTS += test/pacman/tests/hook-abortonfail.py +TESTS += test/pacman/tests/hook-file-change-packages.py +TESTS += test/pacman/tests/hook-file-remove-trigger-match.py +TESTS += test/pacman/tests/hook-file-upgrade-nomatch.py +TESTS += test/pacman/tests/hook-invalid-trigger.py +TESTS += test/pacman/tests/hook-pkg-install-trigger-match.py +TESTS += test/pacman/tests/hook-pkg-remove-trigger-match.py +TESTS += test/pacman/tests/hook-pkg-upgrade-trigger-match.py +TESTS += test/pacman/tests/hook-upgrade-trigger-no-match.py TESTS += test/pacman/tests/ignore001.py TESTS += test/pacman/tests/ignore002.py TESTS += test/pacman/tests/ignore003.py diff --git a/test/pacman/tests/hook-abortonfail.py b/test/pacman/tests/hook-abortonfail.py new file mode 100644 index 00000000..e5044c08 --- /dev/null +++ b/test/pacman/tests/hook-abortonfail.py @@ -0,0 +1,25 @@ +self.description = "Abort transaction on hook failure with AbortOnFail" + +self.add_script("hook-script", ": > hook-output; exit 1") +self.add_hook("hook", + """ + [Trigger] + Type = Package + Operation = Install + Target = foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + AbortOnFail + """); + +sp = pmpkg("foo") +self.addpkg2db("sync", sp) + +self.args = "-S foo" + +self.addrule("!PACMAN_RETCODE=0") +self.addrule("!PKG_EXIST=foo") +self.addrule("FILE_EXIST=hook-output") +self.addrule("PACMAN_OUTPUT=failed to run transaction hooks") diff --git a/test/pacman/tests/hook-file-change-packages.py b/test/pacman/tests/hook-file-change-packages.py new file mode 100644 index 00000000..ad96fc14 --- /dev/null +++ b/test/pacman/tests/hook-file-change-packages.py @@ -0,0 +1,32 @@ +self.description = "Triggering file moves between packages" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = File + Operation = Upgrade + Target = bin/foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +lp = pmpkg("foo", "1-1") +lp.files = ["bin/foo"] +self.addpkg2db("local", lp) + +sp1 = pmpkg("foo", "1-2") +self.addpkg2db("sync", sp1) + +sp2 = pmpkg("bar", "1-2") +sp2.files = ["bin/foo"] +self.addpkg2db("sync", sp2) + +self.args = "-S foo bar" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_VERSION=foo|1-2") +self.addrule("PKG_VERSION=bar|1-2") +self.addrule("FILE_EXIST=hook-output") diff --git a/test/pacman/tests/hook-file-remove-trigger-match.py b/test/pacman/tests/hook-file-remove-trigger-match.py new file mode 100644 index 00000000..6c9375c0 --- /dev/null +++ b/test/pacman/tests/hook-file-remove-trigger-match.py @@ -0,0 +1,24 @@ +self.description = "Remove a package matching a file removal hook" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = File + Operation = Remove + Target = bin/foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +lp = pmpkg("foo") +lp.files = ["bin/foo"] +self.addpkg2db("local", lp) + +self.args = "-R foo" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("!PKG_EXIST=foo") +self.addrule("FILE_EXIST=hook-output") diff --git a/test/pacman/tests/hook-file-upgrade-nomatch.py b/test/pacman/tests/hook-file-upgrade-nomatch.py new file mode 100644 index 00000000..e984d376 --- /dev/null +++ b/test/pacman/tests/hook-file-upgrade-nomatch.py @@ -0,0 +1,27 @@ +self.description = "Add and remove separate files that match an upgrade hook" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = File + Operation = Upgrade + Target = bin/?* + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +lp = pmpkg("foo") +lp.files = ["bin/foo"] +self.addpkg2db("local", lp) + +sp = pmpkg("foo") +sp.files = ["bin/bar"] +self.addpkg2db("sync", sp) + +self.args = "-S foo" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("!FILE_EXIST=hook-output") diff --git a/test/pacman/tests/hook-invalid-trigger.py b/test/pacman/tests/hook-invalid-trigger.py new file mode 100644 index 00000000..72ac6103 --- /dev/null +++ b/test/pacman/tests/hook-invalid-trigger.py @@ -0,0 +1,25 @@ +self.description = "Abort on invalid hook trigger" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + InvalidTriggerOption + Type = Package + Operation = Install + Target = foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +sp = pmpkg("foo") +self.addpkg2db("sync", sp) + +self.args = "-S foo" + +self.addrule("!PACMAN_RETCODE=0") +self.addrule("!PKG_EXIST=foo") +self.addrule("!FILE_EXIST=hook-output") +self.addrule("PACMAN_OUTPUT=failed to run transaction hooks") diff --git a/test/pacman/tests/hook-pkg-install-trigger-match.py b/test/pacman/tests/hook-pkg-install-trigger-match.py new file mode 100644 index 00000000..00dfb32b --- /dev/null +++ b/test/pacman/tests/hook-pkg-install-trigger-match.py @@ -0,0 +1,23 @@ +self.description = "Install a package matching a hook" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = Package + Operation = Install + Target = foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +sp = pmpkg("foo") +self.addpkg2db("sync", sp) + +self.args = "-S foo" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_EXIST=foo") +self.addrule("FILE_EXIST=hook-output") diff --git a/test/pacman/tests/hook-pkg-remove-trigger-match.py b/test/pacman/tests/hook-pkg-remove-trigger-match.py new file mode 100644 index 00000000..887b2058 --- /dev/null +++ b/test/pacman/tests/hook-pkg-remove-trigger-match.py @@ -0,0 +1,23 @@ +self.description = "Remove a package matching a removal hook" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = Package + Operation = Remove + Target = foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +lp = pmpkg("foo") +self.addpkg2db("local", lp) + +self.args = "-R foo" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("!PKG_EXIST=foo") +self.addrule("FILE_EXIST=hook-output") diff --git a/test/pacman/tests/hook-pkg-upgrade-trigger-match.py b/test/pacman/tests/hook-pkg-upgrade-trigger-match.py new file mode 100644 index 00000000..77c28309 --- /dev/null +++ b/test/pacman/tests/hook-pkg-upgrade-trigger-match.py @@ -0,0 +1,26 @@ +self.description = "Upgrade a package matching an Upgrade hook" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = Package + Operation = Upgrade + Target = foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +lp = pmpkg("foo", "1-1") +self.addpkg2db("local", lp) + +sp = pmpkg("foo", "1-2") +self.addpkg2db("sync", sp) + +self.args = "-S foo" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_VERSION=foo|1-2") +self.addrule("FILE_EXIST=hook-output") diff --git a/test/pacman/tests/hook-upgrade-trigger-no-match.py b/test/pacman/tests/hook-upgrade-trigger-no-match.py new file mode 100644 index 00000000..26f2743e --- /dev/null +++ b/test/pacman/tests/hook-upgrade-trigger-no-match.py @@ -0,0 +1,23 @@ +self.description = "Install a package matching an Upgrade hook" + +self.add_script("hook-script", ": > hook-output") +self.add_hook("hook", + """ + [Trigger] + Type = Package + Operation = Upgrade + Target = foo + + [Action] + When = PreTransaction + Exec = bin/hook-script + """); + +sp = pmpkg("foo") +self.addpkg2db("sync", sp) + +self.args = "-S foo" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_EXIST=foo") +self.addrule("!FILE_EXIST=hook-output") -- cgit v1.2.3-70-g09d2