- Take the value from the configuration and run it throught the Django
translate method and make it available in Context.
- Use a no-op translate method to translate the text 'FreedomBox'.
- Using the new configuration module changes meant for easy tests,
simplify all test cases.
- Reading file is tested separately from find the configuration file.
Add danube_edition option to the Misc section of the configuration file.
Without this option, this 'missing section' test case will fail with
'missing option' instead of 'missing section'. Coupled with the
unpredictable order of reading options, this only happens sometimes.
The name 'Plinth' (cfg.product_name) is not used anymore after my previous
commits.
Reason for the complete removal: I do not think that users should know or have
to care about the internal name of the web interface of the FreedomBox.
- Explicitly state datatype in config_items to handle them more
generically
- Handle boolean values correctly. Before this fix we got the string
'False' which evaluated to True (this affected the entry
'use_x_forwarded_host').
- Add the config entry 'danube_edition'. Activating it shows a voucher
input field for pagekite accounts on freedombox.me during the
firstboot process. Other vouchers (i.e. for VPN services) might
follow. Add description and test for 'danube_edition' setting.
- For each application, add ./tests directory and __init__.py file
within it.
- Modify test controllers (coverage.py, runtests.py) to find the new
test directories for testing and coverage analysis.
- Move existing application-specific test modules (test_pagekite.py) to
the newly created directories.
- Add module level comments.
- Add comments to reflect docstring styling.
- Since most tests can no longer be run directly, remove __main__
invocation uniformly from all the tests.
- Remove unnecessary test settings and let them take default values.
- Add license header to test settings module.
- Fix a minor issue actions test tear down.
- Improve key/value store tests.
- Add django-test-settings.py for Django settings
- Add runtests.py for setting up Django test environment
- Add Django test setup support to setup.py and coverage.py
- Add new test module test_kvstore.py
- Enable existing Django-dependent tests in test_context_processors.py and test_menu.py
- Don't allow strings to be sent as arguments. The mixup with
lists/tuples could be dangerous.
- Don't escape arguments. subprocess.Popen takes care that arguments
are passed on nicely to the actions.
- Update tests.
- Add files .travis.yml and requirements.txt
- In setup.py, remove 'pygobject' from install_requires
- In setup.py, add 'pyyaml' to install_requires
- Add file plinth/tests/coverage/__init__.py
- Rename file plinth/tests/coverage/test_coverage.py to coverage.py
- In plinth/tests/coverage/coverage.py, rename class TestCoverageCommand
to CoverageCommand
* Add unit tests for cfg.py, context_processors.py, and menu.py
* Add new plinth/tests/data directory for miscellaneous test data
* In cfg.py, add an explicit check to verify the existence of the secondary
(non-default) plinth.config file
* In cfg.py, replace deprecated configparser.SafeConfigParser with
configparser.ConfigParser
* Add a detailed console report to the 'test_coverage' command output
* Expand the precision of all coverage percentages to two decimal places
* Print the location of the HTML coverage report at the end of the console report
- Coverage should only be required if running tests
- When running test_coverage command all the install dependencies and
test dependencies should be installed.
- Implement coverage functionality as a setuptools Command subclass
(in plinth/tests/coverage/test_coverage.py)
- Register the new 'test_coverage' command in setup.py
- Modify the INSTALL file to specify python3-coverage as a new dependency
- Modify the HACKING file to document the new 'test_coverage' command
- Have git (via .gitignore) ignore the '.coverage' output data file and
the contents of the 'plinth/tests/coverage/report' directory
The package license (AGPL3+) implicitly indicates the license of each
file. However, it is desirable to have license headers in each file.
This is the case for many prominent projects like GNU project, Mozilla
etc.