Work in the ekr-unit-test is complete. For now, that is.

*Aha: get out of the way!*

Preliminary work actively interfered with the normal operation of unittest 
and pytest. I have done the following:

- Removed the `if __name__ == "__main__":` clauses that called 
leo_test_main, and leo_test_main itself.  leo_test_main tried to determine 
how to run unit tests, but this is wrong! unittest and pytest are designed 
to be run from the command line. They don't need help.

- Removed the RunAllLeoTests class and the 'run-all-tests' command. Again, 
unittest and pytest already do this, and more flexibly than my code.

- Renamed the 'unittest' directory to 'unittests'. This prevents confusion 
between the directory and the unittest module itself.

- Removed the Utils class in leoTest2.py. Instead, leoTest2.py now contains 
a top-level compareOutlines function, and a helper function.

- All test classes are now subclasses of unittest.TestCase, not some silly 
base class.

*Understanding pytest --cov*

I finally understand what the arguments to pytest --cov, and where the 
coverage reports go.  I use this script to run coverage tests on 
leo/commands/leoCommands.py:

cd C:\leo.repo\leo-editor
pytest --cov=leo.commands.editCommands --cov-report=html 
--cov-report=term-missing leo\unittests\commands\test_editCommands.py

The --cov argument is the name of the module *to be tested.* It can be 
given as shown regardless of the directory from which pytest is run.

The last argument is the name of the *test file*.

The coverage report appears in the current working directory:
    C:\leo.repo\leo-editor\htmlcov

*Running tests from Leo*

The following @command node runs the 'leo-unittest' script shown above:

import os
g.cls()
cwd = os.getcwd()
os.system('leo-unittest')
os.chdir(cwd)

*At a stopping point*

I am at a stopping point for #1758 
<https://github.com/leo-editor/leo-editor/issues/1758>. 

I *could *strengthen the unit tests in EditCommandsTest.run_test right 
away, but there is no great need to do this. Indeed, strengthening the 
tests will not change the coverage of the tests, so nothing would be gained 
immediately.

*Summary*

leoTest2.py has collapsed in complexity. There is no need to "help" 
unittest or pytest.

It's easy to run unit tests from the command line (with a script), or 
within Leo using an @command node that invokes the same script.

Lots of work remains on #1758 
<https://github.com/leo-editor/leo-editor/issues/1758>, but that work can 
(and *should*) be done much later, after the sabbatical. 

Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/e447ae4d-d1de-4752-9ace-0392c5948f7an%40googlegroups.com.

Reply via email to