Example #1
0
    def test_detect_file_deletion(self):
        df = DiffParser(self.delete_str)
        self.assertEqual("/tests/deleted_file.txt", df.files[0].path)
        self.assertEqual("D", df.files[0].action)
        diff = """@@ -1 +0,0 @@
-Delete this file"""
        self.assertEqual(diff, df.files[0].diff)
Example #2
0
    def test_detect_file_creation(self):
        df = DiffParser(self.creation_str)
        self.assertEqual("/tests/created_file.txt", df.files[0].path)
        self.assertEqual("C", df.files[0].action)
        diff = """@@ -0,0 +1 @@
+Test file creation"""
        self.assertEqual(diff, df.files[0].diff)
Example #3
0
 def test_warning_commit(self):
     try:
         df = DiffParser(
             "askldjlaksjdlaksdjlaskdjlaskjdlaksjdlaskjdlaskjdlasdjlaksjd")
         self.assertEqual(False, True)
     except IOError:
         self.assertEqual(True, True)
Example #4
0
    def test_binary_file_handling(self):
        self.str = """commit 5cb75f0534224beed6f402352898e3d62e7df2d8
Author: gvammer <*****@*****.**>
Date:   Thu Jan 8 14:26:16 2015 +0300

    new

diff --git a/bitrix/templates/main/js/kladr/jquery.kladr.images/spinner.png b/bitrix/templates/main/js/kladr/jquery.kladr.images/spinner.png
new file mode 100644
index 0000000..8bbafe9
Binary files /dev/null and b/bitrix/templates/main/js/kladr/jquery.kladr.images/spinner.png differ
diff --git a/bitrix/templates/main/js/kladr/jquery.kladr.js b/bitrix/templates/main/js/kladr/jquery.kladr.js
new file mode 100644
index 0000000..fdf409b
--- /dev/null
+++ b/bitrix/templates/main/js/kladr/jquery.kladr.js
@@ -0,0 +0,2 @@
+(function($) {
+    $.kladr = {};"""
        df = DiffParser(self.str)
        summary = df.files[0].summary
        self.assertEqual(summary['binary'], True)
        self.assertEqual(summary['deleted'], 0)
        self.assertEqual(summary['created'], 1)
        self.assertEqual(2, len(df.files))
        self.assertEqual(
            "/bitrix/templates/main/js/kladr/jquery.kladr.images/spinner.png",
            df.files[0].path)
        self.assertEqual("/bitrix/templates/main/js/kladr/jquery.kladr.js",
                         df.files[1].path)
        summary = df.files[1].summary
        self.assertEqual(summary['binary'], False)
        self.assertEqual(summary['deleted'], 0)
        self.assertEqual(summary['created'], 2)
Example #5
0
    def test_can_return_multiline_comment(self):
        df = DiffParser(self.multiline_comment)
        msg = """This is multiline commit message

This is the desctiption of multiline message
This is the third line
Test it well
Cause file diffs are dependent on this"""
        self.assertEqual(msg, df.message)
Example #6
0
    def test_can_return_diff_files(self):
        df = DiffParser(self.str)
        self.assertEqual("/index.html", df.files[0].path)
        self.assertEqual("M", df.files[0].action)
        diff = """@@ -54,3 +54,4 @@ test29
 test30
 test31
 test32
+test33"""
        self.assertEqual(diff, df.files[0].diff)
Example #7
0
    def test_multifile_handling(self):
        df = DiffParser(self.move_str)
        self.assertEqual(2, len(df.files))
        self.assertEqual("/tests/created_file.txt", df.files[0].path)
        self.assertEqual("D", df.files[0].action)
        self.assertEqual("""@@ -1 +0,0 @@
-Test file creation""", df.files[0].diff)
        self.assertEqual("/tests/file.txt", df.files[1].path)
        self.assertEqual("C", df.files[1].action)
        self.assertEqual("""@@ -0,0 +1 @@
+Test file creation^M""", df.files[1].diff)
Example #8
0
    def test_weird_commits(self):
        self.str = '''commit 311eefd781ab75f689bf56b27ca6860981ce469f
Author: Artem Smirnov <*****@*****.**>
Date:   Sat Jul 25 19:01:29 2015 +0300

    F****d up commit

diff --git a/.gitkeep b/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/empty file b/empty file
new file mode 100644
index 0000000..e69de29
diff --git a/empty_file b/empty_file
new file mode 100644
index 0000000..e69de29
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..e69de29
diff --git a/xfile.txt b/xfile.txt
new file mode 100644
index 0000000..5bb7edf
--- /dev/null
+++ b/xfile.txt
@@ -0,0 +1 @@
+this is not empty'''
        df = DiffParser(self.str)
        summary = df.files[0].summary
        self.assertEqual(summary['binary'], False)
        self.assertEqual(summary['deleted'], 0)
        self.assertEqual(summary['created'], 0)
        self.assertEqual(df.files[0].action, "C")
        self.assertEqual(df.files[0].lines, [])
        self.assertEqual("/.gitkeep", df.files[0].path)

        summary = df.files[1].summary
        self.assertEqual(summary['binary'], False)
        self.assertEqual(summary['deleted'], 0)
        self.assertEqual(summary['created'], 0)
        self.assertEqual(df.files[1].action, "C")
        self.assertEqual(df.files[1].lines, [])
        self.assertEqual("/empty file", df.files[1].path)

        summary = df.files[2].summary
        self.assertEqual(summary['binary'], False)
        self.assertEqual(summary['deleted'], 0)
        self.assertEqual(summary['created'], 0)
        self.assertEqual(df.files[2].action, "C")
        self.assertEqual(df.files[2].lines, [])
        self.assertEqual("/empty_file", df.files[2].path)

        self.assertEqual(5, len(df.files))
