Michal Suchanek 979604
#!/usr/bin/env python3
Jeff Mahoney 89f2a2
# -*- coding: utf-8 -*-,
Michal Suchanek 979604
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
import sys
Jeff Mahoney 89f2a2
import os.path
Jeff Mahoney 89f2a2
import unittest
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
from suse_git import header
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
class TestHeaderChecker(unittest.TestCase):
Jeff Mahoney 89f2a2
    def test_empty(self):
Jeff Mahoney 89f2a2
        try:
Jeff Mahoney 37049b
            self.header = header.Checker("")
Benjamin Poirier 4e62ed
        except header.HeaderException as e:
Benjamin Poirier ba48e0
            self.assertEqual(4, e.errors(header.MissingTagError))
Jeff Mahoney 89f2a2
            self.assertTrue(e.tag_is_missing('patch-mainline'))
Jeff Mahoney d1e5de
            self.assertTrue(e.tag_is_missing('from'))
Jeff Mahoney d1e5de
            self.assertTrue(e.tag_is_missing('subject'))
Jeff Mahoney ae9d1c
            self.assertTrue(e.tag_is_missing('references'))
Benjamin Poirier ba48e0
            self.assertEqual(4, e.errors())
Jeff Mahoney d1e5de
Jeff Mahoney d1e5de
    def test_subject_dupe(self):
Jeff Mahoney d1e5de
        text = """
Jeff Mahoney d1e5de
From: develoepr@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney d1e5de
Patch-mainline: v4.2-rc2
Jeff Mahoney d1e5de
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney d1e5de
Acked-by: developer@suse.com
Jeff Mahoney d1e5de
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.DuplicateTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_dupe(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc2
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.DuplicateTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_empty(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline:
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.EmptyTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('patch-mainline'))
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_no_ack_or_sob(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
        try:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier 4e62ed
        except header.HeaderException as e:
Benjamin Poirier ba48e0
            self.assertEqual(1, e.errors(header.MissingTagError))
Jeff Mahoney 89f2a2
            self.assertTrue(e.tag_is_missing('acked-by'))
Jeff Mahoney 89f2a2
            self.assertTrue(e.tag_is_missing('signed-off-by'))
Benjamin Poirier ba48e0
            self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_multi_ack(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@external.com
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_multi_ack_ext_last(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
Acked-by: developer@external.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_mixed_ack_sob(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Signed-off-by: developer@external.com
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_ack(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_from(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney 89f2a2
From: developer@suse.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_review(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney 89f2a2
From: developer@external.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
Reviewed-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_sob(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Signed-off-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_multi_sob(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Signed-off-by: developer2@external.com
Jeff Mahoney 89f2a2
Signed-off-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_version_correct_multi_sob_ext_last(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Signed-off-by: developer@suse.com
Jeff Mahoney 89f2a2
Signed-off-by: developer2@external.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_na(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: n/a
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_submitted_correct_ml(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Submitted, 19 July 2015 - linux-btrfs
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        errors = self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_submitted_correct_url(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Submitted, https://lkml.org/archive/link-to-post
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        errors = self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_submitted_no_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Submitted
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_submitted_detail_git_commit(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Submitted, https://lkml.org/archive/link-to-post
Jeff Mahoney 89f2a2
Git-repo: git://host/valid/path/to/repo
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.ExcludedTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    # Required/Excluded conflict between Patch-mainline (Submitted)
Jeff Mahoney 89f2a2
    # and Git-commit
Jeff Mahoney 89f2a2
    def test_patch_mainline_submitted_detail_git_commit(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Submitted, https://lkml.org/archive/link-to-post
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.ExcludedTagError))
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_submitted_no_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Submitted
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_never_no_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Never
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 89f2a2
        try:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier 4e62ed
        except header.HeaderException as e:
Benjamin Poirier ba48e0
            self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
            self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_yes_with_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Yes, v4.1-rc1
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_yes_no_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Yes
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_not_yet_no_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Not yet
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_never_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Never, SLES-specific feature
Jeff Mahoney ae9d1c
References: FATE#123456
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_no_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: No, handled differently upstream
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Michal Suchanek 50efd7
        with self.assertRaises(header.HeaderException) as cm:
Michal Suchanek 50efd7
            self.header = header.Checker(text)
Michal Suchanek 50efd7
Michal Suchanek 50efd7
        e = cm.exception
Michal Suchanek 50efd7
        self.assertEqual(1, e.errors(header.FormatError))
Michal Suchanek 50efd7
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_not_yet_detail(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Not yet, rare reason
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_git_commit_standalone(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 89f2a2
        try:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier 4e62ed
        except header.HeaderException as e:
Jeff Mahoney 89f2a2
            # Both policy and Git-commit require Patch-mainline
Benjamin Poirier ba48e0
            self.assertEqual(2, e.errors(header.MissingTagError))
Jeff Mahoney 89f2a2
            self.assertTrue(e.tag_is_missing('patch-mainline'))
Benjamin Poirier ba48e0
            self.assertEqual(2, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_queued_correct(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Queued
Jeff Mahoney 89f2a2
Git-repo: git://path/to/git/repo
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_queued_standalone(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Queued
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('git-commit'))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('git-repo'))
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_queued_with_git_repo(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Queued
Jeff Mahoney 89f2a2
Git-repo: git://path/to/git/repo
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        # Required by both Patch-mainline (Queued) and
Benjamin Poirier ba48e0
        # Git-repo
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('git-commit'))
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_queued_with_git_commit(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: Queued
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('git-repo'))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_patch_mainline_invalid(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney d1e5de
From: developer@site.com
Jeff Mahoney d1e5de
Subject: some patch
Jeff Mahoney 89f2a2
Patch-mainline: n/a
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.FormatError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_diff_like_description(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney 89f2a2
From: developer@external.com
Jeff Mahoney 89f2a2
Subject: blablah
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
This is a thing. I ran across it:
Jeff Mahoney 89f2a2
*** Testing resulted in failure
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
    def test_diff_like_description2(self):
Jeff Mahoney 89f2a2
        text = """
