Author: kotkov
Date: Wed Nov 23 12:30:51 2022
New Revision: 1905482
URL: http://svn.apache.org/viewvc?rev=1905482&view=rev
Log:
On the 'pristines-on-demand-on-mwf' branch: Rework the conditional checks
in the Python test suite.
Now the pristine mode is a property of the working copy [settings], rather
than format. So let's use `svn info --show-item=store-pristine` to access
that state where it is necessary.
* subversion/tests/cmdline/svntest/sandbox.py
(Sandbox.pristines_on_demand_enabled): Remove.
* subversion/tests/cmdline/svntest/actions.py
(get_wc_store_pristine): New helper. Use it …
* subversion/tests/cmdline/authz_tests.py
(cat_base_after_repo_access_removed): …here, …
* subversion/tests/cmdline/move_tests.py
(move_conflict_details): …here, …
* subversion/tests/cmdline/trans_tests.py
(keywords_from_birth, eol_change_is_text_mod): …here, …
* subversion/tests/cmdline/update_tests.py
(another_hudson_problem): …and here.
* subversion/tests/cmdline/upgrade_tests.py
(check_pristine): Use the new helper to skip white-box check of the
file contents at wc.text_base_path().
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/authz_tests.py
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/move_tests.py
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/actions.py
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/sandbox.py
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/trans_tests.py
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/update_tests.py
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/upgrade_tests.py
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/authz_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/authz_tests.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/authz_tests.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/authz_tests.py
Wed Nov 23 12:30:51 2022
@@ -1835,11 +1835,11 @@ def cat_base_after_repo_access_removed(s
# With repository read access denied, expect we can still access the
# text base locally, if and only if text bases are present.
- if sbox.pristines_on_demand_enabled():
- svntest.actions.run_and_verify_svn(None, '.*E170001: Authorization failed',
+ if svntest.actions.get_wc_store_pristine(wc_dir):
+ svntest.actions.run_and_verify_svn("This is the file 'pi'.\n", [],
'cat', sbox.ospath('A/D/G/pi') +
'@BASE')
else:
- svntest.actions.run_and_verify_svn("This is the file 'pi'.\n", [],
+ svntest.actions.run_and_verify_svn(None, '.*E170001: Authorization failed',
'cat', sbox.ospath('A/D/G/pi') +
'@BASE')
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/move_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/move_tests.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/move_tests.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/move_tests.py
Wed Nov 23 12:30:51 2022
@@ -1599,10 +1599,10 @@ def move_conflict_details(sbox):
sbox.simple_append('B/E/new-dir3', 'something')
sbox.simple_add('B/E/new-dir3')
+ store_pristine = svntest.actions.get_wc_store_pristine(sbox.wc_dir)
expected_output = svntest.verify.RegexListOutput(
- (["Fetching text bases [.]+done"]
- if sbox.pristines_on_demand_enabled() else [])
+ ([] if store_pristine else ["Fetching text bases [.]+done"])
+
[re.escape(x) for x in [
" C %s\n" % sbox.ospath('B'), # Property conflicted
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/actions.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/actions.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/actions.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/actions.py
Wed Nov 23 12:30:51 2022
@@ -2089,6 +2089,20 @@ def get_wc_base_rev(wc_dir):
"Return the BASE revision of the working copy at WC_DIR."
return run_and_parse_info(wc_dir)[0]['Revision']
+def get_wc_store_pristine(wc_dir):
+ "Return whether the working copy at WC_DIR stores pristine contents."
+ _, output, _ = run_and_verify_svn(
+ None, [],
+ 'info', '--show-item=store-pristine', '--no-newline',
+ wc_dir)
+
+ if output == ['yes']:
+ return True
+ elif output == ['no']:
+ return False
+ else:
+ raise verify.SVNUnexpectedStdout(output)
+
def load_dumpfile(filename):
"Return the contents of the FILENAME assuming that it is a dump file"
with open(filename, "rb") as fp:
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/sandbox.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/sandbox.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/sandbox.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/sandbox.py
Wed Nov 23 12:30:51 2022
@@ -629,9 +629,6 @@ class Sandbox:
ret[root[len(self.wc_dir)+1:]] = self._wc_format_of(wc_db_path)
return { k.replace(os.sep, '/') : ret[k] for k in ret }
- def pristines_on_demand_enabled(self, relpath=''):
- return self.read_wc_formats().get(relpath, 0) == 32
-
def is_url(target):
return (target.startswith('^/')
or target.startswith('file://')
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/trans_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/trans_tests.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/trans_tests.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/trans_tests.py
Wed Nov 23 12:30:51 2022
@@ -395,14 +395,14 @@ def keywords_from_birth(sbox):
# Read the text base. In pristines-on-demand mode it isn't stored locally
# after commit, so read it from the repo.
- if sbox.pristines_on_demand_enabled():
- _, actual_textbase_kw, _ = svntest.main.run_svn(False,
- 'cat', '-rHEAD', '--ignore-keywords',
- fixed_length_keywords_path)
- else:
+ if svntest.actions.get_wc_store_pristine(wc_dir):
fp = open(svntest.wc.text_base_path(fixed_length_keywords_path), 'r')
actual_textbase_kw = fp.readlines()
fp.close()
+ else:
+ _, actual_textbase_kw, _ = svntest.main.run_svn(False,
+ 'cat', '-rHEAD', '--ignore-keywords',
+ fixed_length_keywords_path)
check_keywords(actual_textbase_kw, kw_textbase, "text base")
@@ -605,7 +605,7 @@ def eol_change_is_text_mod(sbox):
if contents != b"1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n":
raise svntest.Failure
- if not sbox.pristines_on_demand_enabled():
+ if svntest.actions.get_wc_store_pristine(wc_dir):
foo_base_path = svntest.wc.text_base_path(foo_path)
base_contents = open(foo_base_path, 'rb').read()
if contents != base_contents:
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/update_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/update_tests.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/update_tests.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/update_tests.py
Wed Nov 23 12:30:51 2022
@@ -1189,7 +1189,7 @@ def another_hudson_problem(sbox):
'Updated to revision 3.\n',
]
expected_output = [re.escape(s) for s in expected_output]
- if sbox.pristines_on_demand_enabled():
+ if not svntest.actions.get_wc_store_pristine(wc_dir):
expected_output.append('Fetching text bases [.]*done\n')
# Sigh, I can't get run_and_verify_update to work (but not because
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/upgrade_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/upgrade_tests.py?rev=1905482&r1=1905481&r2=1905482&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/upgrade_tests.py
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/upgrade_tests.py
Wed Nov 23 12:30:51 2022
@@ -119,16 +119,11 @@ def check_formats(sbox, expected_formats
def check_pristine(sbox, files):
for file in files:
file_path = sbox.ospath(file)
- file_text = open(file_path, 'r').read()
- try:
+ if svntest.actions.get_wc_store_pristine(file_path):
+ file_text = open(file_path, 'r').read()
file_pristine = open(svntest.wc.text_base_path(file_path), 'r').read()
- except (FileNotFoundError, svntest.Failure): # FileNotFoundError
- if sbox.pristines_on_demand_enabled(''):
- # Pristine missing; pristines optional so ignore it
- continue
- raise
- if (file_text != file_pristine):
- raise svntest.Failure("pristine mismatch for '%s'" % (file))
+ if (file_text != file_pristine):
+ raise svntest.Failure("pristine mismatch for '%s'" % (file))
def check_dav_cache(dir_path, wc_id, expected_dav_caches):
dot_svn = svntest.main.get_admin_name()