Commit Graph

3 Commits

Author SHA1 Message Date
Christopher Haster
52ef0c1c9e Fixed a crazy consistency issue in test.py
The root of the problem was the notorious Python quirk with mutable
default parameters. The default defines for the TestSuite class ended
up being mutated as the class determined the permutations to test,
corrupting other test's defines.

However, the only define that was mutated this way was the CACHE_SIZE
config in test_entries.

The crazy thing was how this small innocuous change would cause
"./scripts/test.py -nr test_relocations" and "./scripts/test.py -nr"
to drift out of sync only after a commit spanning the different cache
sizes would be written out with a different number of prog calls. This
offset the power-cycle counter enough to cause one case to make it to
an erase, and the other to not.

Normally, the difference between a successful/unsuccessful erase
wouldn't change the result of a test, but in this case it offset the
revision count used for wear-leveling, causing one run run expand the
superblock and the other to not.

This change to the filesystem would then propogate through the rest of
the test, making it difficult to reproduce test failures.

Fortunately the fix was to just make a copy of the default define
dictionary. This should also prevent accidently mutating of dicts
belonging to our caller.

Oh, also fixed a buffer overflow in test_files.
2020-01-26 23:53:53 -06:00
Christopher Haster
5181ce66cd Migrated the first of the tests with internal knowledge
Both test_move and test_orphan needed internal knowledge which comes
with the addition of the "in" attribute. This was in the plan for the
test-revamp from the beginning as it really opens up the ability to
write more unit-style-tests using internal knowledge of how littlefs
works. More unit-style-tests should help _fix_ bugs by limiting the
scope of the test and where the bug could be hiding.

The "in" attribute effectively runs tests _inside_ the .c file
specified, giving the test access to all static members without
needed to change their visibility.
2020-01-14 09:14:01 -06:00
Christopher Haster
1d2688a771 Migrated test_files, test_dirs, test_format suites to new framework
Also some tweaks to test_.py to capture Makefile warnings and print
test locations a bit better.
2020-01-11 15:58:17 -06:00