Prabhu Gnana Sundar wrote on Thu, Feb 03, 2011 at 16:53:54 +0530: > Hi all, > > Currently, as per the issue 3781, "checkout" reads the authz file in > *case insensitive* way, whereas "commit" reads the authz file in *case > sensitive* way. > > Here is what is observed: > 1. Checkout is *case insensitive* about the repository name section and > also the path-inside-repo section. > 2. Commit is *case sensitive* about the repository name section *but > case insensitive* about the path-inside-repo section. > > Attached an XFail testcase and the log message with this mail. Please > share your views. > >
You didn't actually say what the intended behaviour is. > [[[ > XFail testcase for the issue 3781 Thanks for writing the XFail test first. > Index: subversion/tests/cmdline/authz_tests.py > =================================================================== > --- subversion/tests/cmdline/authz_tests.py (revision 1066732) > +++ subversion/tests/cmdline/authz_tests.py (working copy) > @@ -1061,6 +1061,67 @@ > [], 'ls', '-R', > sbox.repo_url) > > + > +def case_insensitive_authz(sbox): > + "authz issue #3781, check case insensitiveness" > + > + sbox.build() > + > + # test the case-insensitivity of the path inside the repo > + write_authz_file(sbox, {"/": "jrandom = r", "/A": "jrandom = r", "/a/Mu": > "jrandom = rw"}) > + > + write_restrictive_svnserve_conf(sbox.repo_dir) > + > + wc_dir = sbox.wc_dir > + > + mu_path = os.path.join(wc_dir, 'A', 'mu') > + mu_url = sbox.repo_url + '/A/mu' > + svntest.main.file_append(mu_path, "hi") > + > + # Create expected output tree. > + expected_output = svntest.wc.State(wc_dir, { > + 'A/mu' : Item(verb='Sending'), > + }) > + > + # Commit the file. > + svntest.actions.run_and_verify_commit(wc_dir, > + expected_output, > + None, > + None, > + mu_path) Hold on. Why does this work? You commit /A/mu and the authz file gives you only 'r' access to /A! > + svntest.actions.run_and_verify_svn2('No error', > + svntest.verify.AnyOutput, [], > + 0, 'cat', mu_url) > + > + def mixcases(repo_name): > + mixed_repo_name = '' > + for i in range(0, len(repo_name)): > + if i % 2 == 0: > + mixed_val = repo_name[i].upper() > + mixed_repo_name = mixed_repo_name + mixed_val > + else: > + mixed_val = repo_name[i].lower() > + mixed_repo_name = mixed_repo_name + mixed_val > + return mixed_repo_name > + Nice, but why not just pass NAME to sbox.build() and then hard-code 'bar' and 'baR' in the test? > + mixed_case_repo_dir = mixcases(os.path.basename(sbox.repo_dir)) > + > + # test the case-insensitivity of the repo name > + write_authz_file(sbox, {}, sections = {mixed_case_repo_dir + ":/": > "jrandom = r", > + mixed_case_repo_dir + ":/A": > "jrandom = r", > + mixed_case_repo_dir + ":/A/mu": > "jrandom = rw"}) > + Just for clarity, could you add sections for the correct-case repository name to the authz file? > + svntest.main.file_append(mu_path, "hi") > + # Commit the file again. > + svntest.actions.run_and_verify_commit(wc_dir, > + expected_output, > + None, > + None, > + mu_path) > + svntest.actions.run_and_verify_svn2('No error', > + svntest.verify.AnyOutput, [], > + 0, 'cat', mu_url) Could you have here both a commit that fails and a commit that succeeds?