Commit Graph

375 Commits

Author SHA1 Message Date
Matthias Benkort 7f0df40b4e
Merge pull request #862 from SundaeSwap-finance/pi/summary-check-count
Include the number of tests / checks run as part of the summary
2024-03-09 13:10:16 +01:00
Pi Lanningham ebd6c3a56e Cargo fmt 2024-03-08 20:43:27 -05:00
Pi Lanningham ace58e368c Correctly report the checks count
It might be slightly cleaner and more extensible to change  to return a summary, potentially even making  track the tests, coverage, etc. so it can be serialized to JSON. But, for now, this is much simpler, and the approach that KtorZ suggested.
2024-03-08 20:40:50 -05:00
KtorZ 77faee672e
cargo fmt --all 2024-03-09 01:28:48 +01:00
KtorZ bbe7c0bc01
report prop test coverage labels on success. 2024-03-09 01:28:29 +01:00
KtorZ 96da70149d
Count labels in properties.
We'll piggyback on the tracing capabilities of the VM to provide labelling for prop tests. To ensure we do not interfere with normal traces, we only count traces that starts with a NUL byte as label. That convention is assumed to be known of the companion fuzz library that should then provide the labelling capabilities as a dedicated function.
2024-03-09 01:28:29 +01:00
rvcas cb0ae0c074 feat: impl some conversion methods on CheckedModule 2024-03-08 19:19:07 -05:00
rvcas 2b5ed95df5 feat: serialize as cbor 2024-03-08 19:19:07 -05:00
rvcas fe6710935d feat: impl serde on errythang 2024-03-08 19:19:07 -05:00
Pi Lanningham e944f10372 Add an optional check count; when we run a command that runs tests, we can set this to Some(x) and it'll print in the summary 2024-03-08 17:36:32 -05:00
KtorZ a9d596f4cb
Memoize simplification steps during property-based shrinking.
I've been benchmarking that through the shrink of 'large' lists, and the cache brings about 1.5x speed increase. For small and simple cases, the cache as no visible effects (positive or negative).
2024-03-08 18:58:51 +01:00
KtorZ a578728a94
Resolve type aliases based on inferred types.
Before this commit, we would always show the 'declared form' of type aliases, with their generic, non-instantiated parameters. This now tries to unify the annotation with the underlying inferred type to provide even better alias pretty printing.
2024-03-08 16:01:21 +01:00
KtorZ ed9f5c6ef7
Preserve TypeAlias in types for better context/feedback. 2024-03-08 15:59:33 +01:00
microproofs eb07365e73 fix tests 2024-03-08 00:12:44 -05:00
microproofs 275db2fd11 update tests 2024-03-08 00:12:44 -05:00
rvcas fab6d5aff7
chore: fix fmt 2024-03-07 19:32:33 -05:00
KtorZ 8e558d893f
Only reify unit tests assertions on failure. 2024-03-07 19:07:55 +01:00
KtorZ 0d599f7e2d
re-add missing newline after test blocks. 2024-03-07 18:28:21 +01:00
KtorZ 23a22a65cb
Handle (recursive) generic types during reification.
Also moved a bunch of functions from code-gen back into _tipo_, as
  they're better suited and generic enough to be reused elsewhere.
