diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index be7a2eb57798..5d43a035f300 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,7 +6,7 @@ RUN version=1.42.1 \ && golangci-lint version # Install pulumictl -RUN version=0.0.25 \ +RUN version=0.0.42 \ && curl -fsSLO https://github.com/pulumi/pulumictl/releases/download/v$version/pulumictl-v$version-linux-amd64.tar.gz \ && tar -xzf pulumictl-v$version-linux-amd64.tar.gz --directory /usr/local/bin --no-same-owner pulumictl \ && rm -f pulumictl-v$version-linux-amd64.tar.gz \ diff --git a/.github/workflows/ci-run-test.yml b/.github/workflows/ci-run-test.yml index 1847a1e22f1b..b1cfd74f8262 100644 --- a/.github/workflows/ci-run-test.yml +++ b/.github/workflows/ci-run-test.yml @@ -203,7 +203,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} with: repo: pulumi/pulumictl - tag: v0.0.32 + tag: v0.0.42 cache: enable - name: Install gotestsum uses: jaxxstorm/action-install-gh-release@v1.7.1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd0e4e1dbccd..35eca9862548 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -175,7 +175,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} with: repo: pulumi/pulumictl - tag: v0.0.32 + tag: v0.0.42 cache: enable - name: Repository Dispatch run: ${{ matrix.job.run-command }} diff --git a/.gitpod/Dockerfile b/.gitpod/Dockerfile index f5156620bcd0..bd8061e31ea5 100644 --- a/.gitpod/Dockerfile +++ b/.gitpod/Dockerfile @@ -8,7 +8,7 @@ ENV PATH="$HOME/.pulumi:$HOME/.pulumi/bin:$PATH" RUN mkdir -p /home/gitpod/dotnet && \ curl -fsSL https://download.visualstudio.microsoft.com/download/pr/f65a8eb0-4537-4e69-8ff3-1a80a80d9341/cc0ca9ff8b9634f3d9780ec5915c1c66/dotnet-sdk-3.1.201-linux-x64.tar.gz \ | tar xz -C /home/gitpod/dotnet && \ - wget -qO- https://github.com/pulumi/pulumictl/releases/download/v0.0.28/pulumictl-v0.0.28-linux-amd64.tar.gz | sudo tar zxvf - -C /usr/local/bin + wget -qO- https://github.com/pulumi/pulumictl/releases/download/v0.0.42/pulumictl-v0.0.42-linux-amd64.tar.gz | sudo tar zxvf - -C /usr/local/bin ENV DOTNET_ROOT=/home/gitpod/dotnet diff --git a/tests/integration/integration_python_test.go b/tests/integration/integration_python_test.go index 34d4ef2cd495..335073a51fb5 100644 --- a/tests/integration/integration_python_test.go +++ b/tests/integration/integration_python_test.go @@ -1061,3 +1061,18 @@ func TestConstructProviderPropagationPython(t *testing.T) { filepath.Join("..", "..", "sdk", "python", "env", "src"), }) } + +// Regression test for https://github.com/pulumi/pulumi/issues/9411 +func TestDuplicateOutputPython(t *testing.T) { + integration.ProgramTest(t, &integration.ProgramTestOptions{ + Dir: filepath.Join("python", "duplicate-output"), + Dependencies: []string{ + filepath.Join("..", "..", "sdk", "python", "env", "src"), + }, + ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) { + expected := []interface{}{float64(1), float64(2)} + assert.Equal(t, expected, stack.Outputs["export1"]) + assert.Equal(t, expected, stack.Outputs["export2"]) + }, + }) +} diff --git a/tests/integration/python/duplicate-output/.gitignore b/tests/integration/python/duplicate-output/.gitignore new file mode 100644 index 000000000000..28a6abfd4dd0 --- /dev/null +++ b/tests/integration/python/duplicate-output/.gitignore @@ -0,0 +1,6 @@ +*.pyc +/.pulumi/ +/dist/ +/*.egg-info +venv/ +lib/ diff --git a/tests/integration/python/duplicate-output/Pulumi.yaml b/tests/integration/python/duplicate-output/Pulumi.yaml new file mode 100644 index 000000000000..70a611b95613 --- /dev/null +++ b/tests/integration/python/duplicate-output/Pulumi.yaml @@ -0,0 +1,3 @@ +name: pulumi-python-duplicate-output +description: A Python program that tests returning the same output twice. +runtime: python diff --git a/tests/integration/python/duplicate-output/__main__.py b/tests/integration/python/duplicate-output/__main__.py new file mode 100644 index 000000000000..bb9c7d299268 --- /dev/null +++ b/tests/integration/python/duplicate-output/__main__.py @@ -0,0 +1,8 @@ +# Copyright 2016-2023, Pulumi Corporation. All rights reserved. + +import pulumi + +a = pulumi.Output.from_input([1, 2]) + +pulumi.export("export1", a) +pulumi.export("export2", a) \ No newline at end of file diff --git a/tests/integration/python/duplicate-output/requirements.txt b/tests/integration/python/duplicate-output/requirements.txt new file mode 100644 index 000000000000..b1dc38733acb --- /dev/null +++ b/tests/integration/python/duplicate-output/requirements.txt @@ -0,0 +1 @@ +pulumi