Jeff Mahoney 89f2a2
From: developer@external.com
Jeff Mahoney 89f2a2
Subject: blablah
Jeff Mahoney 89f2a2
Patch-mainline: v4.2-rc1
Jeff Mahoney 89f2a2
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
This is a thing. I ran across it:
Jeff Mahoney 89f2a2
--- Testing resulted in failure
Jeff Mahoney 89f2a2
Jeff Mahoney 89f2a2
Acked-by: developer@suse.com
Jeff Mahoney 89f2a2
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
    def test_patch_references_empty(self):
Jeff Mahoney ae9d1c
        text = """
Jeff Mahoney ae9d1c
From: developer@site.com
Jeff Mahoney ae9d1c
Subject: some patch
Jeff Mahoney ae9d1c
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References:
Jeff Mahoney ae9d1c
Acked-by: developer@suse.com
Jeff Mahoney ae9d1c
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.EmptyTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('references'))
Benjamin Poirier ba48e0
        self.assertEqual(2, e.errors())
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
    def test_patch_references_missing(self):
Jeff Mahoney ae9d1c
        text = """
Jeff Mahoney ae9d1c
From: developer@site.com
Jeff Mahoney ae9d1c
Subject: some patch
Jeff Mahoney ae9d1c
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
Acked-by: developer@suse.com
Jeff Mahoney ae9d1c
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('references'))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
    def test_patch_references_multi(self):
Jeff Mahoney ae9d1c
        text = """
Jeff Mahoney ae9d1c
From: developer@site.com
Jeff Mahoney ae9d1c
Subject: some patch
Jeff Mahoney ae9d1c
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345
Jeff Mahoney ae9d1c
References: bsc#12354
Jeff Mahoney ae9d1c
Acked-by: developer@suse.com
Jeff Mahoney ae9d1c
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
    def test_patch_references_multi2(self):
Jeff Mahoney ae9d1c
        text = """
