pulumi/pkg/codegen/testing/test
Sean Holung 23313d6b0a
Fix deprecation note formatting (#15495)
fixes: https://github.com/pulumi/registry/issues/3983

This PR fixes up some issues with our deprecation message formatting.
The deprecation messages attached to enums were not being formatted at
all, due to a missing css class. Secondly, I also noticed there was a
whitespace missing in the deprecation message when it renders in the
browser, due to the leading `-` in `{{- .... -}}`, so I addressed that
here as well.

### enum deprecation

before:
![Screen Shot 2024-02-22 at 10 20 34
AM](https://github.com/pulumi/pulumi/assets/16751381/89cf20b7-ad05-4085-9a42-fd73f964e250)



after:
![Screen Shot 2024-02-22 at 9 54 43
AM](https://github.com/pulumi/pulumi/assets/16751381/a95a8302-e40f-43aa-96a2-44f14b505571)

### fix whitespace after "Deprecated:"

before:
![Screen Shot 2024-02-22 at 10 20 53
AM](https://github.com/pulumi/pulumi/assets/16751381/53f088fa-5f46-45e4-b217-536b0affa0cf)

after:
![Screen Shot 2024-02-22 at 9 54 29
AM](https://github.com/pulumi/pulumi/assets/16751381/fbc687a7-43aa-4b80-9f3b-cd3d9f3255a0)
2024-03-02 06:02:03 +00:00
..
testdata Fix deprecation note formatting (#15495) 2024-03-02 06:02:03 +00:00
README.md Added README.md for SDKGen tests. 2023-03-01 08:39:36 -08:00
helpers.go [program-gen] Emit Output-returning JSON serialization methods without rewriting applies (#15371) 2024-02-20 15:48:46 +00:00
program_driver.go Renable tests disabled due to appdash (#14953) 2024-01-17 09:09:53 +00:00
program_driver_test.go Enable perfsprint linter (#14813) 2023-12-12 12:19:42 +00:00
sdk_driver.go [dotnet] codegen fix for resources without constant input properties (#15488) 2024-03-02 06:01:31 +00:00
type_driver.go Initial implementation of simplified invokes for dotnet and nodejs 2023-01-11 14:17:14 -08:00

README.md

SDK Codegen Tests

TestSDKCodegen runs the complete set of SDK code generation tests against a particular language's code generator. It also verifies that the generated code is structurally sound.

The test files live in pkg/codegen/testing/test/testdata and are registered in the following globals in pkg/codegen/testing/test.

  • sdk_driver.go: PulumiPulumiSDKTests
  • program_driver.go: PulumiPulumiProgramTests
  • program_driver.go: PulumiPulumiYAMLProgramTests

An SDK code generation test files consists of a schema and a set of expected outputs for each language. Each test is structured as a directory that contains that information:

 testdata/
     my-simple-schema/   # i.e. `simple-enum-schema`
         schema.(json|yaml)
         go/
         python/
         nodejs/
         dotnet/
         ...

The schema is the only piece that must be manually authored.

Once the schema has been written, the actual codegen outputs can be generated by running the following in pkg/codegen directory:

PULUMI_ACCEPT=true go test ./...

This will rebuild subfolders such as go/ from scratch and store the set of code-generated file names in go/codegen-manifest.json. To generate the code for a specific directory in testdata, run the following instead:

PULUMI_ACCEPT=true go test ./... -run TestGenerate/$dirName

If these outputs look correct, they need to be checked into git and will then serve as the expected values for the normal test runs:

$ go test ./...

That is, the normal test runs will fail if changes to codegen or schema lead to a diff in the generated file set. If the diff is intentional, it can be accepted again via PULUMI_ACCEPT=true.

Writing Program Tests on Generated Code

To support running unit tests over the generated code, the tests also support mixing in manually written $lang-extras files into the generated tree. For example, given the following input:

 testdata/
     my-simple-schema/
         schema.json
         go/
         go-extras/
             tests/
                 go_test.go

The system will copy go-extras/tests/go_test.go into go/tests/go_test.go before performing compilation and unit test checks over the project generated in go.