holland-coredev team mailing list archive
-
holland-coredev team
-
Mailing list archive
-
Message #00109
[Bug 753084] Re: ValueError in tests.core.test_util.test_diskfree
The offending test is:
#XXX: df output isn't 100% portable
#XXX: race condition between running df and disk_free()
def test_diskfree():
import commands
real_cmd = "df -B1 / | tail -n +2 | awk '{ print $4; }'"
actual_bytes = int(commands.getoutput(real_cmd).strip())
assert_equals(path.disk_free("/"), actual_bytes)
The output of 'real_cmd' on Fedora linux 14 is:
[holland-test]% df -B1 / | tail -n +2 | awk '{ print $4; }'
80%
The leading line is not the problem though, it is the '%':
>>> commands.getoutput(real_cmd).strip()
'80%'
>>> int('80%')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '80%'
>>> int('80')
80
Adding an additional ".rstrip('%')" would solve this problem... though it isn't exactly elegant:
>>> actual_bytes = int(commands.getoutput(real_cmd).strip().rstrip('%'))
>>> actual_bytes
80
The problem, as noted in the 'XXX' comments is that this test isn't very portable. The same 'real_cmd' on Darwin/OSX is:
derks-macbook [~] $ df -B1 / | tail -n +2 | awk '{ print $4; }'
df: illegal option -- B
usage: df [-b | -H | -h | -k | -m | -g | -P] [-ailn] [-T type] [-t type] [filesystem ...]
--
You received this bug notification because you are a member of Holland
Build, which is subscribed to holland-backup.
https://bugs.launchpad.net/bugs/753084
Title:
ValueError in tests.core.test_util.test_diskfree
Status in Holland Backup Framework:
New
Status in holland-backup 1.1 series:
New
Bug description:
Using amsterdam (current) on Fedora 14 64bit:
[wdierkes@derks-linux holland]$ ./scripts/mkvirtenv.py --no-site-packages
New python executable in /home/wdierkes/holland-test/bin/python
Installing setuptools..........................done.
[INFO] Installed holland-core.
[INFO] Installing holland plugins
[INFO] Installed plugin holland.lib.common
[INFO] Installed plugin holland.lib.mysql
[INFO] Installed plugin holland.lib.lvm
[INFO] Installed plugin holland.backup.mysqldump
[INFO] Installed plugin holland.backup.mysql_lvm
[INFO] Installed plugin holland.backup.xtrabackup
[INFO] Starting shell in virtual environment /bin/bash - use ctrl-d to exit
[holland-test]% nosetests --verbosity 3
nose.config: INFO: Set working dir to /home/wdierkes/devel/holland/tests
nose.config: INFO: Working directory /home/wdierkes/devel/holland/tests is a package; adding to sys.path
nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module
... snip ok tests ...
tests.core.test_util.test_diskfree ... ERROR
======================================================================
ERROR: tests.core.test_util.test_diskfree
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nose/case.py", line 186, in runTest
self.test(*self.arg)
File "/home/wdierkes/devel/holland/tests/core/test_util.py", line 83, in test_diskfree
actual_bytes = int(commands.getoutput(real_cmd).strip())
ValueError: invalid literal for int() with base 10: '80%'
----------------------------------------------------------------------
Ran 96 tests in 38.849s
FAILED (errors=1)
References