summaryrefslogtreecommitdiff
path: root/subversion/tests/cmdline/dav_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/tests/cmdline/dav_tests.py')
-rwxr-xr-xsubversion/tests/cmdline/dav_tests.py113
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.