2024-03-07 18:07:52 +01:00
microproofs a3fbe6c155 fix tests 2024-03-06 23:27:10 -05:00
microproofs bdd84dc952 fixing the tests lead to me create a new function for converting from data 2024-03-06 23:27:10 -05:00
KtorZ 0f926d3c31
Fix code-gen tests due to associativity change. 2024-03-07 01:28:51 +01:00
KtorZ bff822ea7f
Rework unit test report to leverage new reification
And also provide slightly better errors when traces, or trace-if-false operators are present.
2024-03-07 01:20:40 +01:00
KtorZ 59996850c1
Implement 'reify_constant' and rename reify to 'reify_data'
Both fullfill similar goal, but reify_constant sits one level above.
2024-03-07 01:17:06 +01:00
rvcas c9ab1aec98
chore: consume errs instead of cloning 2024-03-06 18:20:14 -05:00
rvcas f8377af0c8 feat(parse): run in parallel 2024-03-06 18:16:07 -05:00
rvcas 9c5556aa1e feat(deps): remove tests from ast and ignore warnings 2024-03-06 18:16:07 -05:00
microproofs b146db8c95 update package dependency 2024-03-05 10:23:29 -05:00
KtorZ 966a20f691
Fix run_n_times for properties expected to fail. 2024-03-04 23:41:37 +01:00
KtorZ 4d432513e0
Fix interesting case identification for properties expected to fail. 2024-03-04 23:28:45 +01:00
KtorZ fbeb611e5f
Show counter examples in green when property is expected to fail. 2024-03-04 20:41:04 +01:00
KtorZ df3baa082e
Remove 'seed' arg from 'with_project' to FinishedTests event
Also polish a bit the output of tests, move test result to stdout to allow filtering out warnings by redirecting stderr to /dev/null.
2024-03-04 18:43:51 +01:00
microproofs d971d9818b update tests and ensure identity reducer handles no_inline lambda 2024-03-04 10:52:56 -05:00
microproofs 4e0aaf970f update tests and fix final unique issues 2024-03-04 10:52:56 -05:00
KtorZ 8e8e0de044
cargo fmt --all 2024-03-04 14:46:16 +01:00
KtorZ 362acd43a3
Rework and optimize PRNG
Using ByteArrays as vectors on-chain is a lot more efficient than relying on actul Data's list of values. From the Rust end, it doesn't change much as we were already manipulating vectors anyway.
2024-03-04 14:27:16 +01:00
KtorZ dd1c7d675f
Allow Aiken files to have more than one dot-separated suffix. 2024-03-04 00:15:05 +01:00
KtorZ 50faf81c0f
Use u64 for PRNG choices. 2024-03-04 00:14:34 +01:00
KtorZ 900b73b21a
cargo fmt --all 2024-03-03 21:05:43 +01:00
KtorZ fbda31d980
Fix and improve test outputs for prop tests. 2024-03-03 21:00:51 +01:00
KtorZ 7a2537432a
Accept an optional --seed parameter for check, otherwise default to random.
Also, show the seed on failure.
2024-03-03 20:36:01 +01:00
KtorZ a7b9d4bb22
Use u8 for fuzzer choices instead of u32
Value is bounded between 0 and 255.
2024-03-03 19:38:49 +01:00
KtorZ 30841fe000
Rework generate_raw to avoid need to intern in prop tests
Also, this commit makes `apply_term` automatically re-intern the
  program since it isn't safe to apply any term onto a UPLC program. In
  particular, terms that introduce new let-bindings (via lambdas) will
  mess with the already generated DeBruijn indices.

  The problem doesn't occur for pure constant terms like Data. So we
  still have a safe and fast version 'apply_data' when needed.
2024-03-03 19:33:27 +01:00
KtorZ 1134b8d7d0
Register tests as callable definitions.
Also move the registering of validators into the same place as they
  other and define a little cute function to avoid code-duplication.
2024-03-03 19:33:27 +01:00
KtorZ c2dc47fa0b
Refactor creation of CodeGenerator and management of known data_types and functions.
This was a mess to say to the least. The mess started when we wanted
  to make all definitions in codegen use immutable maps of references --
  which was and still is a good idea. Yet, the population of the data
  types and functions definitions was done somehow in a separate step,
  in a rather ad-hoc manner.

  This commit changes that to ensure the project's data_types and
  functions are populated while type checking the AST such that we need
  not to redo it after.

  The code for registering the data type definitions and function
  definitions was also duplicated in at least 3 places. It is now a
  method of the TypedModule.

  Note: this change isn't only just cosmetic, it's also necessary for
  the commit that follows which aims at adding tests to the set of
  available function definitions, thus allowing to make property tests
  callable.
2024-03-03 19:33:26 +01:00
KtorZ 26e563a9be
Hardened property-based testing framework. More tests, less bugs.
Those end-to-end tests are useful. Both for controlling the behavior of the shrinker, but also to double check the reification of Plutus Data back into untyped expressions.
  I had to work-around a few things to get opaque type and private types play nice. Also found a weird bug due to how we apply parameters after unique debruijn indexes have been also applied. A work-around is to re-intern the program.
2024-03-03 19:33:26 +01:00
KtorZ 3df5bcd96d
Fix shrinker impl and implement 3rd strategy of bin_search reduction. 2024-03-03 19:33:26 +01:00
KtorZ 70ea3c9598
Write boilerplate code for being able to easily test properties.
Loads of plumbing, but we now have at least some nice ways to test property execution and shrinking.
2024-03-03 19:33:26 +01:00
KtorZ 2db15d59be
Rename 'aiken-project::script' into 'aiken-project::test_framework' 2024-03-03 19:33:26 +01:00
KtorZ 5b4fedd084
Add PRNG to the Prelude. 2024-03-03 19:33:25 +01:00