| #!/usr/bin/env python |
| # |
| # iprop_tests.py: testing versioned inherited properties |
| # |
| # Subversion is a tool for revision control. |
| # See http://subversion.apache.org for more information. |
| # |
| # ==================================================================== |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| ###################################################################### |
| |
| # General modules |
| import os |
| |
| # Our testing module |
| import svntest |
| |
| # (abbreviation) |
| Skip = svntest.testcase.Skip_deco |
| SkipUnless = svntest.testcase.SkipUnless_deco |
| XFail = svntest.testcase.XFail_deco |
| Issues = svntest.testcase.Issues_deco |
| Issue = svntest.testcase.Issue_deco |
| Wimp = svntest.testcase.Wimp_deco |
| Item = svntest.wc.StateItem |
| |
| ###################################################################### |
| # Tests |
| |
| #---------------------------------------------------------------------- |
| # Working property inheritance, uniform revision WC. |
| def iprops_basic_working(sbox): |
| "basic inherited working properties" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # Paths of note. |
| mu_path = sbox.ospath('A/mu') |
| D_path = sbox.ospath('A/D') |
| psi_path = sbox.ospath('A/D/H/psi') |
| iota_path = sbox.ospath('iota') |
| alpha_path = sbox.ospath('A/B/E/alpha') |
| G_path = sbox.ospath('A/D/G') |
| rho_path = sbox.ospath('A/D/G/rho') |
| |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val1', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val2', '.') |
| sbox.simple_propset('DirProp2', 'Dir-Prop-Val-Root', '.') |
| sbox.simple_propset('FileProp1', 'File-Prop-Val1', 'iota') |
| sbox.simple_propset('FileProp2', 'File-Prop-Val2', 'A/D/H/psi') |
| sbox.simple_propset('DirProp1', 'Dir-Prop-Val1', 'A/D') |
| sbox.simple_propset('DirProp2', 'Dir-Prop-Val2', 'A/D') |
| sbox.simple_propset('DirProp3', 'Dir-Prop-Val3', 'A/D') |
| sbox.simple_propset('SomeProp', 'Some-Prop-Val1', 'A/D/G') |
| sbox.simple_propset('SomeProp', 'Some-Prop-Val2', 'A/D/G/rho') |
| |
| ### Proplist Directory Targets |
| |
| # Proplist directory target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'DirProp2' : 'Dir-Prop-Val-Root', |
| 'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| wc_dir, expected_iprops, expected_explicit_props) |
| |
| # Proplist directory target with only inherited props. |
| expected_iprops = {wc_dir : {'DirProp2' : 'Dir-Prop-Val-Root', |
| 'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| alpha_path, expected_iprops, expected_explicit_props) |
| |
| # Proplist directory target with inherited and explicit props. |
| expected_iprops = {wc_dir : {'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2', |
| 'DirProp2' : 'Dir-Prop-Val-Root'}} |
| expected_explicit_props = {'DirProp1' : 'Dir-Prop-Val1', |
| 'DirProp2' : 'Dir-Prop-Val2', |
| 'DirProp3' : 'Dir-Prop-Val3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props) |
| |
| ### Propget Directory Targets |
| |
| # Propget directory target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'RootProp2' : 'Root-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| wc_dir, expected_iprops, expected_explicit_props, 'RootProp2') |
| |
| # Propget directory target with only inherited props. |
| expected_iprops = {wc_dir : {'RootProp2': 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| alpha_path, expected_iprops, expected_explicit_props, 'RootProp2') |
| |
| # Propget directory target with inherited and explicit props. |
| expected_iprops = {wc_dir : {'DirProp2' : 'Dir-Prop-Val-Root',}} |
| expected_explicit_props = {'DirProp2' : 'Dir-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'DirProp2') |
| |
| ### Propget File Targets |
| |
| # Propget file target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'FileProp1' : 'File-Prop-Val1'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| iota_path, expected_iprops, expected_explicit_props, 'FileProp1') |
| |
| # Propget file target with only inherited props. |
| expected_iprops = {wc_dir : {'RootProp2': 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| alpha_path, expected_iprops, expected_explicit_props, 'RootProp2') |
| |
| # Propget file target with inherited and explicit props. |
| expected_iprops = {G_path : {'SomeProp' : 'Some-Prop-Val1',}} |
| expected_explicit_props = {'SomeProp' : 'Some-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| rho_path, expected_iprops, expected_explicit_props, 'SomeProp') |
| |
| ### Proplist File Targets |
| |
| # Proplist file target with only inherited props. |
| expected_iprops = {wc_dir : {'DirProp2' : 'Dir-Prop-Val-Root', |
| 'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| mu_path, expected_iprops, expected_explicit_props) |
| |
| # Proplist file target with inherited and explicit props. |
| expected_iprops = {wc_dir : {'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2', |
| 'DirProp2' : 'Dir-Prop-Val-Root'}, |
| D_path : {'DirProp1' : 'Dir-Prop-Val1', |
| 'DirProp2' : 'Dir-Prop-Val2', |
| 'DirProp3' : 'Dir-Prop-Val3'}} |
| expected_explicit_props = {'FileProp2' : 'File-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| psi_path, expected_iprops, expected_explicit_props) |
| |
| # Proplist file target with only explicit props. |
| svntest.actions.run_and_verify_svn(None, [], 'revert', wc_dir) |
| expected_iprops = {} |
| expected_explicit_props = {'FileProp1' : 'File-Prop-Val1'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| iota_path, expected_iprops, expected_explicit_props) |
| |
| #---------------------------------------------------------------------- |
| # Property inheritance with repository targets. |
| def iprops_basic_repos(sbox): |
| "basic inherited repository properties" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # Paths of note. |
| D_path = sbox.ospath('A/D') |
| alpha_path = sbox.ospath('A/B/E/alpha') |
| |
| sbox.simple_propset('FileProp1', 'File-Prop-Val1', 'iota') |
| sbox.simple_propset('FileProp2', 'File-Prop-Val2', 'A/D/H/psi') |
| sbox.simple_propset('SomeProp', 'Some-Prop-Val2', 'A/D/G/rho') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add some file properties', |
| wc_dir) |
| |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val1', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val2', '.') |
| sbox.simple_propset('DirProp2', 'Dir-Prop-Val-Root', '.') |
| sbox.simple_propset('DirProp1', 'Dir-Prop-Val1', 'A/D') |
| sbox.simple_propset('DirProp2', 'Dir-Prop-Val2', 'A/D') |
| sbox.simple_propset('DirProp3', 'Dir-Prop-Val3', 'A/D') |
| sbox.simple_propset('SomeProp', 'Some-Prop-Val1', 'A/D/G') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add some dir properties', |
| wc_dir) |
| |
| ### Proplist Directory Targets |
| |
| # Proplist directory target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'DirProp2' : 'Dir-Prop-Val-Root', |
| 'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url, expected_iprops, expected_explicit_props) |
| |
| # Proplist directory target with only inherited props. |
| expected_iprops = {sbox.repo_url : {'DirProp2' : 'Dir-Prop-Val-Root', |
| 'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/B/E/alpha', expected_iprops, expected_explicit_props) |
| |
| # Proplist directory target with inherited and explicit props. |
| expected_iprops = {sbox.repo_url : {'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2', |
| 'DirProp2' : 'Dir-Prop-Val-Root'}} |
| expected_explicit_props = {'DirProp1' : 'Dir-Prop-Val1', |
| 'DirProp2' : 'Dir-Prop-Val2', |
| 'DirProp3' : 'Dir-Prop-Val3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props) |
| |
| ### Propget Directory Targets |
| |
| # Propget directory target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'RootProp2' : 'Root-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url, expected_iprops, expected_explicit_props, 'RootProp2') |
| |
| # Propget directory target with only inherited props. |
| expected_iprops = {sbox.repo_url : {'RootProp2': 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/B/E/alpha', expected_iprops, expected_explicit_props, |
| 'RootProp2') |
| |
| # Propget directory target with inherited and explicit props. |
| expected_iprops = {sbox.repo_url : {'DirProp2' : 'Dir-Prop-Val-Root',}} |
| expected_explicit_props = {'DirProp2' : 'Dir-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp2') |
| |
| ### Proplist File Targets |
| |
| # Proplist file target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'FileProp1' : 'File-Prop-Val1'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/iota', expected_iprops, expected_explicit_props, |
| 'FileProp1', 2) |
| |
| # Proplist file target with only inherited props. |
| expected_iprops = {sbox.repo_url : {'RootProp1' : 'Root-Prop-Val1'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/mu', expected_iprops, expected_explicit_props, |
| 'RootProp1') |
| |
| # Proplist file target with inherited and explicit props. |
| expected_iprops = {sbox.repo_url : {'RootProp1' : 'Root-Prop-Val1', |
| 'RootProp2' : 'Root-Prop-Val2', |
| 'DirProp2' : 'Dir-Prop-Val-Root'}, |
| sbox.repo_url + '/A/D' : {'DirProp1' : 'Dir-Prop-Val1', |
| 'DirProp2' : 'Dir-Prop-Val2', |
| 'DirProp3' : 'Dir-Prop-Val3'}} |
| expected_explicit_props = {'FileProp2' : 'File-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D/H/psi', expected_iprops, expected_explicit_props) |
| |
| ### Propget File Targets |
| |
| # Propget file target with only explicit props. |
| expected_iprops = {} |
| expected_explicit_props = {'FileProp1' : 'File-Prop-Val1'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/iota', expected_iprops, expected_explicit_props, |
| 'FileProp1', 2) |
| |
| # Propget file target with only inherited props. |
| expected_iprops = {sbox.repo_url : {'RootProp2': 'Root-Prop-Val2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/B/E/alpha', expected_iprops, expected_explicit_props, |
| 'RootProp2') |
| |
| # Propget file target with inherited and explicit props. |
| expected_iprops = {sbox.repo_url + '/A/D/G' : { |
| 'SomeProp' : 'Some-Prop-Val1',}} |
| expected_explicit_props = {'SomeProp' : 'Some-Prop-Val2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D/G/rho', expected_iprops, expected_explicit_props, |
| 'SomeProp') |
| |
| #---------------------------------------------------------------------- |
| # Property inheritance in a WC with switched subtrees. |
| def iprops_switched_subtrees(sbox): |
| "inherited properties in switched subtrees" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # Paths of note. |
| branch2_path = sbox.ospath('branch2') |
| branch2_B_path = sbox.ospath('branch2/B') |
| branch2_lambda_path = sbox.ospath('branch2/B/lambda') |
| |
| # r2-3 - Create two branches |
| svntest.main.run_svn(None, 'copy', sbox.repo_url + '/A', |
| sbox.repo_url + '/branch1', '-m', 'Make branch1') |
| |
| svntest.main.run_svn(None, 'copy', sbox.repo_url + '/A', |
| sbox.repo_url + '/branch2', '-m', 'Make branch2') |
| |
| # Create a root property and two branch properties |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| sbox.simple_propset('Root-Prop-1', 'Root-Prop-Val1', '.') |
| sbox.simple_propset('Branch-Name', 'Feature #1', 'branch1') |
| sbox.simple_propset('Branch-Name', 'Feature #2', 'branch2') |
| |
| # Switch a subtree of branch2 to branch1: |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/branch1/B', |
| branch2_B_path) |
| |
| # Check for inherited props on branch2/B/lambda. Since the prop changes |
| # made above have not been committed, there should be none. |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| branch2_B_path, expected_iprops, expected_explicit_props) |
| |
| # r4 - Commit the prop changes made above. |
| svntest.main.run_svn(None, 'commit', '-m', 'Add some dir properties', |
| wc_dir) |
| |
| # Again check for inherited props on branch2/B/lambda. And again there |
| # should be none because branch2/B is switched to ^/branch1/B@3. |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| branch2_lambda_path, expected_iprops, expected_explicit_props) |
| |
| # Now update the WC, now branch2/B is switched to ^/branch1/B@4 |
| # which does inherit properties from ^/branch1 and ^/. The inherited |
| # properties cache should be updated to reflect this when asking what |
| # properties branch2/B/lambda inherits. |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| expected_iprops = { |
| sbox.repo_url : {'Root-Prop-1' : 'Root-Prop-Val1'}, |
| sbox.repo_url + '/branch1' : {'Branch-Name' : 'Feature #1'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| branch2_lambda_path, expected_iprops, expected_explicit_props) |
| |
| # Now update the WC back to r3, where there are no properties. The |
| # inheritable properties cache for the WC-root at branch2/B should be |
| # cleared and no inheritable properties found for branch2/B/lambda. |
| svntest.actions.run_and_verify_svn(None, [], 'up', '-r3', wc_dir) |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| branch2_lambda_path, expected_iprops, expected_explicit_props) |
| # Update back to HEAD=r4 before continuing. |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| |
| # Now unswitch branch2/B and check branch2/B/lambda's inherited props. |
| # Now no iprop cache for branch2/B should exist and branch2/B/lambda |
| # should inherit from branch2 and '.'. |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/branch2/B', |
| branch2_B_path) |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| expected_iprops = { |
| ### Working copy parents! ### |
| wc_dir : {'Root-Prop-1' : 'Root-Prop-Val1'}, |
| branch2_path : {'Branch-Name' : 'Feature #2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| branch2_lambda_path, expected_iprops, expected_explicit_props) |
| |
| # Now switch the root of the WC to ^/branch2 and check the inherited |
| # properties on B/lambda. It should inherit the explicit property |
| # on the WC path '.' (i.e. ^/branch2) and the property on the root |
| # of the repos via the inherited props cache. |
| svntest.main.run_svn(None, 'switch', '--ignore-ancestry', |
| sbox.repo_url + '/branch2', wc_dir) |
| expected_iprops = { |
| ### Root if a repos parent ### |
| sbox.repo_url : {'Root-Prop-1' : 'Root-Prop-Val1'}, |
| ### Branch root is a working copy parent ### |
| wc_dir : {'Branch-Name' : 'Feature #2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('B/lambda'), |
| expected_iprops, expected_explicit_props) |
| |
| # Check that switched files have properties cached too. |
| # Switch the root of the WC to ^/A, then switch mu to ^/branch1/mu. |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/A', wc_dir) |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/branch1/mu', |
| sbox.ospath('mu')) |
| expected_iprops = { |
| sbox.repo_url : {'Root-Prop-1' : 'Root-Prop-Val1'}, |
| sbox.repo_url + '/branch1' : {'Branch-Name' : 'Feature #1'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('mu'), |
| expected_iprops, expected_explicit_props) |
| |
| #---------------------------------------------------------------------- |
| # Property inheritance with pegged wc and repos targets. |
| def iprops_pegged_wc_targets(sbox): |
| "iprops of pegged wc targets at operative revs" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # Paths of note. |
| C_path = sbox.ospath('A/C') |
| D_path = sbox.ospath('A/D') |
| G_path = sbox.ospath('A/D/G') |
| alpha_path = sbox.ospath('A/B/E/alpha') |
| replaced_alpha_path = sbox.ospath('A/D/G/E/alpha') |
| |
| # r2 - Set some root properties and a property on A/D, and make an edit |
| # to A/B/E/alpha. |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val-1-set-in-r2', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val-2-set-in-r2', '.') |
| sbox.simple_propset('D-Prop', 'D-Prop-Val-set-in-r2', 'A/D') |
| svntest.main.file_write(alpha_path, "Edit in r2.\n") |
| svntest.main.run_svn(None, 'commit', '-m', 'Add some properties', |
| wc_dir) |
| |
| # r3 - Change all of the properties. |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val-1-set-in-r3', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val-2-set-in-r3', '.') |
| sbox.simple_propset('D-Prop', 'D-Prop-Val-set-in-r3', 'A/D') |
| svntest.main.run_svn(None, 'commit', '-m', 'Modify some properties', |
| wc_dir) |
| |
| # Set some working properties. |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val-1-WORKING', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val-2-WORKING', '.') |
| sbox.simple_propset('D-Prop', 'D-Prop-Val-WORKING', 'A/D') |
| |
| ### Peg Revision = HEAD |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | HEAD | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'HEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | HEAD | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'HEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | HEAD | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'HEAD', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | HEAD | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'HEAD', |
| '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | HEAD | COMMITTED |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'HEAD', |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | HEAD | COMMITTED |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'HEAD', |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | HEAD | PREV |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'HEAD', |
| '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | HEAD | PREV |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'HEAD', |
| '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | HEAD | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'HEAD', |
| '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | HEAD | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'HEAD', |
| '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | HEAD | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'HEAD', |
| '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | HEAD | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'HEAD', |
| '-rHEAD') |
| |
| ### Peg Revision = Unspecified |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | unspecified | unspecified |
| expected_iprops = { |
| wc_dir : {'RootProp1' : 'Root-Prop-Val-1-WORKING', |
| 'RootProp2' : 'Root-Prop-Val-2-WORKING'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-WORKING'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props) |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | unspecified | unspecified |
| expected_iprops = { |
| wc_dir : {'RootProp1' : 'Root-Prop-Val-1-WORKING'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | unspecified | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, None, '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | unspecified | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', None, |
| '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | unspecified | revision=COMMITTED (i.e. r3) |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, None, |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | unspecified | COMMITTED |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', None, |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | unspecified | revision=PREV (i.e. r2) |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, None, '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | unspecified | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', None, |
| '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | unspecified | revision=BASE (i.e. r3) |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, None, '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | unspecified | revision=BASE (i.e. r3) |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', None, |
| '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | unspecified | revision=HEAD (i.e. r3) |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, None, '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | unspecified | revision=HEAD (i.e. r3) |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', None, |
| '-rHEAD') |
| |
| ### Peg Revision = rN |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | revision=1 | unspecified |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, '1') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | revision=1 | unspecified |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', '1') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | revision=1 | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, '1', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | revision=1 | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', '1', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | revision=1 | COMMITTED |
| # The last committed revision for A/D is r3. |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, '1', |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | revision=1 | COMMITTED |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', '1', |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | revision=3 | PREV |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, '3', '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | revision=3 | PREV |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', '3', |
| '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | revision=1 | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, '1', '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | revision=1 | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', '1', |
| '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | revision=2 | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, '2', '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | revision=1 | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', '1', |
| '-rHEAD') |
| |
| ### Peg Revision = PREV |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | PREV | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'PREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | PREV | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'PREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | PREV | revision=3 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'PREV', '-r3') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | PREV | revision=3 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'PREV', |
| '-r3') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | PREV | COMMITTED |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'PREV', |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | PREV | COMMITTED |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'PREV', |
| '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | PREV | PREV |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'PREV', '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | PREV | PREV |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'PREV', |
| '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | PREV | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'PREV', '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | PREV | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'PREV', |
| '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | PREV | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, None, 'PREV', '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | PREV | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| D_path, expected_iprops, expected_explicit_props, 'RootProp1', 'PREV', |
| '-rHEAD') |
| |
| ### Peg Revision = BASE |
| |
| # Replace A/D/G with a copy of ^/A/B. |
| # Check inherited props on base of A/D/G/E/alpha. |
| # Inherited props should always come from the repository parent of |
| # ^/A/B/E/alpha and so should not include the property (working or |
| # otherwise) on A/D. |
| svntest.actions.run_and_verify_svn(None, [], 'delete', G_path) |
| svntest.actions.run_and_verify_svn(None, [], 'copy', |
| sbox.repo_url + '/A/B', G_path) |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | BASE | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | BASE | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | BASE | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | BASE | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | BASE | COMMITTED |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE', '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | BASE | revision=2 |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE', '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | BASE | COMMITTED |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| # so PREV=r1, but there are no properties at all in r1. |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE', '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | BASE | COMMITTED |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| # so PREV=r1, but there are no properties at all in r1. |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE', '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | BASE | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE', '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | BASE | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE', '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | BASE | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE', '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | BASE | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE', '-rHEAD') |
| |
| ### Peg Revision = COMMITTED |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | COMMITTED | unspecified |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | COMMITTED | unspecified |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | COMMITTED | revision=3 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED', '-r3') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | COMMITTED | revision=3 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED', '-r3') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | COMMITTED | COMMITTED |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED', '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | COMMITTED | COMMITTED |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED', '-rCOMMITTED') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | COMMITTED | PREV |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| # so PREV=r1, but there are no properties at all in r1. |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED', '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | COMMITTED | PREV |
| # The most recent change on the copy source, ^/A/B/E/alpha is r2 |
| # so PREV=r1, but there are no properties at all in r1. |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED', '-rPREV') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | COMMITTED | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED', '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | COMMITTED | BASE |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED', '-rBASE') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | WC | COMMITTED | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED', '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | WC | COMMITTED | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED', '-rHEAD') |
| |
| # Revert the replacement with history of A/D/G and once again |
| # replace A/D/G, but this time without history (using and export |
| # of A/B. |
| svntest.actions.run_and_verify_svn(None, [], 'revert', G_path, '-R') |
| svntest.actions.run_and_verify_svn(None, [], 'delete', G_path) |
| svntest.actions.run_and_verify_svn(None, [], 'export', |
| sbox.repo_url + '/A/B', G_path) |
| svntest.actions.run_and_verify_svn(None, [], 'add', G_path) |
| # Set a working prop on a file within the replaced tree, we should *never* |
| # see this property if asking about the |
| # file@[HEAD | PREV | COMMITTED | BASE] |
| sbox.simple_propset('FileProp', 'File-Prop-WORKING-NO-BASE', |
| 'A/D/G/E/alpha') |
| |
| # There is no HEAD, PREV, COMMITTED, or BASE revs for A/D/G/E/alpha in this |
| # case # so be sure requests for such error out or return nothing as per the |
| # existing behavior for proplist and propget sans the --show-inherited-props |
| # option. |
| # |
| # proplist/propget WC-PATH@HEAD |
| svntest.actions.run_and_verify_svn( |
| None, |
| ".*Unknown node kind for '" + sbox.repo_url + "/A/D/G/E/alpha'\n", |
| 'pl', '-v', '--show-inherited-props', replaced_alpha_path + '@HEAD') |
| svntest.actions.run_and_verify_svn( |
| None, |
| ".*'" + sbox.repo_url + "/A/D/G/E/alpha' does not exist in revision 3\n", |
| 'pg', 'RootProp1', '-v', '--show-inherited-props', |
| replaced_alpha_path + '@HEAD') |
| # proplist/propget WC-PATH@PREV |
| svntest.actions.run_and_verify_svn( |
| None, |
| ".*Path '.*alpha' has no committed revision\n", |
| 'pl', '-v', '--show-inherited-props', replaced_alpha_path + '@PREV') |
| svntest.actions.run_and_verify_svn( |
| None, |
| ".*Path '.*alpha' has no committed revision\n", |
| 'pg', 'RootProp1', '-v', '--show-inherited-props', replaced_alpha_path + '@PREV') |
| # proplist/propget WC-PATH@COMMITTED |
| expected_iprops = {} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'COMMITTED') |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'COMMITTED') |
| # proplist/propget WC-PATH@BASE |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, None, |
| 'BASE') |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| replaced_alpha_path, expected_iprops, expected_explicit_props, |
| 'RootProp1', 'BASE') |
| |
| #---------------------------------------------------------------------- |
| # Property inheritance with pegged repos targets at operative revs. |
| def iprops_pegged_url_targets(sbox): |
| "iprops of pegged url targets at operative revs" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # r2 - Set some root properties and some properties on A/D. |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val-1-set-in-r2', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val-2-set-in-r2', '.') |
| sbox.simple_propset('DirProp', 'Dir-Prop-Val-set-in-r2', '.') |
| sbox.simple_propset('DirProp', 'Dir-Prop-Val-set-in-r2-on-D', 'A/D') |
| sbox.simple_propset('D-Prop', 'D-Prop-Val-set-in-r2', 'A/D') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add some properties', |
| wc_dir) |
| |
| # r3 - Make another change to all of the properties set in r2. |
| sbox.simple_propset('RootProp1', 'Root-Prop-Val-1-set-in-r3', '.') |
| sbox.simple_propset('RootProp2', 'Root-Prop-Val-2-set-in-r3', '.') |
| sbox.simple_propset('DirProp', 'Dir-Prop-Val-set-in-r3', '.') |
| sbox.simple_propset('DirProp', 'Dir-Prop-Val-set-in-r3-on-D', 'A/D') |
| sbox.simple_propset('D-Prop', 'D-Prop-Val-set-in-r3', 'A/D') |
| svntest.main.run_svn(None, 'commit', '-m', 'Modify some properties', |
| wc_dir) |
| |
| ### Peg Revision = Unspecified |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | unspecified | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props) |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | unspecified | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | unspecified | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, None, |
| None, '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | unspecified | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', None, '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | unspecified | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| None, None, '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | unspecified | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', None, '-rHEAD') |
| |
| ### Peg Revision = rN |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | revision=2 | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| None, '2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | revision=2 | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', '2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | revision=2 | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, None, |
| '2', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | revision=2 | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', '2', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | revision=2 | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| None, '2', '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | revision=2 | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', '2', '-rHEAD') |
| |
| ### Peg Revision = HEAD |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | HEAD | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| None, 'HEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | HEAD | unspecified |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', 'HEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | HEAD | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r2', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r2', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, None, |
| 'HEAD', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | HEAD | revision=2 |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r2'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r2-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', 'HEAD', '-r2') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # proplist | URL | HEAD | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'RootProp1' : 'Root-Prop-Val-1-set-in-r3', |
| 'RootProp2' : 'Root-Prop-Val-2-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'D-Prop' : 'D-Prop-Val-set-in-r3', |
| 'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| None, 'HEAD', '-rHEAD') |
| |
| # Operation | Target | Peg Revision | Operative Revision |
| # propget | URL | HEAD | HEAD |
| expected_iprops = { |
| sbox.repo_url : {'DirProp' : 'Dir-Prop-Val-set-in-r3'}} |
| expected_explicit_props = {'DirProp' : 'Dir-Prop-Val-set-in-r3-on-D'} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.repo_url + '/A/D', expected_iprops, expected_explicit_props, |
| 'DirProp', 'HEAD', '-rHEAD') |
| |
| #---------------------------------------------------------------------- |
| # Inherited property caching during shallow updates. |
| def iprops_shallow_operative_depths(sbox): |
| "iprop caching works with shallow updates" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # r2 - Create a branch.. |
| svntest.main.run_svn(None, 'copy', sbox.repo_url + '/A', |
| sbox.repo_url + '/branch1', '-m', 'Make branch1') |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| |
| # r3 - Create a root property and some branch properties |
| sbox.simple_propset('Root-Prop-1', 'Root-Prop-Val1', '.') |
| sbox.simple_propset('Branch-Name', 'Feature #1', 'branch1') |
| sbox.simple_propset('Branch-Name', 'Trunk', 'A') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add some properties', |
| wc_dir) |
| |
| # r4 - Change the root and a branch properties added in r3. |
| sbox.simple_propset('Root-Prop-1', 'Root-Prop-Val1.1', '.') |
| sbox.simple_propset('Branch-Name', 'Feature No. 1', 'branch1') |
| sbox.simple_propset('Branch-Name', 'Trunk Branch', 'A') |
| svntest.main.run_svn(None, 'commit', '-m', 'Change some properties', |
| wc_dir) |
| |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| |
| # Switch the WC to ^/branch1: |
| svntest.main.run_svn(None, 'switch', '--ignore-ancestry', |
| sbox.repo_url + '/branch1', wc_dir) |
| # Switch the B to ^/A/B: |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/A/B', |
| sbox.ospath('B')) |
| # Switch the mu to ^/A/mu: |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/A/mu', |
| sbox.ospath('mu')) |
| # Update the whole WC back to r3. |
| svntest.actions.run_and_verify_svn(None, [], 'up', '-r3', wc_dir) |
| |
| # Check the inherited props on B/E within the switched subtree |
| # and the switched file mu. The props should all be inherited |
| # from repository locations and reflect the values at r3. |
| expected_iprops = { |
| sbox.repo_url : {'Root-Prop-1' : 'Root-Prop-Val1'}, |
| sbox.repo_url + '/A' : {'Branch-Name' : 'Trunk'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('B/E'), expected_iprops, expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('mu'), expected_iprops, expected_explicit_props) |
| |
| # Update only the root of the WC (to HEAD=r4) using a shallow update. |
| # Again check the inherited props on B/E. This shouldn't affect the |
| # switched subtree at all, the props it inherits should still reflect |
| # the values at r3. |
| svntest.actions.run_and_verify_svn(None, [], 'up', |
| '--depth=empty', wc_dir) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('B/E'), expected_iprops, expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('mu'), expected_iprops, expected_explicit_props) |
| |
| # Update the root of the WC (to HEAD=r4) at depth=files. B/E should |
| # still inherit vales from r3, but mu should now inherit props from r4. |
| svntest.actions.run_and_verify_svn(None, [], 'up', |
| '--depth=files', wc_dir) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('B/E'), expected_iprops, expected_explicit_props) |
| expected_iprops = { |
| sbox.repo_url : {'Root-Prop-1' : 'Root-Prop-Val1.1'}, |
| sbox.repo_url + '/A' : {'Branch-Name' : 'Trunk Branch'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('mu'), expected_iprops, expected_explicit_props) |
| |
| # Update the root of the WC (to HEAD=r4) at depth=immediates. Now both B/E |
| # and mu inherit props from r4. |
| svntest.actions.run_and_verify_svn(None, [], 'up', |
| '--depth=immediates', wc_dir) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('B/E'), expected_iprops, expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('mu'), expected_iprops, expected_explicit_props) |
| |
| #---------------------------------------------------------------------- |
| # Inherited property caching by directory externals. |
| def iprops_with_directory_externals(sbox): |
| "iprop caching works with directory externals" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # Create a second repository with the original greek tree |
| repo_dir = sbox.repo_dir |
| other_repo_dir, other_repo_url = sbox.add_repo_path("other") |
| other_wc_dir = sbox.add_wc_path("other") |
| svntest.main.copy_repos(repo_dir, other_repo_dir, 1, 1) |
| svntest.actions.run_and_verify_svn(None, [], 'co', other_repo_url, |
| other_wc_dir) |
| |
| # Create a root property on the first WC. |
| sbox.simple_propset('Prime-Root-Prop', 'Root-Prop-Val1', '.') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add a root property', |
| wc_dir) |
| |
| # Create a root property on the "other" WC. |
| svntest.actions.run_and_verify_svn(None, [], 'ps', 'Other-Root-Prop', |
| 'Root-Prop-Val-from-other', other_wc_dir) |
| svntest.main.run_svn(None, 'commit', '-m', 'Add a root property', |
| other_wc_dir) |
| |
| # Switch the root of the first WC to a repository non-root, it will |
| # now have cached iprops from the first repos. |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/A/B', |
| wc_dir, '--ignore-ancestry') |
| |
| # Create an external in the first WC that points to a location in the |
| # "other" WC. |
| sbox.simple_propset('svn:externals', |
| other_repo_url + '/A/D/G X-Other-Repos', |
| 'E') |
| svntest.actions.run_and_verify_svn(None, [], 'ci', |
| '-m', 'Add external point to other WC', |
| wc_dir) |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| |
| # Create an external in the first WC that points to a location in the |
| # same WC. |
| sbox.simple_propset('svn:externals', |
| sbox.repo_url + '/A/D/H X-Same-Repos', |
| 'F') |
| svntest.actions.run_and_verify_svn(None, [], 'ci', '-m', |
| 'Add external pointing to same repos', |
| wc_dir) |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| |
| # Check the properties inherited by the external from the same repository. |
| # It should inherit the props from the root of the same repository. |
| expected_iprops = { |
| sbox.repo_url : {'Prime-Root-Prop' : 'Root-Prop-Val1'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('F/X-Same-Repos'), expected_iprops, expected_explicit_props) |
| |
| # Check the properties inherited by the external from the "other" |
| # repository. It should inherit from the root of the other repos, |
| # despite being located in the first repository's WC. |
| expected_iprops = { |
| other_repo_url : {'Other-Root-Prop' : 'Root-Prop-Val-from-other'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('E/X-Other-Repos'), expected_iprops, expected_explicit_props) |
| |
| #---------------------------------------------------------------------- |
| # Inherited property caching by file externals. |
| def iprops_with_file_externals(sbox): |
| "iprop caching works with file externals" |
| |
| sbox.build() |
| wc_dir = sbox.wc_dir |
| |
| # Create a root property. |
| sbox.simple_propset('Prime-Root-Prop', 'Root-Prop-Val1', '.') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add a root property', |
| wc_dir) |
| |
| # Create a "branch" property on 'A/D'. |
| sbox.simple_propset('Prime-Branch-Prop', 'Branch-Prop-Val1', 'A/D') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add a branch property', |
| wc_dir) |
| |
| # Create two file externals, one pegged to a fixed revision. |
| sbox.simple_propset('svn:externals', |
| sbox.repo_url + '/A/D/H/psi file-external', |
| 'A/B/E') |
| sbox.simple_propset('svn:externals', |
| sbox.repo_url + '/A/D/H/psi@4 file-external-pegged', |
| 'A/B/F') |
| svntest.actions.run_and_verify_svn(None, [], 'ci', '-m', |
| 'Add a file external', wc_dir) |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| |
| # Check the properties inherited by the external files. Both should |
| # inherit the properties from ^/ and ^/A/D. |
| expected_iprops = { |
| sbox.repo_url : {'Prime-Root-Prop' : 'Root-Prop-Val1'}, |
| sbox.repo_url + '/A/D' : {'Prime-Branch-Prop' : 'Branch-Prop-Val1'}} |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('A/B/E/file-external'), expected_iprops, |
| expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('A/B/F/file-external-pegged'), expected_iprops, |
| expected_explicit_props) |
| |
| # Modify the "branch" property on 'A/D'. |
| sbox.simple_propset('Prime-Branch-Prop', 'Branch-Prop-Val2', 'A/D') |
| svntest.main.run_svn(None, 'commit', '-m', 'Add a branch property', |
| wc_dir) |
| |
| # There should be no change in the external file's |
| # inherited properties until... |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('A/B/E/file-external'), expected_iprops, |
| expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('A/B/F/file-external-pegged'), expected_iprops, |
| expected_explicit_props) |
| |
| # ...We update the external: |
| svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir) |
| # The pegged file external's iprops should remain unchanged. |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('A/B/F/file-external-pegged'), expected_iprops, |
| expected_explicit_props) |
| # But the other's should be updated. |
| expected_iprops = { |
| sbox.repo_url : {'Prime-Root-Prop' : 'Root-Prop-Val1'}, |
| sbox.repo_url + '/A/D' : {'Prime-Branch-Prop' : 'Branch-Prop-Val2'}} |
| svntest.actions.run_and_verify_inherited_prop_xml( |
| sbox.ospath('A/B/E/file-external'), expected_iprops, |
| expected_explicit_props) |
| |
| def iprops_survive_commit(sbox): |
| "verify that iprops survive a commit" |
| |
| sbox.build() |
| sbox.simple_propset('key', 'D', 'A/B',) |
| sbox.simple_commit() |
| |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/A/B/E', |
| sbox.ospath('A/D'), '--ignore-ancestry') |
| svntest.main.run_svn(None, 'switch', sbox.repo_url + '/A/B/F', |
| sbox.ospath('iota'), '--ignore-ancestry') |
| expected_iprops = { |
| sbox.repo_url + '/A/B' : {'key' : 'D'}, |
| } |
| |
| expected_explicit_props = {} |
| svntest.actions.run_and_verify_inherited_prop_xml(sbox.ospath('A/D'), |
| expected_iprops, |
| expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml(sbox.ospath('iota'), |
| expected_iprops, |
| expected_explicit_props) |
| |
| sbox.simple_propset('new', 'V', 'A/D', 'iota') |
| sbox.simple_commit() |
| |
| expected_explicit_props = {'new': 'V'} |
| svntest.actions.run_and_verify_inherited_prop_xml(sbox.ospath('A/D'), |
| expected_iprops, |
| expected_explicit_props) |
| svntest.actions.run_and_verify_inherited_prop_xml(sbox.ospath('iota'), |
| expected_iprops, |
| expected_explicit_props) |
| |
| ######################################################################## |
| # Run the tests |
| |
| # list all tests here, starting with None: |
| test_list = [ None, |
| iprops_basic_working, |
| iprops_basic_repos, |
| iprops_switched_subtrees, |
| iprops_pegged_wc_targets, |
| iprops_pegged_url_targets, |
| iprops_shallow_operative_depths, |
| iprops_with_directory_externals, |
| iprops_with_file_externals, |
| iprops_survive_commit, |
| ] |
| |
| if __name__ == '__main__': |
| svntest.main.run_tests(test_list) |
| # NOTREACHED |
| |
| ### End of file. |