Differences between revisions 18 and 19
Revision 18 as of 2017-01-23 19:08:23
Size: 7486
Comment: add tests 28.29.30
Revision 19 as of 2017-01-23 19:09:57
Size: 7470
Comment: move tests 28,29,30 into the right column
Deletions are marked like this. Additions are marked like this.
Line 27: Line 27:
||'''edit_f''' || || || || 13. resolve: ignore<<BR>>14. resolve: accept || || 15. resolve: text merge<<BR>>28. with parent moved -- resolve: text merge<<BR>> 29. with parent moved back -- resolve: text merge<<BR>>30. with parent moved twice -- resolve: text merge ||           || ||'''edit_f''' || || || || 13. resolve: ignore<<BR>>14. resolve: accept || || 15. resolve: text merge || 28. with parent moved -- resolve: text merge<<BR>>29. with parent moved back -- resolve: text merge<<BR>>30. with parent moved twice -- resolve: text merge ||

Tree Conflict Tests

Below you can find, per "operation", a matrix of tree conflict tests, so we have an idea of how much work is still left to increase test coverage. The matrix row headers give the "local" situation, the column headers the "incoming change". These are only meant to be broad categories, an actual test may build up a very complex situation (but still be part of a certain category). The categories might need to be extended.

The numbers refer to the test numbers in conflicts_test.c. An {X} indicates an XFail test.

TODO:

  • Make it possible to add additional comments related to specific tests (as a footnote?).
  • Extend the matrices with extra categories. For instance, for "merge" I'm thinking of using "add_f,edit_f" to indicate "f was added on the branch (anything before the comma) and locally edited (anything behind the comma)". In that case ",add_f" would be "branch is in sync, but has added f as a local uncommitted change"
  • Create "cherrypick" as a specific "operation" with its own matrix? Here we could also create additional categories for incoming, to discern between what happened on trunk before the cherrypick-rev, and what's part of the cherrypick-rev ("mv_f,edit_f" then means: file was moved on trunk, and edited, and only the edit is cherrypick-merged).
  • Create a script that can parse our C (and python?) tests, or their --list output. To help the script we could add some sort of tagging to our tests (in the test description), so it knows to what part of what matrix the test belongs. For instance: "[add_f-add_f] incoming add file ignore".

merge

incoming>
local \/

edit_f

add_f

add_d

rm_f

rm_d

mv_f

mv_d^f

edit_f

10. resolve: ignore
11. resolve: accept
24. incoming replace: options

12. resolve: text merge
24. resolve: merge with text conflict
22. chained move - resolve: text merge
27: resolve: text merge (prop conflict)
33: resolve: text merge (with keywords)

17. incoming move dir: options
18. with local edit
19. with local add
23. with moved file

add_f

1. resolve: ignore
2. resolve: text merge

add_d

3. resolve: replace
4. resolve: replace and merge
5. with file change - resolve: merge
6. with move history - resolve: merge
7. resolve: replace
8. resolve: replace and merge
9. with file change - resolve: replace

rm_f

18. resolve: accept

rm_d

mv_f

23. options

mv_d^f

update

incoming>
local \/

edit_f

add_f

add_d

rm_f

rm_d

mv_f

mv_d^f

edit_f

13. resolve: ignore
14. resolve: accept

15. resolve: text merge

28. with parent moved -- resolve: text merge
29. with parent moved back -- resolve: text merge
30. with parent moved twice -- resolve: text merge

add_f

31: resolve: text merge

add_d

34. resolve: ignore
35. resolve: merge
36. with obstructions -- resolve: merge

rm_f

rm_d

mv_f

32: resolve: move dir merge

mv_d^f

switch

incoming>
local \/

edit_f

add_f

add_d

rm_f

rm_d

mv_f

mv_d^f

edit_f

16. resolve: text merge

add_f

add_d

rm_f

rm_d

mv_f

mv_d^f


Output of conflicts-test --list that was used for the above table:

Test #  Mode   Test Description
------  -----  ----------------
   1           merge incoming add file text merge
   2           merge incoming add file replace and merge
   3           merge incoming add dir ignore
   4           merge incoming add dir merge
   5           merge incoming add dir merge with file change
   6           merge incoming add dir merge with move history
   7           merge incoming add dir replace
   8           merge incoming add dir replace and merge
   9           merge incoming add dir replace with file change
  10           merge incoming delete file ignore
  11           merge incoming delete file accept
  12           merge incoming move file text merge
  13           update incoming delete file ignore
  14           update incoming delete file accept
  15           update incoming move file text merge
  16           switch incoming move file text merge
  17           merge incoming move dir
  18           merge incoming move dir with local edit
  19           merge incoming move dir with local add
  20           merge incoming delete vs local delete
  21           merge file property
  22           merge incoming move file merge with text conflict
  23           merge incoming edit for a moved-away working file
  24           merge incoming chained move vs local edit
  25           merge incoming moved dir with moved file
  26           merge incoming file move with new line of history
  27           update incoming dir move with nested file move
  28           update incoming dir move with parent move
  29           update incoming dir move with parent moved back
  30           update incoming dir move with parent moved twice
  31           update incoming add file text merge
  32           merge incoming move file merge with prop conflict
  33           merge incoming move file merge with keywords
  34           update incoming add dir ignore
  35           update incoming add dir merge
  36           update incoming add dir merge with obstructions

TreeConflictTests (last edited 2017-01-23 19:09:57 by StefanSperling)