Esempio n. 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)
Esempio n. 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)
Esempio n. 3
0
 def test_warning_commit(self):
     try:
         df = DiffParser(
             "askldjlaksjdlaksdjlaskdjlaskjdlaksjdlaskjdlaskjdlasdjlaksjd")
         self.assertEqual(False, True)
     except IOError:
         self.assertEqual(True, True)
Esempio n. 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)
Esempio n. 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)
Esempio n. 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)
Esempio n. 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)
Esempio n. 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))
Esempio n. 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
Esempio n. 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'
Esempio n. 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)
Esempio n. 12
0
 def test_initialization_failing(self):
     with self.assertRaises(IOError):
         DiffParser(None)
Esempio n. 13
0
 def test_initialization_success(self):
     df = DiffParser(self.str)
     self.assertIsInstance(df, DiffParser,
                           "Should be an instance of DiffParser")
Esempio n. 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)
Esempio n. 15
0
 def test_can_return_hash(self):
     df = DiffParser(self.str)
     self.assertEqual("2ecec1bde6e2885073170dffcc27f3c362801019", df.hash)
Esempio n. 16
0
 def test_can_return_author(self):
     df = DiffParser(self.str)
     self.assertEqual("Artem Smirnov", df.author["name"])
     self.assertEqual("*****@*****.**", df.author["email"])
Esempio n. 17
0
 def test_can_return_date(self):
     df = DiffParser(self.str)
     self.assertEqual("Thu Dec 11 13:49:28 2014 +0300", df.date)
Esempio n. 18
0
 def test_can_return_message(self):
     df = DiffParser(self.str)
     self.assertEqual("test32", df.message)