Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
// source: pulumi/testing/language.proto
|
|
|
|
/**
|
|
|
|
* @fileoverview
|
|
|
|
* @enhanceable
|
|
|
|
* @suppress {missingRequire} reports error on implicit type usages.
|
|
|
|
* @suppress {messageConventions} JS Compiler reports an error if a variable or
|
|
|
|
* field starts with 'MSG_' and isn't a translatable message.
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
// GENERATED CODE -- DO NOT EDIT!
|
|
|
|
/* eslint-disable */
|
|
|
|
// @ts-nocheck
|
|
|
|
|
|
|
|
var jspb = require('google-protobuf');
|
|
|
|
var goog = jspb;
|
2023-11-10 13:31:14 +00:00
|
|
|
var proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
|
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.GetLanguageTestsRequest', null, global);
|
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.GetLanguageTestsResponse', null, global);
|
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.PrepareLanguageTestsRequest', null, global);
|
2024-03-21 15:26:58 +00:00
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement', null, global);
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.PrepareLanguageTestsResponse', null, global);
|
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.RunLanguageTestRequest', null, global);
|
|
|
|
goog.exportSymbol('proto.pulumirpc.testing.RunLanguageTestResponse', null, global);
|
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest = function(opt_data) {
|
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.GetLanguageTestsRequest, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.displayName = 'proto.pulumirpc.testing.GetLanguageTestsRequest';
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse = function(opt_data) {
|
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.testing.GetLanguageTestsResponse.repeatedFields_, null);
|
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.GetLanguageTestsResponse, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.displayName = 'proto.pulumirpc.testing.GetLanguageTestsResponse';
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest = function(opt_data) {
|
2024-03-21 15:26:58 +00:00
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.testing.PrepareLanguageTestsRequest.repeatedFields_, null);
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.PrepareLanguageTestsRequest, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.displayName = 'proto.pulumirpc.testing.PrepareLanguageTestsRequest';
|
|
|
|
}
|
2024-03-21 15:26:58 +00:00
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement = function(opt_data) {
|
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.displayName = 'proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement';
|
|
|
|
}
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse = function(opt_data) {
|
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.PrepareLanguageTestsResponse, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.displayName = 'proto.pulumirpc.testing.PrepareLanguageTestsResponse';
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest = function(opt_data) {
|
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.RunLanguageTestRequest, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.displayName = 'proto.pulumirpc.testing.RunLanguageTestRequest';
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Generated by JsPbCodeGenerator.
|
|
|
|
* @param {Array=} opt_data Optional initial data array, typically from a
|
|
|
|
* server response, or constructed directly in Javascript. The array is used
|
|
|
|
* in place and becomes part of the constructed object. It is not cloned.
|
|
|
|
* If no data is provided, the constructed object will be empty, but still
|
|
|
|
* valid.
|
|
|
|
* @extends {jspb.Message}
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse = function(opt_data) {
|
|
|
|
jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.testing.RunLanguageTestResponse.repeatedFields_, null);
|
|
|
|
};
|
|
|
|
goog.inherits(proto.pulumirpc.testing.RunLanguageTestResponse, jspb.Message);
|
|
|
|
if (goog.DEBUG && !COMPILED) {
|
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
* @override
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.displayName = 'proto.pulumirpc.testing.RunLanguageTestResponse';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.GetLanguageTestsRequest.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.GetLanguageTestsRequest} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsRequest}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.GetLanguageTestsRequest;
|
|
|
|
return proto.pulumirpc.testing.GetLanguageTestsRequest.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.GetLanguageTestsRequest} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsRequest}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.GetLanguageTestsRequest} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsRequest.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List of repeated fields within this message type.
|
|
|
|
* @private {!Array<number>}
|
|
|
|
* @const
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.repeatedFields_ = [1];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.GetLanguageTestsResponse.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.GetLanguageTestsResponse} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
testsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f
|
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsResponse}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.GetLanguageTestsResponse;
|
|
|
|
return proto.pulumirpc.testing.GetLanguageTestsResponse.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.GetLanguageTestsResponse} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsResponse}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
case 1:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.addTests(value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.GetLanguageTestsResponse} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
f = message.getTestsList();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeRepeatedString(
|
|
|
|
1,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* repeated string tests = 1;
|
|
|
|
* @return {!Array<string>}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.prototype.getTestsList = function() {
|
|
|
|
return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 1));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {!Array<string>} value
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.prototype.setTestsList = function(value) {
|
|
|
|
return jspb.Message.setField(this, 1, value || []);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @param {number=} opt_index
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.prototype.addTests = function(value, opt_index) {
|
|
|
|
return jspb.Message.addToRepeatedField(this, 1, value, opt_index);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Clears the list making it empty but non-null.
|
|
|
|
* @return {!proto.pulumirpc.testing.GetLanguageTestsResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.GetLanguageTestsResponse.prototype.clearTestsList = function() {
|
|
|
|
return this.setTestsList([]);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-03-21 15:26:58 +00:00
|
|
|
/**
|
|
|
|
* List of repeated fields within this message type.
|
|
|
|
* @private {!Array<number>}
|
|
|
|
* @const
|
|
|
|
*/
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.repeatedFields_ = [7];
|
2024-03-21 15:26:58 +00:00
|
|
|
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.PrepareLanguageTestsRequest.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
languagePluginName: jspb.Message.getFieldWithDefault(msg, 1, ""),
|
|
|
|
languagePluginTarget: jspb.Message.getFieldWithDefault(msg, 2, ""),
|
|
|
|
snapshotDirectory: jspb.Message.getFieldWithDefault(msg, 3, ""),
|
|
|
|
temporaryDirectory: jspb.Message.getFieldWithDefault(msg, 4, ""),
|
2024-03-21 15:26:58 +00:00
|
|
|
coreSdkDirectory: jspb.Message.getFieldWithDefault(msg, 5, ""),
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
coreSdkVersion: jspb.Message.getFieldWithDefault(msg, 6, ""),
|
2024-03-21 15:26:58 +00:00
|
|
|
snapshotEditsList: jspb.Message.toObjectList(msg.getSnapshotEditsList(),
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.toObject, includeInstance)
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.PrepareLanguageTestsRequest;
|
|
|
|
return proto.pulumirpc.testing.PrepareLanguageTestsRequest.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
case 1:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setLanguagePluginName(value);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setLanguagePluginTarget(value);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setSnapshotDirectory(value);
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setTemporaryDirectory(value);
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setCoreSdkDirectory(value);
|
|
|
|
break;
|
2024-03-21 15:26:58 +00:00
|
|
|
case 6:
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setCoreSdkVersion(value);
|
|
|
|
break;
|
|
|
|
case 7:
|
2024-03-21 15:26:58 +00:00
|
|
|
var value = new proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement;
|
|
|
|
reader.readMessage(value,proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.deserializeBinaryFromReader);
|
|
|
|
msg.addSnapshotEdits(value);
|
|
|
|
break;
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
f = message.getLanguagePluginName();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
1,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getLanguagePluginTarget();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
2,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getSnapshotDirectory();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
3,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getTemporaryDirectory();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
4,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getCoreSdkDirectory();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
5,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
f = message.getCoreSdkVersion();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
6,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
2024-03-21 15:26:58 +00:00
|
|
|
f = message.getSnapshotEditsList();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeRepeatedMessage(
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
7,
|
2024-03-21 15:26:58 +00:00
|
|
|
f,
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.serializeBinaryToWriter
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
path: jspb.Message.getFieldWithDefault(msg, 1, ""),
|
|
|
|
pattern: jspb.Message.getFieldWithDefault(msg, 2, ""),
|
|
|
|
replacement: jspb.Message.getFieldWithDefault(msg, 3, "")
|
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement;
|
|
|
|
return proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
case 1:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setPath(value);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setPattern(value);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setReplacement(value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
f = message.getPath();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
1,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getPattern();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
2,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getReplacement();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
3,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string path = 1;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.getPath = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.setPath = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 1, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string pattern = 2;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.getPattern = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.setPattern = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 2, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string replacement = 3;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.getReplacement = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement.prototype.setReplacement = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 3, value);
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string language_plugin_name = 1;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getLanguagePluginName = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setLanguagePluginName = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 1, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string language_plugin_target = 2;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getLanguagePluginTarget = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setLanguagePluginTarget = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 2, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string snapshot_directory = 3;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getSnapshotDirectory = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setSnapshotDirectory = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 3, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string temporary_directory = 4;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getTemporaryDirectory = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setTemporaryDirectory = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 4, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string core_sdk_directory = 5;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getCoreSdkDirectory = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setCoreSdkDirectory = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 5, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2024-03-21 15:26:58 +00:00
|
|
|
/**
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
* optional string core_sdk_version = 6;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getCoreSdkVersion = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setCoreSdkVersion = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 6, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* repeated Replacement snapshot_edits = 7;
|
2024-03-21 15:26:58 +00:00
|
|
|
* @return {!Array<!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement>}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.getSnapshotEditsList = function() {
|
|
|
|
return /** @type{!Array<!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement>} */ (
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
jspb.Message.getRepeatedWrapperField(this, proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement, 7));
|
2024-03-21 15:26:58 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {!Array<!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement>} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.setSnapshotEditsList = function(value) {
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
return jspb.Message.setRepeatedWrapperField(this, 7, value);
|
2024-03-21 15:26:58 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement=} opt_value
|
|
|
|
* @param {number=} opt_index
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.addSnapshotEdits = function(opt_value, opt_index) {
|
Add SupportPack to schemas to write out in the new style (#15713)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
This adds a new flag to the schema metadata to tell codegen to use the
new proposed style of SDKs where we fill in versions and write go.mods
etc.
I've reworked pack to operate on packages assuming they're in this new
style. That is pack no longer has the responsibility to fill in any
version information.
This updates python and node codegen to write out SDKs in this new
style, and fixes their core libraries to still be buildable via pack.
There are two approaches to fixing those, I've chosen option 1 below but
could pretty easily rework for option 2.
1) Write the version information directly to the SDKs at the same time
as we edit the .version file. To simplify this I've added a new
'set-version.py' script that takes a version string an writes it to all
the relevant places (.version, package.json, etc).
2) Write "pack" in the language host to search up the directory tree for
the ".version" file and then fill in the version information as we we're
doing before with envvar tricks and copying and editing package.json.
I think 1 is simpler long term, but does force some amount of cleanup in
unrelated bits of the system right now (release makefiles need a small
edit). 2 is much more localised but keeps this complexity that
sdk/nodejs sdk/python aren't actually valid source modules.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [x] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [ ] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
2024-03-22 09:25:46 +00:00
|
|
|
return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.pulumirpc.testing.PrepareLanguageTestsRequest.Replacement, opt_index);
|
2024-03-21 15:26:58 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Clears the list making it empty but non-null.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsRequest.prototype.clearSnapshotEditsList = function() {
|
|
|
|
return this.setSnapshotEditsList([]);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
Add matrix testing (#13705)
<!---
Thanks so much for your contribution! If this is your first time
contributing, please ensure that you have read the
[CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md)
documentation.
-->
# Description
<!--- Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context. -->
Adds the first pass of matrix testing.
Matrix testing allows us to define tests once in pulumi/pulumi via PCL
and then run those tests against each language plugin to verify code
generation and runtime correctness.
Rather than packing matrix tests and all the associated data and
machinery into the CLI itself we define a new Go package at
cmd/pulumi-test-lanaguage. This depends on pkg and runs the deployment
engine in a unique way for matrix tests but it is running the proper
deployment engine with a proper backend (always filestate, using $TEMP).
Currently only NodeJS is hooked up to run these tests, and all the code
for that currently lives in
sdk/nodejs/cmd/pulumi-language-nodejs/language_test.go. I expect we'll
move that helper code to sdk/go/common and use it in each language
plugin to run the tests in the same way.
This first pass includes 3 simple tests:
* l1-empty that runs an empty PCL file and checks just a stack is
created
* l1-output-bool that runs a PCL program that returns two stack outputs
of `true` and `false
* l2-resource-simple that runs a PCL program creating a simple resource
with a single bool property
These tests are themselves tested with a mock language runtime. This
verifies the behavior of the matrix test framework for both correct and
incorrect language hosts (that is some the mock language runtimes
purposefully cause errors or compute the wrong result).
There are a number of things missing from from the core framework still,
but I feel don't block getting this first pass merged and starting to be
used.
1. The tests can not currently run in parallel. That is calling
RunLanguageTest in parallel will break things. This is due to two
separate problems. Firstly is that the SDK snapshot's are not safe to
write in parallel (when PULUMI_ACCEPT is true), this should be fairly
easy to fix by doing a write to dst-{random} and them atomic move to
dst. Secondly is that the deployment engine itself has mutable global
state, short term we should probably just lock around that part
RunLanguageTest, long term it would be good to clean that up.
2. We need a way to verify "preview" behavior, I think this is probably
just a variation of the tests that would call `stack.Preview` and not
pass a snapshot to `assert`.
3. stdout, stderr and log messages are returned in bulk at the end of
the test. Plus there are a couple of calls to the language runtime that
don't correctly thread stdout/stderr to use and so default to the
process `os.Stdout/Stderr`. stdout/stderr streaming shows up in a load
of other places as well so I'm thinking of a clean way to handle all of
them together. Log message streaming we can probably do by just turning
RunLanguageTest to a streaming grpc call.
## Checklist
- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
- [ ] I have formatted my code using `gofumpt`
<!--- Please provide details if the checkbox below is to be left
unchecked. -->
- [x] I have added tests that prove my fix is effective or that my
feature works
<!---
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the
`changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the
Pulumi Cloud,
then the service should honor older versions of the CLI where this
change would not exist.
You must then bump the API version in
/pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi
Cloud API version
<!-- @Pulumi employees: If yes, you must submit corresponding changes in
the service repo. -->
---------
Co-authored-by: Abhinav Gupta <abhinav@pulumi.com>
2023-09-13 15:17:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.PrepareLanguageTestsResponse.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsResponse} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
token: jspb.Message.getFieldWithDefault(msg, 1, "")
|
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsResponse}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.PrepareLanguageTestsResponse;
|
|
|
|
return proto.pulumirpc.testing.PrepareLanguageTestsResponse.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsResponse} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsResponse}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
case 1:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setToken(value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.PrepareLanguageTestsResponse} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
f = message.getToken();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
1,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string token = 1;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.prototype.getToken = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.PrepareLanguageTestsResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.PrepareLanguageTestsResponse.prototype.setToken = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 1, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.RunLanguageTestRequest.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.RunLanguageTestRequest} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
token: jspb.Message.getFieldWithDefault(msg, 1, ""),
|
|
|
|
test: jspb.Message.getFieldWithDefault(msg, 2, "")
|
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestRequest}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.RunLanguageTestRequest;
|
|
|
|
return proto.pulumirpc.testing.RunLanguageTestRequest.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.RunLanguageTestRequest} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestRequest}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
case 1:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setToken(value);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setTest(value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.RunLanguageTestRequest} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
f = message.getToken();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
1,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getTest();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
2,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string token = 1;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.prototype.getToken = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.prototype.setToken = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 1, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string test = 2;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.prototype.getTest = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestRequest} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestRequest.prototype.setTest = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 2, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List of repeated fields within this message type.
|
|
|
|
* @private {!Array<number>}
|
|
|
|
* @const
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.repeatedFields_ = [2];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (jspb.Message.GENERATE_TO_OBJECT) {
|
|
|
|
/**
|
|
|
|
* Creates an object representation of this proto.
|
|
|
|
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
|
|
|
* Optional fields that are not set will be set to undefined.
|
|
|
|
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
|
|
|
* For the list of reserved names please see:
|
|
|
|
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
|
|
|
|
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
|
|
|
|
* JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @return {!Object}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.toObject = function(opt_includeInstance) {
|
|
|
|
return proto.pulumirpc.testing.RunLanguageTestResponse.toObject(opt_includeInstance, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Static version of the {@see toObject} method.
|
|
|
|
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
|
|
|
|
* the JSPB instance for transitional soy proto support:
|
|
|
|
* http://goto/soy-param-migration
|
|
|
|
* @param {!proto.pulumirpc.testing.RunLanguageTestResponse} msg The msg instance to transform.
|
|
|
|
* @return {!Object}
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.toObject = function(includeInstance, msg) {
|
|
|
|
var f, obj = {
|
|
|
|
success: jspb.Message.getBooleanFieldWithDefault(msg, 1, false),
|
|
|
|
messagesList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
|
|
|
|
stdout: jspb.Message.getFieldWithDefault(msg, 3, ""),
|
|
|
|
stderr: jspb.Message.getFieldWithDefault(msg, 4, "")
|
|
|
|
};
|
|
|
|
|
|
|
|
if (includeInstance) {
|
|
|
|
obj.$jspbMessageInstance = msg;
|
|
|
|
}
|
|
|
|
return obj;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format).
|
|
|
|
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.deserializeBinary = function(bytes) {
|
|
|
|
var reader = new jspb.BinaryReader(bytes);
|
|
|
|
var msg = new proto.pulumirpc.testing.RunLanguageTestResponse;
|
|
|
|
return proto.pulumirpc.testing.RunLanguageTestResponse.deserializeBinaryFromReader(msg, reader);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes binary data (in protobuf wire format) from the
|
|
|
|
* given reader into the given message object.
|
|
|
|
* @param {!proto.pulumirpc.testing.RunLanguageTestResponse} msg The message object to deserialize into.
|
|
|
|
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.deserializeBinaryFromReader = function(msg, reader) {
|
|
|
|
while (reader.nextField()) {
|
|
|
|
if (reader.isEndGroup()) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
var field = reader.getFieldNumber();
|
|
|
|
switch (field) {
|
|
|
|
case 1:
|
|
|
|
var value = /** @type {boolean} */ (reader.readBool());
|
|
|
|
msg.setSuccess(value);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.addMessages(value);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setStdout(value);
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
var value = /** @type {string} */ (reader.readString());
|
|
|
|
msg.setStderr(value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
reader.skipField();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return msg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the message to binary data (in protobuf wire format).
|
|
|
|
* @return {!Uint8Array}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.serializeBinary = function() {
|
|
|
|
var writer = new jspb.BinaryWriter();
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.serializeBinaryToWriter(this, writer);
|
|
|
|
return writer.getResultBuffer();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the given message to binary data (in protobuf wire
|
|
|
|
* format), writing to the given BinaryWriter.
|
|
|
|
* @param {!proto.pulumirpc.testing.RunLanguageTestResponse} message
|
|
|
|
* @param {!jspb.BinaryWriter} writer
|
|
|
|
* @suppress {unusedLocalVariables} f is only used for nested messages
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.serializeBinaryToWriter = function(message, writer) {
|
|
|
|
var f = undefined;
|
|
|
|
f = message.getSuccess();
|
|
|
|
if (f) {
|
|
|
|
writer.writeBool(
|
|
|
|
1,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getMessagesList();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeRepeatedString(
|
|
|
|
2,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getStdout();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
3,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
f = message.getStderr();
|
|
|
|
if (f.length > 0) {
|
|
|
|
writer.writeString(
|
|
|
|
4,
|
|
|
|
f
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional bool success = 1;
|
|
|
|
* @return {boolean}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.getSuccess = function() {
|
|
|
|
return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {boolean} value
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.setSuccess = function(value) {
|
|
|
|
return jspb.Message.setProto3BooleanField(this, 1, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* repeated string messages = 2;
|
|
|
|
* @return {!Array<string>}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.getMessagesList = function() {
|
|
|
|
return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {!Array<string>} value
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.setMessagesList = function(value) {
|
|
|
|
return jspb.Message.setField(this, 2, value || []);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @param {number=} opt_index
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.addMessages = function(value, opt_index) {
|
|
|
|
return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Clears the list making it empty but non-null.
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.clearMessagesList = function() {
|
|
|
|
return this.setMessagesList([]);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string stdout = 3;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.getStdout = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.setStdout = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 3, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* optional string stderr = 4;
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.getStderr = function() {
|
|
|
|
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} value
|
|
|
|
* @return {!proto.pulumirpc.testing.RunLanguageTestResponse} returns this
|
|
|
|
*/
|
|
|
|
proto.pulumirpc.testing.RunLanguageTestResponse.prototype.setStderr = function(value) {
|
|
|
|
return jspb.Message.setProto3StringField(this, 4, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
goog.object.extend(exports, proto.pulumirpc.testing);
|