| Total Complexity | 18 |
| Total Lines | 40 |
| Duplicated Lines | 0 % |
| 1 | |||
| 3 | class Diff(object): |
||
| 4 | |||
| 5 | defaultIgnore = ['_id'] |
||
| 6 | |||
| 7 | def __init__(self, file1, file2): |
||
| 8 | self.file1 = file1 |
||
| 9 | self.file2 = file2 |
||
| 10 | |||
| 11 | def _checkDiff(self, ignore=None, select=None): |
||
| 12 | assert isinstance(ignore, list) or ignore is None |
||
| 13 | if ignore is None: |
||
| 14 | ignore = [] |
||
| 15 | ignore += self.defaultIgnore |
||
| 16 | prov1 = self.file1.getProvenance() |
||
| 17 | prov2 = self.file2.getProvenance() |
||
| 18 | if select: |
||
| 19 | allkeys = set(prov1.keys()+prov2.keys()) |
||
| 20 | ignore = [k for k in allkeys if k not in select] |
||
| 21 | diffDict = {} |
||
| 22 | for k in set(prov1.keys()).difference(prov2.keys()): |
||
| 23 | if k not in ignore: |
||
| 24 | diffDict[k] = 'missingIn2' |
||
| 25 | for k in set(prov2.keys()).difference(prov1.keys()): |
||
| 26 | if k not in ignore: |
||
| 27 | diffDict[k] = 'missingIn1' |
||
| 28 | for k in set(prov1.keys()).intersection(prov2.keys()): |
||
| 29 | if k not in ignore: |
||
| 30 | if prov1[k] != prov2[k]: |
||
| 31 | diffDict[k] = 'value' |
||
| 32 | return diffDict |
||
| 33 | |||
| 34 | def areEqual(self, ignore=None, select=None): |
||
| 35 | return len(self._checkDiff(ignore, select)) == 0 |
||
| 36 | |||
| 37 | def assertEqual(self): |
||
| 38 | if not self.areEqual(): |
||
| 39 | raise AssertionError() |
||
| 40 | |||
| 41 | def assertEqualProtocol(self): |
||
| 42 | pass |
||
| 43 |