tests/test-revert.t
changeset 22141 6b522c1139a9
parent 22140 74e932047975
child 22142 e1a69b0ac9e6
equal deleted inserted replaced
22140:74e932047975 22141:6b522c1139a9
   456   >     # wc: file exist with a content different from base and parent
   456   >     # wc: file exist with a content different from base and parent
   457   >     'wc': lambda cc: 'wc',
   457   >     'wc': lambda cc: 'wc',
   458   >     # removed: file is missing and marked as untracked
   458   >     # removed: file is missing and marked as untracked
   459   >     'removed': lambda cc: None,
   459   >     'removed': lambda cc: None,
   460   > }
   460   > }
       
   461   > # untracked-X is a version of X where the file is not tracked (? unknown)
       
   462   > wccontent['untracked-clean'] = wccontent['clean']
   461   > 
   463   > 
   462   > # build the combination of possible states
   464   > # build the combination of possible states
   463   > combination = []
   465   > combination = []
   464   > for ctxkey in ctxcontent:
   466   > for ctxkey in ctxcontent:
   465   >     for wckey in wccontent:
   467   >     for wckey in wccontent:
   502 
   504 
   503   $ python gen-revert-cases.py filelist
   505   $ python gen-revert-cases.py filelist
   504   added_clean
   506   added_clean
   505   added_removed
   507   added_removed
   506   added_revert
   508   added_revert
       
   509   added_untracked-clean
   507   added_wc
   510   added_wc
   508   clean_clean
   511   clean_clean
   509   clean_removed
   512   clean_removed
   510   clean_revert
   513   clean_revert
       
   514   clean_untracked-clean
   511   clean_wc
   515   clean_wc
   512   missing_clean
   516   missing_clean
   513   missing_removed
   517   missing_removed
   514   missing_revert
   518   missing_revert
       
   519   missing_untracked-clean
   515   missing_wc
   520   missing_wc
   516   modified_clean
   521   modified_clean
   517   modified_removed
   522   modified_removed
   518   modified_revert
   523   modified_revert
       
   524   modified_untracked-clean
   519   modified_wc
   525   modified_wc
   520   removed_clean
   526   removed_clean
   521   removed_removed
   527   removed_removed
   522   removed_revert
   528   removed_revert
       
   529   removed_untracked-clean
   523   removed_wc
   530   removed_wc
   524 
   531 
   525 Script to make a simple text version of the content
   532 Script to make a simple text version of the content
   526 ---------------------------------------------------
   533 ---------------------------------------------------
   527 
   534 
   548   $ python ../gen-revert-cases.py base
   555   $ python ../gen-revert-cases.py base
   549   $ hg addremove --similarity 0
   556   $ hg addremove --similarity 0
   550   adding clean_clean
   557   adding clean_clean
   551   adding clean_removed
   558   adding clean_removed
   552   adding clean_revert
   559   adding clean_revert
       
   560   adding clean_untracked-clean
   553   adding clean_wc
   561   adding clean_wc
   554   adding modified_clean
   562   adding modified_clean
   555   adding modified_removed
   563   adding modified_removed
   556   adding modified_revert
   564   adding modified_revert
       
   565   adding modified_untracked-clean
   557   adding modified_wc
   566   adding modified_wc
   558   adding removed_clean
   567   adding removed_clean
   559   adding removed_removed
   568   adding removed_removed
   560   adding removed_revert
   569   adding removed_revert
       
   570   adding removed_untracked-clean
   561   adding removed_wc
   571   adding removed_wc
   562   $ hg status
   572   $ hg status
   563   A clean_clean
   573   A clean_clean
   564   A clean_removed
   574   A clean_removed
   565   A clean_revert
   575   A clean_revert
       
   576   A clean_untracked-clean
   566   A clean_wc
   577   A clean_wc
   567   A modified_clean
   578   A modified_clean
   568   A modified_removed
   579   A modified_removed
   569   A modified_revert
   580   A modified_revert
       
   581   A modified_untracked-clean
   570   A modified_wc
   582   A modified_wc
   571   A removed_clean
   583   A removed_clean
   572   A removed_removed
   584   A removed_removed
   573   A removed_revert
   585   A removed_revert
       
   586   A removed_untracked-clean
   574   A removed_wc
   587   A removed_wc
   575   $ hg commit -m 'base'
   588   $ hg commit -m 'base'
   576 
   589 
   577 (create a simple text version of the content)
   590 (create a simple text version of the content)
   578 
   591 
   579   $ python ../dircontent.py > ../content-base.txt
   592   $ python ../dircontent.py > ../content-base.txt
   580   $ cat ../content-base.txt
   593   $ cat ../content-base.txt
   581   base   clean_clean
   594   base   clean_clean
   582   base   clean_removed
   595   base   clean_removed
   583   base   clean_revert
   596   base   clean_revert
       
   597   base   clean_untracked-clean
   584   base   clean_wc
   598   base   clean_wc
   585   base   modified_clean
   599   base   modified_clean
   586   base   modified_removed
   600   base   modified_removed
   587   base   modified_revert
   601   base   modified_revert
       
   602   base   modified_untracked-clean
   588   base   modified_wc
   603   base   modified_wc
   589   base   removed_clean
   604   base   removed_clean
   590   base   removed_removed
   605   base   removed_removed
   591   base   removed_revert
   606   base   removed_revert
       
   607   base   removed_untracked-clean
   592   base   removed_wc
   608   base   removed_wc
   593 
   609 
   594 Create parent changeset
   610 Create parent changeset
   595 
   611 
   596   $ python ../gen-revert-cases.py parent
   612   $ python ../gen-revert-cases.py parent
   597   $ hg addremove --similarity 0
   613   $ hg addremove --similarity 0
   598   adding added_clean
   614   adding added_clean
   599   adding added_removed
   615   adding added_removed
   600   adding added_revert
   616   adding added_revert
       
   617   adding added_untracked-clean
   601   adding added_wc
   618   adding added_wc
   602   removing removed_clean
   619   removing removed_clean
   603   removing removed_removed
   620   removing removed_removed
   604   removing removed_revert
   621   removing removed_revert
       
   622   removing removed_untracked-clean
   605   removing removed_wc
   623   removing removed_wc
   606   $ hg status
   624   $ hg status
   607   M modified_clean
   625   M modified_clean
   608   M modified_removed
   626   M modified_removed
   609   M modified_revert
   627   M modified_revert
       
   628   M modified_untracked-clean
   610   M modified_wc
   629   M modified_wc
   611   A added_clean
   630   A added_clean
   612   A added_removed
   631   A added_removed
   613   A added_revert
   632   A added_revert
       
   633   A added_untracked-clean
   614   A added_wc
   634   A added_wc
   615   R removed_clean
   635   R removed_clean
   616   R removed_removed
   636   R removed_removed
   617   R removed_revert
   637   R removed_revert
       
   638   R removed_untracked-clean
   618   R removed_wc
   639   R removed_wc
   619   $ hg commit -m 'parent'
   640   $ hg commit -m 'parent'
   620 
   641 
   621 (create a simple text version of the content)
   642 (create a simple text version of the content)
   622 
   643 
   623   $ python ../dircontent.py > ../content-parent.txt
   644   $ python ../dircontent.py > ../content-parent.txt
   624   $ cat ../content-parent.txt
   645   $ cat ../content-parent.txt
   625   parent added_clean
   646   parent added_clean
   626   parent added_removed
   647   parent added_removed
   627   parent added_revert
   648   parent added_revert
       
   649   parent added_untracked-clean
   628   parent added_wc
   650   parent added_wc
   629   base   clean_clean
   651   base   clean_clean
   630   base   clean_removed
   652   base   clean_removed
   631   base   clean_revert
   653   base   clean_revert
       
   654   base   clean_untracked-clean
   632   base   clean_wc
   655   base   clean_wc
   633   parent modified_clean
   656   parent modified_clean
   634   parent modified_removed
   657   parent modified_removed
   635   parent modified_revert
   658   parent modified_revert
       
   659   parent modified_untracked-clean
   636   parent modified_wc
   660   parent modified_wc
   637 
   661 
   638 Setup working directory
   662 Setup working directory
   639 
   663 
   640   $ python ../gen-revert-cases.py wc | cat
   664   $ python ../gen-revert-cases.py wc | cat
   644   removing clean_removed
   668   removing clean_removed
   645   adding missing_wc
   669   adding missing_wc
   646   removing modified_removed
   670   removing modified_removed
   647   adding removed_revert
   671   adding removed_revert
   648   adding removed_wc
   672   adding removed_wc
       
   673   $ hg forget *untracked*
   649   $ hg status
   674   $ hg status
   650   M added_wc
   675   M added_wc
   651   M clean_wc
   676   M clean_wc
   652   M modified_revert
   677   M modified_revert
   653   M modified_wc
   678   M modified_wc
   654   A missing_wc
   679   A missing_wc
   655   A removed_revert
   680   A removed_revert
   656   A removed_wc
   681   A removed_wc
   657   R added_removed
   682   R added_removed
   658   R added_revert
   683   R added_revert
       
   684   R added_untracked-clean
   659   R clean_removed
   685   R clean_removed
       
   686   R clean_untracked-clean
   660   R modified_removed
   687   R modified_removed
       
   688   R modified_untracked-clean
   661 
   689 
   662   $ hg status --rev 'desc("base")'
   690   $ hg status --rev 'desc("base")'
   663   M clean_wc
   691   M clean_wc
   664   M modified_clean
   692   M modified_clean
   665   M modified_wc
   693   M modified_wc
   666   M removed_wc
   694   M removed_wc
   667   A added_clean
   695   A added_clean
   668   A added_wc
   696   A added_wc
   669   A missing_wc
   697   A missing_wc
   670   R clean_removed
   698   R clean_removed
       
   699   R clean_untracked-clean
   671   R modified_removed
   700   R modified_removed
       
   701   R modified_untracked-clean
   672   R removed_clean
   702   R removed_clean
   673   R removed_removed
   703   R removed_removed
       
   704   R removed_untracked-clean
   674 
   705 
   675 (create a simple text version of the content)
   706 (create a simple text version of the content)
   676 
   707 
   677   $ python ../dircontent.py > ../content-wc.txt
   708   $ python ../dircontent.py > ../content-wc.txt
   678   $ cat ../content-wc.txt
   709   $ cat ../content-wc.txt
   679   parent added_clean
   710   parent added_clean
       
   711   parent added_untracked-clean
   680   wc     added_wc
   712   wc     added_wc
   681   base   clean_clean
   713   base   clean_clean
   682   base   clean_revert
   714   base   clean_revert
       
   715   base   clean_untracked-clean
   683   wc     clean_wc
   716   wc     clean_wc
   684   wc     missing_wc
   717   wc     missing_wc
   685   parent modified_clean
   718   parent modified_clean
   686   base   modified_revert
   719   base   modified_revert
       
   720   parent modified_untracked-clean
   687   wc     modified_wc
   721   wc     modified_wc
   688   base   removed_revert
   722   base   removed_revert
   689   wc     removed_wc
   723   wc     removed_wc
   690 
   724 
   691   $ cd ..
   725   $ cd ..
   701 check revert output
   735 check revert output
   702 
   736 
   703   $ hg revert --all
   737   $ hg revert --all
   704   undeleting added_removed
   738   undeleting added_removed
   705   undeleting added_revert
   739   undeleting added_revert
       
   740   undeleting added_untracked-clean
   706   reverting added_wc
   741   reverting added_wc
   707   undeleting clean_removed
   742   undeleting clean_removed
       
   743   undeleting clean_untracked-clean
   708   reverting clean_wc
   744   reverting clean_wc
   709   forgetting missing_wc
   745   forgetting missing_wc
   710   undeleting modified_removed
   746   undeleting modified_removed
   711   reverting modified_revert
   747   reverting modified_revert
       
   748   undeleting modified_untracked-clean
   712   reverting modified_wc
   749   reverting modified_wc
   713   forgetting removed_revert
   750   forgetting removed_revert
   714   forgetting removed_wc
   751   forgetting removed_wc
   715 
   752 
   716 Compare resulting directory with revert target.
   753 Compare resulting directory with revert target.
   748 
   785 
   749   $ hg revert --all --rev 'desc(base)'
   786   $ hg revert --all --rev 'desc(base)'
   750   removing added_clean
   787   removing added_clean
   751   removing added_wc
   788   removing added_wc
   752   undeleting clean_removed
   789   undeleting clean_removed
       
   790   undeleting clean_untracked-clean
   753   reverting clean_wc
   791   reverting clean_wc
   754   forgetting missing_wc
   792   forgetting missing_wc
   755   reverting modified_clean
   793   reverting modified_clean
   756   undeleting modified_removed
   794   undeleting modified_removed
   757   reverting modified_revert
   795   reverting modified_revert
       
   796   undeleting modified_untracked-clean
   758   reverting modified_wc
   797   reverting modified_wc
   759   adding removed_clean
   798   adding removed_clean
   760   adding removed_removed
   799   adding removed_removed
   761   reverting removed_revert
   800   reverting removed_revert
       
   801   adding removed_untracked-clean
   762   reverting removed_wc
   802   reverting removed_wc
   763 
   803 
   764 Compare resulting directory with revert target.
   804 Compare resulting directory with revert target.
   765 
   805 
   766 The diff is filtered to include change only. The only difference should be
   806 The diff is filtered to include change only. The only difference should be
   772 | - added_wc (DATA LOSS)
   812 | - added_wc (DATA LOSS)
   773 
   813 
   774   $ python ../dircontent.py > ../content-base-all.txt
   814   $ python ../dircontent.py > ../content-base-all.txt
   775   $ cd ..
   815   $ cd ..
   776   $ diff -U 0 -- content-base.txt content-base-all.txt | grep _
   816   $ diff -U 0 -- content-base.txt content-base-all.txt | grep _
       
   817   +parent added_untracked-clean
   777   +wc     clean_wc.orig
   818   +wc     clean_wc.orig
   778   +wc     missing_wc
   819   +wc     missing_wc
       
   820   +parent modified_untracked-clean.orig
   779   +wc     modified_wc.orig
   821   +wc     modified_wc.orig
   780   +wc     removed_wc.orig
   822   +wc     removed_wc.orig
   781 
   823 
   782 Test revert to parent content with explicit file name
   824 Test revert to parent content with explicit file name
   783 -----------------------------------------------------
   825 -----------------------------------------------------
   800   
   842   
   801   ### revert for: added_removed
   843   ### revert for: added_removed
   802   
   844   
   803   ### revert for: added_revert
   845   ### revert for: added_revert
   804   
   846   
       
   847   ### revert for: added_untracked-clean
       
   848   
   805   ### revert for: added_wc
   849   ### revert for: added_wc
   806   
   850   
   807   ### revert for: clean_clean
   851   ### revert for: clean_clean
   808   no changes needed to clean_clean
   852   no changes needed to clean_clean
   809   
   853   
   810   ### revert for: clean_removed
   854   ### revert for: clean_removed
   811   
   855   
   812   ### revert for: clean_revert
   856   ### revert for: clean_revert
   813   no changes needed to clean_revert
   857   no changes needed to clean_revert
   814   
   858   
       
   859   ### revert for: clean_untracked-clean
       
   860   
   815   ### revert for: clean_wc
   861   ### revert for: clean_wc
   816   
   862   
   817   ### revert for: missing_clean
   863   ### revert for: missing_clean
   818   missing_clean: no such file in rev * (glob)
   864   missing_clean: no such file in rev * (glob)
   819   
   865   
   821   missing_removed: no such file in rev * (glob)
   867   missing_removed: no such file in rev * (glob)
   822   
   868   
   823   ### revert for: missing_revert
   869   ### revert for: missing_revert
   824   missing_revert: no such file in rev * (glob)
   870   missing_revert: no such file in rev * (glob)
   825   
   871   
       
   872   ### revert for: missing_untracked-clean
       
   873   missing_untracked-clean: no such file in rev * (glob)
       
   874   
   826   ### revert for: missing_wc
   875   ### revert for: missing_wc
   827   
   876   
   828   ### revert for: modified_clean
   877   ### revert for: modified_clean
   829   no changes needed to modified_clean
   878   no changes needed to modified_clean
   830   
   879   
   831   ### revert for: modified_removed
   880   ### revert for: modified_removed
   832   
   881   
   833   ### revert for: modified_revert
   882   ### revert for: modified_revert
   834   
   883   
       
   884   ### revert for: modified_untracked-clean
       
   885   
   835   ### revert for: modified_wc
   886   ### revert for: modified_wc
   836   
   887   
   837   ### revert for: removed_clean
   888   ### revert for: removed_clean
   838   removed_clean: no such file in rev * (glob)
   889   removed_clean: no such file in rev * (glob)
   839   
   890   
   840   ### revert for: removed_removed
   891   ### revert for: removed_removed
   841   removed_removed: no such file in rev * (glob)
   892   removed_removed: no such file in rev * (glob)
   842   
   893   
   843   ### revert for: removed_revert
   894   ### revert for: removed_revert
       
   895   
       
   896   ### revert for: removed_untracked-clean
       
   897   removed_untracked-clean: no such file in rev * (glob)
   844   
   898   
   845   ### revert for: removed_wc
   899   ### revert for: removed_wc
   846   
   900   
   847 
   901 
   848 check resulting directory againt the --all run
   902 check resulting directory againt the --all run
   872 | - added_revert
   926 | - added_revert
   873 | - clean_revert
   927 | - clean_revert
   874 | - modified_revert
   928 | - modified_revert
   875 | - removed_revert
   929 | - removed_revert
   876 | - added_removed
   930 | - added_removed
       
   931 | - added_untracked-clean
   877 
   932 
   878   $ for file in `python ../gen-revert-cases.py filelist`; do
   933   $ for file in `python ../gen-revert-cases.py filelist`; do
   879   >   echo '### revert for:' $file;
   934   >   echo '### revert for:' $file;
   880   >   hg revert $file --rev 'desc(base)';
   935   >   hg revert $file --rev 'desc(base)';
   881   >   echo
   936   >   echo
   884   
   939   
   885   ### revert for: added_removed
   940   ### revert for: added_removed
   886   
   941   
   887   ### revert for: added_revert
   942   ### revert for: added_revert
   888   
   943   
       
   944   ### revert for: added_untracked-clean
       
   945   
   889   ### revert for: added_wc
   946   ### revert for: added_wc
   890   
   947   
   891   ### revert for: clean_clean
   948   ### revert for: clean_clean
   892   
   949   
   893   ### revert for: clean_removed
   950   ### revert for: clean_removed
   894   
   951   
   895   ### revert for: clean_revert
   952   ### revert for: clean_revert
       
   953   
       
   954   ### revert for: clean_untracked-clean
   896   
   955   
   897   ### revert for: clean_wc
   956   ### revert for: clean_wc
   898   
   957   
   899   ### revert for: missing_clean
   958   ### revert for: missing_clean
   900   missing_clean: no such file in rev * (glob)
   959   missing_clean: no such file in rev * (glob)
   903   missing_removed: no such file in rev * (glob)
   962   missing_removed: no such file in rev * (glob)
   904   
   963   
   905   ### revert for: missing_revert
   964   ### revert for: missing_revert
   906   missing_revert: no such file in rev * (glob)
   965   missing_revert: no such file in rev * (glob)
   907   
   966   
       
   967   ### revert for: missing_untracked-clean
       
   968   missing_untracked-clean: no such file in rev * (glob)
       
   969   
   908   ### revert for: missing_wc
   970   ### revert for: missing_wc
   909   
   971   
   910   ### revert for: modified_clean
   972   ### revert for: modified_clean
   911   
   973   
   912   ### revert for: modified_removed
   974   ### revert for: modified_removed
   913   
   975   
   914   ### revert for: modified_revert
   976   ### revert for: modified_revert
   915   
   977   
       
   978   ### revert for: modified_untracked-clean
       
   979   
   916   ### revert for: modified_wc
   980   ### revert for: modified_wc
   917   
   981   
   918   ### revert for: removed_clean
   982   ### revert for: removed_clean
   919   
   983   
   920   ### revert for: removed_removed
   984   ### revert for: removed_removed
   921   
   985   
   922   ### revert for: removed_revert
   986   ### revert for: removed_revert
       
   987   
       
   988   ### revert for: removed_untracked-clean
   923   
   989   
   924   ### revert for: removed_wc
   990   ### revert for: removed_wc
   925   
   991   
   926 
   992 
   927 check resulting directory againt the --all run
   993 check resulting directory againt the --all run