You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by as...@apache.org on 2012/11/24 21:29:48 UTC

svn commit: r1413258 [26/33] - in /subversion/branches/compressed-pristines: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ contrib/client-side/emacs/ contrib/server-side/fsfsfixer/ notes/ notes/directory-index/ subversion/ subv...

Modified: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests.py?rev=1413258&r1=1413257&r2=1413258&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests.py (original)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests.py Sat Nov 24 20:29:11 2012
@@ -25,11 +25,13 @@
 ######################################################################
 
 # General modules
-import re, os.path
+import re, os.path, sys
 
 # Our testing module
 import svntest
 from svntest import wc
+from prop_tests import create_inherited_ignores_config
+from svntest.main import SVN_PROP_INHERITABLE_IGNORES
 
 # (abbreviation)
 Skip = svntest.testcase.Skip_deco
@@ -407,6 +409,163 @@ def import_into_foreign_repo(sbox):
                                      sbox.ospath('A/mu'), other_repo_url + '/f')
 
 #----------------------------------------------------------------------
+def import_inherited_ignores(sbox):
+  'import and inherited ignores'
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Create this config file:
+  #
+  #   [miscellany]
+  #   global-ignores = *.boo *.goo
+  tmp_dir = os.path.abspath(svntest.main.temp_dir)
+  config_dir = os.path.join(tmp_dir, 'autoprops_config_' + sbox.name)
+  create_inherited_ignores_config(config_dir)
+
+  # Set some ignore properties.
+  sbox.simple_propset(SVN_PROP_INHERITABLE_IGNORES, '*.voo *.noo *.loo', '.')
+  sbox.simple_propset(SVN_PROP_INHERITABLE_IGNORES, '*.yoo\t*.doo', 'A/B')
+  sbox.simple_propset(SVN_PROP_INHERITABLE_IGNORES, '*.moo', 'A/D')
+  sbox.simple_propset('svn:ignore', '*.zoo\n*.foo\n*.poo', 'A/B/E')
+  sbox.simple_commit()
+
+  # Use this tree for importing:
+  #
+  # DIR1.noo
+  # DIR2.doo
+  #   file1.txt
+  # DIR3.foo
+  #   file2.txt
+  # DIR4.goo
+  #   file3.txt
+  #   file4.noo
+  # DIR5.moo
+  #   file5.txt
+  # DIR6
+  #   file6.foo
+  #   DIR7
+  #     file7.foo
+  #     DIR8.noo
+  import_tree_dir = os.path.join(os.path.dirname(sys.argv[0]),
+                                 'import_tests_data', 'import_tree')
+
+  # Relative WC paths of the imported tree.
+  dir1_path  = os.path.join('DIR1.noo')
+  dir2_path  = os.path.join('DIR2.doo')
+  file1_path = os.path.join('DIR2.doo', 'file1.txt')
+  dir3_path  = os.path.join('DIR3.foo')
+  file2_path = os.path.join('DIR3.foo', 'file2.txt')
+  dir4_path  = os.path.join('DIR4.goo')
+  file3_path = os.path.join('DIR4.goo', 'file3.txt')
+  file4_path = os.path.join('DIR4.goo', 'file4.txt')
+  dir5_path  = os.path.join('DIR5.moo')
+  file5_path = os.path.join('DIR5.moo', 'file5.txt')
+  dir6_path  = os.path.join('DIR6')
+  file6_path = os.path.join('DIR6', 'file6.foo')
+  dir7_path  = os.path.join('DIR6', 'DIR7')
+  file7_path = os.path.join('DIR6', 'DIR7', 'file7.foo')
+  dir8_path  = os.path.join('DIR6', 'DIR7', 'DIR8.noo')
+
+  # Import the tree to ^/A/B/E.
+  # We should never see any *.noo paths because those are blocked at the
+  # root of the repository by the svn:inheritable-ignores property.  Likewise
+  # *.doo paths are blocked by the svn:inheritable-ignores on ^/A/B.  Nor
+  # should we see and *.boo or *.goo paths, as those are blocked by the
+  # global-ignores config. Lastly, ^/A/B/E should not get any *.foo paths
+  # because of the svn:ignore property on ^/A/B/E, but non-immediate children
+  # of ^/A/B/E are permitted *.foo paths.
+  svntest.actions.run_and_verify_svn(None, None, [], 'import',
+                                     '--config-dir', config_dir,
+                                     import_tree_dir,
+                                     sbox.repo_url + '/A/B/E',
+                                     '-m', 'import')
+  E_path = os.path.join(wc_dir, 'A', 'B', 'E')
+  expected_output = svntest.verify.UnorderedOutput(
+    ["Updating '" + wc_dir + "':\n",
+     'A    ' + os.path.join(E_path, dir5_path)  + '\n',
+     'A    ' + os.path.join(E_path, file5_path) + '\n',
+     'A    ' + os.path.join(E_path, dir6_path)  + '\n',
+     'A    ' + os.path.join(E_path, file6_path) + '\n',
+     'A    ' + os.path.join(E_path, dir7_path)  + '\n',
+     'A    ' + os.path.join(E_path, file7_path) + '\n',
+     'Updated to revision 3.\n'])
+  svntest.actions.run_and_verify_svn(None, expected_output, [], 'up', wc_dir)
+
+  # Import the tree to ^/A/B/E/Z.  The only difference from above is that
+  # DIR3.foo and its child file2.txt are also imported.  Why? Because now
+  # we are creating a new directory in ^/A/B/E, so the svn:ignore property
+  # set on ^/A/B/E doesn't apply.
+  svntest.actions.run_and_verify_svn(None, None, [], 'import',
+                                     '--config-dir', config_dir,
+                                     import_tree_dir,
+                                     sbox.repo_url + '/A/B/E/Z',
+                                     '-m', 'import')
+  Z_path = os.path.join(wc_dir, 'A', 'B', 'E', 'Z')
+  expected_output = svntest.verify.UnorderedOutput(
+    ["Updating '" + wc_dir + "':\n",
+     'A    ' + os.path.join(Z_path)             + '\n',
+     'A    ' + os.path.join(Z_path, dir5_path)  + '\n',
+     'A    ' + os.path.join(Z_path, file5_path) + '\n',
+     'A    ' + os.path.join(Z_path, dir6_path)  + '\n',
+     'A    ' + os.path.join(Z_path, file6_path) + '\n',
+     'A    ' + os.path.join(Z_path, dir7_path)  + '\n',
+     'A    ' + os.path.join(Z_path, file7_path) + '\n',
+     'A    ' + os.path.join(Z_path, dir3_path)  + '\n',
+     'A    ' + os.path.join(Z_path, file2_path) + '\n',
+     'Updated to revision 4.\n'])
+  svntest.actions.run_and_verify_svn(None, expected_output, [], 'up', wc_dir)
+
+  # Import the tree to ^/A/B/F with the --no-ignore option.
+  # Now only the ignores present in the svn:inheritable-ignores property
+  # should be considered.
+  svntest.actions.run_and_verify_svn(None, None, [], 'import',
+                                     '--config-dir', config_dir,
+                                     '--no-ignore', import_tree_dir,
+                                     sbox.repo_url + '/A/B/F',
+                                     '-m', 'import')
+  F_path = os.path.join(wc_dir, 'A', 'B', 'F')
+  expected_output = svntest.verify.UnorderedOutput(
+    ["Updating '" + wc_dir + "':\n",
+     'A    ' + os.path.join(F_path, dir3_path)  + '\n',
+     'A    ' + os.path.join(F_path, file2_path) + '\n',
+     'A    ' + os.path.join(F_path, dir4_path)  + '\n',
+     'A    ' + os.path.join(F_path, file3_path) + '\n',
+     'A    ' + os.path.join(F_path, dir5_path)  + '\n',
+     'A    ' + os.path.join(F_path, file5_path) + '\n',
+     'A    ' + os.path.join(F_path, dir6_path)  + '\n',
+     'A    ' + os.path.join(F_path, file6_path) + '\n',
+     'A    ' + os.path.join(F_path, dir7_path)  + '\n',
+     'A    ' + os.path.join(F_path, file7_path) + '\n',
+     'Updated to revision 5.\n'])
+  svntest.actions.run_and_verify_svn(None, expected_output, [], 'up', wc_dir)
+
+  # Try importing a single file into a directory which has svn:ignore set
+  # on it with a matching pattern of the imported file.  The import should
+  # be a no-op.
+  svntest.actions.run_and_verify_svn(None, [], [], 'import',
+                                     '--config-dir', config_dir,
+                                     os.path.join(import_tree_dir,
+                                                  'DIR6', 'file6.foo'), 
+                                     sbox.repo_url + '/A/B/E/file6.foo',
+                                     '-m', 'This import should fail!')
+
+  # Try the above, but this time with --no-ignore, this time the import
+  # should succeed.
+  svntest.actions.run_and_verify_svn(None, None, [], 'import', '--no-ignore',
+                                     '--config-dir', config_dir,
+                                     os.path.join(import_tree_dir,
+                                                  'DIR6', 'file6.foo'), 
+                                     sbox.repo_url + '/A/B/E/file6.foo',
+                                     '-m', 'import')
+  expected_output = svntest.verify.UnorderedOutput(
+    ["Updating '" + wc_dir + "':\n",
+     'A    ' + os.path.join(E_path, 'file6.foo') + '\n',
+     'Updated to revision 6.\n'])
+  svntest.actions.run_and_verify_svn(None, expected_output, [], 'up', wc_dir)
+
+#----------------------------------------------------------------------
+
 ########################################################################
 # Run the tests
 
