Files @ 531ab818cc3d
Branch filter:

Location: kallithea/rhodecode/tests/models/test_diff_parsers.py - annotation

Bradley M. Kuhn
Add javascript for Object Code excanvas (flot) version herein included and use that instead of minified version.

I had a bit of trouble finding the upstream on excanvas, as the version from
Google, which appears to be the original source, seems unmaintained.

However, it appears the version we're carrying in Kallithea is indeed from
the excanvas era of flot.

$ (cd /tmp; \
svn -r 135 checkout http://flot.googlecode.com/svn/trunk/ flot )
$ cp /tmp/flot/excanvas.js rhodecode/public/js/excanvas.js

I also verified the sha256sum of the min file matched ours:

$ sha256sum /tmp/flot/excanvas.min.js rhodecode/public/js/excanvas.min.js
5f94b032a110504b7b261eaf71392fa3e8d82cdc6455c0cba5c9f03cd34ed122 /tmp/flot/excanvas.min.js
5f94b032a110504b7b261eaf71392fa3e8d82cdc6455c0cba5c9f03cd34ed122 rhodecode/public/js/excanvas.min.js
fb1709520112
32471bd1f4ee
32471bd1f4ee
156cb1cdd7ad
ffd45b185016
32471bd1f4ee
ffd45b185016
ffd45b185016
32471bd1f4ee
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
7e9776f38c55
7e9776f38c55
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
7e9776f38c55
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
0ed42ca7ff9e
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
0ed42ca7ff9e
156cb1cdd7ad
156cb1cdd7ad
156cb1cdd7ad
156cb1cdd7ad
156cb1cdd7ad
156cb1cdd7ad
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
3e8f48ccca86
156cb1cdd7ad
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
32471bd1f4ee
32471bd1f4ee
32471bd1f4ee
5067d6e826a5
ce4b7023a492
ce4b7023a492
ce4b7023a492
32471bd1f4ee
ffd45b185016
32471bd1f4ee
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
ce4b7023a492
from __future__ import with_statement
from rhodecode.tests import *
from rhodecode.lib.diffs import DiffProcessor, NEW_FILENODE, DEL_FILENODE, \
    MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE
from rhodecode.tests.fixture import Fixture

fixture = Fixture()


DIFF_FIXTURES = {
    'hg_diff_add_single_binary_file.diff': [
        ('US Warszawa.jpg', 'A',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {NEW_FILENODE: 'new file 100755',
                  BIN_FILENODE: 'binary diff not shown'}}),
    ],
    'hg_diff_mod_single_binary_file.diff': [
        ('US Warszawa.jpg', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {MOD_FILENODE: 'modified file',
                  BIN_FILENODE: 'binary diff not shown'}}),
    ],

    'hg_diff_mod_single_file_and_rename_and_chmod.diff': [
        ('README', 'M',
         {'added': 3,
          'deleted': 0,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file',
                  RENAMED_FILENODE: 'file renamed from README.rst to README',
                  CHMOD_FILENODE: 'modified file chmod 100755 => 100644'}}),
    ],
    'hg_diff_mod_file_and_rename.diff': [
        ('README.rst', 'M',
         {'added': 3,
          'deleted': 0,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file',
                  RENAMED_FILENODE: 'file renamed from README to README.rst'}}),
    ],
    'hg_diff_del_single_binary_file.diff': [
        ('US Warszawa.jpg', 'D',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {DEL_FILENODE: 'deleted file',
                  BIN_FILENODE: 'binary diff not shown'}}),
    ],
    'hg_diff_chmod_and_mod_single_binary_file.diff': [
        ('gravatar.png', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755',
                  BIN_FILENODE: 'binary diff not shown'}}),
    ],
    'hg_diff_chmod.diff': [
        ('file', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {CHMOD_FILENODE: 'modified file chmod 100755 => 100644'}}),
    ],
    'hg_diff_rename_file.diff': [
        ('file_renamed', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {RENAMED_FILENODE: 'file renamed from file to file_renamed'}}),
    ],
    'hg_diff_rename_and_chmod_file.diff': [
        ('README', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755',
                  RENAMED_FILENODE: 'file renamed from README.rst to README'}}),
    ],
    'hg_diff_binary_and_normal.diff': [
        ('img/baseline-10px.png', 'A',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {NEW_FILENODE: 'new file 100644',
                  BIN_FILENODE: 'binary diff not shown'}}),
        ('js/jquery/hashgrid.js', 'A',
         {'added': 340,
          'deleted': 0,
          'binary': False,
          'ops': {NEW_FILENODE: 'new file 100755'}}),
        ('index.html', 'M',
         {'added': 3,
          'deleted': 2,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('less/docs.less', 'M',
         {'added': 34,
          'deleted': 0,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('less/scaffolding.less', 'M',
         {'added': 1,
          'deleted': 3,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('readme.markdown', 'M',
         {'added': 1,
          'deleted': 10,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('img/baseline-20px.png', 'D',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {DEL_FILENODE: 'deleted file',
                  BIN_FILENODE: 'binary diff not shown'}}),
        ('js/global.js', 'D',
         {'added': 0,
          'deleted': 75,
          'binary': False,
          'ops': {DEL_FILENODE: 'deleted file'}})
    ],
    'git_diff_chmod.diff': [
        ('work-horus.xls', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755'}})
    ],
    'git_diff_rename_file.diff': [
        ('file.xls', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {RENAMED_FILENODE: 'file renamed from work-horus.xls to file.xls'}})
    ],
    'git_diff_mod_single_binary_file.diff': [
        ('US Warszawa.jpg', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {MOD_FILENODE: 'modified file',
                  BIN_FILENODE: 'binary diff not shown'}})
    ],
    'git_diff_binary_and_normal.diff': [
        ('img/baseline-10px.png', 'A',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {NEW_FILENODE: 'new file 100644',
                  BIN_FILENODE: 'binary diff not shown'}}),
        ('js/jquery/hashgrid.js', 'A',
         {'added': 340,
          'deleted': 0,
          'binary': False,
          'ops': {NEW_FILENODE: 'new file 100755'}}),
        ('index.html', 'M',
         {'added': 3,
          'deleted': 2,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('less/docs.less', 'M',
         {'added': 34,
          'deleted': 0,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('less/scaffolding.less', 'M',
         {'added': 1,
          'deleted': 3,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('readme.markdown', 'M',
         {'added': 1,
          'deleted': 10,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('img/baseline-20px.png', 'D',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {DEL_FILENODE: 'deleted file',
                  BIN_FILENODE: 'binary diff not shown'}}),
        ('js/global.js', 'D',
         {'added': 0,
          'deleted': 75,
          'binary': False,
          'ops': {DEL_FILENODE: 'deleted file'}}),
    ],
    'diff_with_diff_data.diff': [
        ('vcs/backends/base.py', 'M',
         {'added': 18,
          'deleted': 2,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('vcs/backends/git/repository.py', 'M',
         {'added': 46,
          'deleted': 15,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('vcs/backends/hg.py', 'M',
         {'added': 22,
          'deleted': 3,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('vcs/tests/test_git.py', 'M',
         {'added': 5,
          'deleted': 5,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
        ('vcs/tests/test_repository.py', 'M',
         {'added': 174,
          'deleted': 2,
          'binary': False,
          'ops': {MOD_FILENODE: 'modified file'}}),
    ],
    'hg_diff_copy_file.diff': [
        ('file2', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {COPIED_FILENODE: 'file copied from file1 to file2'}}),
    ],
    'hg_diff_copy_and_modify_file.diff': [
        ('file3', 'M',
         {'added': 1,
          'deleted': 0,
          'binary': False,
          'ops': {COPIED_FILENODE: 'file copied from file2 to file3',
                  MOD_FILENODE: 'modified file'}}),
    ],
    'hg_diff_copy_and_chmod_file.diff': [
        ('file4', 'M',
         {'added': 0,
          'deleted': 0,
          'binary': True,
          'ops': {COPIED_FILENODE: 'file copied from file3 to file4',
                  CHMOD_FILENODE: 'modified file chmod 100644 => 100755'}}),
    ],
    'hg_diff_copy_chmod_and_edit_file.diff': [
        ('file5', 'M',
         {'added': 2,
          'deleted': 1,
          'binary': False,
          'ops': {COPIED_FILENODE: 'file copied from file4 to file5',
                  CHMOD_FILENODE: 'modified file chmod 100755 => 100644',
                  MOD_FILENODE: 'modified file'}}),
    ]
#     'large_diff.diff': [
#         ('.hgignore', 'A', {'deleted': 0, 'binary': False, 'added': 3, 'ops': {1: 'new file 100644'}}),
#         ('MANIFEST.in', 'A', {'deleted': 0, 'binary': False, 'added': 3, 'ops': {1: 'new file 100644'}}),
#         ('README.txt', 'A', {'deleted': 0, 'binary': False, 'added': 19, 'ops': {1: 'new file 100644'}}),
#         ('development.ini', 'A', {'deleted': 0, 'binary': False, 'added': 116, 'ops': {1: 'new file 100644'}}),
#         ('docs/index.txt', 'A', {'deleted': 0, 'binary': False, 'added': 19, 'ops': {1: 'new file 100644'}}),
#         ('ez_setup.py', 'A', {'deleted': 0, 'binary': False, 'added': 276, 'ops': {1: 'new file 100644'}}),
#         ('hgapp.py', 'A', {'deleted': 0, 'binary': False, 'added': 26, 'ops': {1: 'new file 100644'}}),
#         ('hgwebdir.config', 'A', {'deleted': 0, 'binary': False, 'added': 21, 'ops': {1: 'new file 100644'}}),
#         ('pylons_app.egg-info/PKG-INFO', 'A', {'deleted': 0, 'binary': False, 'added': 10, 'ops': {1: 'new file 100644'}}),
#         ('pylons_app.egg-info/SOURCES.txt', 'A', {'deleted': 0, 'binary': False, 'added': 33, 'ops': {1: 'new file 100644'}}),
#         ('pylons_app.egg-info/dependency_links.txt', 'A', {'deleted': 0, 'binary': False, 'added': 1, 'ops': {1: 'new file 100644'}}),
#         #TODO:
#     ],

}


class DiffLibTest(BaseTestCase):

    @parameterized.expand([(x,) for x in DIFF_FIXTURES])
    def test_diff(self, diff_fixture):

        diff = fixture.load_resource(diff_fixture)

        diff_proc = DiffProcessor(diff)
        diff_proc_d = diff_proc.prepare()
        data = [(x['filename'], x['operation'], x['stats']) for x in diff_proc_d]
        expected_data = DIFF_FIXTURES[diff_fixture]
        self.assertListEqual(expected_data, data)