Jeff Mahoney ae9d1c
From: developer@site.com
Jeff Mahoney ae9d1c
Subject: some patch
Jeff Mahoney ae9d1c
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345 bsc#12354
Jeff Mahoney ae9d1c
Acked-by: developer@suse.com
Jeff Mahoney ae9d1c
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
    def test_patch_references_multi3(self):
Jeff Mahoney ae9d1c
        text = """
Jeff Mahoney ae9d1c
From: developer@site.com
Jeff Mahoney ae9d1c
Subject: some patch
Jeff Mahoney ae9d1c
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345, bsc#12354
Jeff Mahoney ae9d1c
Acked-by: developer@suse.com
Jeff Mahoney ae9d1c
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
    def test_patch_references_multi3(self):
Jeff Mahoney ae9d1c
        text = """
Jeff Mahoney ae9d1c
From: developer@site.com
Jeff Mahoney ae9d1c
Subject: some patch
Jeff Mahoney ae9d1c
Patch-mainline: v4.2-rc1
Jeff Mahoney ae9d1c
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney ae9d1c
References: bsc#12345, bsc#12354
Jeff Mahoney ae9d1c
References: fix for blahblah
Jeff Mahoney ae9d1c
Acked-by: developer@suse.com
Jeff Mahoney ae9d1c
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text)
Jeff Mahoney ae9d1c
Jeff Mahoney ae9d1c
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
    @unittest.skip("Enable this check when we want to require a real "
Benjamin Poirier ba48e0
                   "References tag")
Benjamin Poirier ba48e0
    def test_patch_references_only_freeform(self):
Benjamin Poirier ba48e0
        text = """
Benjamin Poirier ba48e0
From: developer@site.com
Benjamin Poirier ba48e0
Subject: some patch
Benjamin Poirier ba48e0
Patch-mainline: v4.2-rc1
Benjamin Poirier ba48e0
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Benjamin Poirier ba48e0
References: fix for blahblah
Benjamin Poirier ba48e0
Acked-by: developer@suse.com
Benjamin Poirier ba48e0
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Benjamin Poirier ba48e0
            self.header = header.Checker(text)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('references'))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Benjamin Poirier ba48e0
Jeff Mahoney 37049b
Jeff Mahoney 37049b
    def test_patch_references_empty_update(self):
Jeff Mahoney 37049b
        text = """
Jeff Mahoney 37049b
From: developer@site.com
Jeff Mahoney 37049b
Subject: some patch
Jeff Mahoney 37049b
Patch-mainline: v4.2-rc1
Jeff Mahoney 37049b
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 37049b
References:
Jeff Mahoney 37049b
Acked-by: developer@suse.com
Jeff Mahoney 37049b
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Jeff Mahoney 37049b
            self.header = header.Checker(text, True)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.EmptyTagError))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Jeff Mahoney 37049b
Jeff Mahoney 37049b
    def test_patch_references_missing_update(self):
Jeff Mahoney 37049b
        text = """
Jeff Mahoney 37049b
From: developer@site.com
Jeff Mahoney 37049b
Subject: some patch
Jeff Mahoney 37049b
Patch-mainline: v4.2-rc1
Jeff Mahoney 37049b
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 37049b
Acked-by: developer@suse.com
Jeff Mahoney 37049b
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text, True)
Jeff Mahoney 37049b
Jeff Mahoney 37049b
    def test_patch_references_multi_update(self):
Jeff Mahoney 37049b
        text = """
