Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8391720
test_server.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
test_server.py
View Options
# test_server.py -- Compatibility tests for git server.
# Copyright (C) 2010 Google, Inc.
#
# Dulwich is dual-licensed under the Apache License, Version 2.0 and the GNU
# General Public License as public by the Free Software Foundation; version 2.0
# or (at your option) any later version. You can redistribute it and/or
# modify it under the terms of either of these two licenses.
#
# 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.
#
# You should have received a copy of the licenses; if not, see
# <http://www.gnu.org/licenses/> for a copy of the GNU General Public License
# and <http://www.apache.org/licenses/LICENSE-2.0> for a copy of the Apache
# License, Version 2.0.
#
"""Compatibility tests between Dulwich and the cgit server.
Warning: these tests should be fairly stable, but when writing/debugging new
tests, deadlocks may freeze the test process such that it cannot be
Ctrl-C'ed. On POSIX systems, you can kill the tests with Ctrl-Z, "kill %".
"""
import
threading
import
os
import
sys
from
dulwich.server
import
(
DictBackend
,
TCPGitServer
,
)
from
dulwich.tests
import
skipIf
from
dulwich.tests.compat.server_utils
import
(
ServerTests
,
NoSideBand64kReceivePackHandler
,
)
from
dulwich.tests.compat.utils
import
(
CompatTestCase
,
require_git_version
,
)
@skipIf
(
sys
.
platform
==
'win32'
,
'Broken on windows, with very long fail time.'
)
class
GitServerTestCase
(
ServerTests
,
CompatTestCase
):
"""Tests for client/server compatibility.
This server test case does not use side-band-64k in git-receive-pack.
"""
protocol
=
'git'
def
_handlers
(
self
):
return
{
b
'git-receive-pack'
:
NoSideBand64kReceivePackHandler
}
def
_check_server
(
self
,
dul_server
):
receive_pack_handler_cls
=
dul_server
.
handlers
[
b
'git-receive-pack'
]
caps
=
receive_pack_handler_cls
.
capabilities
()
self
.
assertFalse
(
b
'side-band-64k'
in
caps
)
def
_start_server
(
self
,
repo
):
backend
=
DictBackend
({
b
'/'
:
repo
})
dul_server
=
TCPGitServer
(
backend
,
b
'localhost'
,
0
,
handlers
=
self
.
_handlers
())
self
.
_check_server
(
dul_server
)
self
.
addCleanup
(
dul_server
.
shutdown
)
self
.
addCleanup
(
dul_server
.
server_close
)
threading
.
Thread
(
target
=
dul_server
.
serve
)
.
start
()
self
.
_server
=
dul_server
_
,
port
=
self
.
_server
.
socket
.
getsockname
()
return
port
@skipIf
(
sys
.
platform
==
'win32'
,
'Broken on windows, with very long fail time.'
)
class
GitServerSideBand64kTestCase
(
GitServerTestCase
):
"""Tests for client/server compatibility with side-band-64k support."""
# side-band-64k in git-receive-pack was introduced in git 1.7.0.2
min_git_version
=
(
1
,
7
,
0
,
2
)
def
setUp
(
self
):
super
(
GitServerSideBand64kTestCase
,
self
)
.
setUp
()
# side-band-64k is broken in the widows client.
# https://github.com/msysgit/git/issues/101
# Fix has landed for the 1.9.3 release.
if
os
.
name
==
'nt'
:
require_git_version
((
1
,
9
,
3
))
def
_handlers
(
self
):
return
None
# default handlers include side-band-64k
def
_check_server
(
self
,
server
):
receive_pack_handler_cls
=
server
.
handlers
[
b
'git-receive-pack'
]
caps
=
receive_pack_handler_cls
.
capabilities
()
self
.
assertTrue
(
b
'side-band-64k'
in
caps
)
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Jun 4 2025, 6:48 PM (12 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3398789
Attached To
rPPDW python3-dulwich packaging
Event Timeline
Log In to Comment