Thursday, July 30, 2015¶
Optimizing Lino Noi¶
I understood how to continue on #343 (Änderungswünsche Juli
2015). This ticket is “just” a request for a cost estimation for a
wish list with a dozen items. I already converted them into tickets in
our internal Lino Noi database. Some of these wishes are small
optimizations and will be satisfied as part of the maintenance
contract. We don’t need any estimation for these, they just go to our
lino.modlib.tickets.ui.TicketsToDo
. Some other tickets
should become separate (small) projects. And then Gerd will be able
to see them in the service report. It needs just a small change to
Lino Noi in order to make this possible: #379 (Add
planned_time and ticket_state to Service Report)
I also understood why Lino was still failing on Travis CI (see error
message yesterday). It was about lino.projects.polly.settings
:
doctests must inherit from demo. I could reproduce this error on
my machine after deleting my LINO_CACHE_ROOT
.
Getting Lino to pass on Travis CI¶
And Lino is still failing on Travis. We get yet another error message:
File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/test/runner.py", line 144, in run_tests
suite = self.build_suite(test_labels, extra_tests)
File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/test/runner.py", line 93, in build_suite
tests = self.test_loader.discover(start_dir=label, **kwargs)
File "/opt/python/2.7.9/lib/python2.7/unittest/loader.py", line 206, in discover
tests = list(self._find_tests(start_dir, pattern))
File "/opt/python/2.7.9/lib/python2.7/unittest/loader.py", line 267, in _find_tests
raise ImportError(msg % (mod_name, module_dir, expected_dir))
ImportError: 'tests' module incorrectly imported from '/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/lino/projects/belref'.
Expected '/home/travis/build/lsaffre/lino/lino/projects/belref'.
Is this module globally installed?
Graham Klyne reported a similar problem in Django test runner fails
in virtualenv on Ubuntu
(September 2014). Yes, this seems to be a bug in Python’s test
discovery which occurs when it is called with an explicit “.” as start
directory. And Django’s manage.py test
command does exactly this.
It seems that this bug did not yet exist in Python 2.7.4 (the Python
2.7 I have installed). But Travis are using Python 2.7.9.
How to get Python 2.7.9 on an Ubuntu 14.04? Seems not trivial: http://serverfault.com/questions/669859/how-can-i-upgrade-python-to-2-7-9-on-ubuntu-14-4
But then an idea to maybe work around it: a little change in
lino.utils.pythontest.TestCase.run_django_manage_test
.
Job 387: AssertionError: python manage.py test –noinput –failfast ({‘cwd’: ‘lino/projects/belref’}) returned 1:
Job 389: AssertionError: python manage.py test /home/travis/build/lsaffre/lino/lino/projects/belref –noinput –failfast ({‘cwd’: ‘lino/projects/belref’}) returned 1:
Job 390: AssertionError: python manage.py test /home/travis/build/lsaffre/lino/lino/projects/belref –noinput –failfast ({‘cwd’: ‘lino/projects/belref’}) returned
So unfortunately the problem persists. The unittest discoverer asks to
import a file tests.py
in a directory under
/home/travis/build/
and then complains because the imported
module’s path is in a directory below
/home/travis/virtualenv/python2.7.9/
.
And neither abspath nor realpath can help here because my specified working directory is the real path. It is the imported module’s path that should get canonized.
Miscellaneous¶
Added printed to the detail layout of courses.Enrolments
The
ClientDetail.newcomers_left
panel is now available also for NewcomersOperator mainly because otherwise the AvailableCoachesByClient panel is not high enough.New method
lino.modlib.beid.mixins.Beidcardholder.make_demo_picture()
was needed because after clearing myLINO_CACHE_ROOT
the missing picture file caused create_excerpt to fail.