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.