Currently one test runner takes significantly longer than another. This
is entirely due to test_commands.py which needs to create new site and
do backup/restore tests etc. All of which are far far slower than other
tests.
* chore: remove verbose output from test runner
This is same output that's shared by test runner in different format?
This makes it annoying to scroll through when just running single test
locally.
* fix: Remove clutter from test output
Test records don't change after first run.
Tests are executed many many times locally
* test: retry flaky postgres backup tests
* chore: improve log record of testing command invokation
* chore(testing): narrower specificacion of the persistence log
* fix(testing): append raw record source data to globalTestRecords
* feat: set doctype on test classes
* refactor: Transform `make_test_records` into a generator
* feat: lazy create doctype records on first use
* perf: improve file walker
* fix: submission queue test
* refactor: improve logging a bit
* fix: global records install for app (semifix)
* feat: Improve logging in test runner
* feat: Categorize tests as unit or integration
* feat: Add support for selecting test categories
* feat: Split unit and integration tests execution
* test: better output on cli runner
* feat: Create TestRunner class
* feat: Implement run method in TestRunner class
* refactor: Refactor test discovery and execution in TestRunner class
* feat: Integrate _run_doctype_tests functionality into TestRunner class
* feat: Integrate _run_unittest functionality into TestRunner class
* refactor: Handle distinction between loading specific test case and entire module
* feat: Add handling of test dependencies in _add_module_tests method
* refactor: Merge _add_tests into discover_tests
* feat: Improve test results printing with click
* refactor: wrap in proper error handling
* fix: some signatures
* feat: Add debug logs to frappe/test_runner.py
* refactor: Move before_tests hooks after test discovery
* refactor: Use TestConfig instead of frappe.flags.skip_before_tests
* refactor: Add skip_test_records to TestConfig and update calling sites
* feat: Defer test record creation until after before_tests hooks
* feat: Add app parameter to _run_doctype_tests and _run_module_tests
* feat: Add --test-category option to run_tests command
* refactor: Add explanatory comments for skipping before_tests hooks and test record creation callbacks for unit tests
* feat: Add test category option to run_tests command
* feat: Unify explanatory comments in _prepare_integration_tests
* fix: wrap implicit db access in try-except block
* fix: mark current site
* fix: case counting
BREAKING: return values of bench execute are not quoted anymore
For example, `bech execute frappe.bold --arg 'hi'`
- now returns: `<strong>hi</strong>`
- instead of: `"<strong>hi</strong>"`
- Single worker adds some extra costs to each worker (importing scheduler)
- Workerpool can import it all once and share
- This way we need not have many different
Don't raise exceptions where a simple print() will suffice
Print exception before prompting for rollback
Signed-off-by: Akhil Narang <me@akhilnarang.dev>