pulumi/tests
Will Jones 17b66dfc56
Add a `call` intrinsic to PCL
In order for PCL to serve as an authoritative intermediate language for
Pulumi programs, it needs to be able to express all the concepts
available to a Pulumi program written in a high-level programming
language. Put another way, it must be capable of expressing all the
functionality exposed by the `ResourceMonitor` interface. Presently, the
ability to `Call` methods on component resources is not available in
PCL. This change adds a new `call` intrinsic to fix that.

`call` has three required arguments: the receiver (that will become the
`__self__` argument under the hood), the method name (that must exist in
the resource's `Methods` map in schema), and an object of arguments
(whose specifications must appear in the corresponding `Function` in the
schema). An example use of `call` might thus look as follows:

```hcl
resource "c" "pkg:index:Callable" {
  ...
}

output "o" {
  value = call(c, "method", { x = 1, y = 2 })
}
```

In order to type check and applications of `call` when binding PCL
programs, we use the recently powered-up annotations feature to look up
the resource node of the receiver from its expression. With this, we are
able to grab the schema and validate the method name and arguments.
While we add unit tests for binding programs that use `call`, this
change does not extend program generation or the conformance test suite.
This will be done in a subsequent set of changes.

Part of fixing pulumi/pulumi-java#262
2025-01-10 16:58:48 +00:00
..
benchmarks/go-alias-norm Update golang.org/x/net throughout (#18115) 2024-12-25 17:49:25 +00:00
examples Update node sdk to use typescript definitions for grpc and protobufs. (#14415) 2023-12-04 15:22:44 +00:00
integration fix TestConvertTerraformProviderGo test (#18219) 2025-01-10 16:04:24 +00:00
performance Switch to pyproject.toml + uv (#18081) 2024-12-27 13:53:42 +00:00
testdata Add a `call` intrinsic to PCL 2025-01-10 16:58:48 +00:00
testprovider Autonaming configuration in experimental mode (#17916) 2024-12-10 14:03:27 +00:00
.gitignore ci: Use reduced smoke testing on Windows & macOS targets 2022-09-21 09:55:06 -07:00
README.md Rename "Smoke" test to "Acceptance" tests 2023-01-30 15:38:37 -05:00
about_test.go Run Environment.DeleteIfNotFailed after tests complete (#16730) 2024-07-23 10:37:01 +00:00
config_test.go Preserve ordering when editing stack config. (#17452) 2024-10-02 13:31:10 +00:00
go.mod Changelog and go.mod updates for v3.145.0 (#18181) 2025-01-08 18:33:19 +00:00
go.sum Only use gRPC to communicate with the Java host (#18138) 2025-01-03 16:48:13 +00:00
history_test.go all: Reformat with gofumpt 2023-03-03 09:00:24 -08:00
login_test.go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
main_test.go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
policy_new_test.go Revert "[policy] support premium policies (#13898)" (#14114) 2023-10-06 09:49:40 +00:00
preview_only_test.go Run Environment.DeleteIfNotFailed after tests complete (#16730) 2024-07-23 10:37:01 +00:00
remote_test.go Use new API for deployments (#15684) 2024-04-16 23:23:56 +00:00
roundtrip_test.go Preserve ordering when editing stack config. (#17452) 2024-10-02 13:31:10 +00:00
smoke_test.go Automatically bridge eligible dependencies on pulumi convert from terraform (#17992) 2024-12-23 13:35:55 +00:00
stack_test.go Run Environment.DeleteIfNotFailed after tests complete (#16730) 2024-07-23 10:37:01 +00:00

README.md

Integration Tests

This module provides integration tests for the Pulumi CLI.

The tests can be run via:

make test_all

Usage of Go build tags

In order to speed up integration tests in GitHub actions, Go build tags are used to conditionally compile the desired test cases.

// integration_nodejs_test.go
//go:build (nodejs || all) && !xplatform-acceptance

// integration_nodejs_acceptance_test.go
//go:build nodejs || all