Author: kotkov Date: Tue Nov 22 19:22:02 2022 New Revision: 1905459 URL: http://svn.apache.org/viewvc?rev=1905459&view=rev Log: On the 'pristines-on-demand-on-mwf' branch: Allow the test suite to run with different --store-pristine options:
win-tests.py --store-pristine=yes|no make check STORE_PRISTINE=yes|no (There are some remaining issues in the --store-pristine=no mode, but I'll try to handle them separately.) * Makefile.in (check): Handle STORE_PRISTINE and pass it to the test suite. * win-tests.py (): Handle the new --store-pristine option. (_usage_exit): Adjust usage text. * build/run_tests.py (): Update usage comment. (create_parser): Parse --store-pristine. (_init_py_tests, _init_c_tests): Propagate the new option further. * subversion/tests/cmdline/svntest/main.py (_create_parser): Parse --store-pristine. (run_one): Propagate the new option further. (_with_store_pristine): New helper, that is… (run_svn): …being used here. * subversion/tests/svn_test_main.c (test_options_e, cl_options): Add --store-pristine option. (svn_test_main): Parse the new option. Modified: subversion/branches/pristines-on-demand-on-mwf/Makefile.in subversion/branches/pristines-on-demand-on-mwf/build/run_tests.py subversion/branches/pristines-on-demand-on-mwf/subversion/tests/cmdline/svntest/main.py subversion/branches/pristines-on-demand-on-mwf/subversion/tests/svn_test_main.c subversion/branches/pristines-on-demand-on-mwf/win-tests.py Modified: subversion/branches/pristines-on-demand-on-mwf/Makefile.in URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/Makefile.in?rev=1905459&r1=1905458&r2=1905459&view=diff ============================================================================== --- subversion/branches/pristines-on-demand-on-mwf/Makefile.in (original) +++ subversion/branches/pristines-on-demand-on-mwf/Makefile.in Tue Nov 22 19:22:02 2022 @@ -629,6 +629,9 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $ if test "$(SVN_BIN_DIR)" != ""; then \ flags="--bin $(SVN_BIN_DIR) $$flags"; \ fi; \ + if test "$(STORE_PRISTINE)" != ""; then \ + flags="--store-pristine $(STORE_PRISTINE) $$flags"; \ + fi; \ LD_LIBRARY_PATH='$(auth_plugin_dirs):$(LD_LIBRARY_PATH)' \ $(PYTHON) $(top_srcdir)/build/run_tests.py \ --config-file $(top_srcdir)/subversion/tests/tests.conf \ Modified: subversion/branches/pristines-on-demand-on-mwf/build/run_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/build/run_tests.py?rev=1905459&r1=1905458&r2=1905459&view=diff ============================================================================== --- subversion/branches/pristines-on-demand-on-mwf/build/run_tests.py (original) +++ subversion/branches/pristines-on-demand-on-mwf/build/run_tests.py Tue Nov 22 19:22:02 2022 @@ -35,7 +35,7 @@ [--config-file=<file>] [--ssl-cert=<file>] [--exclusive-wc-locks] [--memcached-server=<url:port>] [--fsfs-compression=<type>] [--fsfs-dir-deltification=<true|false>] - [--allow-remote-http-connection] + [--allow-remote-http-connection] [--store-pristine=<val>] <abs_srcdir> <abs_builddir> <prog ...> @@ -264,6 +264,8 @@ class TestHarness: cmdline.append('--mode-filter=' + self.opts.mode_filter) if self.opts.parallel is not None: cmdline.append('--parallel') + if self.opts.store_pristine is not None: + cmdline.append('--store-pristine=%s' % self.opts.store_pristine) self.c_test_cmdline = cmdline @@ -331,6 +333,8 @@ class TestHarness: cmdline.append('--fsfs-dir-deltification=%s' % self.opts.fsfs_dir_deltification) if self.opts.allow_remote_http_connection is not None: cmdline.append('--allow-remote-http-connection') + if self.opts.store_pristine is not None: + cmdline.append('--store-pristine=%s' % self.opts.store_pristine) self.py_test_cmdline = cmdline @@ -1089,6 +1093,8 @@ def create_parser(): help='Set directory deltification option (for fsfs)') parser.add_option('--allow-remote-http-connection', action='store_true', help='Run tests that connect to remote HTTP(S) servers') + parser.add_option('--store-pristine', action='store', type='str', + help='Set the WC pristine mode') parser.set_defaults(set_log_level=None) return parser 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=1905459&r1=1905458&r2=1905459&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 Tue Nov 22 19:22:02 2022 @@ -800,6 +800,18 @@ def copy_trust(dst_cfgdir, src_cfgdir): for f in os.listdir(src_ssl_dir): shutil.copy(os.path.join(src_ssl_dir, f), os.path.join(dst_ssl_dir, f)) +def _with_store_pristine(args): + if '--store-pristine' in args \ + or any(str(one_arg).startswith('--store-pristine=') for one_arg in args) \ + or options.store_pristine is None: + return args + non_opt_args = [a for a in args if not str(a).startswith('-')] + if non_opt_args: + subcommand = non_opt_args[0] + if subcommand in ['co', 'checkout']: + return args + ('--store-pristine', options.store_pristine) + return args + def _with_wc_format_version(args): if '--compatible-version' in args \ or any(str(one_arg).startswith('--compatible-version=') for one_arg in args) \ @@ -847,7 +859,8 @@ def run_svn(error_expected, *varargs): you're just checking that something does/doesn't come out of stdout/stderr, you might want to use actions.run_and_verify_svn().""" return run_command(svn_binary, error_expected, False, - *(_with_wc_format_version(_with_auth(_with_config_dir(varargs))))) + *(_with_store_pristine(_with_wc_format_version( + _with_auth(_with_config_dir(varargs)))))) # For running svnadmin. Ignores the output. def run_svnadmin(*varargs): @@ -1857,6 +1870,8 @@ class TestSpawningThread(threading.Threa args.append('--allow-remote-http-connection') if options.svn_bin: args.append('--bin=' + options.svn_bin) + if options.store_pristine: + args.append('--store-pristine=' + options.store_pristine) result, stdout_lines, stderr_lines = spawn_process(command, 0, False, None, *args) @@ -2296,6 +2311,8 @@ def _create_parser(usage=None): help='Set directory deltification option (for fsfs)') parser.add_option('--allow-remote-http-connection', action='store_true', help='Run tests that connect to remote HTTP(S) servers') + parser.add_option('--store-pristine', action='store', type='str', + help='Set the WC pristine mode') # most of the defaults are None, but some are other values, set them here parser.set_defaults( Modified: subversion/branches/pristines-on-demand-on-mwf/subversion/tests/svn_test_main.c URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/tests/svn_test_main.c?rev=1905459&r1=1905458&r2=1905459&view=diff ============================================================================== --- subversion/branches/pristines-on-demand-on-mwf/subversion/tests/svn_test_main.c (original) +++ subversion/branches/pristines-on-demand-on-mwf/subversion/tests/svn_test_main.c Tue Nov 22 19:22:02 2022 @@ -111,7 +111,8 @@ enum test_options_e { mode_filter_opt, sqlite_log_opt, parallel_opt, - fsfs_version_opt + fsfs_version_opt, + store_pristine_opt }; static const apr_getopt_option_t cl_options[] = @@ -157,6 +158,8 @@ static const apr_getopt_option_t cl_opti N_("enable SQLite logging")}, {"parallel", parallel_opt, 0, N_("allow concurrent execution of tests")}, + {"store-pristine", store_pristine_opt, 1, + N_("set the WC pristine mode")}, {0, 0, 0, 0} }; @@ -1026,6 +1029,18 @@ svn_test_main(int argc, const char *argv parallel = TRUE; break; #endif + case store_pristine_opt: + { + const char *utf8_opt_arg; + SVN_INT_ERR(svn_utf_cstring_to_utf8(&utf8_opt_arg, opt_arg, pool)); + opts.store_pristine = svn_tristate__from_word(utf8_opt_arg); + if (opts.store_pristine == svn_tristate_unknown) + { + fprintf(stderr, "FAIL: Invalid --store-pristine option.\n"); + exit(1); + } + break; + } } } opts.verbose = verbose_mode; Modified: subversion/branches/pristines-on-demand-on-mwf/win-tests.py URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/win-tests.py?rev=1905459&r1=1905458&r2=1905459&view=diff ============================================================================== --- subversion/branches/pristines-on-demand-on-mwf/win-tests.py (original) +++ subversion/branches/pristines-on-demand-on-mwf/win-tests.py Tue Nov 22 19:22:02 2022 @@ -115,6 +115,7 @@ def _usage_exit(): print(" --fsfs-packing : Run 'svnadmin pack' automatically") print(" --fsfs-compression=VAL : Set compression type to VAL (for fsfs)") print(" --wc-format-version=VAL: Set the WC format version") + print(" --store-pristine=VAL : Set the WC pristine mode") print(" -q, --quiet : Deprecated; this is the default.") print(" Use --set-log-level instead.") @@ -147,6 +148,7 @@ opts, args = my_getopt(sys.argv[1:], 'hr 'ssl-cert=', 'exclusive-wc-locks', 'memcached-server=', 'skip-c-tests', 'dump-load-cross-check', 'memcached-dir=', 'fsfs-compression=', 'wc-format-version=', + 'store-pristine=' ]) if len(args) > 1: print('Warning: non-option arguments after the first one will be ignored') @@ -195,6 +197,7 @@ dump_load_cross_check = None fsfs_compression = None fsfs_dir_deltification = None wc_format_version = None +store_pristine = None for opt, val in opts: if opt in ('-h', '--help'): @@ -295,6 +298,8 @@ for opt, val in opts: fsfs_dir_deltification = val elif opt == '--wc-format-version': wc_format_version = val + elif opt == '--store-pristine': + store_pristine = val # Calculate the source and test directory names abs_srcdir = os.path.abspath("") @@ -1137,6 +1142,7 @@ if not test_javahl and not test_swig: opts.fsfs_compression = fsfs_compression opts.fsfs_dir_deltification = fsfs_dir_deltification opts.wc_format_version = wc_format_version + opts.store_pristine = store_pristine th = run_tests.TestHarness(abs_srcdir, abs_builddir, log_file, fail_log_file, opts) old_cwd = os.getcwd()