Rev 4168: (vila) FTP test server: disable medusa for python2.6, add pyftpdlib in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Thu Mar 19 15:41:51 GMT 2009
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4168
revision-id: pqm at pqm.ubuntu.com-20090319154145-159h7mmiivu3df6v
parent: pqm at pqm.ubuntu.com-20090319070051-g88q6nfmvkxgvnto
parent: v.ladeuil+lp at free.fr-20090319145751-6vg1h5oo1jox3wsw
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2009-03-19 15:41:45 +0000
message:
(vila) FTP test server: disable medusa for python2.6, add pyftpdlib
added:
bzrlib/tests/ftp_server/ ftp_server-20090227112800-4r9jkezw2hw9tij7-1
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
renamed:
bzrlib/tests/ftp_server.py => bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/ftp/_gssapi.py _gssapi.py-20080611190840-7ejrtp884bk5eu72-2
bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
------------------------------------------------------------
revno: 4167.1.1
revision-id: v.ladeuil+lp at free.fr-20090319145751-6vg1h5oo1jox3wsw
parent: pqm at pqm.ubuntu.com-20090319070051-g88q6nfmvkxgvnto
parent: v.ladeuil+lp at free.fr-20090319144141-wd2ng1ooqcs2n6ai
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: integration
timestamp: Thu 2009-03-19 15:57:51 +0100
message:
FTP test server: disable medusa for python2.6, add pyftpdlib
added:
bzrlib/tests/ftp_server/ ftp_server-20090227112800-4r9jkezw2hw9tij7-1
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
renamed:
bzrlib/tests/ftp_server.py => bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/ftp/_gssapi.py _gssapi.py-20080611190840-7ejrtp884bk5eu72-2
bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
------------------------------------------------------------
revno: 3508.1.24
revision-id: v.ladeuil+lp at free.fr-20090319144141-wd2ng1ooqcs2n6ai
parent: v.ladeuil+lp at free.fr-20090319142827-m03usu4my6qvukc8
parent: v.ladeuil+lp at free.fr-20090319143726-vb161l9frg896do7
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Thu 2009-03-19 15:41:41 +0100
message:
Merge bzr.dev at 4167 to avoid conflicts
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/overview.txt overview.txt-20080904022501-ww2ggomrs5elxfm0-1
doc/developers/performance-contributing.txt performancecontribut-20070621063612-ac4zhhagjzkr21qp-1
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
------------------------------------------------------------
revno: 4063.3.5
revision-id: v.ladeuil+lp at free.fr-20090319143726-vb161l9frg896do7
parent: v.ladeuil+lp at free.fr-20090318163323-k607telg4uumomyy
parent: pqm at pqm.ubuntu.com-20090319070051-g88q6nfmvkxgvnto
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: disable-medusa-for-python-2.6
timestamp: Thu 2009-03-19 15:37:26 +0100
message:
Merge bzr.dev into disable-medusa-for-python-2.6
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/overview.txt overview.txt-20080904022501-ww2ggomrs5elxfm0-1
doc/developers/performance-contributing.txt performancecontribut-20070621063612-ac4zhhagjzkr21qp-1
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
------------------------------------------------------------
revno: 3508.1.23
revision-id: v.ladeuil+lp at free.fr-20090319142827-m03usu4my6qvukc8
parent: v.ladeuil+lp at free.fr-20090318182837-bofmu0jpqlctqli7
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Thu 2009-03-19 15:28:27 +0100
message:
Fix as per Martin's review.
* bzrlib/transport/ftp/_gssapi.py:
(get_test_permutations): Replace all occurences of FTPServer by
FTPTestServer to distinguish between the test front-end and the
real server.
* bzrlib/transport/ftp/__init__.py:
(get_test_permutations): Replace all occurences of FTPServer by
FTPTestServer.
* bzrlib/tests/test_ftp_transport.py:
Replace all occurences of FTPServer by FTPTestServer.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
Replace all occurences of FTPServer by FTPTestServer.
(BzrConformingFTPHandler): Fix odd capitalization.
* bzrlib/tests/ftp_server/medusa_based.py:
Replace all occurences of FTPServer by FTPTestServer.
* bzrlib/tests/ftp_server/__init__.py:
(_FTPServerFeature): Update docstring.
(FTPTestServer): Replace all occurences of FTPServer by
FTPTestServer.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/ftp/_gssapi.py _gssapi.py-20080611190840-7ejrtp884bk5eu72-2
------------------------------------------------------------
revno: 3508.1.22
revision-id: v.ladeuil+lp at free.fr-20090318182837-bofmu0jpqlctqli7
parent: v.ladeuil+lp at free.fr-20090318163342-bglgu1htdktf4y00
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Wed 2009-03-18 19:28:37 +0100
message:
Fix python2.4 failures.
* bzrlib/tests/__init__.py:
(TestCase.assertTransportMode): python2.4 is pickier than 2.[56],
don't use oct() for comparison purposes.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
------------------------------------------------------------
revno: 3508.1.21
revision-id: v.ladeuil+lp at free.fr-20090318163342-bglgu1htdktf4y00
parent: v.ladeuil+lp at free.fr-20090318162901-5u660idisu4txvqu
parent: v.ladeuil+lp at free.fr-20090318163323-k607telg4uumomyy
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Wed 2009-03-18 17:33:42 +0100
message:
Merge disable-medusa-for-python-2.6 into pyftpdlib
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/help.py help.py-20050505025907-4dd7a6d63912f894
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/option.py option.py-20051014052914-661fb36e76e7362f
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/blackbox/test_help.py test_help.py-20060216004358-4ee8a2a338f75a62
bzrlib/tests/interrepository_implementations/test_fetch.py test_fetch.py-20080425213627-j60cjh782ufm83ry-1
bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_dirstate.py test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
------------------------------------------------------------
revno: 4063.3.4
revision-id: v.ladeuil+lp at free.fr-20090318163323-k607telg4uumomyy
parent: v.ladeuil+lp at free.fr-20090317081823-9aq6bv3todhjc1oh
parent: pqm at pqm.ubuntu.com-20090318162156-yz3r7446r141qzub
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: disable-medusa-for-python-2.6
timestamp: Wed 2009-03-18 17:33:23 +0100
message:
Merge bzr.dev into disable-medusa-for-python-2.6
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/help.py help.py-20050505025907-4dd7a6d63912f894
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/option.py option.py-20051014052914-661fb36e76e7362f
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/blackbox/test_help.py test_help.py-20060216004358-4ee8a2a338f75a62
bzrlib/tests/interrepository_implementations/test_fetch.py test_fetch.py-20080425213627-j60cjh782ufm83ry-1
bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_dirstate.py test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
------------------------------------------------------------
revno: 3508.1.20
revision-id: v.ladeuil+lp at free.fr-20090318162901-5u660idisu4txvqu
parent: v.ladeuil+lp at free.fr-20090318105733-q0i1ou3cb9u766s4
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Wed 2009-03-18 17:29:01 +0100
message:
Test passing for python2.5 and 2.6.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(BzrConformingFS.chmod): Wrongly deleted earlier, this is needed
to implement SITE CHMOD.
modified:
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
------------------------------------------------------------
revno: 3508.1.19
revision-id: v.ladeuil+lp at free.fr-20090318105733-q0i1ou3cb9u766s4
parent: v.ladeuil+lp at free.fr-20090318105652-qrgo4ua4nw294bg4
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Wed 2009-03-18 11:57:33 +0100
message:
Remove empty line in BRANCH.TODO.
modified:
BRANCH.TODO BRANCH.TODO-20060103052123-79ac4969351c03a9
------------------------------------------------------------
revno: 3508.1.18
revision-id: v.ladeuil+lp at free.fr-20090318105652-qrgo4ua4nw294bg4
parent: v.ladeuil+lp at free.fr-20090317085017-3z3rqqt7uku3sc22
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Wed 2009-03-18 11:56:52 +0100
message:
Final tweaks.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(BzrConformingFS.listdir, BzrConformingFS.fs2ftp): Ensure we use
utf8 paths even if not tested.
modified:
BRANCH.TODO BRANCH.TODO-20060103052123-79ac4969351c03a9
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
------------------------------------------------------------
revno: 3508.1.17
revision-id: v.ladeuil+lp at free.fr-20090317085017-3z3rqqt7uku3sc22
parent: v.ladeuil+lp at free.fr-20090317081926-yzoqbtmef0lvifes
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Tue 2009-03-17 09:50:17 +0100
message:
Allows empty passwords with pyftpdlib ftp test server.
* bzrlib/tests/test_ftp_transport.py:
(TestFTPServerUI.test_no_prompt_for_password_when_using_auth_config):
Explicitly test empty password.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(ftpserver.proto_cmds): Override PASS to allow empty passwords.
modified:
BRANCH.TODO BRANCH.TODO-20060103052123-79ac4969351c03a9
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
------------------------------------------------------------
revno: 3508.1.16
revision-id: v.ladeuil+lp at free.fr-20090317081926-yzoqbtmef0lvifes
parent: v.ladeuil+lp at free.fr-20090317081545-650uqmy2v5j9dy0s
parent: v.ladeuil+lp at free.fr-20090317081823-9aq6bv3todhjc1oh
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Tue 2009-03-17 09:19:26 +0100
message:
Merge disable-medusa-for-python-2.6 into pyftpdlib
removed:
bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
added:
bzrlib/clean_tree.py clean_tree.py-20050827022328-5ba46e22d074695c
bzrlib/help_topics/en/debug-flags.txt debugflags.txt-20090312050229-rdspqbqq4fzbjtpe-1
bzrlib/tests/blackbox/test_clean_tree.py test_clean_tree.py-20090219235516-em1ybc01twsqacx9-1
bzrlib/tests/per_repository/test_refresh_data.py test_refresh_data.py-20090316045630-5sw0ipqwk7rvpn3h-1
bzrlib/tests/per_repository_reference/test_default_stacking.py test_default_stackin-20090311055345-9ajahgm58oq3wh6h-1
bzrlib/tests/test_clean_tree.py test_clean_tree.py-20060603174249-ozlk5sl2166opxbk-1
bzrlib/tests/test_debug.py test_debug.py-20090303053802-01e8mlv24odmpgix-1
doc/developers/ec2-windows.txt ec2windows.txt-20090219062112-2ga0nqpcm7n02njf-1
doc/en/user-guide/organizing_your_workspace.txt organizing_your_work-20090226112520-bc2njq3kwvpeo814-1
doc/en/user-guide/shelving_changes.txt shelving_changes.txt-20090312060214-kfn9smg37syy9kcl-1
tools/check-newsbugs.py checknewsbugs.py-20090128204947-lsdwd8nlswm1yrwv-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
bzrlib/_readdir_pyx.pyx readdir.pyx-20060609152855-rm6v321vuaqyh9tu-1
bzrlib/annotate.py annotate.py-20050922133147-7c60541d2614f022
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/branchbuilder.py branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/check.py check.py-20050309040759-f3a679400c06bcc1
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/commit.py commit.py-20050511101309-79ec1a0168e0e825
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/debug.py debug.py-20061102062349-vdhrw9qdpck8cl35-1
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/lock.py lock.py-20050527050856-ec090bb51bc03349
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/lockdir.py lockdir.py-20060220222025-98258adf27fbdda3
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/lsprof.py lsprof.py-20051208071030-833790916798ceed
bzrlib/mail_client.py mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/msgeditor.py msgeditor.py-20050901111708-ef6d8de98f5d8f2f
bzrlib/multiparent.py __init__.py-20070410133617-n1jdhcc1n1mibarp-1
bzrlib/mutabletree.py mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/pack.py container.py-20070607160755-tr8zc26q18rn0jnb-1
bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
bzrlib/plugins/launchpad/lp_registration.py lp_registration.py-20060315190948-daa617eafe3a8d48
bzrlib/plugins/launchpad/test_lp_open.py test_lp_open.py-20090125174355-hxrsxh3sj84225qu-1
bzrlib/plugins/launchpad/test_lp_service.py test_lp_service.py-20080213034527-drf0ucr2x1js3onb-1
bzrlib/plugins/netrc_credential_store/tests/test_netrc.py test_netrc.py-20081006090414-vm3or4tz6c9wk2oi-1
bzrlib/progress.py progress.py-20050610070202-df9faaab791964c0
bzrlib/push.py push.py-20080606021927-5fe39050e8xne9un-1
bzrlib/reconcile.py reweave_inventory.py-20051108164726-1e5e0934febac06e
bzrlib/registry.py lazy_factory.py-20060809213415-2gfvqadtvdn0phtg-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/shelf.py prepare_shelf.py-20081005181341-n74qe6gu1e65ad4v-1
bzrlib/shelf_ui.py shelver.py-20081005210102-33worgzwrtdw0yrm-1
bzrlib/smart/branch.py branch.py-20061124031907-mzh3pla28r83r97f-1
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/client.py client.py-20061116014825-2k6ada6xgulslami-1
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/message.py message.py-20080222013625-ncqmh3nrxjkxab87-1
bzrlib/smart/protocol.py protocol.py-20061108035435-ot0lstk2590yqhzr-1
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
bzrlib/tag.py tag.py-20070212110532-91cw79inah2cfozx-1
bzrlib/tests/EncodingAdapter.py EncodingAdapter.py-20060113032051-4d7e1d8c1e38b4a1
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/tests/blackbox/test_add.py test_add.py-20060518072250-857e4f86f54a30b2
bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_filtered_view_ops.py test_filtered_view_o-20081110012645-5t7ogtola0l33lkg-1
bzrlib/tests/blackbox/test_hooks.py test_hooks.py-20080308163236-xljgf9j41hik1x21-1
bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_logformats.py test_logformats.py-20060216104208-ba5a16c83480b7e4
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/blackbox/test_shared_repository.py test_shared_repository.py-20060317053531-ed30c0d79325e483
bzrlib/tests/blackbox/test_shelve.py test_ls_shelf.py-20081202053526-thlo8yt0pi1cgor1-1
bzrlib/tests/branch_implementations/__init__.py __init__.py-20060123013057-b12a52c3f361daf4
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
bzrlib/tests/branch_implementations/test_last_revision_info.py test_last_revision_i-20070201133317-51mzi40m8hv1i0i9-1
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/branch_implementations/test_revision_history.py test_revision_histor-20070326062311-v7co92liyuchb80w-1
bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
bzrlib/tests/branch_implementations/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-1
bzrlib/tests/branch_implementations/test_tags.py test_tags.py-20070212110545-w2s799hm2jlbsmg5-1
bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
bzrlib/tests/interrepository_implementations/test_fetch.py test_fetch.py-20080425213627-j60cjh782ufm83ry-1
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
bzrlib/tests/per_interbranch/__init__.py __init__.py-20090225010018-l7w4uvvt73ea2vj9-1
bzrlib/tests/per_lock/__init__.py __init__.py-20070314201444-u92yjsqrkh2m3qcb-1
bzrlib/tests/per_repository/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/per_repository/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
bzrlib/tests/per_repository/test_fileid_involved.py test_file_involved.py-20051215205901-728a172d1014daaa
bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/per_repository_reference/__init__.py __init__.py-20080220025549-nnm2s80it1lvcwnc-2
bzrlib/tests/test__chunks_to_lines.py test__chunks_to_line-20081211024848-6uc3mtuje8j14l60-2
bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
bzrlib/tests/test_annotate.py test_annotate.py-20061213215015-sttc9agsxomls7q0-1
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
bzrlib/tests/test_btree_index.py test_index.py-20080624222253-p0x5f92uyh5hw734-13
bzrlib/tests/test_bugtracker.py test_bugtracker.py-20070410073305-vu1vu1qosjurg8kb-2
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_commands.py test_command.py-20051019190109-3b17be0f52eaa7a8
bzrlib/tests/test_commit.py test_commit.py-20050914060732-279f057f8c295434
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_generate_docs.py test_generate_docs.p-20070102123151-cqctnsrlqwmiljd7-1
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_hooks.py test_hooks.py-20070628030849-89rtsbe5dmer5npz-1
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_mutabletree.py test_mutabletree.py-20080405014429-2v0cdi3re320p8db-1
bzrlib/tests/test_options.py testoptions.py-20051014093702-96457cfc86319a8f
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_osutils_encodings.py test_osutils_encodin-20061226013130-kkp732tpt3lm91vv-1
bzrlib/tests/test_pack.py test_container.py-20070607160755-tr8zc26q18rn0jnb-2
bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
bzrlib/tests/test_progress.py test_progress.py-20060308160359-978c397bc79b7fda
bzrlib/tests/test_read_bundle.py test_read_bundle.py-20060615211421-ud8cwr1ulgd914zf-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_shelf.py test_prepare_shelf.p-20081005181341-n74qe6gu1e65ad4v-2
bzrlib/tests/test_shelf_ui.py test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/tests/test_smart_request.py test_smart_request.p-20090211070731-o38wayv3asm25d6a-1
bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
bzrlib/tests/test_source.py test_source.py-20051207061333-a58dea6abecc030d
bzrlib/tests/test_symbol_versioning.py test_symbol_versioning.py-20060105104851-51d7722c2018d42b
bzrlib/tests/test_tag.py test_tag.py-20070212110532-91cw79inah2cfozx-2
bzrlib/tests/test_trace.py testtrace.py-20051110225523-a21117fc7a07eeff
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_ui.py test_ui.py-20051130162854-458e667a7414af09
bzrlib/tests/test_upgrade_stacked.py test_upgrade_stacked-20080804072225-jd13yami19nskns5-1
bzrlib/tests/test_urlutils.py test_urlutils.py-20060502192900-46b1f9579987cf9c
bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
bzrlib/tests/test_xml.py test_xml.py-20050905091053-80b45588931a9b35
bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
bzrlib/tests/tree_implementations/test_path_content_summary.py test_path_content_su-20070904100855-3vrwedz6akn34kl5-1
bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
bzrlib/tests/workingtree_implementations/test_mkdir.py test_mkdir.py-20060907214856-4omn6hf1u7fvrart-3
bzrlib/tests/workingtree_implementations/test_nested_specifics.py test_nested_specific-20070306004443-qut978c488jr11sg-1
bzrlib/tests/workingtree_implementations/test_parents.py test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
bzrlib/transport/sftp.py sftp.py-20051019050329-ab48ce71b7e32dfe
bzrlib/transport/trace.py trace.py-20070828055009-7kt0bbc4t4b92apz-1
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/ui/__init__.py ui.py-20050824083933-8cf663c763ba53a9
bzrlib/ui/text.py text.py-20051130153916-2e438cffc8afc478
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
bzrlib/weave.py knit.py-20050627021749-759c29984154256b
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
bzrlib/workingtree_4.py workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
bzrlib/xml8.py xml5.py-20050907032657-aac8f960815b66b1
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/network-protocol.txt networkprotocol.txt-20070903044232-woustorrjbmg5zol-1
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
doc/developers/revision-properties.txt revisionproperties.t-20070807133526-w57m8zv5o7t5kugm-1
doc/developers/testing.txt testing.txt-20080812140359-i70zzh6v2z7grqex-1
doc/en/user-guide/branching_a_project.txt branching_a_project.-20071122141511-0knao2lklsdsvb1q-2
doc/en/user-guide/bzrtools_plugin.txt bzrtools_plugin.txt-20080509065016-cjc90f46407vi9a0-1
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/en/user-guide/publishing_a_branch.txt publishing_a_branch.-20071123055134-k5x4ekduci2lbn36-2
doc/en/user-guide/recording_changes.txt recording_changes.tx-20071121073725-0corxykv5irjal00-4
doc/en/user-guide/shared_repository_layouts.txt shared_repository_la-20070502152030-bagewuqs18ns24o7-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
tools/doc_generate/autodoc_man.py bzrman.py-20050601153041-0ff7f74de456d15e
------------------------------------------------------------
revno: 4063.3.3
revision-id: v.ladeuil+lp at free.fr-20090317081823-9aq6bv3todhjc1oh
parent: v.ladeuil+lp at free.fr-20090228214300-wnyb0iflp71ww6j4
parent: pqm at pqm.ubuntu.com-20090317070537-zaud24vjs2szna87
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: disable-medusa-for-python-2.6
timestamp: Tue 2009-03-17 09:18:23 +0100
message:
Merge bzr.dev into disable-medusa-for-python-2.6
removed:
bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
added:
bzrlib/clean_tree.py clean_tree.py-20050827022328-5ba46e22d074695c
bzrlib/help_topics/en/debug-flags.txt debugflags.txt-20090312050229-rdspqbqq4fzbjtpe-1
bzrlib/tests/blackbox/test_clean_tree.py test_clean_tree.py-20090219235516-em1ybc01twsqacx9-1
bzrlib/tests/per_repository/test_refresh_data.py test_refresh_data.py-20090316045630-5sw0ipqwk7rvpn3h-1
bzrlib/tests/per_repository_reference/test_default_stacking.py test_default_stackin-20090311055345-9ajahgm58oq3wh6h-1
bzrlib/tests/test_clean_tree.py test_clean_tree.py-20060603174249-ozlk5sl2166opxbk-1
bzrlib/tests/test_debug.py test_debug.py-20090303053802-01e8mlv24odmpgix-1
doc/developers/ec2-windows.txt ec2windows.txt-20090219062112-2ga0nqpcm7n02njf-1
doc/en/user-guide/organizing_your_workspace.txt organizing_your_work-20090226112520-bc2njq3kwvpeo814-1
doc/en/user-guide/shelving_changes.txt shelving_changes.txt-20090312060214-kfn9smg37syy9kcl-1
tools/check-newsbugs.py checknewsbugs.py-20090128204947-lsdwd8nlswm1yrwv-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
bzrlib/_readdir_pyx.pyx readdir.pyx-20060609152855-rm6v321vuaqyh9tu-1
bzrlib/annotate.py annotate.py-20050922133147-7c60541d2614f022
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/branchbuilder.py branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/check.py check.py-20050309040759-f3a679400c06bcc1
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/commit.py commit.py-20050511101309-79ec1a0168e0e825
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/debug.py debug.py-20061102062349-vdhrw9qdpck8cl35-1
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/lock.py lock.py-20050527050856-ec090bb51bc03349
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/lockdir.py lockdir.py-20060220222025-98258adf27fbdda3
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/lsprof.py lsprof.py-20051208071030-833790916798ceed
bzrlib/mail_client.py mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/msgeditor.py msgeditor.py-20050901111708-ef6d8de98f5d8f2f
bzrlib/multiparent.py __init__.py-20070410133617-n1jdhcc1n1mibarp-1
bzrlib/mutabletree.py mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/pack.py container.py-20070607160755-tr8zc26q18rn0jnb-1
bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
bzrlib/plugins/launchpad/lp_registration.py lp_registration.py-20060315190948-daa617eafe3a8d48
bzrlib/plugins/launchpad/test_lp_open.py test_lp_open.py-20090125174355-hxrsxh3sj84225qu-1
bzrlib/plugins/launchpad/test_lp_service.py test_lp_service.py-20080213034527-drf0ucr2x1js3onb-1
bzrlib/plugins/netrc_credential_store/tests/test_netrc.py test_netrc.py-20081006090414-vm3or4tz6c9wk2oi-1
bzrlib/progress.py progress.py-20050610070202-df9faaab791964c0
bzrlib/push.py push.py-20080606021927-5fe39050e8xne9un-1
bzrlib/reconcile.py reweave_inventory.py-20051108164726-1e5e0934febac06e
bzrlib/registry.py lazy_factory.py-20060809213415-2gfvqadtvdn0phtg-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/shelf.py prepare_shelf.py-20081005181341-n74qe6gu1e65ad4v-1
bzrlib/shelf_ui.py shelver.py-20081005210102-33worgzwrtdw0yrm-1
bzrlib/smart/branch.py branch.py-20061124031907-mzh3pla28r83r97f-1
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/client.py client.py-20061116014825-2k6ada6xgulslami-1
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/message.py message.py-20080222013625-ncqmh3nrxjkxab87-1
bzrlib/smart/protocol.py protocol.py-20061108035435-ot0lstk2590yqhzr-1
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
bzrlib/tag.py tag.py-20070212110532-91cw79inah2cfozx-1
bzrlib/tests/EncodingAdapter.py EncodingAdapter.py-20060113032051-4d7e1d8c1e38b4a1
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/tests/blackbox/test_add.py test_add.py-20060518072250-857e4f86f54a30b2
bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_filtered_view_ops.py test_filtered_view_o-20081110012645-5t7ogtola0l33lkg-1
bzrlib/tests/blackbox/test_hooks.py test_hooks.py-20080308163236-xljgf9j41hik1x21-1
bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_logformats.py test_logformats.py-20060216104208-ba5a16c83480b7e4
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/blackbox/test_shared_repository.py test_shared_repository.py-20060317053531-ed30c0d79325e483
bzrlib/tests/blackbox/test_shelve.py test_ls_shelf.py-20081202053526-thlo8yt0pi1cgor1-1
bzrlib/tests/branch_implementations/__init__.py __init__.py-20060123013057-b12a52c3f361daf4
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
bzrlib/tests/branch_implementations/test_last_revision_info.py test_last_revision_i-20070201133317-51mzi40m8hv1i0i9-1
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/branch_implementations/test_revision_history.py test_revision_histor-20070326062311-v7co92liyuchb80w-1
bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
bzrlib/tests/branch_implementations/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-1
bzrlib/tests/branch_implementations/test_tags.py test_tags.py-20070212110545-w2s799hm2jlbsmg5-1
bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
bzrlib/tests/interrepository_implementations/test_fetch.py test_fetch.py-20080425213627-j60cjh782ufm83ry-1
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
bzrlib/tests/per_interbranch/__init__.py __init__.py-20090225010018-l7w4uvvt73ea2vj9-1
bzrlib/tests/per_lock/__init__.py __init__.py-20070314201444-u92yjsqrkh2m3qcb-1
bzrlib/tests/per_repository/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/per_repository/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
bzrlib/tests/per_repository/test_fileid_involved.py test_file_involved.py-20051215205901-728a172d1014daaa
bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/per_repository_reference/__init__.py __init__.py-20080220025549-nnm2s80it1lvcwnc-2
bzrlib/tests/test__chunks_to_lines.py test__chunks_to_line-20081211024848-6uc3mtuje8j14l60-2
bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
bzrlib/tests/test_annotate.py test_annotate.py-20061213215015-sttc9agsxomls7q0-1
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
bzrlib/tests/test_btree_index.py test_index.py-20080624222253-p0x5f92uyh5hw734-13
bzrlib/tests/test_bugtracker.py test_bugtracker.py-20070410073305-vu1vu1qosjurg8kb-2
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_commands.py test_command.py-20051019190109-3b17be0f52eaa7a8
bzrlib/tests/test_commit.py test_commit.py-20050914060732-279f057f8c295434
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_generate_docs.py test_generate_docs.p-20070102123151-cqctnsrlqwmiljd7-1
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_hooks.py test_hooks.py-20070628030849-89rtsbe5dmer5npz-1
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_mutabletree.py test_mutabletree.py-20080405014429-2v0cdi3re320p8db-1
bzrlib/tests/test_options.py testoptions.py-20051014093702-96457cfc86319a8f
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_osutils_encodings.py test_osutils_encodin-20061226013130-kkp732tpt3lm91vv-1
bzrlib/tests/test_pack.py test_container.py-20070607160755-tr8zc26q18rn0jnb-2
bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
bzrlib/tests/test_progress.py test_progress.py-20060308160359-978c397bc79b7fda
bzrlib/tests/test_read_bundle.py test_read_bundle.py-20060615211421-ud8cwr1ulgd914zf-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_shelf.py test_prepare_shelf.p-20081005181341-n74qe6gu1e65ad4v-2
bzrlib/tests/test_shelf_ui.py test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/tests/test_smart_request.py test_smart_request.p-20090211070731-o38wayv3asm25d6a-1
bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
bzrlib/tests/test_source.py test_source.py-20051207061333-a58dea6abecc030d
bzrlib/tests/test_symbol_versioning.py test_symbol_versioning.py-20060105104851-51d7722c2018d42b
bzrlib/tests/test_tag.py test_tag.py-20070212110532-91cw79inah2cfozx-2
bzrlib/tests/test_trace.py testtrace.py-20051110225523-a21117fc7a07eeff
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_ui.py test_ui.py-20051130162854-458e667a7414af09
bzrlib/tests/test_upgrade_stacked.py test_upgrade_stacked-20080804072225-jd13yami19nskns5-1
bzrlib/tests/test_urlutils.py test_urlutils.py-20060502192900-46b1f9579987cf9c
bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
bzrlib/tests/test_xml.py test_xml.py-20050905091053-80b45588931a9b35
bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
bzrlib/tests/tree_implementations/test_path_content_summary.py test_path_content_su-20070904100855-3vrwedz6akn34kl5-1
bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
bzrlib/tests/workingtree_implementations/test_mkdir.py test_mkdir.py-20060907214856-4omn6hf1u7fvrart-3
bzrlib/tests/workingtree_implementations/test_nested_specifics.py test_nested_specific-20070306004443-qut978c488jr11sg-1
bzrlib/tests/workingtree_implementations/test_parents.py test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
bzrlib/transport/sftp.py sftp.py-20051019050329-ab48ce71b7e32dfe
bzrlib/transport/trace.py trace.py-20070828055009-7kt0bbc4t4b92apz-1
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/ui/__init__.py ui.py-20050824083933-8cf663c763ba53a9
bzrlib/ui/text.py text.py-20051130153916-2e438cffc8afc478
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
bzrlib/weave.py knit.py-20050627021749-759c29984154256b
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
bzrlib/workingtree_4.py workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
bzrlib/xml8.py xml5.py-20050907032657-aac8f960815b66b1
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/network-protocol.txt networkprotocol.txt-20070903044232-woustorrjbmg5zol-1
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
doc/developers/revision-properties.txt revisionproperties.t-20070807133526-w57m8zv5o7t5kugm-1
doc/developers/testing.txt testing.txt-20080812140359-i70zzh6v2z7grqex-1
doc/en/user-guide/branching_a_project.txt branching_a_project.-20071122141511-0knao2lklsdsvb1q-2
doc/en/user-guide/bzrtools_plugin.txt bzrtools_plugin.txt-20080509065016-cjc90f46407vi9a0-1
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/en/user-guide/publishing_a_branch.txt publishing_a_branch.-20071123055134-k5x4ekduci2lbn36-2
doc/en/user-guide/recording_changes.txt recording_changes.tx-20071121073725-0corxykv5irjal00-4
doc/en/user-guide/shared_repository_layouts.txt shared_repository_la-20070502152030-bagewuqs18ns24o7-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
tools/doc_generate/autodoc_man.py bzrman.py-20050601153041-0ff7f74de456d15e
------------------------------------------------------------
revno: 3508.1.15
revision-id: v.ladeuil+lp at free.fr-20090317081545-650uqmy2v5j9dy0s
parent: v.ladeuil+lp at free.fr-20090317081400-9tjv65u6f77sfsu0
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Tue 2009-03-17 09:15:45 +0100
message:
Tweak chmod bits output for easier debug.
* bzrlib/transport/ftp/__init__.py:
Fix import order.
* bzrlib/tests/__init__.py:
(TestCase.assertTransportMode): Output chmod bits in octal.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
------------------------------------------------------------
revno: 3508.1.14
revision-id: v.ladeuil+lp at free.fr-20090317081400-9tjv65u6f77sfsu0
parent: v.ladeuil+lp at free.fr-20090303154749-61puv7w8t2pnz7zm
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Tue 2009-03-17 09:14:00 +0100
message:
Tweak SITE_CHMOD server command.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(BZRConformingFTPHandler.ftp_SITE_CHMOD): Allow spaces in paths.
modified:
BRANCH.TODO BRANCH.TODO-20060103052123-79ac4969351c03a9
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
------------------------------------------------------------
revno: 3508.1.13
revision-id: v.ladeuil+lp at free.fr-20090303154749-61puv7w8t2pnz7zm
parent: v.ladeuil+lp at free.fr-20090302195435-goqqmr9lhwr5z03u
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Tue 2009-03-03 16:47:49 +0100
message:
Fix last failing tests under python2.6.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(FTPServer.get_url, FTPServer.setUp): Because medusa authorized
connections without checking the password, we have tests that more
or less relies on that behavior in direct or indirect ways. The
simplest solution is to give write access to anonymous with
pyftpdlib and test authentication in a separate test.
* bzrlib/tests/test_ftp_transport.py:
(TestFTPServerUI.setUp, TestFTPServerUI.get_url): Implementation
compatible with medusa and pyftplib.
(TestFTPServerUI.test_prompt_for_password,
TestFTPServerUI.test_no_prompt_for_password_when_using_auth_config):
Simplified.
* bzrlib/tests/ftp_server/medusa_based.py:
(FTPServer.add_user): Factored out from
bzrlib.tests.test_ftp_transport.TestFTPServerUI._add_authorized_user
since that's specific to our medusa based ftp server.
* bzrlib/tests/test_transport_implementations.py:
(TransportTests.test_connect_twice_is_same_content): Previous fix
was incorrect, '.base' contained the needed server prefix, using
self.get_transport instead of the basre get_transport provides the
wanted feature.
modified:
bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
------------------------------------------------------------
revno: 3508.1.12
revision-id: v.ladeuil+lp at free.fr-20090302195435-goqqmr9lhwr5z03u
parent: v.ladeuil+lp at free.fr-20090302142604-guy21k12jikewl37
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Mon 2009-03-02 20:54:35 +0100
message:
Don't require patched version for pyftpdlib.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(FTPServer.setUp, tearDown, _run_server): Use lock to ensure we
wait for the server to start and use pyftpdlib without any
patches.
* bzrlib/tests/ftp_server/__init__.py:
Fix python version for medusa support.
modified:
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
------------------------------------------------------------
revno: 3508.1.11
revision-id: v.ladeuil+lp at free.fr-20090302142604-guy21k12jikewl37
parent: v.ladeuil+lp at free.fr-20090301100200-1qdmf362uw5q35s0
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Mon 2009-03-02 15:26:04 +0100
message:
Tests passing for python2.5 and python2.6 (and python2.4 :).
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(BzrConformingFS.fs2ftp): Fix the cause of the remaining failing
tests.
(FTPServer.setUp, FTPServer.tearDown): Better server handling,
avoiding socket leaks, hangs and other weirdness. Requires a patch
upstream though.
modified:
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
------------------------------------------------------------
revno: 3508.1.10
revision-id: v.ladeuil+lp at free.fr-20090301100200-1qdmf362uw5q35s0
parent: v.ladeuil+lp at free.fr-20090228214320-8wjuatnu074v8pny
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Sun 2009-03-01 11:02:00 +0100
message:
Start supporting pyftpdlib as an ftp test server.
* bzrlib/transport/ftp/__init__.py:
(FtpTransport._setmode): Report mode bits in octal.
* bzrlib/transport/__init__.py:
Don't register GSSAPI ftp transports if kerberos can't be
imported, this avoids useless repeated messages in log as the
import repeatedly fail.
* bzrlib/tests/test_transport_implementations.py:
(TransportTests.test_has): Fix too long lines.
(TransportTests.test_connect_twice_is_same_content): Fig bogus
test. transport.base is *not* usable, it miss the password for
authenticated urls. This was passing only because no test server
use authentication by default *except* medusa for which we had a
dummy authorizer with no password check.
* bzrlib/tests/ftp_server/pyftpdlib_based.py:
First shot at an ftp test server running is a separate thread.
* bzrlib/tests/ftp_server/__init__.py:
Add support for pyftpdlib based ftp test server.
(_FTPServerFeature._probe): One of medusa or pyftpdlib is needed.
added:
bzrlib/tests/ftp_server/pyftpdlib_based.py pyftpdlib_based.py-20090227151014-882k9q34m1gwnhvi-1
modified:
BRANCH.TODO BRANCH.TODO-20060103052123-79ac4969351c03a9
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
------------------------------------------------------------
revno: 3508.1.9
revision-id: v.ladeuil+lp at free.fr-20090228214320-8wjuatnu074v8pny
parent: v.ladeuil+lp at free.fr-20090228170617-3ezbrszcsdad3mqh
parent: v.ladeuil+lp at free.fr-20090228214300-wnyb0iflp71ww6j4
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Sat 2009-02-28 22:43:20 +0100
message:
Merge disable-medusa-for-python-2.6 into pyftpdlib
modified:
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
------------------------------------------------------------
revno: 4063.3.2
revision-id: v.ladeuil+lp at free.fr-20090228214300-wnyb0iflp71ww6j4
parent: v.ladeuil+lp at free.fr-20090228210158-cpwfhldwzmlyirfa
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: disable-medusa-for-python-2.6
timestamp: Sat 2009-02-28 22:43:00 +0100
message:
Disable medusa under python2.6 until we find or replacement or it get fixed.
* bzrlib/tests/ftp_server/__init__.py:
Disable medusa under python2.6.
modified:
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
------------------------------------------------------------
revno: 4063.3.1
revision-id: v.ladeuil+lp at free.fr-20090228210158-cpwfhldwzmlyirfa
parent: pqm at pqm.ubuntu.com-20090227165204-wtg2koex221f2g8b
parent: v.ladeuil+lp at free.fr-20090228170617-3ezbrszcsdad3mqh
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: disable-medusa-for-python-2.6
timestamp: Sat 2009-02-28 22:01:58 +0100
message:
split pyftpdlib thread to isolate medusa related changes
added:
bzrlib/tests/ftp_server/ ftp_server-20090227112800-4r9jkezw2hw9tij7-1
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
renamed:
bzrlib/tests/ftp_server.py => bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
------------------------------------------------------------
revno: 3508.1.8
revision-id: v.ladeuil+lp at free.fr-20090228170617-3ezbrszcsdad3mqh
parent: v.ladeuil+lp at free.fr-20090227132613-ez1i849mn2xpt97q
parent: v.ladeuil+lp at free.fr-20090228170605-foexzya9e468zrc7
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Sat 2009-02-28 18:06:17 +0100
message:
Merge binary-mode into pyftpdlib
added:
doc/en/user-guide/filtered_views.txt filtered_views.txt-20090226100856-a16ba1v97v91ru58-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repofmt/weaverepo.py presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/branch_implementations/test_create_clone.py test_create_clone.py-20090225031440-8ybpkzojo7cvourv-1
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
------------------------------------------------------------
revno: 3508.3.1
revision-id: v.ladeuil+lp at free.fr-20090228170605-foexzya9e468zrc7
parent: v.ladeuil+lp at free.fr-20090227084436-4j9864kycsieuycj
parent: v.ladeuil+lp at free.fr-20090228170555-5atqlgvoiy36rd71
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: binary-mode
timestamp: Sat 2009-02-28 18:06:05 +0100
message:
Merge fix-chmod into binary-mode
added:
doc/en/user-guide/filtered_views.txt filtered_views.txt-20090226100856-a16ba1v97v91ru58-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repofmt/weaverepo.py presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/branch_implementations/test_create_clone.py test_create_clone.py-20090225031440-8ybpkzojo7cvourv-1
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
------------------------------------------------------------
revno: 3508.2.1
revision-id: v.ladeuil+lp at free.fr-20090228170555-5atqlgvoiy36rd71
parent: v.ladeuil+lp at free.fr-20090226193006-mleqjssvlnebdeea
parent: pqm at pqm.ubuntu.com-20090227165204-wtg2koex221f2g8b
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: fix-chmod
timestamp: Sat 2009-02-28 18:05:55 +0100
message:
Merge bzr.dev into fix-chmod
added:
doc/en/user-guide/filtered_views.txt filtered_views.txt-20090226100856-a16ba1v97v91ru58-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repofmt/weaverepo.py presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/branch_implementations/test_create_clone.py test_create_clone.py-20090225031440-8ybpkzojo7cvourv-1
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
------------------------------------------------------------
revno: 3508.1.7
revision-id: v.ladeuil+lp at free.fr-20090227132613-ez1i849mn2xpt97q
parent: v.ladeuil+lp at free.fr-20090227084436-4j9864kycsieuycj
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: pyftpdlib
timestamp: Fri 2009-02-27 14:26:13 +0100
message:
Prepare test framework for pyftpdlib injection.
* bzrlib/tests/ftp_server/__init__.py:
Provide a single front-end for ftp test servers.
* bzrlib/tests/test_ftp_transport.py:
Use ftp_server import.
* bzrlib/transport/ftp/__init__.py:
(get_test_permutations): Simplified.
* bzrlib/tests/__init__.py:
(FTPServerFeature): Moved to bzrlib/tests/ftp_server/__init__.py.
added:
bzrlib/tests/ftp_server/ ftp_server-20090227112800-4r9jkezw2hw9tij7-1
bzrlib/tests/ftp_server/__init__.py __init__.py-20090227130107-4gcpgvr00l7v3fsw-1
renamed:
bzrlib/tests/ftp_server.py => bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/tests/ftp_server/medusa_based.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
=== modified file 'NEWS'
--- a/NEWS 2009-03-19 04:48:30 +0000
+++ b/NEWS 2009-03-19 14:41:41 +0000
@@ -121,6 +121,12 @@
faulty tests were not properly isolated.
(Andrew Bennetts, Robert Collins)
+* ``medusa`` is not used anymore as an FTP test server starting with
+ python2.6. A new FTP test server based on ``pyftplib`` can be used
+ instead. This new server is a soft dependency as medusa which is still
+ preferred if both are available (modulo python version).
+ (Vincent Ladeuil)
+
Internals
*********
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2009-03-17 05:15:26 +0000
+++ b/bzrlib/tests/__init__.py 2009-03-18 18:28:37 +0000
@@ -1017,7 +1017,8 @@
path_stat = transport.stat(path)
actual_mode = stat.S_IMODE(path_stat.st_mode)
self.assertEqual(mode, actual_mode,
- 'mode of %r incorrect (%o != %o)' % (path, mode, actual_mode))
+ 'mode of %r incorrect (%s != %s)'
+ % (path, oct(mode), oct(actual_mode)))
def assertIsSameRealPath(self, path1, path2):
"""Fail if path1 and path2 points to different files"""
@@ -3420,27 +3421,6 @@
return None
-class _FTPServerFeature(Feature):
- """Some tests want an FTP Server, check if one is available.
-
- Right now, the only way this is available is if 'medusa' is installed.
- http://www.amk.ca/python/code/medusa.html
- """
-
- def _probe(self):
- try:
- import bzrlib.tests.ftp_server
- return True
- except ImportError:
- return False
-
- def feature_name(self):
- return 'FTPServer'
-
-
-FTPServerFeature = _FTPServerFeature()
-
-
class _HTTPSServerFeature(Feature):
"""Some tests want an https Server, check if one is available.
=== added directory 'bzrlib/tests/ftp_server'
=== added file 'bzrlib/tests/ftp_server/__init__.py'
--- a/bzrlib/tests/ftp_server/__init__.py 1970-01-01 00:00:00 +0000
+++ b/bzrlib/tests/ftp_server/__init__.py 2009-03-19 14:28:27 +0000
@@ -0,0 +1,87 @@
+# Copyright (C) 2009 Canonical Ltd
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""
+Facilities to use ftp test servers.
+"""
+
+import sys
+
+from bzrlib import tests
+
+
+try:
+ from bzrlib.tests.ftp_server import medusa_based
+ # medusa is bogus under python2.6
+ medusa_available = sys.version_info < (2, 6)
+except ImportError:
+ medusa_available = False
+
+
+try:
+ from bzrlib.tests.ftp_server import pyftpdlib_based
+ pyftpdlib_available = True
+except ImportError:
+ pyftpdlib_available = False
+
+
+class _FTPServerFeature(tests.Feature):
+ """Some tests want an FTP Server, check if one is available.
+
+ Right now, the only way this is available is if one of the following is
+ installed:
+
+ - 'medusa': http://www.amk.ca/python/code/medusa.html
+ - 'pyftpdlib': http://code.google.com/p/pyftpdlib/
+ """
+
+ def _probe(self):
+ return medusa_available or pyftpdlib_available
+
+ def feature_name(self):
+ return 'FTPServer'
+
+
+FTPServerFeature = _FTPServerFeature()
+
+
+class UnavailableFTPServer(object):
+ """Dummy ftp test server.
+
+ This allows the test suite report the number of tests needing that
+ feature. We raise UnavailableFeature from methods before the test server is
+ being used. Doing so in the setUp method has bad side-effects (tearDown is
+ never called).
+ """
+
+ def setUp(self, vfs_server=None):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def get_url(self):
+ raise tests.UnavailableFeature(FTPServerFeature)
+
+ def get_bogus_url(self):
+ raise tests.UnavailableFeature(FTPServerFeature)
+
+
+if medusa_available:
+ FTPTestServer = medusa_based.FTPTestServer
+elif pyftpdlib_available:
+ FTPTestServer = pyftpdlib_based.FTPTestServer
+else:
+ FTPTestServer = UnavailableFTPTestServer
=== renamed file 'bzrlib/tests/ftp_server.py' => 'bzrlib/tests/ftp_server/medusa_based.py'
--- a/bzrlib/tests/ftp_server.py 2009-01-17 01:30:58 +0000
+++ b/bzrlib/tests/ftp_server/medusa_based.py 2009-03-19 14:28:27 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Canonical Ltd
+# Copyright (C) 2007, 2008, 2009 Canonical Ltd
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -210,7 +210,7 @@
trace.mutter('ftp_server %s: %s', type, message)
-class FTPServer(transport.Server):
+class FTPTestServer(transport.Server):
"""Common code for FTP server facilities."""
def __init__(self):
@@ -250,7 +250,7 @@
# Don't let it loop forever, or handle an infinite number of requests.
# In this case it will run for 1000s, or 10000 requests
self._async_thread = threading.Thread(
- target=FTPServer._asyncore_loop_ignore_EBADF,
+ target=FTPTestServer._asyncore_loop_ignore_EBADF,
kwargs={'timeout':0.1, 'count':10000})
self._async_thread.setDaemon(True)
self._async_thread.start()
@@ -279,6 +279,9 @@
if e.args[0] != errno.EBADF:
raise
-
-
+ def add_user(self, user, password):
+ """Add a user with write access."""
+ authorizer = server = self._ftp_server.authorizer
+ authorizer.secured_user = user
+ authorizer.secured_password = password
=== added file 'bzrlib/tests/ftp_server/pyftpdlib_based.py'
--- a/bzrlib/tests/ftp_server/pyftpdlib_based.py 1970-01-01 00:00:00 +0000
+++ b/bzrlib/tests/ftp_server/pyftpdlib_based.py 2009-03-19 14:28:27 +0000
@@ -0,0 +1,211 @@
+# Copyright (C) 2009 Canonical Ltd
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""
+FTP test server.
+
+Based on pyftpdlib: http://code.google.com/p/pyftpdlib/
+"""
+
+import errno
+import os
+from pyftpdlib import ftpserver
+import select
+import threading
+
+
+from bzrlib import (
+ osutils,
+ trace,
+ transport,
+ )
+
+
+class AnonymousWithWriteAccessAuthorizer(ftpserver.DummyAuthorizer):
+
+ def _check_permissions(self, username, perm):
+ # Like base implementation but don't warn about write permissions
+ # assigned to anonymous, since that's exactly our purpose.
+ for p in perm:
+ if p not in self.read_perms + self.write_perms:
+ raise ftpserver.AuthorizerError('No such permission "%s"' %p)
+
+
+class BzrConformingFS(ftpserver.AbstractedFS):
+
+ def chmod(self, path, mode):
+ return os.chmod(path, mode)
+
+ def listdir(self, path):
+ """List the content of a directory."""
+ # FIXME: need tests with unicode paths
+ return [osutils.safe_utf8(s) for s in os.listdir(path)]
+
+ def fs2ftp(self, fspath):
+ p = ftpserver.AbstractedFS.fs2ftp(self, fspath)
+ # FIXME: need tests with unicode paths
+ return osutils.safe_utf8(p)
+
+
+class BzrConformingFTPHandler(ftpserver.FTPHandler):
+
+ abstracted_fs = BzrConformingFS
+
+ def __init__(self, conn, server):
+ ftpserver.FTPHandler.__init__(self, conn, server)
+ self.authorizer = server.authorizer
+
+ def ftp_SIZE(self, path):
+ # bzr is overly picky here, but we want to make the test suite pass
+ # first. This may need to be revisited -- vila 20090226
+ line = self.fs.fs2ftp(path)
+ if self.fs.isdir(self.fs.realpath(path)):
+ why = "%s is a directory" % line
+ self.log('FAIL SIZE "%s". %s.' % (line, why))
+ self.respond("550 %s." %why)
+ else:
+ ftpserver.FTPHandler.ftp_SIZE(self, path)
+
+ def ftp_NLST(self, path):
+ # bzr is overly picky here, but we want to make the test suite pass
+ # first. This may need to be revisited -- vila 20090226
+ line = self.fs.fs2ftp(path)
+ if self.fs.isfile(self.fs.realpath(path)):
+ why = "Not a directory: %s" % line
+ self.log('FAIL SIZE "%s". %s.' % (line, why))
+ self.respond("550 %s." %why)
+ else:
+ ftpserver.FTPHandler.ftp_NLST(self, path)
+
+ def ftp_SITE_CHMOD(self, line):
+ try:
+ mode, path = line.split(None, 1)
+ mode = int(mode, 8)
+ except ValueError:
+ # We catch both malformed line and malformed mode with the same
+ # ValueError.
+ self.respond("500 'SITE CHMOD %s': command not understood."
+ % line)
+ self.log('FAIL SITE CHMOD ' % line)
+ return
+ ftp_path = self.fs.fs2ftp(path)
+ try:
+ self.run_as_current_user(self.fs.chmod, self.fs.ftp2fs(path), mode)
+ except OSError, err:
+ why = ftpserver._strerror(err)
+ self.log('FAIL SITE CHMOD 0%03o "%s". %s.' % (mode, ftp_path, why))
+ self.respond('550 %s.' % why)
+ else:
+ self.log('OK SITE CHMOD 0%03o "%s".' % (mode, ftp_path))
+ self.respond('200 SITE CHMOD succesful.')
+
+
+# pyftpdlib says to define SITE commands by declaring ftp_SITE_<CMD> methods,
+# but fails to recognize them.
+ftpserver.proto_cmds['SITE CHMOD'] = ftpserver._CommandProperty(
+ perm='w', # Best fit choice even if not exactly right (can be d, f or m too)
+ auth_needed=True, arg_needed=True, check_path=False,
+ help='Syntax: SITE CHMOD <SP> octal_mode_bits file-name (chmod file)',
+ )
+# An empty password is valid, hence the arg is neither mandatory not forbidden
+ftpserver.proto_cmds['PASS'].arg_needed = None
+
+
+class ftp_server(ftpserver.FTPServer):
+
+ def __init__(self, address, handler, authorizer):
+ ftpserver.FTPServer.__init__(self, address, handler)
+ self.authorizer = authorizer
+ # Worth backporting upstream ?
+ self.addr = self.socket.getsockname()
+
+
+class FTPTestServer(transport.Server):
+ """Common code for FTP server facilities."""
+
+ def __init__(self):
+ self._root = None
+ self._ftp_server = None
+ self._port = None
+ self._async_thread = None
+ # ftp server logs
+ self.logs = []
+ self._ftpd_running = False
+
+ def get_url(self):
+ """Calculate an ftp url to this server."""
+ return 'ftp://anonymous@localhost:%d/' % (self._port)
+
+ def get_bogus_url(self):
+ """Return a URL which cannot be connected to."""
+ return 'ftp://127.0.0.1:1/'
+
+ def log(self, message):
+ """This is used by ftp_server to log connections, etc."""
+ self.logs.append(message)
+
+ def setUp(self, vfs_server=None):
+ from bzrlib.transport.local import LocalURLServer
+ if not (vfs_server is None or isinstance(vfs_server, LocalURLServer)):
+ raise AssertionError(
+ "FTPServer currently assumes local transport, got %s"
+ % vfs_server)
+ self._root = os.getcwdu()
+
+ address = ('localhost', 0) # bind to a random port
+ authorizer = AnonymousWithWriteAccessAuthorizer()
+ authorizer.add_anonymous(self._root, perm='elradfmw')
+ self._ftp_server = ftp_server(address, BzrConformingFTPHandler,
+ authorizer)
+ # This is hacky as hell, will not work if we need two servers working
+ # at the same time, but that's the best we can do so far...
+ # FIXME: At least log and logline could be overriden in the handler ?
+ # -- vila 20090227
+ ftpserver.log = self.log
+ ftpserver.logline = self.log
+ ftpserver.logerror = self.log
+
+ self._port = self._ftp_server.socket.getsockname()[1]
+ self._ftpd_starting = threading.Lock()
+ self._ftpd_starting.acquire() # So it can be released by the server
+ self._ftpd_thread = threading.Thread(
+ target=self._run_server,)
+ self._ftpd_thread.start()
+ # Wait for the server thread to start (i.e release the lock)
+ self._ftpd_starting.acquire()
+ self._ftpd_starting.release()
+
+ def tearDown(self):
+ """See bzrlib.transport.Server.tearDown."""
+ # Tell the server to stop, but also close the server socket for tests
+ # that start the server but never initiate a connection. Closing the
+ # socket should be done first though, to avoid further connections.
+ self._ftp_server.close()
+ self._ftpd_running = False
+ self._ftpd_thread.join()
+
+ def _run_server(self):
+ """Run the server until tearDown is called, shut it down properly then.
+ """
+ self._ftpd_running = True
+ self._ftpd_starting.release()
+ while self._ftpd_running:
+ self._ftp_server.serve_forever(timeout=0.1, count=1)
+ self._ftp_server.close_all(ignore_all=True)
+
+ def add_user(self, user, password):
+ """Add a user with write access."""
+ self._ftp_server.authorizer.add_user(user, password, self._root,
+ perm='elradfmw')
=== modified file 'bzrlib/tests/test_ftp_transport.py'
--- a/bzrlib/tests/test_ftp_transport.py 2007-11-04 15:29:17 +0000
+++ b/bzrlib/tests/test_ftp_transport.py 2009-03-19 14:28:27 +0000
@@ -24,14 +24,15 @@
ui,
)
+from bzrlib.tests import ftp_server
+
class TestCaseWithFTPServer(tests.TestCaseWithTransport):
- _test_needs_features = [tests.FTPServerFeature]
+ _test_needs_features = [ftp_server.FTPServerFeature]
def setUp(self):
- from bzrlib.tests import ftp_server
- self.transport_server = ftp_server.FTPServer
+ self.transport_server = ftp_server.FTPTestServer
super(TestCaseWithFTPServer, self).setUp()
@@ -47,7 +48,7 @@
self.assertEqual('aftp://host/path', t.abspath(''))
-class TestFTPServer(TestCaseWithFTPServer):
+class TestFTPTestServer(TestCaseWithFTPServer):
def test_basic_exists(self):
url = self.get_url()
@@ -66,28 +67,27 @@
self.assertEqual('test more bytes\n', t.get_bytes('foo'))
-class TestFTPServerUI(TestCaseWithFTPServer):
-
- def _add_authorized_user(self, user, password):
- server = self.get_server()
- # FIXME: There should be a better way to declare authorized users and
- # passwords to the server
- authorizer = server._ftp_server.authorizer
- authorizer.secured_user = user
- authorizer.secured_password = password
+class TestFTPTestServerUI(TestCaseWithFTPServer):
+
+ def setUp(self):
+ super(TestFTPTestServerUI, self).setUp()
+ self.user = 'joe'
+ self.password = 'secret'
+ self.get_server().add_user(self.user, self.password)
+
+ def get_url(self, relpath=None):
+ """Overrides get_url to inject our user."""
+ base = super(TestFTPTestServerUI, self).get_url(relpath)
+ (scheme, user, password,
+ host, port, path) = transport.ConnectedTransport._split_url(base)
+ url = transport.ConnectedTransport._unsplit_url(
+ scheme, self.user, self.password, host, port, path)
+ return url
def test_prompt_for_password(self):
t = self.get_transport()
- # Ensure that the test framework set the password
- self.assertIsNot(t._password, None)
- # Reset the password (get_url set the password to 'bar' so we
- # reset it to None in the transport before the connection).
- password = t._password
- t._password = None
- ui.ui_factory = tests.TestUIFactory(stdin=password+'\n',
+ ui.ui_factory = tests.TestUIFactory(stdin=self.password+'\n',
stdout=tests.StringIOWrapper())
- # Ask the server to check the password
- self._add_authorized_user(t._user, password)
# Issue a request to the server to connect
t.has('whatever/not/existing')
# stdin should be empty (the provided password have been consumed)
@@ -95,23 +95,31 @@
def test_no_prompt_for_password_when_using_auth_config(self):
t = self.get_transport()
- # Reset the password (get_url set the password to 'bar' so we
- # reset it to None in the transport before the connection).
- password = t._password
- t._password = None
ui.ui_factory = tests.TestUIFactory(stdin='precious\n',
stdout=tests.StringIOWrapper())
- # Ask the server to check the password
- self._add_authorized_user(t._user, password)
-
# Create a config file with the right password
conf = config.AuthenticationConfig()
conf._get_config().update({'ftptest': {'scheme': 'ftp',
- 'user': t._user,
- 'password': password}})
+ 'user': self.user,
+ 'password': self.password}})
conf._save()
# Issue a request to the server to connect
t.put_bytes('foo', 'test bytes\n')
self.assertEqual('test bytes\n', t.get_bytes('foo'))
# stdin should have been left untouched
self.assertEqual('precious\n', ui.ui_factory.stdin.readline())
+
+ def test_empty_password(self):
+ # Override the default user/password from setUp
+ self.user = 'jim'
+ self.password = ''
+ self.get_server().add_user(self.user, self.password)
+ t = self.get_transport()
+ ui.ui_factory = tests.TestUIFactory(stdin=self.password+'\n',
+ stdout=tests.StringIOWrapper())
+ # Issue a request to the server to connect
+ t.has('whatever/not/existing')
+ # stdin should be empty (the provided password have been consumed),
+ # even if the password is empty, it's followed by a newline.
+ self.assertEqual('', ui.ui_factory.stdin.readline())
+
=== modified file 'bzrlib/tests/test_transport_implementations.py'
--- a/bzrlib/tests/test_transport_implementations.py 2009-03-07 06:58:17 +0000
+++ b/bzrlib/tests/test_transport_implementations.py 2009-03-17 08:19:26 +0000
@@ -155,12 +155,17 @@
self.assertEqual(True, t.has('a'))
self.assertEqual(False, t.has('c'))
self.assertEqual(True, t.has(urlutils.escape('%')))
- self.assertEqual(list(t.has_multi(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])),
- [True, True, False, False, True, False, True, False])
+ self.assertEqual(list(t.has_multi(['a', 'b', 'c', 'd',
+ 'e', 'f', 'g', 'h'])),
+ [True, True, False, False,
+ True, False, True, False])
self.assertEqual(True, t.has_any(['a', 'b', 'c']))
- self.assertEqual(False, t.has_any(['c', 'd', 'f', urlutils.escape('%%')]))
- self.assertEqual(list(t.has_multi(iter(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']))),
- [True, True, False, False, True, False, True, False])
+ self.assertEqual(False, t.has_any(['c', 'd', 'f',
+ urlutils.escape('%%')]))
+ self.assertEqual(list(t.has_multi(iter(['a', 'b', 'c', 'd',
+ 'e', 'f', 'g', 'h']))),
+ [True, True, False, False,
+ True, False, True, False])
self.assertEqual(False, t.has_any(['c', 'c', 'c']))
self.assertEqual(True, t.has_any(['b', 'b', 'b']))
@@ -1495,16 +1500,10 @@
transport.put_bytes('foo', 'bar')
transport3 = self.get_transport()
self.check_transport_contents('bar', transport3, 'foo')
- # its base should be usable. XXX: This is true only if we don't use
- # auhentication, otherwise 'base' doesn't mention the password and we
- # can't access it anymore since the password is lost (it *could* be
- # mentioned in the url given by the test server) --vila 090226
- transport4 = get_transport(transport.base)
- self.check_transport_contents('bar', transport4, 'foo')
# now opening at a relative url should give use a sane result:
transport.mkdir('newdir')
- transport5 = get_transport(transport.base + "newdir")
+ transport5 = self.get_transport('newdir')
transport6 = transport5.clone('..')
self.check_transport_contents('bar', transport6, 'foo')
=== modified file 'bzrlib/transport/__init__.py'
--- a/bzrlib/transport/__init__.py 2009-02-23 15:42:47 +0000
+++ b/bzrlib/transport/__init__.py 2009-03-01 10:02:00 +0000
@@ -1787,24 +1787,32 @@
register_transport_proto('aftp://', help="Access using active FTP.")
register_lazy_transport('aftp://', 'bzrlib.transport.ftp', 'FtpTransport')
-# Default to trying GSSAPI authentication (if the kerberos module is available)
-register_transport_proto('ftp+gssapi://', register_netloc=True)
-register_lazy_transport('ftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
- 'GSSAPIFtpTransport')
-register_transport_proto('aftp+gssapi://', register_netloc=True)
-register_lazy_transport('aftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
- 'GSSAPIFtpTransport')
-register_transport_proto('ftp+nogssapi://', register_netloc=True)
-register_transport_proto('aftp+nogssapi://', register_netloc=True)
-
-register_lazy_transport('ftp://', 'bzrlib.transport.ftp._gssapi',
- 'GSSAPIFtpTransport')
-register_lazy_transport('aftp://', 'bzrlib.transport.ftp._gssapi',
- 'GSSAPIFtpTransport')
-register_lazy_transport('ftp+nogssapi://', 'bzrlib.transport.ftp',
- 'FtpTransport')
-register_lazy_transport('aftp+nogssapi://', 'bzrlib.transport.ftp',
- 'FtpTransport')
+try:
+ import kerberos
+ kerberos_available = True
+except ImportError:
+ kerberos_available = False
+
+if kerberos_available:
+ # Default to trying GSSAPI authentication (if the kerberos module is
+ # available)
+ register_transport_proto('ftp+gssapi://', register_netloc=True)
+ register_lazy_transport('ftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
+ 'GSSAPIFtpTransport')
+ register_transport_proto('aftp+gssapi://', register_netloc=True)
+ register_lazy_transport('aftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
+ 'GSSAPIFtpTransport')
+ register_transport_proto('ftp+nogssapi://', register_netloc=True)
+ register_transport_proto('aftp+nogssapi://', register_netloc=True)
+
+ register_lazy_transport('ftp://', 'bzrlib.transport.ftp._gssapi',
+ 'GSSAPIFtpTransport')
+ register_lazy_transport('aftp://', 'bzrlib.transport.ftp._gssapi',
+ 'GSSAPIFtpTransport')
+ register_lazy_transport('ftp+nogssapi://', 'bzrlib.transport.ftp',
+ 'FtpTransport')
+ register_lazy_transport('aftp+nogssapi://', 'bzrlib.transport.ftp',
+ 'FtpTransport')
register_transport_proto('memory://')
register_lazy_transport('memory://', 'bzrlib.transport.memory',
=== modified file 'bzrlib/transport/ftp/__init__.py'
--- a/bzrlib/transport/ftp/__init__.py 2009-02-27 08:44:36 +0000
+++ b/bzrlib/transport/ftp/__init__.py 2009-03-19 14:28:27 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2006, 2007 Canonical Ltd
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -31,10 +31,10 @@
import os
import os.path
import urlparse
+import random
import socket
import stat
import time
-import random
from warnings import warn
from bzrlib import (
@@ -439,7 +439,7 @@
if mode:
try:
mutter("FTP site chmod: setting permissions to %s on %s",
- str(mode), self._remote_path(relpath))
+ oct(mode), self._remote_path(relpath))
ftp = self._get_FTP()
cmd = "SITE CHMOD %s %s" % (oct(mode),
self._remote_path(relpath))
@@ -447,7 +447,7 @@
except ftplib.error_perm, e:
# Command probably not available on this server
warning("FTP Could not set permissions to %s on %s. %s",
- str(mode), self._remote_path(relpath), str(e))
+ oct(mode), self._remote_path(relpath), str(e))
# TODO: jam 20060516 I believe ftp allows you to tell an ftp server
# to copy something to another machine. And you may be able
@@ -597,27 +597,5 @@
def get_test_permutations():
"""Return the permutations to be used in testing."""
- from bzrlib import tests
- if tests.FTPServerFeature.available():
- from bzrlib.tests import ftp_server
- return [(FtpTransport, ftp_server.FTPServer)]
- else:
- # Dummy server to have the test suite report the number of tests
- # needing that feature. We raise UnavailableFeature from methods before
- # the test server is being used. Doing so in the setUp method has bad
- # side-effects (tearDown is never called).
- class UnavailableFTPServer(object):
-
- def setUp(self, vfs_server=None):
- pass
-
- def tearDown(self):
- pass
-
- def get_url(self):
- raise tests.UnavailableFeature(tests.FTPServerFeature)
-
- def get_bogus_url(self):
- raise tests.UnavailableFeature(tests.FTPServerFeature)
-
- return [(FtpTransport, UnavailableFTPServer)]
+ from bzrlib.tests import ftp_server
+ return [(FtpTransport, ftp_server.FTPTestServer)]
=== modified file 'bzrlib/transport/ftp/_gssapi.py'
--- a/bzrlib/transport/ftp/_gssapi.py 2009-01-17 01:30:58 +0000
+++ b/bzrlib/transport/ftp/_gssapi.py 2009-03-19 14:28:27 +0000
@@ -153,6 +153,6 @@
from bzrlib import tests
if tests.FTPServerFeature.available():
from bzrlib.tests import ftp_server
- return [(GSSAPIFtpTransport, ftp_server.FTPServer)]
+ return [(GSSAPIFtpTransport, ftp_server.FTPTestServer)]
else:
return []
More information about the bazaar-commits
mailing list