From 98d42861577803ee83124ff385b9c963fcbb14e0 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:11:42 -0400 Subject: [PATCH 1/8] handle missing file --- scripts/snap_pac.py | 6 ++++-- tests/test_script.py | 23 ++++++++++++++--------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/scripts/snap_pac.py b/scripts/snap_pac.py index c054de8..080c513 100755 --- a/scripts/snap_pac.py +++ b/scripts/snap_pac.py @@ -38,7 +38,6 @@ class SnapperCmd: self.cmd.append("--no-dbus") self.cmd.extend([ f"--config {config} create", - f"--type {snapshot_type}", f"--cleanup-algorithm {cleanup_algorithm}", "--print-number" ]) @@ -50,7 +49,10 @@ class SnapperCmd: if pre_number is not None: self.cmd.append(f"--pre-number {pre_number}") else: - raise ValueError("snapshot type specified as 'post' but no pre snapshot number passed.") + logging.warning("snapshot type specified as 'post' but no pre snapshot number passed.") + logging.warning("setting snapshot type to 'single'.") + snapshot_type = "single" + self.cmd.append(f"--type {snapshot_type}") def __call__(self): return os.popen(self.__str__()).read().rstrip("\n") diff --git a/tests/test_script.py b/tests/test_script.py index f36dd8e..d5ef3a6 100644 --- a/tests/test_script.py +++ b/tests/test_script.py @@ -10,27 +10,32 @@ from scripts.snap_pac import check_skip, ConfigProcessor, get_snapper_configs, P @pytest.mark.parametrize("snapper_cmd, actual_cmd", [ ( SnapperCmd("root", "pre", "number", "foo"), - "snapper --config root create --type pre --cleanup-algorithm number --print-number --description \"foo\"" + "snapper --config root create --cleanup-algorithm number --print-number --description \"foo\" --type pre" ), ( SnapperCmd("root", "post", "number", "bar", False, 1234), - "snapper --config root create --type post --cleanup-algorithm number --print-number" - " --description \"bar\" --pre-number 1234" + "snapper --config root create --cleanup-algorithm number --print-number" + " --description \"bar\" --pre-number 1234 --type post" ), ( SnapperCmd("root", "post", "number", "bar", True, 1234), - "snapper --no-dbus --config root create --type post --cleanup-algorithm number --print-number" - " --description \"bar\" --pre-number 1234" + "snapper --no-dbus --config root create --cleanup-algorithm number --print-number" + " --description \"bar\" --pre-number 1234 --type post" ), ( SnapperCmd("root", "post", "number", "bar", False, 1234, "important=yes"), - "snapper --config root create --type post --cleanup-algorithm number --print-number" - " --description \"bar\" --userdata \"important=yes\" --pre-number 1234" + "snapper --config root create --cleanup-algorithm number --print-number" + " --description \"bar\" --userdata \"important=yes\" --pre-number 1234 --type post" ), ( SnapperCmd("root", "post", "number", "bar", False, 1234, "foo=bar,important=yes"), - "snapper --config root create --type post --cleanup-algorithm number --print-number" - " --description \"bar\" --userdata \"foo=bar,important=yes\" --pre-number 1234" + "snapper --config root create --cleanup-algorithm number --print-number" + " --description \"bar\" --userdata \"foo=bar,important=yes\" --pre-number 1234 --type post" + ), + ( + SnapperCmd("root", "post", "number", "bar", False, None, "foo=bar,important=yes"), + "snapper --config root create --cleanup-algorithm number --print-number" + " --description \"bar\" --userdata \"foo=bar,important=yes\" --type single" ) ]) def test_snapper_cmd(snapper_cmd, actual_cmd): From e8a8c6c096c52d1a84c83a798f6c144a7c5198a5 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:13:04 -0400 Subject: [PATCH 2/8] allow file to be missing --- scripts/snap_pac.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/snap_pac.py b/scripts/snap_pac.py index 080c513..b5b235b 100755 --- a/scripts/snap_pac.py +++ b/scripts/snap_pac.py @@ -150,7 +150,8 @@ class Prefile: try: pre_number = self.file.read_text() except FileNotFoundError: - raise FileNotFoundError(f"prefile {self.file} not found. Ensure you have run the pre snapshot first.") + pre_number = None + logging.warning(f"prefile {self.file} not found. Ensure you have run the pre snapshot first.") else: self.file.unlink() return pre_number From ecd19a6705627c07c78c104884abb4a528ad0444 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:14:24 -0400 Subject: [PATCH 3/8] update test --- tests/test_script.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_script.py b/tests/test_script.py index d5ef3a6..953f941 100644 --- a/tests/test_script.py +++ b/tests/test_script.py @@ -119,5 +119,4 @@ def test_prefile_read(): def test_no_prefile(): prefile = Prefile("foo-pre-file-not-found", "post") - with pytest.raises(FileNotFoundError): - prefile.read() + assert prefile.read() is None From 5271109cc4066415f058c70e28c5cbe136a9d183 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:20:48 -0400 Subject: [PATCH 4/8] update logging --- hooks/zz_snap-pac-install.hook | 28 ---------------------------- scripts/snap_pac.py | 8 +++++--- 2 files changed, 5 insertions(+), 31 deletions(-) delete mode 100644 hooks/zz_snap-pac-install.hook diff --git a/hooks/zz_snap-pac-install.hook b/hooks/zz_snap-pac-install.hook deleted file mode 100644 index 4beeb68..0000000 --- a/hooks/zz_snap-pac-install.hook +++ /dev/null @@ -1,28 +0,0 @@ -# snap-pac -# https://github.com/wesbarnett/snap-pac -# Copyright (C) 2016, 2017, 2018 James W. Barnett - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -[Trigger] -Operation = Install -Type = Package -Target = snap-pac - -[Action] -Description = You are installing snap-pac, so no post transaction snapshots will be taken. -Depends = snap-pac -When = PostTransaction -Exec = /usr/bin/true diff --git a/scripts/snap_pac.py b/scripts/snap_pac.py index b5b235b..77dbcc4 100755 --- a/scripts/snap_pac.py +++ b/scripts/snap_pac.py @@ -49,8 +49,9 @@ class SnapperCmd: if pre_number is not None: self.cmd.append(f"--pre-number {pre_number}") else: - logging.warning("snapshot type specified as 'post' but no pre snapshot number passed.") - logging.warning("setting snapshot type to 'single'.") + logging.debug("snapshot type specified as 'post' but no pre snapshot number, " + "so setting snapshot type to 'single'. If installing " + "snap-pac this is normal.") snapshot_type = "single" self.cmd.append(f"--type {snapshot_type}") @@ -151,7 +152,8 @@ class Prefile: pre_number = self.file.read_text() except FileNotFoundError: pre_number = None - logging.warning(f"prefile {self.file} not found. Ensure you have run the pre snapshot first.") + logging.debug(f"prefile {self.file} not found. Ensure you have run the pre snapshot first. " + "If installing snap-pac this is normal.") else: self.file.unlink() return pre_number From abb1e2beb870fb9b2ce22909927fb24d5ba175ec Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:21:54 -0400 Subject: [PATCH 5/8] rename hook --- hooks/{zy_snapper-post.hook => zz_snapper_post.hook} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename hooks/{zy_snapper-post.hook => zz_snapper_post.hook} (100%) diff --git a/hooks/zy_snapper-post.hook b/hooks/zz_snapper_post.hook similarity index 100% rename from hooks/zy_snapper-post.hook rename to hooks/zz_snapper_post.hook From 138717d26942df154b6fe561de4ad8ee3e45b6d4 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:22:55 -0400 Subject: [PATCH 6/8] rename hook --- hooks/{10_snap-pac-removal.hook => zy_snap-pac-removal.hook} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename hooks/{10_snap-pac-removal.hook => zy_snap-pac-removal.hook} (100%) diff --git a/hooks/10_snap-pac-removal.hook b/hooks/zy_snap-pac-removal.hook similarity index 100% rename from hooks/10_snap-pac-removal.hook rename to hooks/zy_snap-pac-removal.hook From 9b459dc49d96a0e2793f8e1cdeff3aa7fb4ec544 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:24:33 -0400 Subject: [PATCH 7/8] make it a posttransaction hook --- hooks/zy_snap-pac-removal.hook | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/zy_snap-pac-removal.hook b/hooks/zy_snap-pac-removal.hook index 6c8f921..ea4bb6b 100644 --- a/hooks/zy_snap-pac-removal.hook +++ b/hooks/zy_snap-pac-removal.hook @@ -24,5 +24,5 @@ Target = snap-pac [Action] Description = You are removing snap-pac. No post transaction snapshots will be taken. Depends = snap-pac -When = PreTransaction +When = PostTransaction Exec = /usr/bin/bash -c "rm -f /tmp/snap-pac-pre_*" From 4ebfa0eaa613dabf904943991efdd72a1c7f84a5 Mon Sep 17 00:00:00 2001 From: Wes Barnett Date: Thu, 15 Apr 2021 20:26:10 -0400 Subject: [PATCH 8/8] hook cant run if removed --- hooks/zy_snap-pac-removal.hook | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 hooks/zy_snap-pac-removal.hook diff --git a/hooks/zy_snap-pac-removal.hook b/hooks/zy_snap-pac-removal.hook deleted file mode 100644 index ea4bb6b..0000000 --- a/hooks/zy_snap-pac-removal.hook +++ /dev/null @@ -1,28 +0,0 @@ -# snap-pac -# https://github.com/wesbarnett/snap-pac -# Copyright (C) 2016, 2017, 2018 James W. Barnett - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -[Trigger] -Operation = Remove -Type = Package -Target = snap-pac - -[Action] -Description = You are removing snap-pac. No post transaction snapshots will be taken. -Depends = snap-pac -When = PostTransaction -Exec = /usr/bin/bash -c "rm -f /tmp/snap-pac-pre_*"