Merge lp:~verterok/ubuntuone-client/fix-440133 into lp:ubuntuone-client

Proposed by Guillermo Gonzalez
Status: Merged
Approved by: Guillermo Gonzalez
Approved revision: 236
Merged at revision: not available
Proposed branch: lp:~verterok/ubuntuone-client/fix-440133
Merge into: lp:ubuntuone-client
Diff against target: 75 lines
2 files modified
bin/ubuntuone-syncdaemon (+4/-0)
tests/syncdaemon/test_fsm.py (+43/-0)
To merge this branch: bzr merge lp:~verterok/ubuntuone-client/fix-440133
Reviewer Review Type Date Requested Status
Nicola Larosa (community) Approve
Tim Cole (community) Approve
Review via email: mp+12919@code.launchpad.net

Commit message

Fix Bug #440133 and add tests for EnableShareWrite context manager

To post a comment you must log in.
Revision history for this message
Guillermo Gonzalez (verterok) wrote :

Fix Bug #440133 and add tests for EnableShareWrite context manager

Revision history for this message
Tim Cole (tcole) wrote :

Looks reasonable.

review: Approve
Revision history for this message
Nicola Larosa (teknico) wrote :

Yes, nice, apart from some too long lines, but pylint does not work on the client code anyway, does it?

review: Approve
Revision history for this message
dobey (dobey) wrote :
Download full text (7.5 KiB)

The attempt to merge lp:~verterok/ubuntuone-client/fix-440133 into lp:ubuntuone-client failed.Below is the output from the failed tests.

/usr/bin/gnome-autogen.sh
checking for autoconf >= 2.53...
(B testing autoconf2.50... not found.
  testing autoconf... found 2.64
checking for automake >= 1.10...
(B testing automake-1.11... found 1.11
checking for libtool >= 1.5...
(B testing libtoolize... found 2.2.6
checking for intltool >= 0.30...
(B testing intltoolize... found 0.41.0
checking for pkg-config >= 0.14.0...
(B testing pkg-config... found 0.22
Checking for required M4 macros...
(BChecking for forbidden M4 macros...
(BProcessing ./configure.ac
(BRunning libtoolize...
(Blibtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
Running intltoolize...
(BRunning aclocal-1.11...
(BRunning autoconf...
(BRunning autoheader...
(BRunning automake-1.11...
(BRunning ./configure --enable-maintainer-mode --prefix=/usr ...
(Bchecking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for library containing strerror... none required
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload obje...

Read more...

237. By Guillermo Gonzalez

remove unused import

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/ubuntuone-syncdaemon'
2--- bin/ubuntuone-syncdaemon 2009-09-30 16:30:21 +0000
3+++ bin/ubuntuone-syncdaemon 2009-10-07 15:21:11 +0000
4@@ -147,6 +147,10 @@
5 os.makedirs(parent)
6 shutil.move(old_data_dir, options.data_dir)
7 if not os.path.exists(options.data_dir):
8+ parent = os.path.dirname(options.data_dir)
9+ if os.path.exists(parent) and not os.access(parent, os.W_OK):
10+ # make the parent dir writable
11+ os.chmod(parent, 0775)
12 os.makedirs(options.data_dir)
13
14 # create the partials_dir
15
16=== modified file 'tests/syncdaemon/test_fsm.py'
17--- tests/syncdaemon/test_fsm.py 2009-09-22 15:19:25 +0000
18+++ tests/syncdaemon/test_fsm.py 2009-10-07 15:21:11 +0000
19@@ -29,6 +29,7 @@
20 )
21
22 from ubuntuone.syncdaemon.filesystem_manager import (
23+ EnableShareWrite,
24 FileSystemManager,
25 InconsistencyError,
26 METADATA_VERSION,
27@@ -2230,6 +2231,48 @@
28 self.assertTrue(os.path.exists(self.fsm.get_abspath("", a_dir_root)))
29 self.assertTrue(os.path.exists(a_dir_share))
30
31+
32+class TestEnableShareWrite(FSMTestCase):
33+ """Tests for EnableShareWrite context manager"""
34+
35+ def setUp(self):
36+ """Test setup"""
37+ FSMTestCase.setUp(self)
38+ # create a ro share
39+ self.share_ro = self.create_share('share_ro', 'share_ro_name',
40+ self.fsm, self.shares_dir, access_level='View')
41+ self.share_ro_path = self.share_ro.path
42+
43+ def test_write_in_ro_share(self):
44+ """test the EnableShareWrite context manager in a ro share"""
45+ path = os.path.join(self.share_ro_path, 'foo', 'a_file_in_a_ro_share')
46+ data = 'yes I can write!'
47+ can_write_parent = os.access(os.path.dirname(self.share_ro_path), os.W_OK)
48+ with EnableShareWrite(self.share_ro, path):
49+ with open(path, 'w') as f:
50+ f.write(data)
51+ self.assertEquals(data, open(path, 'r').read())
52+ self.assertFalse(os.access(self.share_ro_path, os.W_OK))
53+ # check that the parent permissions are ok
54+ self.assertEquals(can_write_parent, os.access(os.path.dirname(self.share_ro_path), os.W_OK))
55+ # fail to write directly in the share
56+ self.assertRaises(IOError, open, path, 'w')
57+
58+
59+ def test_write_in_rw_share(self):
60+ """test the EnableShareWrite context manager in a rw share"""
61+ path = os.path.join(self.share_path, 'a_file_in_a_rw_share')
62+ data = 'yes I can write!'
63+ can_write_parent = os.access(os.path.dirname(self.share_path), os.W_OK)
64+ with EnableShareWrite(self.share, path):
65+ with open(path, 'w') as f:
66+ f.write(data)
67+ self.assertEquals(data, open(path, 'r').read())
68+ self.assertTrue(os.access(self.share_path, os.W_OK))
69+ # check that the parent permissions are ok
70+ self.assertEquals(can_write_parent, os.access(self.share_path, os.W_OK))
71+
72+
73 def test_suite():
74 # pylint: disable-msg=C0111
75 return unittest.TestLoader().loadTestsFromName(__name__)

Subscribers

People subscribed via source and target branches