From 893d6302b7d77c5d13058fe9911aec803d03bbf4 Mon Sep 17 00:00:00 2001 From: Frej Drejhammar Date: Sun, 7 Apr 2024 15:06:37 +0200 Subject: [PATCH 1/2] Fix errors resulting from #318 When commit ddfc3a83003a ("Run file_data_filter on deleted files") started calling the file_data_filter plugin method, in order to make deletion of plugin-renamed files work, the example plugins were not updated. This commit updates the example plugins to not crash when the file context is None. Thanks to @hetas discovering this. Closes 328 --- plugins/dos2unix/__init__.py | 2 ++ plugins/shell_filter_file_contents/__init__.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/plugins/dos2unix/__init__.py b/plugins/dos2unix/__init__.py index bae9358..e5b2d9c 100644 --- a/plugins/dos2unix/__init__.py +++ b/plugins/dos2unix/__init__.py @@ -6,6 +6,8 @@ class Filter(): pass def file_data_filter(self,file_data): + if file_data['file_ctx'] == None: + return file_ctx = file_data['file_ctx'] if not file_ctx.isbinary(): file_data['data'] = file_data['data'].replace(b'\r\n', b'\n') diff --git a/plugins/shell_filter_file_contents/__init__.py b/plugins/shell_filter_file_contents/__init__.py index 84fd938..4030da0 100644 --- a/plugins/shell_filter_file_contents/__init__.py +++ b/plugins/shell_filter_file_contents/__init__.py @@ -15,6 +15,8 @@ class Filter: d = file_data['data'] file_ctx = file_data['file_ctx'] filename = file_data['filename'] + if file_ctx == None: + return filter_cmd = self.filter_contents + [filename, node.hex(file_ctx.filenode()), '1' if file_ctx.isbinary() else '0'] try: filter_proc = subprocess.Popen(filter_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE) From 08e22978535f81c54a2d75b05b7db414f0432858 Mon Sep 17 00:00:00 2001 From: Frej Drejhammar Date: Sun, 7 Apr 2024 15:17:28 +0200 Subject: [PATCH 2/2] CI: Add tests to avoid a repeat of #328 Extend tests to cover the file content filter example plugins in order to avoid a repeat of #328. --- t/file_data_filter.t | 4 +++- t/plugins/id | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100755 t/plugins/id diff --git a/t/file_data_filter.t b/t/file_data_filter.t index a938e97..aa054c9 100755 --- a/t/file_data_filter.t +++ b/t/file_data_filter.t @@ -25,7 +25,9 @@ git_convert() { cd "$2" && hg-fast-export.sh --repo "../$1" \ -s --hgtags -n \ - --plugin ../../plugins/rename_file_test_plugin + --plugin ../../plugins/rename_file_test_plugin \ + --plugin dos2unix \ + --plugin shell_filter_file_contents=../../plugins/id ) } diff --git a/t/plugins/id b/t/plugins/id new file mode 100755 index 0000000..2cebdbd --- /dev/null +++ b/t/plugins/id @@ -0,0 +1,2 @@ +#!/bin/bash +cat