Commit Graph

52 Commits (selection)
 

Author SHA1 Message Date
Jordan Orelli d5e30c26fe re-implementing the env system
the env system code is unecessarily fiddly. The current env system is
the second env system, so the layer system will be the third
implementation of the env system.

the environment in which we run our tests is a layered environment like
the scope in a programming language, but unlike with nested closures,
tea permits the user to supply match tags to skip what would be stack
frames in a system based on nested closures. It's more easily understood
as being a system of layers, and that we skip non-matching layers.

the env system also had the problem that it was a tree that was
dynamically constructed as a side-effect of the execution tree, but each
chain only needs to read its own ancestry in the environment tree.
Having a single tree poses challenges for parellelizing the execution of
different test chains, so instead, I would rather keep a list of layers
for each chain, instead of keeping a single environment tree that is
shared across all chains in the run. Additionally, the env system was
sparse; tests that save no data put no nodes in the env tree. I would
like to be able to display to users the layers available to their test
in certain error cases so that they can understand why a match may have
failed. Right now, in practice, encountering a match failure in a test
plan is confusing to understand.
4 years ago
Jordan Orelli df36c8073c select the middle of a graph 4 years ago
Jordan Orelli 00ba88a520 test xleaves 4 years ago
Jordan Orelli 31fa2eb711 clean up some redundant test code 4 years ago
Jordan Orelli 500b02db34 graph-building seems to be working 4 years ago
Jordan Orelli 4d5a33dbdb bit of refactoring
actually made it longer but it's easier to read now. also the xnodes are
now directly inside of the lnodes, removing a bit of pointer
indirection.
4 years ago
Jordan Orelli 75849b2f36 testing selections a bit 4 years ago
Jordan Orelli 8659b230c8 just build both graphs at the same time. 4 years ago
Jordan Orelli acb92cc4d6 i dunno if this is a good idea. 4 years ago
Jordan Orelli e43149ab98 merging no longer mutates the env 4 years ago
Jordan Orelli 41d93e23ee still not hitting every env condition ugh 4 years ago
Jordan Orelli 6a1e87f67e more notes on how multiparent tests might work 4 years ago
Jordan Orelli 30bdf631c4 this match seems to work
I'm failing this match in my actual test code that I'm using at Jackbox
and I can't figure out why :( :( :(
4 years ago
Jordan Orelli 9924617e55 sync examples 4 years ago
Jordan Orelli a3346f59cc export a Passing type
I keep writing these one-off when I actually use tea. It seems like it's
worth including. It's especially useful for the root test, where you
don't necessarily want to create a test, but want to create a starting
environment. Exporting a type that always passes is preferrable to
making an explicit environment type, since we can maintain our
guarantees that our environment isn't an invalid value.
4 years ago
Jordan Orelli 7f8a3d64b9 this is slightly clearer
by slightly i mean a lot
4 years ago
Jordan Orelli 894bebdfc8 paralell tests are easy too huh. 4 years ago
Jordan Orelli 849990d37b a bit like a table-driven test huh 4 years ago
Jordan Orelli ef32839cd4 be explicit damn 4 years ago
Jordan Orelli e7c4ebf7fd duh we want the verbose output 4 years ago
Jordan Orelli 31687f1014 update example 4 years ago
Jordan Orelli 5b2bbf2899 add a license 4 years ago
Jordan Orelli 289535e438 honestly don't know if this is OK or not
adding a nested Go modules file because I don't want to update tea's
go.mod file when the examples are run. I don't want to accidentally
check them in.
4 years ago
Jordan Orelli da8a879f65 removing the old examples 4 years ago
Jordan Orelli e4c2ecd0e9 include output in examples 4 years ago
Jordan Orelli 989bb7746d an example 4 years ago
Jordan Orelli 6f26a9018c documentation 4 years ago
Jordan Orelli 7bbaa6d8ed skip loading fields that are already populated 4 years ago
Jordan Orelli 765d13bb19 hm load failures aren't handled 4 years ago
Jordan Orelli 814dbea1bb field matching 4 years ago
Jordan Orelli e1fc2529e9 we gettin crazy now 4 years ago
Jordan Orelli 96d2a13aa7 use test name 4 years ago
Jordan Orelli 1e1bbcd3d9 env uses layers 4 years ago
Jordan Orelli decbb52f26
add a readme
a readme now exists
4 years ago
Jordan Orelli 429d5bd735 after should use what was exec'd 4 years ago
Jordan Orelli 55f1d5e315 define the After interface 4 years ago
Jordan Orelli 7541919fc9 remove this old Fn thing 4 years ago
Jordan Orelli 312ac7dfd6 i guess i should have a module file 4 years ago
Jordan Orelli 56a16d36db flip all the files around 4 years ago
Jordan Orelli 259a72f45b remove this merge thing, we're not doing that now 4 years ago
Jordan Orelli 3b7a04daa9 cleaned up some sloppiness 4 years ago
Jordan Orelli d523c73690 defined env type
the env type represents a test environment. This was added as an
intermediate container that could store the saved fields of tests after
they're run, so that future tests could load them. Previously a test
could only get the attributes of the test that immediately preceded it.
This change allows tests to load attributes further back in the history.
4 years ago
Jordan Orelli 2c68d4dbd5 can copy field values between successive tests
this isn't going to work permanently, if there's a save field in one
test, then an intermediate test without that field, then a load field,
it won't be visible at the end test.
4 years ago
Jordan Orelli 2853ecfb38 clone supplied test values when running setup 4 years ago
Jordan Orelli 6ef7afe907 fix skip recursion 4 years ago
Jordan Orelli e3d906b28c setup steps are in correct subtest now 4 years ago
Jordan Orelli a1fcf02abf remove old plan code 4 years ago
Jordan Orelli 32e73e2626 walk tree without that plan routine 4 years ago
Jordan Orelli a367c31d12 hmm construct names manually? 4 years ago
Jordan Orelli c8f08097f5 create a failing subtree 4 years ago