@@ -419,6 +578,7 @@ test_list = [ None,
               import_no_ignores,
               import_eol_style,
               import_into_foreign_repo,
+              import_inherited_ignores,
              ]
 
 if __name__ == '__main__':

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR1.noo/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR1.noo/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR1.noo/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/file1.txt
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/file1.txt?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/file1.txt (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR2.doo/file1.txt Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/file2.txt
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/file2.txt?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/file2.txt (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR3.foo/file2.txt Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file3.txt
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file3.txt?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file3.txt (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file3.txt Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file4.noo
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file4.noo?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file4.noo (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR4.goo/file4.noo Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/file5.txt
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/file5.txt?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/file5.txt (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR5.moo/file5.txt Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/DIR8.noo/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 24 20:29:11 2012
@@ -0,0 +1,2 @@
+[Ii]ssues?:?(\s*(,|and)?\s*#\d+)+
+(\d+)

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/DIR8.noo/
------------------------------------------------------------------------------
    bugtraq:url = http://subversion.tigris.org/issues/show_bug.cgi?id=%BUGID%

Propchange: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/DIR8.noo/
------------------------------------------------------------------------------
    tsvn:logwidthmarker = 78

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/file7.foo
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/file7.foo?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/file7.foo (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/DIR7/file7.foo Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/file6.foo
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/file6.foo?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/file6.foo (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/import_tests_data/import_tree/DIR6/file6.foo Sat Nov 24 20:29:11 2012
@@ -0,0 +1 @@
+A file

Added: subversion/branches/compressed-pristines/subversion/tests/cmdline/iprop_authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/cmdline/iprop_authz_tests.py?rev=1413258&view=auto
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/cmdline/iprop_authz_tests.py (added)
+++ subversion/branches/compressed-pristines/subversion/tests/cmdline/iprop_authz_tests.py Sat Nov 24 20:29:11 2012
@@ -0,0 +1,130 @@
+#!/usr/bin/env python
+#
+#  iprop_authz_tests.py:  iprop tests that need to write an authz file
+#
+#  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
+
+from svntest.main import write_restrictive_svnserve_conf
+from svntest.main import write_authz_file
+
+######################################################################
+# Tests
+
+#----------------------------------------------------------------------
+# Property inheritance with read restrictions on parent paths.
+@Skip(svntest.main.is_ra_type_file)
+def iprops_authz(sbox):
+  "property inheritance and read restricted parents"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # r2 - Set properties at various levels.
+  sbox.simple_propset('RootProp', 'Root-Prop-Val', '.')
+  sbox.simple_propset('BranchProp', 'Branch-Prop-Val', 'A')
+  sbox.simple_propset('RandomProp1', 'Random-Prop-Val-1', 'A/D')
+  sbox.simple_propset('RandomProp2', 'Random-Prop-Val-2', 'A/D/H')
+  sbox.simple_propset('FileProp1', 'File-Prop-Val-1', 'A/D/H/psi')
+  svntest.main.run_svn(None, 'commit', '-m', 'Add some properties',
+                       wc_dir)
+
+  write_restrictive_svnserve_conf(sbox.repo_dir)
+
+  # Check that a restricted user can only see inherited props from
+  # parent paths which he has read access to.
+
+  # Grant access only to ^/A/D/H/psi.  No inherited properties should
+  # be shown.
+  write_authz_file(sbox, {
+    "/A/D/H/psi" : svntest.main.wc_author + "=rw",})
+
+  expected_iprops = {}
+  expected_explicit_props = {'FileProp1' : 'File-Prop-Val-1'}
+  svntest.actions.run_and_verify_inherited_prop_xml(
+    sbox.repo_url + '/A/D/H/psi', expected_iprops, expected_explicit_props)
+
+  # Grant access to ^/A/D/H/psi and the repos root but not the intermediate
+  # paths between the two.
+  write_authz_file(sbox, {
+    "/"          : svntest.main.wc_author + "=rw",
+    "/A"         : svntest.main.wc_author + "=",
+    "/A/D/H/psi" : svntest.main.wc_author + "=rw",})
+
+  expected_iprops = {
+    sbox.repo_url : {'RootProp' : 'Root-Prop-Val'}}
+  svntest.actions.run_and_verify_inherited_prop_xml(
+    sbox.repo_url + '/A/D/H/psi', expected_iprops, expected_explicit_props)
+
+  # Grant access to ^/A/D/H/psi, the repos root, and the intermediate path
+  # ^/A/D.  Everything else is still blocked.
+  write_authz_file(sbox, {
+    "/"          : svntest.main.wc_author + "=rw",
+    "/A"         : svntest.main.wc_author + "=",
+    "/A/D"       : svntest.main.wc_author + "=rw",
+    "/A/D/H"     : svntest.main.wc_author + "=",
+    "/A/D/H/psi" : svntest.main.wc_author + "=rw",})
+
+  expected_iprops = {
+    sbox.repo_url : {'RootProp' : 'Root-Prop-Val'},
+    sbox.repo_url + '/A/D': {'RandomProp1' : 'Random-Prop-Val-1'}}
+  svntest.actions.run_and_verify_inherited_prop_xml(
+    sbox.repo_url + '/A/D/H/psi', expected_iprops, expected_explicit_props)
+
+  # Grant read access to everything except ^/A/D/H/psi.  In this case we
+  # should get an authorization failed error.  It doesn't matter that we can
+  # read the parents.
+  write_authz_file(sbox, {
+    "/"          : svntest.main.wc_author + "=rw",
+    "/A/D/H/psi" : svntest.main.wc_author + "=",})
+  if sbox.repo_url.startswith("http"):
+    expected_err = ".*[Ff]orbidden.*"
+  else:
+    expected_err = ".*svn: E170001: Authorization failed.*"
+  svntest.actions.run_and_verify_svn(
+    None, None, expected_err, 'proplist', '-v',
+    '--show-inherited-props', sbox.repo_url + '/A/D/H/psi')
+
+########################################################################
+# Run the tests
+
+# list all tests here, starting with None:
+test_list = [ None,
+              iprops_authz,
+            ]
+
+serial_only = True
+
+if __name__ == '__main__':
+  svntest.main.run_tests(test_list)
+  # NOTREACHED
+
+### End of file.