pulumi/pkg/engine/lifecycletest
Will Jones 6e04a284a5
Generate more accurate reproductions when fuzzing (#17737)
Fuzzed lifecycle tests work slightly differently to their handwritten
counterparts. A handwritten test will typically "start from nothing". An
initial snapshot is built from an empty state and starting program,
before subsequent operations are executed on this state to test
behaviour. In constrast, fuzzed tests create arbitrary starting
snapshots "out of thin air", before running an operation to see if a bug
can be triggered. Ideally, any starting state conjured by a fuzz test is
actually reproducible from an empty state and some combination of
operations, but it may be that this is not the case, or that the number
of operations required to reach the state is very high. In such cases,
it is handy to have the exact code the fuzz test used to hand when
reproducing and isolating behaviour. To this end, this commit extends
the `reprogen` functionality of the suite to generate this code as well
as the existing "handwritten" approximation. This should also aid in
minimising failing test cases quickly when bugs are found.
2024-11-15 09:16:46 +00:00
..
framework Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
fuzzing Generate more accurate reproductions when fuzzing (#17737) 2024-11-15 09:16:46 +00:00
testdata Support renaming providers in targeted operations (#17746) 2024-11-13 16:54:16 +00:00
README.md Support generating random fixtures in lifecycle tests (#17627) 2024-10-31 15:16:38 +00:00
alias_test.go Normalize URNs in `DeletedWith` references (#17666) 2024-11-05 13:27:11 +00:00
analyzer_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
continue_on_error_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
delete_before_replace_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
fuzz_test.go Add Go tests for fuzzing the engine (#17717) 2024-11-08 13:11:03 +00:00
golang_sdk_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
import_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
loader_test.go Bump gRPC dependencies and migrate `grpc.Dial` (#17701) 2024-11-06 18:36:10 +00:00
parameterized_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
pending_delete_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
pending_replace_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
provider_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
pulumi_test.go Bump gRPC dependencies and migrate `grpc.Dial` (#17701) 2024-11-06 18:36:10 +00:00
refresh_legacy_diff_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
refresh_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
resource_reference_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
retain_on_delete_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
source_query_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
step_generator_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
target_test.go Support renaming providers in targeted operations (#17746) 2024-11-13 16:54:16 +00:00
transformation_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00
update_plan_test.go Factor out the lifecycle testing framework (#17584) 2024-10-28 11:58:59 +00:00

README.md

(lifecycle-tests)=

Lifecycle tests

Lifecycle tests exercise the Pulumi engine and serve as a specification for the behaviours and interactions of the various features that define the lifecycle of a Pulumi program. This includes, but is not limited to:

  • The operation(s) being executed (up, preview, etc.) and the options passed to that operation (--target, --target-dependents, etc.).
  • The programs being executed -- their resources, invocations, and the various options that might be associated with them (parent, retainOnDelete, etc.).
  • The state of the program before and after operations are executed.

How and when to use