[jira] [Commented] (SVN-4891) Pristines-on-demand: fix disabled tests

"Daniel Shahaf (Jira)" <[email protected]> Sun, 17 Apr 2022 14:04:00 +0000 (UTC)
Newsgroups gmane.comp.version-control.subversion.issues
Message-ID <[email protected]>
    [ https://issues.apache.org/jira/browse/SVN-4891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17523360#comment-17523360 ] 

Daniel Shahaf commented on SVN-4891:
------------------------------------

{code:java}
    revert_tests.py 2 revert_reexpand_keyword(): revert reexpands manually contracted keyword
      - fails to re-expand a manually contracted keyword in at least one case
      - "See r1101730 and r1101817"
{code}
No noteworthy {{{}revert{}}}-related differences to trunk in either the libraries or the Python tests.

Tracing, I see the file is set to be unmodified by {{{}revert_wc_data(){}}}:
{code:java}
 611               /* Issue #1663 asserts that we should compare a file in its                                                                                                                                      
 612                  working copy format here, but before r1101473 we would only                                                                                                                                   
 613                  do that if the file was already unequal to its recorded                                                                                                                                       
 614                  information.                                                                                                                                                                                  
 615                                                                                                                                                                                                                
 616                  r1101473 removes the option of asking for a working format                                                                                                                                    
 617                  compare but *also* check the recorded information first, as                                                                                                                                   
 618                  that combination doesn't guarantee a stable behavior.                                                                                                                                         
 619                  (See the revert_test.py: revert_reexpand_keyword)                                                                                                                                             
 620                                                                                                                                                                                                                
 621                  But to have the same issue #1663 behavior for revert as we                                                                                                                                    
 622                  had in <=1.6 we only have to check the recorded information                                                                                                                                   
 623                  ourselves. And we already have everything we need, because                                                                                                                                    
 624                  we called stat ourselves. */                                                                                                                                                                  
 625               if (recorded_size != SVN_INVALID_FILESIZE                                                                                                                                                        
 626                   && recorded_time != 0                                                                                                                                                                        
 627                   && recorded_size == finfo.size                                                                                                                                                               
 628                   && recorded_time == finfo.mtime)                                                                                                                                                             
 629                 {                                                                                                                                                                                              
 630                   modified = FALSE;                                                                                                                                                                            
 631                 }                                                                                                                                                                                              
{code}
At this point, both {{recorded_size}} and {{finfo.size}} are the size of the repository-normal file. The code doesn't handle svn:keywords files specially, and so misses that the file has keywords manually contracted.

However, trunk takes the exact same codepath, runs the same {{modified = FALSE;}} line, and yet passes the test. I don't see why. There _are_ two function calls added at the end of {{{}revert_wc_data(){}}}, but they are inside an {{if (on_disk == svn_kind_none && …)}} block that doesn't even run (on either branch).

Thanks for including those two revision numbers there; they helped me place the breakpoint.

> Pristines-on-demand: fix disabled tests
> ---------------------------------------
>
>                 Key: SVN-4891
>                 URL: https://issues.apache.org/jira/browse/SVN-4891
>             Project: Subversion
>          Issue Type: Bug
>            Reporter: Julian Foad
>            Assignee: Julian Foad
>            Priority: Major
>
> The following tests had been changed in the pristines-on-demand development.
> Most were disabled with the '@Wimp' decorator. (This caused some of them to give an XPASS and some an XFAIL result when run against the older WC format, and all XFAIL against the newer WC format.)
> They need to be re-enabled and fixed.
> (I am removing them from this list as and when fixed.)
> {code:none}
>     basic_tests.py 8 basic_commit_corruption(): basic corruption detection on commit
>       [[Relies on wc.text_base_path()]]
>     basic_tests.py 9 basic_update_corruption(): basic corruption detection on update
>       [[Relies on wc.text_base_path()]]
>     externals_tests.py ... ... ...:
>       update_modify_file_external(),
>       remap_file_external_with_prop_del(),
>       file_external_recorded_info():
>         existing issue (Windows only)
>     revert_tests.py 2 revert_reexpand_keyword(): revert reexpands manually contracted keyword
>       - fails to re-expand a manually contracted keyword in at least one case
>       - "See r1101730 and r1101817"
>     trans_tests.py 1 keywords_from_birth(): commit new files with keywords active from birth
>       - fails due to mismatch of expected ​keywords in the text-base after a commit
>     update_tests.py 57 skip_access_denied(): access denied paths should be skipped
>       - on Unix: SKIP.
>       - on Windows: XFAIL/WIMP in pristines-on-demand mode, XPASS on old WC format.
>     upgrade_tests.py 16 replaced_files(): upgrade with base and working replaced files
>       - XFAIL in pristines-on-demand mode; PASS with the old WC format.
>    {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)