You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ko...@apache.org on 2022/11/18 14:06:25 UTC
svn commit: r1905384 - in /subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline: pristines_on_demand_tests.py svntest/main.py
Author: kotkov
Date: Fri Nov 18 14:06:25 2022
New Revision: 1905384
URL: http://svn.apache.org/viewvc?rev=1905384&view=rev
Log:
On the 'pristines-on-demand-on-mwf' branch: Add a new file with explicit
test cases for a pristines-on-demand working copy.
I plan to add an option to run the whole test suite in this mode, but this
change ensures that we have a set of tests for the feature that runs by
default. Also, we'd have a dedicated location to write tests for certain
cases that are specific to the pristines-on-demand mode.
* subversion/tests/cmdline/pristines_on_demand_tests.py: New file, containing…
(simple_checkout,
simple_commit,
simple_update,
simple_status,
simple_diff,
simple_revert,
update_modified_file): …these new tests.
* subversion/tests/cmdline/svntest/main.py
(is_wc_pristines_on_demand_supported): New predicate.
Added:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py (with props)
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/main.py
Added: subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py?rev=1905384&view=auto
==============================================================================
--- subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py (added)
+++ subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py Fri Nov 18 14:06:25 2022
@@ -0,0 +1,292 @@
+#!/usr/bin/env python
+#
+# pristines_on_demand_tests.py: testing pristines-on-demand
+#
+# Subversion is a tool for revision control.
+# See https://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, logging, base64, functools
+
+# 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
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def simple_checkout(sbox):
+ "simple checkout with pristines-on-demand"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_disk = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_disk,
+ [],
+ "--store-pristines=no")
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def simple_commit(sbox):
+ "simple commit with pristines-on-demand"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_disk = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_disk,
+ [],
+ "--store-pristines=no")
+
+ sbox.simple_append('file', 'contents')
+ sbox.simple_add('file')
+
+ expected_output = svntest.wc.State(sbox.wc_dir, {
+ 'file' : Item(verb='Adding'),
+ })
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=0),
+ 'file' : Item(status=' ', wc_rev=1),
+ })
+ svntest.actions.run_and_verify_commit(sbox.wc_dir,
+ expected_output,
+ expected_status)
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def simple_update(sbox):
+ "simple update with pristines-on-demand"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_wc = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_wc,
+ [],
+ "--store-pristines=no")
+ sbox.simple_append('file', 'foo')
+ sbox.simple_add('file')
+ sbox.simple_commit(message='r1')
+
+ sbox.simple_append('file', 'bar')
+ sbox.simple_commit(message='r2')
+
+ expected_output = svntest.wc.State(sbox.wc_dir, {
+ 'file' : Item(status='U '),
+ })
+ expected_disk = svntest.wc.State('', {
+ 'file' : Item(contents='foo'),
+ })
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=1),
+ 'file' : Item(status=' ', wc_rev=1),
+ })
+ svntest.actions.run_and_verify_update(sbox.wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ [], False,
+ '-r1', sbox.wc_dir)
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def simple_status(sbox):
+ "simple status with pristines-on-demand"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_wc = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_wc,
+ [],
+ "--store-pristines=no")
+ sbox.simple_append('file', 'foo')
+ sbox.simple_add('file')
+
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=0),
+ 'file' : Item(status='A ', wc_rev='-'),
+ })
+ svntest.actions.run_and_verify_status(sbox.wc_dir,
+ expected_status)
+
+ sbox.simple_commit(message='r1')
+
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=0),
+ 'file' : Item(status=' ', wc_rev=1),
+ })
+ svntest.actions.run_and_verify_status(sbox.wc_dir,
+ expected_status)
+
+ sbox.simple_append('file', 'bar')
+
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=0),
+ 'file' : Item(status='M ', wc_rev=1),
+ })
+ svntest.actions.run_and_verify_status(sbox.wc_dir,
+ expected_status)
+
+ # Change back to the unmodified contents
+ sbox.simple_append('file', 'foo', truncate=True)
+
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=0),
+ 'file' : Item(status=' ', wc_rev=1),
+ })
+ svntest.actions.run_and_verify_status(sbox.wc_dir,
+ expected_status)
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def simple_diff(sbox):
+ "simple diff with pristines-on-demand"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_wc = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_wc,
+ [],
+ "--store-pristines=no")
+ sbox.simple_append('file', 'foo\n')
+ sbox.simple_add('file')
+ sbox.simple_commit(message='r1')
+
+ sbox.simple_append('file', 'bar\n', truncate=True)
+
+ diff_output = svntest.verify.make_diff_header(
+ sbox.ospath('file'), 'revision 1', 'working copy') + [
+ "@@ -1 +1 @@\n",
+ "-foo\n",
+ "+bar\n"
+ ]
+ svntest.actions.run_and_verify_svn(diff_output, [],
+ 'diff', sbox.ospath('file'))
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def simple_revert(sbox):
+ "simple revert with pristines-on-demand"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_wc = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_wc,
+ [],
+ "--store-pristines=no")
+ sbox.simple_append('file', 'foo\n')
+ sbox.simple_add('file')
+ sbox.simple_commit(message='r1')
+
+ sbox.simple_append('file', 'bar\n', truncate=True)
+
+ svntest.actions.run_and_verify_revert([sbox.ospath('file')])
+
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=0),
+ 'file' : Item(status=' ', wc_rev=1),
+ })
+ svntest.actions.run_and_verify_status(sbox.wc_dir,
+ expected_status)
+
+@SkipUnless(svntest.main.is_wc_pristines_on_demand_supported)
+def update_modified_file(sbox):
+ "update locally modified file"
+
+ sbox.build(empty=True, create_wc=False)
+ expected_output = svntest.wc.State(sbox.wc_dir, {})
+ expected_wc = svntest.wc.State('', {})
+ svntest.actions.run_and_verify_checkout(sbox.repo_url,
+ sbox.wc_dir,
+ expected_output,
+ expected_wc,
+ [],
+ "--store-pristines=no")
+ sbox.simple_append('file', 'foo')
+ sbox.simple_add('file')
+ sbox.simple_commit(message='r1')
+
+ sbox.simple_append('file', 'bar')
+ sbox.simple_commit(message='r2')
+
+ sbox.simple_update(revision=1)
+
+ # Make the same edit again so that the contents would merge.
+ sbox.simple_append('file', 'bar')
+
+ expected_output = svntest.wc.State(sbox.wc_dir, {
+ 'file' : Item(status='G '),
+ })
+ expected_disk = svntest.wc.State('', {
+ 'file' : Item(contents='foobar'),
+ })
+ expected_status = svntest.wc.State(sbox.wc_dir, {
+ '' : Item(status=' ', wc_rev=2),
+ 'file' : Item(status=' ', wc_rev=2),
+ })
+ svntest.actions.run_and_verify_update(sbox.wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status)
+
+########################################################################
+# Run the tests
+
+
+# list all tests here, starting with None:
+test_list = [ None,
+ simple_checkout,
+ simple_commit,
+ simple_update,
+ simple_status,
+ simple_diff,
+ simple_revert,
+ update_modified_file,
+ ]
+serial_only = True
+
+if __name__ == '__main__':
+ svntest.main.run_tests(test_list)
+ # NOTREACHED
+
+
+### End of file.
Propchange: subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/pristines_on_demand_tests.py
------------------------------------------------------------------------------
svn:executable = *
Modified: subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/main.py?rev=1905384&r1=1905383&r2=1905384&view=diff
==============================================================================
--- subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/main.py Fri Nov 18 14:06:25 2022
@@ -1765,6 +1765,11 @@ def wc_format(ver=None):
return 31
raise Exception("Unrecognized version number '%s'" % (ver,))
+def is_wc_pristines_on_demand_supported():
+ if options.wc_format_version is None:
+ return True
+ else:
+ return wc_format(options.wc_format_version) >= 32
######################################################################