File: test_files_same.py

package info (click to toggle)
meld 3.22.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,784 kB
  • sloc: python: 14,675; xml: 317; sh: 82; makefile: 26
file content (78 lines) | stat: -rw-r--r-- 3,302 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from enum import Enum
from os import path

import pytest

from .fixture import make

DiffResult = Enum('DiffResult', 'Same SameFiltered DodgySame DodgyDifferent Different FileError')


@pytest.fixture
def differnt_dirs():
    make()


def abspath(*args):
    d = path.dirname(__file__)
    return list(path.join(d, arg) for arg in args)


cmp_args = {
    'shallow-comparison': False,
    'time-resolution': 10000000000,
    'ignore_blank_lines': True,
    'apply-text-filters': True
}

no_ignore_args = dict(cmp_args)
no_ignore_args['ignore_blank_lines'] = False
no_ignore_args['apply-text-filters'] = False

dodgy_args = dict(cmp_args)
dodgy_args['shallow-comparison'] = True


@pytest.mark.parametrize('files, regexes, comparison_args, expected', [
    # empty file list
    ((), [], cmp_args, DiffResult.Same),
    # dirs are same
    (('diffs/a', 'diffs/b'), [], cmp_args, DiffResult.Same),
    # dir and file ar diffent
    (('diffs/a', 'diffs/b/b.txt'), [], cmp_args, DiffResult.Different),
    # shallow equal (time + size)
    (('diffs/a/d/d.txt', 'diffs/b/d/d.1.txt'), [], dodgy_args, DiffResult.DodgySame),
    # empty files (fastest equal, wont read files)
    (('diffs/a/c/c.txt', 'diffs/b/c/c.txt'), [], cmp_args, DiffResult.Same),
    # 4.1kb vs 4.1kb file (slow equal, read both until end)
    (('diffs/a/d/d.txt', 'diffs/b/d/d.txt'), [], cmp_args, DiffResult.Same),
    # 4.1kb vs 4.1kb file (fast different, first chunk diff)
    (('diffs/a/d/d.txt', 'diffs/b/d/d.1.txt'), [], cmp_args, DiffResult.Different),
    # 4.1kb vs 4.1kb file (slow different, read both until end)
    (('diffs/a/d/d.txt', 'diffs/b/d/d.2.txt'), [], cmp_args, DiffResult.Different),
    # empty vs 1b file (fast different, first chunk diff)
    (('diffs/a/e/g/g.txt', 'diffs/b/e/g/g.txt'), [], cmp_args, DiffResult.Different),
    # CRLF vs CRLF with trailing, ignoring blank lines
    (('diffs/a/crlf.txt', 'diffs/a/crlftrailing.txt'), [], cmp_args, DiffResult.SameFiltered),
    # CRLF vs CRLF with trailing, not ignoring blank lines
    (('diffs/a/crlf.txt', 'diffs/a/crlftrailing.txt'), [], no_ignore_args, DiffResult.Different),
    # LF vs LF with trailing, ignoring blank lines
    (('diffs/b/lf.txt', 'diffs/b/lftrailing.txt'), [], cmp_args, DiffResult.SameFiltered),
    # LF vs LF with trailing, not ignoring blank lines
    (('diffs/b/lf.txt', 'diffs/b/lftrailing.txt'), [], no_ignore_args, DiffResult.Different),
    # CRLF vs LF, ignoring blank lines
    (('diffs/a/crlf.txt', 'diffs/b/lf.txt'), [], cmp_args, DiffResult.SameFiltered),
    # CRLF vs LF, not ignoring blank lines
    (('diffs/a/crlf.txt', 'diffs/b/lf.txt'), [], no_ignore_args, DiffResult.Different),
    # CRLF with trailing vs LF with trailing, ignoring blank lines
    (('diffs/a/crlftrailing.txt', 'diffs/b/lftrailing.txt'), [], cmp_args, DiffResult.SameFiltered),
    # CRLF with trailing vs LF with trailing, not ignoring blank lines
    (('diffs/a/crlftrailing.txt', 'diffs/b/lftrailing.txt'), [], no_ignore_args, DiffResult.Different),
])
def test_files_same(files, regexes, comparison_args, expected, differnt_dirs):
    from meld.dirdiff import _files_same

    files_path = abspath(*files)
    result = _files_same(files_path, regexes, comparison_args)
    actual = DiffResult(result + 1)
    assert actual == expected