Example #9
0
    def get_diff(message):
        if not message.commit:
            return False
        try:
            warden = Warden(message.author, message.project, is_loaded=True)
        except AssertionError:
            return False
        _repo = Repo(warden.repo_path)
        try:
            _diff = _repo.git.show(message.commit, U=10)
            df = DiffParser(_diff)
            df = Warden.sniff_files(_repo, df, message)
        except IOError:
            return False

        return df
Example #10
0
    def write_message(self, ref, hashes):
        if not self.is_task():
            return 'ERROR: Can\'t find active task'
        _repo = Repo(self.repo_path)
        for _hash in hashes:
            commit_diff = _repo.git.show(_hash)
            try:
                df = DiffParser(commit_diff)
                comment = PM_Task_Message.create_commit_message(
                    df, self.user, self.timer.task)
                mess = RedisMessage(service_queue,
                                    objectName='comment',
                                    type='add',
                                    fields=comment.getJson(
                                        {'noveltyMark': True}))
                mess.send()

                ar_email = comment.task.getUsersEmail([self.user.id])
                task_data = {
                    'task_url':
                    comment.task.url,
                    'name':
                    comment.task.name,
                    'dateCreate':
                    timezone.make_aware(datetime.datetime.now(),
                                        timezone.get_current_timezone()),
                    'comment': {
                        'text':
                        comment.text,
                        'author':
                        ' '.join([
                            comment.author.first_name, comment.author.last_name
                        ])
                    }
                }
                mail_sender = emailMessage('new_task_commit',
                                           {'task': task_data},
                                           u'Коммит: ' + task_data['name'])

                try:
                    mail_sender.send(ar_email)
                except Exception:
                    print 'Email has not sent'

            except IOError:
                return 'ERROR: Commit #' + commit_diff + ' could not be parsed'
Example #11
0
    def test_empty_file_deleted(self):
        self.str = '''commit adc7284f7d8595b194fbeaf1afe5228a74126c48
Author: Artem Smirnov <*****@*****.**>
Date:   Sat Jul 25 12:55:10 2015 +0300

test6

diff --git a/test6.html b/test6.html
deleted file mode 100644
index 0000000..e69de29'''
        df = DiffParser(self.str)
        summary = df.files[0].summary
        self.assertEqual(summary['binary'], False)
        self.assertEqual(summary['deleted'], 0)
        self.assertEqual(df.files[0].action, "D")
        self.assertEqual(summary['created'], 0)
        self.assertEqual(1, len(df.files))
        self.assertEqual("/test6.html", df.files[0].path)
Example #12
0
 def test_initialization_failing(self):
     with self.assertRaises(IOError):
         DiffParser(None)
Example #13
0
 def test_initialization_success(self):
     df = DiffParser(self.str)
     self.assertIsInstance(df, DiffParser,
                           "Should be an instance of DiffParser")
Example #14
0
 def test_summary_for_file(self):
     df = DiffParser(self.str)
     summary = df.files[0].summary
     self.assertEqual(summary['deleted'], 0)
     self.assertEqual(summary['created'], 1)
     self.assertEqual(summary['binary'], False)
Example #15
0
 def test_can_return_hash(self):
     df = DiffParser(self.str)
     self.assertEqual("2ecec1bde6e2885073170dffcc27f3c362801019", df.hash)
Example #16
0
 def test_can_return_author(self):
     df = DiffParser(self.str)
     self.assertEqual("Artem Smirnov", df.author["name"])
     self.assertEqual("*****@*****.**", df.author["email"])
Example #17
0
 def test_can_return_date(self):
     df = DiffParser(self.str)
     self.assertEqual("Thu Dec 11 13:49:28 2014 +0300", df.date)
Example #18
0
 def test_can_return_message(self):
     df = DiffParser(self.str)
     self.assertEqual("test32", df.message)