annotate rhodecode/tests/models/test_diff_parsers.py @ 3608:87b0a652b6b1 beta

comments: "Comment on pull request" feels more natural
author Mads Kiilerich <madski@unity3d.com>
date Mon, 25 Mar 2013 16:30:40 +0100
parents fb1709520112
children ce4b7023a492
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3035
fb1709520112 fix tests for python2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 3022
diff changeset
1 from __future__ import with_statement
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2 import os
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3 import unittest
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4 from rhodecode.tests import *
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5 from rhodecode.lib.diffs import DiffProcessor, NEW_FILENODE, DEL_FILENODE, \
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
6 MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
8 dn = os.path.dirname
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
9 FIXTURES = os.path.join(dn(dn(os.path.abspath(__file__))), 'fixtures')
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
10
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
11 DIFF_FIXTURES = {
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 'hg_diff_add_single_binary_file.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
13 (u'US Warszawa.jpg', 'A', ['b', NEW_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
15 'hg_diff_mod_single_binary_file.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
16 (u'US Warszawa.jpg', 'M', ['b', MOD_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
17 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
18 'hg_diff_del_single_binary_file.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
19 (u'US Warszawa.jpg', 'D', ['b', DEL_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
20 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21 'hg_diff_binary_and_normal.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
22 (u'img/baseline-10px.png', 'A', ['b', NEW_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
23 (u'js/jquery/hashgrid.js', 'A', [340, 0]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
24 (u'index.html', 'M', [3, 2]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
25 (u'less/docs.less', 'M', [34, 0]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
26 (u'less/scaffolding.less', 'M', [1, 3]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27 (u'readme.markdown', 'M', [1, 10]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
28 (u'img/baseline-20px.png', 'D', ['b', DEL_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
29 (u'js/global.js', 'D', [0, 75])
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
30 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
31 'hg_diff_chmod.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
32 (u'file', 'M', ['b', CHMOD_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
33 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
34 'hg_diff_rename_file.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
35 (u'file_renamed', 'M', ['b', RENAMED_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
36 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
37 'git_diff_chmod.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
38 (u'work-horus.xls', 'M', ['b', CHMOD_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
40 'git_diff_rename_file.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
41 (u'file.xls', 'M', ['b', RENAMED_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
42 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
43 'git_diff_mod_single_binary_file.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
44 ('US Warszawa.jpg', 'M', ['b', MOD_FILENODE])
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
45
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
46 ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
47 'git_diff_binary_and_normal.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
48 (u'img/baseline-10px.png', 'A', ['b', NEW_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
49 (u'js/jquery/hashgrid.js', 'A', [340, 0]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
50 (u'index.html', 'M', [3, 2]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
51 (u'less/docs.less', 'M', [34, 0]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
52 (u'less/scaffolding.less', 'M', [1, 3]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
53 (u'readme.markdown', 'M', [1, 10]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
54 (u'img/baseline-20px.png', 'D', ['b', DEL_FILENODE]),
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
55 (u'js/global.js', 'D', [0, 75])
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
56 ],
3022
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
57 'diff_with_diff_data.diff': [
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
58 (u'vcs/backends/base.py', 'M', [18, 2]),
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
59 (u'vcs/backends/git/repository.py', 'M', [46, 15]),
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
60 (u'vcs/backends/hg.py', 'M', [22, 3]),
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
61 (u'vcs/tests/test_git.py', 'M', [5, 5]),
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
62 (u'vcs/tests/test_repository.py', 'M', [174, 2])
0ed42ca7ff9e Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
63 ],
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64 # 'large_diff.diff': [
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
65 #
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
66 # ],
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
67
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69 }
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
70
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
71
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
72 def _diff_checker(fixture):
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
73 with open(os.path.join(FIXTURES, fixture)) as f:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
74 diff = f.read()
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
75
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
76 diff_proc = DiffProcessor(diff)
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
77 diff_proc_d = diff_proc.prepare()
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
78 data = [(x['filename'], x['operation'], x['stats']) for x in diff_proc_d]
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
79 expected_data = DIFF_FIXTURES[fixture]
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
80
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
81 assert expected_data == data
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
82
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
83
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
84 def test_parse_diff():
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
85 for fixture in DIFF_FIXTURES:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
86 yield _diff_checker, fixture