diff options
Diffstat (limited to 'subversion/tests/cmdline/dav_tests.py')
-rwxr-xr-x | subversion/tests/cmdline/dav_tests.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/subversion/tests/cmdline/dav_tests.py b/subversion/tests/cmdline/dav_tests.py new file mode 100755 index 0000000..e2ad2c7 --- /dev/null +++ b/subversion/tests/cmdline/dav_tests.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# +# dav_tests.py: testing connections to HTTP and DAV servers. +# +# 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, sys +import re +import socket +import traceback + +# 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 +# +# Each test must return on success or raise on failure. + + +#---------------------------------------------------------------------- + +@SkipUnless(svntest.main.is_ra_type_dav) +def connect_plain_http_server(sbox): + "connect to a non-DAV HTTP server" + expected_errors = svntest.verify.RegexListOutput([ + "^svn: E170013: Unable to connect to a repository at URL '[^']+'", + "^svn: E175003: The server at '[^']+' does not support the HTTP/DAV protocol" + ], False) + svntest.actions.run_and_verify_svn([], expected_errors, + 'info', svntest.main.non_dav_root_url) + +@SkipUnless(svntest.main.is_ra_type_dav) +def connect_other_dav_server(sbox): + "connect to a DAV server which is not an SVN server" + svntest.actions.run_and_verify_svn([], svntest.verify.AnyOutput, + 'info', svntest.main.other_dav_root_url) + +#---------------------------------------------------------------------- + +@SkipUnless(svntest.main.is_remote_http_connection_allowed) +def connect_to_github_server(sbox): + "connect to GitHub's SVN bridge" + + #github_mirror_url = 'https://github.com/apache/subversion/trunk' + # FIXME: Subversion's mirror on GitHub seems to randomly return gateway + # errors (status 504), so use this more stable one instead. + github_mirror_url = 'https://github.com/apache/serf/trunk' + + # Skip this test if we can't connect to the GitHub server. + # We check this here instead of in a SkipUnless() predicate decorator, + # because the decorator's condition function is called seeveral times + # during test execution. + try: + s = socket.create_connection(('github.com', 443), 2) # 2-second timeout + s.close() + except: + etype, value, _ = sys.exc_info() + reason = ''.join(traceback.format_exception_only(etype, value)).rstrip() + svntest.main.logger.warn('Connection to github.com failed: ' + reason) + raise svntest.Skip + + svntest.actions.run_and_verify_svn(None, [], 'info', github_mirror_url) + + +######################################################################## +# Run the tests + + +# list all tests here, starting with None: +test_list = [ None, + connect_plain_http_server, + connect_other_dav_server, + connect_to_github_server, + ] + +if __name__ == '__main__': + svntest.main.run_tests(test_list) + # NOTREACHED + + +### End of file. |