[patchew-devel] [PATCH] mbox: Recognize file mode changes only patches

Fam Zheng posted 1 patch 6 years, 1 month ago
Failed in applying to current master (apply log)
mbox.py                                 |   7 ++++++-
tests/data/0021-mode-only-patch.mbox.gz | Bin 0 -> 3110 bytes
tests/test_mbox.py                      |   6 ++++++
3 files changed, 12 insertions(+), 1 deletion(-)
create mode 100644 tests/data/0021-mode-only-patch.mbox.gz
mode change 100644 => 100755 tests/test_mbox.py
[patchew-devel] [PATCH] mbox: Recognize file mode changes only patches
Posted by Fam Zheng 6 years, 1 month ago
Signed-off-by: Fam Zheng <famz@redhat.com>
---
 mbox.py                                 |   7 ++++++-
 tests/data/0021-mode-only-patch.mbox.gz | Bin 0 -> 3110 bytes
 tests/test_mbox.py                      |   6 ++++++
 3 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/0021-mode-only-patch.mbox.gz
 mode change 100644 => 100755 tests/test_mbox.py

diff --git a/mbox.py b/mbox.py
index b88cd91..3692cc6 100644
--- a/mbox.py
+++ b/mbox.py
@@ -249,7 +249,12 @@ class MboxMessage(object):
                                "index ",
                                "---",
                                "+++",
-                               "@@")
+                               "@@") or \
+               self._has_lines(body,
+                               "---",
+                               "diff ",
+                               "old mode ",
+                               "new mode ")
 
     def is_series_head(self):
         """Create and return a Series from Message if it is one, otherwise
diff --git a/tests/data/0021-mode-only-patch.mbox.gz b/tests/data/0021-mode-only-patch.mbox.gz
new file mode 100644
index 0000000000000000000000000000000000000000..70298ef3f75d52c565b2832ad9ec7ac2a3041ed1
GIT binary patch
literal 3110
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
AMgRZ+

literal 0
HcmV?d00001

diff --git a/tests/test_mbox.py b/tests/test_mbox.py
old mode 100644
new mode 100755
index 7909a34..8493df7
--- a/tests/test_mbox.py
+++ b/tests/test_mbox.py
@@ -46,5 +46,11 @@ Virtualization:  qemu.org | libvirt.org
         self.assertEqual(utf8_recipient[0], "Philippe Mathieu-Daudé")
         self.assertEqual(utf8_recipient[1], "f4bug@amsat.org")
 
+    def test_mode_only_patch(self):
+        dp = self.get_data_path("0021-mode-only-patch.mbox.gz")
+        with open(dp, "r") as f:
+            msg = mbox.MboxMessage(f.read())
+        self.assertTrue(msg.is_patch())
+
 if __name__ == '__main__':
     main()
-- 
2.14.3


[patchew-devel] Re: [PATCH] mbox: Recognize file mode changes only patches
Posted by Paolo Bonzini 6 years, 1 month ago
On 05/03/2018 08:56, Fam Zheng wrote:
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  mbox.py                                 |   7 ++++++-
>  tests/data/0021-mode-only-patch.mbox.gz | Bin 0 -> 3110 bytes
>  tests/test_mbox.py                      |   6 ++++++
>  3 files changed, 12 insertions(+), 1 deletion(-)
>  create mode 100644 tests/data/0021-mode-only-patch.mbox.gz
>  mode change 100644 => 100755 tests/test_mbox.py
> 
> diff --git a/mbox.py b/mbox.py
> index b88cd91..3692cc6 100644
> --- a/mbox.py
> +++ b/mbox.py
> @@ -249,7 +249,12 @@ class MboxMessage(object):
>                                 "index ",
>                                 "---",
>                                 "+++",
> -                               "@@")
> +                               "@@") or \
> +               self._has_lines(body,
> +                               "---",
> +                               "diff ",
> +                               "old mode ",
> +                               "new mode ")
>  
>      def is_series_head(self):
>          """Create and return a Series from Message if it is one, otherwise
> diff --git a/tests/data/0021-mode-only-patch.mbox.gz b/tests/data/0021-mode-only-patch.mbox.gz
> new file mode 100644
> index 0000000000000000000000000000000000000000..70298ef3f75d52c565b2832ad9ec7ac2a3041ed1
> GIT binary patch
> literal 3110
> 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
> AMgRZ+
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/tests/test_mbox.py b/tests/test_mbox.py
> old mode 100644
> new mode 100755
> index 7909a34..8493df7
> --- a/tests/test_mbox.py
> +++ b/tests/test_mbox.py
> @@ -46,5 +46,11 @@ Virtualization:  qemu.org | libvirt.org
>          self.assertEqual(utf8_recipient[0], "Philippe Mathieu-Daudé")
>          self.assertEqual(utf8_recipient[1], "f4bug@amsat.org")
>  
> +    def test_mode_only_patch(self):
> +        dp = self.get_data_path("0021-mode-only-patch.mbox.gz")
> +        with open(dp, "r") as f:
> +            msg = mbox.MboxMessage(f.read())
> +        self.assertTrue(msg.is_patch())
> +
>  if __name__ == '__main__':
>      main()
> 

Looks good, thanks!

Paolo