Jeff Mahoney 37049b
From: developer@site.com
Jeff Mahoney 37049b
Subject: some patch
Jeff Mahoney 37049b
Patch-mainline: v4.2-rc1
Jeff Mahoney 37049b
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 37049b
References: bsc#12345
Jeff Mahoney 37049b
References: bsc#12354
Jeff Mahoney 37049b
Acked-by: developer@suse.com
Jeff Mahoney 37049b
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text, True)
Jeff Mahoney 37049b
Jeff Mahoney 37049b
    def test_patch_references_multi2_update(self):
Jeff Mahoney 37049b
        text = """
Jeff Mahoney 37049b
From: developer@site.com
Jeff Mahoney 37049b
Subject: some patch
Jeff Mahoney 37049b
Patch-mainline: v4.2-rc1
Jeff Mahoney 37049b
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 37049b
References: bsc#12345 bsc#12354
Jeff Mahoney 37049b
Acked-by: developer@suse.com
Jeff Mahoney 37049b
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text, True)
Jeff Mahoney 37049b
Jeff Mahoney 37049b
    def test_patch_references_multi3_update(self):
Jeff Mahoney 37049b
        text = """
Jeff Mahoney 37049b
From: developer@site.com
Jeff Mahoney 37049b
Subject: some patch
Jeff Mahoney 37049b
Patch-mainline: v4.2-rc1
Jeff Mahoney 37049b
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 37049b
References: bsc#12345, bsc#12354
Jeff Mahoney 37049b
Acked-by: developer@suse.com
Jeff Mahoney 37049b
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text, True)
Jeff Mahoney 37049b
Jeff Mahoney 37049b
Jeff Mahoney 37049b
    def test_patch_references_multi3_update(self):
Jeff Mahoney 37049b
        text = """
Jeff Mahoney 37049b
From: developer@site.com
Jeff Mahoney 37049b
Subject: some patch
Jeff Mahoney 37049b
Patch-mainline: v4.2-rc1
Jeff Mahoney 37049b
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jeff Mahoney 37049b
References: bsc#12345, bsc#12354
Jeff Mahoney 37049b
References: fix for blahblah
Jeff Mahoney 37049b
Acked-by: developer@suse.com
Jeff Mahoney 37049b
"""
Jeff Mahoney 37049b
        self.header = header.Checker(text, True)
Jeff Mahoney 37049b
Jeff Mahoney 37049b
Benjamin Poirier ba48e0
    @unittest.skip("Enable this check when we want to require a real "
Benjamin Poirier ba48e0
                   "References tag")
Benjamin Poirier ba48e0
    def test_patch_references_only_freeform_update(self):
Benjamin Poirier ba48e0
        text = """
Benjamin Poirier ba48e0
From: developer@site.com
Benjamin Poirier ba48e0
Subject: some patch
Benjamin Poirier ba48e0
Patch-mainline: v4.2-rc1
Benjamin Poirier ba48e0
Git-commit: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Benjamin Poirier ba48e0
References: fix for blahblah
Benjamin Poirier ba48e0
Acked-by: developer@suse.com
Benjamin Poirier ba48e0
"""
Benjamin Poirier ba48e0
        with self.assertRaises(header.HeaderException) as cm:
Benjamin Poirier ba48e0
            self.header = header.Checker(text, True)
Benjamin Poirier ba48e0
Benjamin Poirier ba48e0
        e = cm.exception
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors(header.MissingTagError))
Benjamin Poirier ba48e0
        self.assertTrue(e.tag_is_missing('references'))
Benjamin Poirier ba48e0
        self.assertEqual(1, e.errors())
Michal Suchanek b5822d
Michal Suchanek b5822d
    def test_no_patch_mainline_for_kabi(self):
Michal Suchanek b5822d
        text = """
Michal Suchanek b5822d
From: developer@site.com
Michal Suchanek b5822d
Subject: some patch
Michal Suchanek b5822d
References: FATE#123456
Michal Suchanek b5822d
Acked-by: developer@suse.com
Michal Suchanek b5822d
"""
Michal Suchanek b5822d
        self.header = header.Checker(text, False, "patches.kabi/FATE123456_fix_kabi.patch")