Files @ 60335b702a00
Branch filter:

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

Mads Kiilerich
invalidation: don't create CacheInvalidation records on startup

Creating the records early gave an advantage before lightweight was introduced.
With lightweight it is no longer necessary.

The records will be created on demand anyway and there is no reason to create and
maintain them before they are used.
from __future__ import with_statement
import os
import unittest
from rhodecode.tests import *
from rhodecode.lib.diffs import DiffProcessor, NEW_FILENODE, DEL_FILENODE, \
    MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE

dn = os.path.dirname
FIXTURES = os.path.join(dn(dn(os.path.abspath(__file__))), 'fixtures')

DIFF_FIXTURES = {
    'hg_diff_add_single_binary_file.diff': [
        (u'US Warszawa.jpg', 'A', ['b', NEW_FILENODE]),
    ],
    'hg_diff_mod_single_binary_file.diff': [
        (u'US Warszawa.jpg', 'M', ['b', MOD_FILENODE]),
    ],
    'hg_diff_del_single_binary_file.diff': [
        (u'US Warszawa.jpg', 'D', ['b', DEL_FILENODE]),
    ],
    'hg_diff_binary_and_normal.diff': [
        (u'img/baseline-10px.png', 'A', ['b', NEW_FILENODE]),
        (u'js/jquery/hashgrid.js', 'A', [340, 0]),
        (u'index.html',            'M', [3, 2]),
        (u'less/docs.less',        'M', [34, 0]),
        (u'less/scaffolding.less', 'M', [1, 3]),
        (u'readme.markdown',       'M', [1, 10]),
        (u'img/baseline-20px.png', 'D', ['b', DEL_FILENODE]),
        (u'js/global.js',          'D', [0, 75])
    ],
    'hg_diff_chmod.diff': [
        (u'file', 'M', ['b', CHMOD_FILENODE]),
    ],
    'hg_diff_rename_file.diff': [
        (u'file_renamed', 'M', ['b', RENAMED_FILENODE]),
    ],
    'git_diff_chmod.diff': [
        (u'work-horus.xls', 'M', ['b', CHMOD_FILENODE]),
    ],
    'git_diff_rename_file.diff': [
        (u'file.xls', 'M', ['b', RENAMED_FILENODE]),
    ],
    'git_diff_mod_single_binary_file.diff': [
        ('US Warszawa.jpg', 'M', ['b', MOD_FILENODE])

    ],
    'git_diff_binary_and_normal.diff': [
        (u'img/baseline-10px.png', 'A', ['b', NEW_FILENODE]),
        (u'js/jquery/hashgrid.js', 'A', [340, 0]),
        (u'index.html',            'M', [3, 2]),
        (u'less/docs.less',        'M', [34, 0]),
        (u'less/scaffolding.less', 'M', [1, 3]),
        (u'readme.markdown',       'M', [1, 10]),
        (u'img/baseline-20px.png', 'D', ['b', DEL_FILENODE]),
        (u'js/global.js',          'D', [0, 75])
    ],
    'diff_with_diff_data.diff': [
        (u'vcs/backends/base.py', 'M', [18, 2]),
        (u'vcs/backends/git/repository.py', 'M', [46, 15]),
        (u'vcs/backends/hg.py', 'M', [22, 3]),
        (u'vcs/tests/test_git.py', 'M', [5, 5]),
        (u'vcs/tests/test_repository.py', 'M', [174, 2])
    ],
#    'large_diff.diff': [
#
#    ],


}


def _diff_checker(fixture):
    with open(os.path.join(FIXTURES, fixture)) as f:
        diff = f.read()

    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[fixture]

    assert expected_data == data


def test_parse_diff():
    for fixture in DIFF_FIXTURES:
        yield _diff_checker, fixture