Compare commits
70 commits
master
...
t0yv0/try-
Author | SHA1 | Date | |
---|---|---|---|
|
233522a565 | ||
|
0ab7306d21 | ||
|
f55aaa82c9 | ||
|
0d45de67dd | ||
|
7ca0ad12ff | ||
|
80db85c1e9 | ||
|
e4530c91f7 | ||
|
4c7b9daee6 | ||
|
8caa968462 | ||
|
9e9cffc68d | ||
|
6bd2aab636 | ||
|
db93628984 | ||
|
06a4b5b044 | ||
|
b6b78cc3b2 | ||
|
229be2b0a0 | ||
|
3490e2ff82 | ||
|
5e629b4f85 | ||
|
93a8286d91 | ||
|
2570b87dc3 | ||
|
257ed26a33 | ||
|
1830f71c82 | ||
|
c4676cfd33 | ||
|
f957cd5033 | ||
|
70fc032fb6 | ||
|
232cba84a6 | ||
|
47e97143ff | ||
|
938d09dce8 | ||
|
4572dfdc44 | ||
|
8e2f80d514 | ||
|
735ecd5e3a | ||
|
b4ff6dd2b4 | ||
|
aa9391f40c | ||
|
2f37ad26a4 | ||
|
ee488200c7 | ||
|
3beadb25b7 | ||
|
d841c5790f | ||
|
f729ecac78 | ||
|
e9ce7e34ed | ||
|
bccbc7875e | ||
|
ca46eb7dbb | ||
|
9a24223d90 | ||
|
11be4a1105 | ||
|
7ddf6e0742 | ||
|
75852d96f3 | ||
|
61fc97f251 | ||
|
ab7d3cdf0d | ||
|
5929ffb67a | ||
|
2292a95965 | ||
|
52e747c030 | ||
|
743b851c8e | ||
|
2829f9008c | ||
|
d8a4debf65 | ||
|
13e78100cd | ||
|
4ec78986c8 | ||
|
22d54ac1ad | ||
|
94dab380e5 | ||
|
ece2325694 | ||
|
898fe20af5 | ||
|
f4873b9560 | ||
|
487cbf87b2 | ||
|
33608ef2f5 | ||
|
12289325c5 | ||
|
c76075005b | ||
|
9a48902e1c | ||
|
10b9606ed7 | ||
|
17b49ed6fd | ||
|
e8c6f643a8 | ||
|
293b73be51 | ||
|
28db49b0cb | ||
|
59568580c1 |
214
.github/workflows/build.yml
vendored
Normal file
214
.github/workflows/build.yml
vendored
Normal file
|
@ -0,0 +1,214 @@
|
||||||
|
name: Builds CLI and SDK binaries.
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
go-version:
|
||||||
|
description: 'Version of the Go toolchain for the build'
|
||||||
|
default: '1.17.x'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
python-version:
|
||||||
|
description: 'Version of the Python toolchain for the build'
|
||||||
|
default: '3.9.x'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
node-version:
|
||||||
|
description: 'Version of the Node toolchain for the build'
|
||||||
|
default: '14.x'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
dotnet-version:
|
||||||
|
description: 'Version of the .NET toolchain for the build'
|
||||||
|
default: '3.1.x'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
goreleaser-flags:
|
||||||
|
description: 'Command-line flags to pass to goreleaser'
|
||||||
|
default: '-p 3 -f .goreleaser.build.yml --snapshot --skip-validate'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
secrets: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_pulumi_go_binaries:
|
||||||
|
name: Build Pulumi Go binaries
|
||||||
|
|
||||||
|
# Due to the use of CGO in `pulumi` this cross-compilation step
|
||||||
|
# cannot proceed on `ubuntu-latest`, which would have been
|
||||||
|
# preferable.
|
||||||
|
# runs-on: macos-latest
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
|
- name: Fetch Tags
|
||||||
|
run: |
|
||||||
|
git fetch --quiet --prune --unshallow --tags
|
||||||
|
- name: Install pulumictl
|
||||||
|
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
|
with:
|
||||||
|
repo: pulumi/pulumictl
|
||||||
|
- name: Set up Go ${{ inputs.go-version }}
|
||||||
|
uses: actions/setup-go@v1
|
||||||
|
with:
|
||||||
|
go-version: ${{ inputs.go-version }}
|
||||||
|
- name: Compute current version to inform GoReleaser
|
||||||
|
run: |
|
||||||
|
echo "GORELEASER_CURRENT_TAG=v$(pulumictl get version --language generic -o)" >> $GITHUB_ENV
|
||||||
|
- name: Run GoReleaser to build Go Pulumi binaries
|
||||||
|
uses: goreleaser/goreleaser-action@v2
|
||||||
|
with:
|
||||||
|
version: latest
|
||||||
|
args: ${{ inputs.goreleaser-flags }}
|
||||||
|
- name: Upload pulumi-darwin-arm64.tar.gz
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-darwin-arm64.tar.gz
|
||||||
|
path: goreleaser/pulumi*-darwin-arm64.tar.gz
|
||||||
|
- name: Upload pulumi-darwin-x64.tar.gz
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-darwin-x64.tar.gz
|
||||||
|
path: goreleaser/pulumi*-darwin-x64.tar.gz
|
||||||
|
- name: Upload pulumi-linux-arm64.tar.gz
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-linux-arm64.tar.gz
|
||||||
|
path: goreleaser/pulumi*-linux-arm64.tar.gz
|
||||||
|
- name: Upload pulumi-linux-x64.tar.gz
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-linux-x64.tar.gz
|
||||||
|
path: goreleaser/pulumi*-linux-x64.tar.gz
|
||||||
|
- name: Upload pulumi-windows-x64.zip
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-windows-x64.zip
|
||||||
|
path: goreleaser/pulumi*-windows-x64.zip
|
||||||
|
|
||||||
|
build_python_sdk:
|
||||||
|
name: Build Pulumi Python SDK wheel
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
|
- name: Fetch Tags
|
||||||
|
run: |
|
||||||
|
git fetch --quiet --prune --unshallow --tags
|
||||||
|
- name: Install pulumictl
|
||||||
|
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
|
with:
|
||||||
|
repo: pulumi/pulumictl
|
||||||
|
- name: Set up Python ${{ inputs.python-version }}
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: ${{ inputs.python-version }}
|
||||||
|
- name: Compute current version to inform wheel build
|
||||||
|
run: |
|
||||||
|
echo "PYPY_VERSION=$(pulumictl get version --language python)" >> $GITHUB_ENV
|
||||||
|
- name: Build Pulumi Python SDK wheel
|
||||||
|
run: |
|
||||||
|
# TODO unify with sdk/python/Makefile once that does not use pipenv
|
||||||
|
cp README.md sdk/python/lib
|
||||||
|
cd sdk/python/lib
|
||||||
|
sed -i.bak "s/\${VERSION}/$PYPY_VERSION/g" setup.py
|
||||||
|
rm setup.py.bak
|
||||||
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
python -m pip install wheel
|
||||||
|
python setup.py build bdist_wheel --python-tag py3
|
||||||
|
- name: Upload pulumi.whl
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi.whl
|
||||||
|
path: sdk/python/lib/dist/*.whl
|
||||||
|
|
||||||
|
build_node_sdk:
|
||||||
|
name: Build Pulumi Node SDK tarball
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
|
- name: Fetch Tags
|
||||||
|
run: |
|
||||||
|
git fetch --quiet --prune --unshallow --tags
|
||||||
|
- name: Install pulumictl
|
||||||
|
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
|
with:
|
||||||
|
repo: pulumi/pulumictl
|
||||||
|
- name: Set up Node ${{ inputs.node-version }}
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: ${{ inputs.node-version }}
|
||||||
|
- name: Install yarn
|
||||||
|
run: |
|
||||||
|
npm install -g yarn
|
||||||
|
- name: Make no-op Go command to avoid Go builds
|
||||||
|
run: |
|
||||||
|
cd sdk/nodejs
|
||||||
|
mkdir -p bin
|
||||||
|
ln -s $(which echo) bin/go
|
||||||
|
- name: Ensure installed dependencies
|
||||||
|
run: |
|
||||||
|
cd sdk/nodejs
|
||||||
|
PATH=./bin:$PATH make ensure
|
||||||
|
- name: Build the Node SDK package
|
||||||
|
run: |
|
||||||
|
cd sdk/nodejs
|
||||||
|
PATH=./bin:$PATH make build_package
|
||||||
|
- name: Pack the Node SDK
|
||||||
|
run: |
|
||||||
|
cd sdk/nodejs/bin
|
||||||
|
npm pack
|
||||||
|
- name: Upload pulumi-node-sdk.tgz
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-node-sdk.tgz
|
||||||
|
path: sdk/nodejs/bin/*.tgz
|
||||||
|
|
||||||
|
build_dotnet_sdk:
|
||||||
|
name: Build Pulumi .NET SDK NuGet packages
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
|
- name: Fetch Tags
|
||||||
|
run: |
|
||||||
|
git fetch --quiet --prune --unshallow --tags
|
||||||
|
- name: Install pulumictl
|
||||||
|
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
|
with:
|
||||||
|
repo: pulumi/pulumictl
|
||||||
|
- name: Set up DotNet ${{ inputs.dotnet-version }}
|
||||||
|
uses: actions/setup-dotnet@v1
|
||||||
|
with:
|
||||||
|
dotnet-version: ${{ inputs.dotnet-version }}
|
||||||
|
- name: Compute current version to inform the NuGet package build
|
||||||
|
run: |
|
||||||
|
echo "DOTNET_VERSION=$(pulumictl get version --language dotnet)" >> $GITHUB_ENV
|
||||||
|
- name: Build the .NET SDK package
|
||||||
|
run: |
|
||||||
|
cd sdk/dotnet
|
||||||
|
dotnet build --configuration Release dotnet.sln /p:Version=$DOTNET_VERSION
|
||||||
|
- name: Pack the .NET SDK package
|
||||||
|
run: |
|
||||||
|
cd sdk/dotnet
|
||||||
|
dotnet pack --configuration Release --output nupkgs dotnet.sln /p:Version=$DOTNET_VERSION
|
||||||
|
- name: Upload the NuGet packages
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-nuget-packages
|
||||||
|
path: sdk/dotnet/nupkgs/*.nupkg
|
367
.github/workflows/run-build-and-acceptance-tests.yml
vendored
367
.github/workflows/run-build-and-acceptance-tests.yml
vendored
|
@ -6,6 +6,10 @@ on:
|
||||||
- 'CHANGELOG.md'
|
- 'CHANGELOG.md'
|
||||||
- 'CHANGELOG_PENDING.md'
|
- 'CHANGELOG_PENDING.md'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_PROD_ACCESS_TOKEN }}
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_PROD_ACCESS_TOKEN }}
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -33,6 +37,7 @@ concurrency:
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
comment-notification:
|
comment-notification:
|
||||||
# We only care about adding the result to the PR if it's a repository_dispatch event
|
# We only care about adding the result to the PR if it's a repository_dispatch event
|
||||||
if: github.event_name == 'repository_dispatch'
|
if: github.event_name == 'repository_dispatch'
|
||||||
|
@ -51,6 +56,7 @@ jobs:
|
||||||
Please view the results of the PR Build + Acceptance Tests Run [Here][1]
|
Please view the results of the PR Build + Acceptance Tests Run [Here][1]
|
||||||
|
|
||||||
[1]: ${{ steps.vars.outputs.run-url }}
|
[1]: ${{ steps.vars.outputs.run-url }}
|
||||||
|
|
||||||
go-lint:
|
go-lint:
|
||||||
container: golangci/golangci-lint:latest
|
container: golangci/golangci-lint:latest
|
||||||
name: Lint ${{ matrix.directory }}
|
name: Lint ${{ matrix.directory }}
|
||||||
|
@ -66,6 +72,7 @@ jobs:
|
||||||
- name: Lint ${{ matrix.directory }}
|
- name: Lint ${{ matrix.directory }}
|
||||||
run: |
|
run: |
|
||||||
cd ${{ matrix.directory }} && golangci-lint run -c ../.golangci.yml
|
cd ${{ matrix.directory }} && golangci-lint run -c ../.golangci.yml
|
||||||
|
|
||||||
sdk-lint:
|
sdk-lint:
|
||||||
name: Lint SDKs
|
name: Lint SDKs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
@ -124,11 +131,18 @@ jobs:
|
||||||
- name: Lint .NET
|
- name: Lint .NET
|
||||||
run: |
|
run: |
|
||||||
cd sdk/dotnet && make lint
|
cd sdk/dotnet && make lint
|
||||||
build_and_test:
|
|
||||||
name: Build & Test
|
build:
|
||||||
|
name: Build
|
||||||
|
uses: pulumi/pulumi/.github/workflows/build.yml@8e2f80d5147fbf30d06370f87c02c5d361198a55
|
||||||
|
|
||||||
|
test:
|
||||||
|
name: Test
|
||||||
|
needs: build
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
platform: [ ubuntu-latest, macos-latest ]
|
# platform: [ ubuntu-latest, macos-latest, windows-latest ]
|
||||||
|
platform: [ windows-latest ]
|
||||||
go-version: [ 1.17.x ]
|
go-version: [ 1.17.x ]
|
||||||
python-version: [ 3.9.x ]
|
python-version: [ 3.9.x ]
|
||||||
dotnet-version: [ 3.1.x ]
|
dotnet-version: [ 3.1.x ]
|
||||||
|
@ -156,27 +170,87 @@ jobs:
|
||||||
if: github.event_name == 'repository_dispatch' || github.event.pull_request.head.repo.full_name == github.repository
|
if: github.event_name == 'repository_dispatch' || github.event.pull_request.head.repo.full_name == github.repository
|
||||||
runs-on: ${{ matrix.platform }}
|
runs-on: ${{ matrix.platform }}
|
||||||
steps:
|
steps:
|
||||||
- name: Set PULUMI_TEST_SUBSET env var
|
- name: Checkout Repo
|
||||||
run: |
|
uses: actions/checkout@v2
|
||||||
echo "PULUMI_TEST_SUBSET=${{ matrix.test-subset }}" >> $GITHUB_ENV
|
|
||||||
- name: Set up Go ${{ matrix.go-version }}
|
|
||||||
uses: actions/setup-go@v1
|
|
||||||
with:
|
with:
|
||||||
go-version: ${{ matrix.go-version }}
|
ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
|
- name: Uninstall pre-installed Pulumi (windows)
|
||||||
|
if: ${{ matrix.platform == 'windows-latest' }}
|
||||||
|
run: |
|
||||||
|
chocolatey uninstall pulumi
|
||||||
|
- name: Download Pulumi Go Binaries (linux-x64)
|
||||||
|
if: ${{ matrix.platform == 'ubuntu-latest' }}
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-linux-x64.tar.gz
|
||||||
|
path: artifacts/go
|
||||||
|
- name: Download Pulumi Go Binaries (darwin-x64)
|
||||||
|
if: ${{ matrix.platform == 'macos-latest' }}
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-darwin-x64.tar.gz
|
||||||
|
path: artifacts/go
|
||||||
|
- name: Download Pulumi Go Binaries (windows-x64)
|
||||||
|
if: ${{ matrix.platform == 'windows-latest' }}
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-windows-x64.zip
|
||||||
|
path: artifacts/go
|
||||||
|
- name: Install Pulumi Go Binaries (non-windows)
|
||||||
|
if: ${{ matrix.platform != 'windows-latest' }}
|
||||||
|
run: |
|
||||||
|
mkdir -p bin
|
||||||
|
tar -xf artifacts/go/*.tar.gz -C bin
|
||||||
|
- name: Install Pulumi Go Binaries (windows)
|
||||||
|
if: ${{ matrix.platform == 'windows-latest' }}
|
||||||
|
run: |
|
||||||
|
mkdir -p $PWD/bin
|
||||||
|
unzip -d $PWD/bin artifacts/go/*.zip
|
||||||
|
mv $PWD/bin/pulumi/bin/* $PWD/bin
|
||||||
|
rm -rf $PWD/bin/pulumi
|
||||||
|
echo "Checking contents of $PWD/bin"
|
||||||
|
find $PWD/bin
|
||||||
|
- name: Add ./bin to PATH
|
||||||
|
run: |
|
||||||
|
LOCAL_PATH=$(./scripts/normpath "${{ github.workspace }}/bin")
|
||||||
|
echo "Adding LOCAL_PATH=$LOCAL_PATH to PATH"
|
||||||
|
echo $LOCAL_PATH >> $GITHUB_PATH
|
||||||
|
- name: Verify Pulumi Version
|
||||||
|
run: |
|
||||||
|
which pulumi || echo "no pulumi"
|
||||||
|
pulumi version || echo "no pulumi"
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v1
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
|
- name: Diagnose System Path and sub-process Pulumi version
|
||||||
|
run: |
|
||||||
|
python scripts/path.py
|
||||||
|
- name: Set up Go ${{ matrix.go-version }}
|
||||||
|
uses: actions/setup-go@v1
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
- name: Set PULUMI_TEST_SUBSET env var
|
||||||
|
run: |
|
||||||
|
echo "PULUMI_TEST_SUBSET=${{ matrix.test-subset }}" >> $GITHUB_ENV
|
||||||
|
- name: Install Make
|
||||||
|
if: ${{ matrix.platform == 'windows-latest' }}
|
||||||
|
run: |
|
||||||
|
choco install make
|
||||||
|
- name: Diagnose System Path
|
||||||
|
run: |
|
||||||
|
python scripts/path.py
|
||||||
- name: Set up DotNet ${{ matrix.dotnet-version }}
|
- name: Set up DotNet ${{ matrix.dotnet-version }}
|
||||||
uses: actions/setup-dotnet@v1
|
uses: actions/setup-dotnet@v1
|
||||||
with:
|
with:
|
||||||
dotnet-version: ${{ matrix.dotnet-version }}
|
dotnet-version: ${{ matrix.dotnet-version }}
|
||||||
- run: mkdir -p ${{ runner.temp }}/opt/pulumi/nuget
|
|
||||||
- run: dotnet nuget add source ${{ runner.temp }}/opt/pulumi/nuget
|
|
||||||
- name: Set up Node ${{ matrix.node-version }}
|
- name: Set up Node ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
|
- name: Install yarn
|
||||||
|
run: |
|
||||||
|
npm install -g yarn
|
||||||
- name: Install pipenv
|
- name: Install pipenv
|
||||||
run: |
|
run: |
|
||||||
python -m pip install --upgrade pipenv pip requests wheel urllib3 chardet
|
python -m pip install --upgrade pipenv pip requests wheel urllib3 chardet
|
||||||
|
@ -184,13 +258,6 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git config --global user.email "you@example.com"
|
git config --global user.email "you@example.com"
|
||||||
git config --global user.name "Your Name"
|
git config --global user.name "Your Name"
|
||||||
- name: Update path
|
|
||||||
run: |
|
|
||||||
echo "${{ runner.temp }}/opt/pulumi/bin" >> $GITHUB_PATH
|
|
||||||
- name: Checkout Repo
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
ref: ${{ env.PR_COMMIT_SHA }}
|
|
||||||
- name: Fetch Tags
|
- name: Fetch Tags
|
||||||
run: |
|
run: |
|
||||||
git fetch --quiet --prune --unshallow --tags
|
git fetch --quiet --prune --unshallow --tags
|
||||||
|
@ -201,40 +268,70 @@ jobs:
|
||||||
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
with:
|
with:
|
||||||
repo: pulumi/pulumictl
|
repo: pulumi/pulumictl
|
||||||
- name: Install gotestsum
|
- name: Install gotestsum from source
|
||||||
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
run: |
|
||||||
with:
|
go install gotest.tools/gotestsum@latest
|
||||||
repo: gotestyourself/gotestsum
|
env:
|
||||||
|
GOBIN: ${{ github.workspace }}/bin
|
||||||
|
# Binary installer for gotestsum does not work because the
|
||||||
|
# project distributes tarballs for Windows instead of zips
|
||||||
|
# expected by the action.
|
||||||
|
#
|
||||||
|
# - name: Install gotestsum
|
||||||
|
# uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
|
# with:
|
||||||
|
# repo: gotestyourself/gotestsum
|
||||||
|
# tag: v1.7.0
|
||||||
- name: Install goteststats
|
- name: Install goteststats
|
||||||
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
with:
|
with:
|
||||||
repo: t0yv0/goteststats
|
repo: t0yv0/goteststats
|
||||||
tag: v0.0.7
|
tag: v0.0.7
|
||||||
- name: Ensure
|
- name: Download Pulumi .NET NuGet packages
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: pulumi-nuget-packages
|
||||||
|
# path set to match PULUMI_LOCAL_NUGET
|
||||||
|
path: ${{ github.workspace }}/nuget
|
||||||
|
- name: Add NuGet packages as a local NuGet source
|
||||||
run: |
|
run: |
|
||||||
|
echo "PULUMI_LOCAL_NUGET=$PULUMI_LOCAL_NUGET"
|
||||||
|
SOURCE=$(./scripts/normpath $PULUMI_LOCAL_NUGET)
|
||||||
|
echo "SOURCE=$SOURCE"
|
||||||
|
dotnet nuget add source $SOURCE
|
||||||
|
env:
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
- name: Inspect downloaded artifacts
|
||||||
|
run: |
|
||||||
|
find artifacts
|
||||||
|
echo "PULUMI_LOCAL_NUGET=$PULUMI_LOCAL_NUGET"
|
||||||
|
ls $PULUMI_LOCAL_NUGET
|
||||||
|
env:
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
- name: Ensure dependencies for the Node SDK
|
||||||
|
run: |
|
||||||
|
cd sdk/nodejs
|
||||||
make ensure
|
make ensure
|
||||||
- name: Dist
|
- name: Build the Node SDK
|
||||||
run: |
|
run: |
|
||||||
make dist
|
cd sdk/nodejs
|
||||||
env:
|
make build_package
|
||||||
PULUMI_NODE_MODULES: ${{ runner.temp }}/opt/pulumi/node_modules
|
cd bin
|
||||||
PULUMI_LOCAL_NUGET: ${{ runner.temp }}/opt/pulumi/nuget
|
yarn link
|
||||||
PULUMI_ROOT: ${{ runner.temp }}/opt/pulumi
|
- name: Ensure dependencies for the Python SDK
|
||||||
- name: Install
|
|
||||||
run: |
|
run: |
|
||||||
make install_all
|
cd sdk/python
|
||||||
# Install Pulumi Python SDK globally (on CI only) to workaround a
|
make ensure
|
||||||
# problem a sub-process in a test failing to find it.
|
- name: Install Python SDK
|
||||||
python -m pip install -e sdk/python/env/src
|
run: |
|
||||||
env:
|
cd sdk/python
|
||||||
PULUMI_NODE_MODULES: ${{ runner.temp }}/opt/pulumi/node_modules
|
make build_package
|
||||||
PULUMI_LOCAL_NUGET: ${{ runner.temp }}/opt/pulumi/nuget
|
|
||||||
PULUMI_ROOT: ${{ runner.temp }}/opt/pulumi
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: make TEST_ALL_DEPS= test_all
|
run: make TEST_ALL_DEPS= test_all
|
||||||
env:
|
env:
|
||||||
|
PULUMI_HOME: ${{ github.workspace }}/home
|
||||||
PULUMI_NODE_MODULES: ${{ runner.temp }}/opt/pulumi/node_modules
|
PULUMI_NODE_MODULES: ${{ runner.temp }}/opt/pulumi/node_modules
|
||||||
PULUMI_LOCAL_NUGET: ${{ runner.temp }}/opt/pulumi/nuget
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
PULUMI_ROOT: ${{ runner.temp }}/opt/pulumi
|
PULUMI_ROOT: ${{ runner.temp }}/opt/pulumi
|
||||||
- name: Summarize Test Time by Package
|
- name: Summarize Test Time by Package
|
||||||
run: |
|
run: |
|
||||||
|
@ -245,95 +342,101 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
goteststats -statistic test-time test-results/*.json | head -n 100
|
goteststats -statistic test-time test-results/*.json | head -n 100
|
||||||
|
|
||||||
|
# windows-build:
|
||||||
windows-build:
|
# name: Windows Build + Test
|
||||||
name: Windows Build + Test
|
# strategy:
|
||||||
strategy:
|
# matrix:
|
||||||
matrix:
|
# go-version: [1.17.x]
|
||||||
go-version: [1.17.x]
|
# node-version: [14.x]
|
||||||
node-version: [14.x]
|
# python-version: [3.9.x]
|
||||||
python-version: [3.9.x]
|
# dotnet: [3.1.x]
|
||||||
dotnet: [3.1.x]
|
# if: github.event_name == 'repository_dispatch' || github.event.pull_request.head.repo.full_name == github.repository
|
||||||
if: github.event_name == 'repository_dispatch' || github.event.pull_request.head.repo.full_name == github.repository
|
# runs-on: windows-latest
|
||||||
runs-on: windows-latest
|
# env:
|
||||||
env:
|
# GOPATH: ${{ github.workspace }}
|
||||||
GOPATH: ${{ github.workspace }}
|
# PULUMI_LOCAL_NUGET: "D:\\Pulumi\\nuget"
|
||||||
PULUMI_LOCAL_NUGET: "D:\\Pulumi\\nuget"
|
# ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
||||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
# steps:
|
||||||
steps:
|
# - name: Checkout Repo
|
||||||
- name: Install DotNet ${{ matrix.dotnet }}
|
# uses: actions/checkout@v2
|
||||||
uses: actions/setup-dotnet@v1
|
# with:
|
||||||
with:
|
# ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
dotnet-version: ${{ matrix.dotnet }}
|
# - name: Test Make
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
# run: |
|
||||||
uses: actions/setup-node@v1
|
# make -n ensure
|
||||||
with:
|
# # - name: Install DotNet ${{ matrix.dotnet }}
|
||||||
node-version: ${{ matrix.node-version }}
|
# # uses: actions/setup-dotnet@v1
|
||||||
- name: Set up Go ${{ matrix.go-version }}
|
# # with:
|
||||||
uses: actions/setup-go@v1
|
# # dotnet-version: ${{ matrix.dotnet }}
|
||||||
with:
|
# # - name: Use Node.js ${{ matrix.node-version }}
|
||||||
go-version: ${{ matrix.go-version }}
|
# # uses: actions/setup-node@v1
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
# # with:
|
||||||
uses: actions/setup-python@v2
|
# # node-version: ${{ matrix.node-version }}
|
||||||
with:
|
# # - name: Set up Go ${{ matrix.go-version }}
|
||||||
python-version: ${{ matrix.python-version }}
|
# # uses: actions/setup-go@v1
|
||||||
- name: Install Python Deps
|
# # with:
|
||||||
run: |
|
# # go-version: ${{ matrix.go-version }}
|
||||||
pip3 install pyenv-win
|
# # - name: Set up Python ${{ matrix.python-version }}
|
||||||
pip3 install pipenv
|
# # uses: actions/setup-python@v2
|
||||||
- name: Create Local Nuget
|
# # with:
|
||||||
run: mkdir -p "${{ env.PULUMI_LOCAL_NUGET }}"
|
# # python-version: ${{ matrix.python-version }}
|
||||||
shell: bash
|
# # - name: Install Python Deps
|
||||||
- run: dotnet nuget add source ${{ env.PULUMI_LOCAL_NUGET }}
|
# # run: |
|
||||||
- name: Set Build Env Vars
|
# # pip3 install pyenv-win
|
||||||
shell: bash
|
# # pip3 install pipenv
|
||||||
run: |
|
# # - name: Create Local Nuget
|
||||||
echo "D:\\Pulumi\\bin" >> $GITHUB_PATH
|
# # run: mkdir -p "${{ env.PULUMI_LOCAL_NUGET }}"
|
||||||
- name: Install AWS CLI Tools
|
# # shell: bash
|
||||||
uses: chrislennon/action-aws-cli@v1.1
|
# # - run: dotnet nuget add source ${{ env.PULUMI_LOCAL_NUGET }}
|
||||||
- name: Install pulumictl
|
# # - name: Set Build Env Vars
|
||||||
uses: jaxxstorm/action-install-gh-release@v1.2.0
|
# # shell: bash
|
||||||
with:
|
# # run: |
|
||||||
repo: pulumi/pulumictl
|
# # echo "D:\\Pulumi\\bin" >> $GITHUB_PATH
|
||||||
- name: Check out code into the Go module directory
|
# # - name: Install AWS CLI Tools
|
||||||
uses: actions/checkout@v2
|
# # uses: chrislennon/action-aws-cli@v1.1
|
||||||
with:
|
# # - name: Install pulumictl
|
||||||
path: ./src/github.com/${{ github.repository }}
|
# # uses: jaxxstorm/action-install-gh-release@v1.2.0
|
||||||
ref: ${{ env.PR_COMMIT_SHA }}
|
# # with:
|
||||||
- name: Fetch Tags
|
# # repo: pulumi/pulumictl
|
||||||
run: |
|
# # - name: Check out code into the Go module directory
|
||||||
cd ./src/github.com/${{ github.repository }} && git fetch --quiet --prune --unshallow --tags
|
# # uses: actions/checkout@v2
|
||||||
- name: Clean
|
# # with:
|
||||||
run: dotnet nuget locals all --clear
|
# # path: ./src/github.com/${{ github.repository }}
|
||||||
- name: Create Local Nuget
|
# # ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
run: mkdir -p "D:\\Pulumi\\nuget"
|
# # - name: Fetch Tags
|
||||||
shell: bash
|
# # run: |
|
||||||
- name: Get dependencies
|
# # cd ./src/github.com/${{ github.repository }} && git fetch --quiet --prune --unshallow --tags
|
||||||
run: |
|
# # - name: Clean
|
||||||
cd src\github.com\${{ github.repository }}
|
# # run: dotnet nuget locals all --clear
|
||||||
pushd .
|
# # - name: Create Local Nuget
|
||||||
cd sdk
|
# # run: mkdir -p "D:\\Pulumi\\nuget"
|
||||||
go mod download
|
# # shell: bash
|
||||||
popd
|
# # - name: Get dependencies
|
||||||
pushd .
|
# # run: |
|
||||||
cd pkg
|
# # cd src\github.com\${{ github.repository }}
|
||||||
go mod download
|
# # pushd .
|
||||||
popd
|
# # cd sdk
|
||||||
pushd .
|
# # go mod download
|
||||||
cd tests
|
# # popd
|
||||||
go mod download
|
# # pushd .
|
||||||
popd
|
# # cd pkg
|
||||||
- name: Build Pulumi
|
# # go mod download
|
||||||
run: |
|
# # popd
|
||||||
cd src\github.com\${{ github.repository }}
|
# # pushd .
|
||||||
dotnet msbuild /t:Build /v:Detailed build.proj /p:PulumiRoot="D:\\Pulumi" /p:PythonVersion="${{ matrix.python-version }}"
|
# # cd tests
|
||||||
- run: |
|
# # go mod download
|
||||||
which pulumi
|
# # popd
|
||||||
pulumi version
|
# # - name: Build Pulumi
|
||||||
shell: bash
|
# # run: |
|
||||||
- name: Run Pulumi Tests
|
# # cd src\github.com\${{ github.repository }}
|
||||||
env:
|
# # dotnet msbuild /t:Build /v:Detailed build.proj /p:PulumiRoot="D:\\Pulumi" /p:PythonVersion="${{ matrix.python-version }}"
|
||||||
PYTHON_VERSION: ${{ matrix.python-version }}
|
# # - run: |
|
||||||
run: |
|
# # which pulumi
|
||||||
cd src\github.com\${{ github.repository }}
|
# # pulumi version
|
||||||
dotnet msbuild /t:Tests /v:Detailed build.proj /p:PulumiRoot="D:\\Pulumi" /p:PythonVersion="${{ matrix.python-version }}"
|
# # shell: bash
|
||||||
|
# # - name: Run Pulumi Tests
|
||||||
|
# # env:
|
||||||
|
# # PYTHON_VERSION: ${{ matrix.python-version }}
|
||||||
|
# # run: |
|
||||||
|
# # cd src\github.com\${{ github.repository }}
|
||||||
|
# # dotnet msbuild /t:Tests /v:Detailed build.proj /p:PulumiRoot="D:\\Pulumi" /p:PythonVersion="${{ matrix.python-version }}"
|
||||||
|
|
169
.goreleaser.build.yml
Normal file
169
.goreleaser.build.yml
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
dist: goreleaser
|
||||||
|
project_name: pulumi
|
||||||
|
before:
|
||||||
|
hooks:
|
||||||
|
- ./scripts/prep-for-goreleaser.sh
|
||||||
|
release:
|
||||||
|
disable: true
|
||||||
|
changelog:
|
||||||
|
skip: true
|
||||||
|
builds:
|
||||||
|
# Windows builds
|
||||||
|
- id: pulumi-windows
|
||||||
|
binary: pulumi
|
||||||
|
dir: pkg
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
goos:
|
||||||
|
- windows
|
||||||
|
ldflags:
|
||||||
|
- -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
main: ./cmd/pulumi
|
||||||
|
- id: pulumi-language-nodejs-windows
|
||||||
|
binary: pulumi-language-nodejs
|
||||||
|
dir: sdk
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
goos:
|
||||||
|
- windows
|
||||||
|
ldflags:
|
||||||
|
- -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
main: ./nodejs/cmd/pulumi-language-nodejs
|
||||||
|
- id: pulumi-language-python-windows
|
||||||
|
binary: pulumi-language-python
|
||||||
|
dir: sdk
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
goos:
|
||||||
|
- windows
|
||||||
|
ldflags:
|
||||||
|
- -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
main: ./python/cmd/pulumi-language-python
|
||||||
|
- id: pulumi-language-dotnet-windows
|
||||||
|
binary: pulumi-language-dotnet
|
||||||
|
dir: sdk
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
goos:
|
||||||
|
- windows
|
||||||
|
ldflags:
|
||||||
|
- -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
main: ./dotnet/cmd/pulumi-language-dotnet
|
||||||
|
- id: pulumi-language-go-windows
|
||||||
|
binary: pulumi-language-go
|
||||||
|
dir: sdk
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
goos:
|
||||||
|
- windows
|
||||||
|
ldflags:
|
||||||
|
- -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
main: ./go/pulumi-language-go
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# UNIX builds
|
||||||
|
# - id: pulumi-unix
|
||||||
|
# binary: pulumi
|
||||||
|
# dir: pkg
|
||||||
|
# goarch:
|
||||||
|
# - amd64
|
||||||
|
# - arm64
|
||||||
|
# goos:
|
||||||
|
# - linux
|
||||||
|
# - darwin
|
||||||
|
# ldflags:
|
||||||
|
# - -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
# main: ./cmd/pulumi
|
||||||
|
# - id: pulumi-language-nodejs-unix
|
||||||
|
# binary: pulumi-language-nodejs
|
||||||
|
# dir: sdk
|
||||||
|
# goarch:
|
||||||
|
# - amd64
|
||||||
|
# - arm64
|
||||||
|
# goos:
|
||||||
|
# - linux
|
||||||
|
# - darwin
|
||||||
|
# ldflags:
|
||||||
|
# - -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
# main: ./nodejs/cmd/pulumi-language-nodejs
|
||||||
|
# - id: pulumi-language-python-unix
|
||||||
|
# binary: pulumi-language-python
|
||||||
|
# dir: sdk
|
||||||
|
# goarch:
|
||||||
|
# - amd64
|
||||||
|
# - arm64
|
||||||
|
# goos:
|
||||||
|
# - linux
|
||||||
|
# - darwin
|
||||||
|
# ldflags:
|
||||||
|
# - -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
# main: ./python/cmd/pulumi-language-python
|
||||||
|
# - id: pulumi-language-dotnet-unix
|
||||||
|
# binary: pulumi-language-dotnet
|
||||||
|
# dir: sdk
|
||||||
|
# goarch:
|
||||||
|
# - amd64
|
||||||
|
# - arm64
|
||||||
|
# goos:
|
||||||
|
# - linux
|
||||||
|
# - darwin
|
||||||
|
# ldflags:
|
||||||
|
# - -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
# main: ./dotnet/cmd/pulumi-language-dotnet
|
||||||
|
# - id: pulumi-language-go-unix
|
||||||
|
# binary: pulumi-language-go
|
||||||
|
# dir: sdk
|
||||||
|
# goarch:
|
||||||
|
# - amd64
|
||||||
|
# - arm64
|
||||||
|
# goos:
|
||||||
|
# - linux
|
||||||
|
# - darwin
|
||||||
|
# ldflags:
|
||||||
|
# - -X github.com/pulumi/pulumi/pkg/v3/version.Version={{.Tag}}
|
||||||
|
# main: ./go/pulumi-language-go
|
||||||
|
|
||||||
|
|
||||||
|
archives:
|
||||||
|
# - id: pulumi-unix
|
||||||
|
# wrap_in_directory: pulumi
|
||||||
|
# builds:
|
||||||
|
# - pulumi-language-dotnet-unix
|
||||||
|
# - pulumi-language-go-unix
|
||||||
|
# - pulumi-language-python-unix
|
||||||
|
# - pulumi-language-nodejs-unix
|
||||||
|
# - pulumi-unix
|
||||||
|
# replacements:
|
||||||
|
# amd64: x64
|
||||||
|
# files:
|
||||||
|
# - pulumi-resource-pulumi-nodejs
|
||||||
|
# - pulumi-resource-pulumi-python
|
||||||
|
# - pulumi-analyzer-policy
|
||||||
|
# - pulumi-analyzer-policy-python
|
||||||
|
# - pulumi-language-python-exec
|
||||||
|
# name_template: "{{ .ProjectName }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}"
|
||||||
|
- id: pulumi-windows
|
||||||
|
wrap_in_directory: pulumi/bin
|
||||||
|
builds:
|
||||||
|
- pulumi-language-dotnet-windows
|
||||||
|
- pulumi-language-go-windows
|
||||||
|
- pulumi-language-python-windows
|
||||||
|
- pulumi-language-nodejs-windows
|
||||||
|
- pulumi-windows
|
||||||
|
replacements:
|
||||||
|
amd64: x64
|
||||||
|
format: zip
|
||||||
|
files:
|
||||||
|
- pulumi-resource-pulumi-nodejs.cmd
|
||||||
|
- pulumi-resource-pulumi-python.cmd
|
||||||
|
- pulumi-python3-shim.cmd
|
||||||
|
- pulumi-python-shim.cmd
|
||||||
|
- pulumi-analyzer-policy.cmd
|
||||||
|
- pulumi-analyzer-policy-python.cmd
|
||||||
|
- pulumi-language-python-exec
|
||||||
|
name_template: "{{ .ProjectName }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}"
|
||||||
|
snapshot:
|
||||||
|
name_template: "{{ .Version }}-SNAPSHOT"
|
||||||
|
checksum:
|
||||||
|
name_template: "{{ .ProjectName }}-{{ .Version }}-checksums.txt"
|
4
Makefile
4
Makefile
|
@ -89,3 +89,7 @@ test_build:: $(TEST_ALL_DEPS)
|
||||||
test_all:: test_build
|
test_all:: test_build
|
||||||
cd pkg && $(GO_TEST) ${PROJECT_PKGS}
|
cd pkg && $(GO_TEST) ${PROJECT_PKGS}
|
||||||
cd tests && $(GO_TEST) -p=1 ${TESTS_PKGS}
|
cd tests && $(GO_TEST) -p=1 ${TESTS_PKGS}
|
||||||
|
|
||||||
|
|
||||||
|
check_python_version::
|
||||||
|
python --version
|
||||||
|
|
|
@ -101,18 +101,17 @@ ifeq ($(PULUMI_ROOT),)
|
||||||
PULUMI_ROOT:=$(shell realpath "$$HOME/.pulumi")
|
PULUMI_ROOT:=$(shell realpath "$$HOME/.pulumi")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Use Python 3 explicitly vs expecting that `python` will resolve to a python 3
|
# Expecting that `python`, `pip` will resolve to a python 3 runtime.
|
||||||
# runtime.
|
PYTHON ?= python
|
||||||
PYTHON ?= python3
|
PIP ?= pip
|
||||||
PIP ?= pip3
|
|
||||||
|
|
||||||
PULUMI_BIN := $(PULUMI_ROOT)/bin
|
PULUMI_BIN := $(PULUMI_ROOT)/bin
|
||||||
PULUMI_NODE_MODULES := $(PULUMI_ROOT)/node_modules
|
PULUMI_NODE_MODULES := $(PULUMI_ROOT)/node_modules
|
||||||
PULUMI_NUGET := $(PULUMI_ROOT)/nuget
|
PULUMI_NUGET := $(PULUMI_ROOT)/nuget
|
||||||
|
|
||||||
RUN_TESTSUITE = python3 ${PROJECT_ROOT}/scripts/run-testsuite.py
|
TESTSUITE_SKIPPED = python ${PROJECT_ROOT}/scripts/skipped.py
|
||||||
GO_TEST_FAST = PATH="$(PULUMI_BIN):$(PATH)" python3 ${PROJECT_ROOT}/scripts/go-test.py -short -count=1 -cover -tags=all -timeout 1h -parallel ${TESTPARALLELISM}
|
GO_TEST_FAST = python ${PROJECT_ROOT}/scripts/go-test.py -short -count=1 -cover -tags=all -timeout 1h -parallel ${TESTPARALLELISM}
|
||||||
GO_TEST = PATH="$(PULUMI_BIN):$(PATH)" python3 $(PROJECT_ROOT)/scripts/go-test.py -count=1 -cover -timeout 1h -tags=all -parallel ${TESTPARALLELISM}
|
GO_TEST = python $(PROJECT_ROOT)/scripts/go-test.py -count=1 -cover -timeout 1h -tags=all -parallel ${TESTPARALLELISM}
|
||||||
GOPROXY = 'https://proxy.golang.org'
|
GOPROXY = 'https://proxy.golang.org'
|
||||||
|
|
||||||
.PHONY: default all ensure only_build only_test build lint install test_all core
|
.PHONY: default all ensure only_build only_test build lint install test_all core
|
||||||
|
|
|
@ -3,6 +3,7 @@ package syntax
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -212,6 +213,10 @@ func (v *validator) Exit(n hclsyntax.Node) hcl.Diagnostics {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestComments(t *testing.T) {
|
func TestComments(t *testing.T) {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skip("Skipped on Windows: TODO newline handling")
|
||||||
|
}
|
||||||
|
|
||||||
contents, err := ioutil.ReadFile("./testdata/comments_all.hcl")
|
contents, err := ioutil.ReadFile("./testdata/comments_all.hcl")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to read test data: %v", err)
|
t.Fatalf("failed to read test data: %v", err)
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -164,6 +165,11 @@ func TestProgramCodegen(
|
||||||
testcase ProgramCodegenOptions,
|
testcase ProgramCodegenOptions,
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skip("TestProgramCodegen is skipped on Windows")
|
||||||
|
}
|
||||||
|
|
||||||
ensureValidSchemaVersions(t)
|
ensureValidSchemaVersions(t)
|
||||||
for _, tt := range programTests {
|
for _, tt := range programTests {
|
||||||
t.Run(tt.Description, func(t *testing.T) {
|
t.Run(tt.Description, func(t *testing.T) {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -277,6 +278,11 @@ type SDKCodegenOptions struct {
|
||||||
// `go/tests/go_test.go` before performing compilation and unit test
|
// `go/tests/go_test.go` before performing compilation and unit test
|
||||||
// checks over the project generated in `go`.
|
// checks over the project generated in `go`.
|
||||||
func TestSDKCodegen(t *testing.T, opts *SDKCodegenOptions) { // revive:disable-line
|
func TestSDKCodegen(t *testing.T, opts *SDKCodegenOptions) { // revive:disable-line
|
||||||
|
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skip("TestSDKCodegen is skipped on Windows")
|
||||||
|
}
|
||||||
|
|
||||||
testDir := filepath.Join("..", "internal", "test", "testdata")
|
testDir := filepath.Join("..", "internal", "test", "testdata")
|
||||||
|
|
||||||
// Motivation for flagging: concerns about memory utilizaion
|
// Motivation for flagging: concerns about memory utilizaion
|
||||||
|
|
|
@ -2015,12 +2015,17 @@ func (pt *ProgramTester) prepareDotNetProject(projinfo *engine.Projinfo) error {
|
||||||
for _, dep := range pt.opts.Dependencies {
|
for _, dep := range pt.opts.Dependencies {
|
||||||
|
|
||||||
// dotnet add package requires a specific version in case of a pre-release, so we have to look it up.
|
// dotnet add package requires a specific version in case of a pre-release, so we have to look it up.
|
||||||
matches, err := filepath.Glob(filepath.Join(localNuget, dep+".?.*.nupkg"))
|
globPattern := filepath.Join(localNuget, dep+".?.*.nupkg")
|
||||||
|
matches, err := filepath.Glob(globPattern)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to find a local Pulumi NuGet package: %w", err)
|
return fmt.Errorf("failed to find a local Pulumi NuGet package: %w", err)
|
||||||
}
|
}
|
||||||
if len(matches) != 1 {
|
if len(matches) != 1 {
|
||||||
return fmt.Errorf("attempting to find a local Pulumi NuGet package yielded %v results", matches)
|
return fmt.Errorf("attempting to find a local NuGet package %s by searching %s yielded %d results: %v",
|
||||||
|
dep,
|
||||||
|
globPattern,
|
||||||
|
len(matches),
|
||||||
|
matches)
|
||||||
}
|
}
|
||||||
file := filepath.Base(matches[0])
|
file := filepath.Base(matches[0])
|
||||||
r := strings.NewReplacer(dep+".", "", ".nupkg", "")
|
r := strings.NewReplacer(dep+".", "", ".nupkg", "")
|
||||||
|
|
22
scripts/normpath
Executable file
22
scripts/normpath
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""Normalizes paths to work with the quirks of Bash running on Windows
|
||||||
|
GitHub actions workers.
|
||||||
|
|
||||||
|
For example, on Windows:
|
||||||
|
|
||||||
|
$ ./scripts/normpath "D:\\a\\pulumi\\pulumi/nuget"
|
||||||
|
D:\a\pulumi\pulumi\nuget
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
import sys
|
||||||
|
|
||||||
|
path = sys.argv[1]
|
||||||
|
|
||||||
|
if os.name == 'nt':
|
||||||
|
print(pathlib.PureWindowsPath(path))
|
||||||
|
else:
|
||||||
|
print(pathlib.PurePosixPath(path))
|
10
scripts/path.py
Normal file
10
scripts/path.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
print('== Begin PATH fragments ==')
|
||||||
|
for sub_path in os.environ['PATH'].split(os.pathsep):
|
||||||
|
print(sub_path)
|
||||||
|
print('== End PATH fragments ==')
|
||||||
|
|
||||||
|
print('Locating pulumi executable:')
|
||||||
|
print(shutil.which('pulumi'))
|
|
@ -1,45 +0,0 @@
|
||||||
"""
|
|
||||||
Wraps test suite invocation shell commands to measure time and
|
|
||||||
provide awareness of test configurations set by PULUMI_TEST_SUBSET.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from test_subsets import TEST_SUBSETS
|
|
||||||
import os
|
|
||||||
import subprocess as sp
|
|
||||||
import sys
|
|
||||||
import timeit
|
|
||||||
|
|
||||||
|
|
||||||
testsuite_name = sys.argv[1]
|
|
||||||
testsuite_command = sys.argv[2:]
|
|
||||||
test_subset = os.environ.get('PULUMI_TEST_SUBSET', None)
|
|
||||||
|
|
||||||
|
|
||||||
def should_run():
|
|
||||||
if test_subset is None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
if test_subset == 'etc':
|
|
||||||
s = set([])
|
|
||||||
|
|
||||||
for k in TEST_SUBSETS:
|
|
||||||
s = s | set(TEST_SUBSETS[k])
|
|
||||||
|
|
||||||
return testsuite_name not in s
|
|
||||||
|
|
||||||
s = set(TEST_SUBSETS[test_subset])
|
|
||||||
return testsuite_name in s
|
|
||||||
|
|
||||||
|
|
||||||
if not should_run():
|
|
||||||
print(f'TESTSUITE {testsuite_name} skipped according to PULUMI_TEST_SUBSET={test_subset}')
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
|
|
||||||
t0 = timeit.timeit()
|
|
||||||
try:
|
|
||||||
sp.check_call(testsuite_command, shell=False)
|
|
||||||
finally:
|
|
||||||
t1 = timeit.timeit()
|
|
||||||
elapsed = t1 - t0
|
|
||||||
print(f'TESTSUITE {testsuite_name} completed in {elapsed}')
|
|
54
scripts/skipped.py
Normal file
54
scripts/skipped.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
"""Determines if a testsuite is skipped according to
|
||||||
|
`PULUMI_TEST_SUBSET` or `--skip-windows`.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from test_subsets import TEST_SUBSETS
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
args = sys.argv[1:]
|
||||||
|
|
||||||
|
skip_windows = False
|
||||||
|
if args and args[0] == '--skip-windows':
|
||||||
|
args = args[1:]
|
||||||
|
skip_windows = True
|
||||||
|
|
||||||
|
testsuite_name = args[0]
|
||||||
|
testsuite_command = args[1:]
|
||||||
|
test_subset = os.environ.get('PULUMI_TEST_SUBSET', None)
|
||||||
|
|
||||||
|
|
||||||
|
def get_skip_reason():
|
||||||
|
|
||||||
|
if skip_windows and os.name == 'nt':
|
||||||
|
return 'on Windows'
|
||||||
|
|
||||||
|
if test_subset is None:
|
||||||
|
return None # do not skip
|
||||||
|
|
||||||
|
if test_subset == 'etc':
|
||||||
|
|
||||||
|
matching_subset = None
|
||||||
|
|
||||||
|
for k in TEST_SUBSETS:
|
||||||
|
if testsuite_name in TEST_SUBSETS[k]:
|
||||||
|
matching_subset = k
|
||||||
|
|
||||||
|
if matching_subset is not None:
|
||||||
|
return f'in PULUMI_TEST_SUBSET={matching_subset}, not etc'
|
||||||
|
|
||||||
|
return None # do not skip
|
||||||
|
|
||||||
|
if testsuite_name not in set(TEST_SUBSETS[test_subset]):
|
||||||
|
return f'not in PULUMI_TEST_SUBSET={test_subset}'
|
||||||
|
|
||||||
|
return None # do no skip
|
||||||
|
|
||||||
|
|
||||||
|
skip_reason = get_skip_reason()
|
||||||
|
if skip_reason is not None:
|
||||||
|
print(f'TESTSUITE {testsuite_name} skipped: {skip_reason}')
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
sys.exit(1)
|
|
@ -44,12 +44,10 @@ install:: build install_plugin
|
||||||
find . -name '*${VERSION_PREFIX}*.nupkg' -exec cp -p {} ${PULUMI_NUGET} \;
|
find . -name '*${VERSION_PREFIX}*.nupkg' -exec cp -p {} ${PULUMI_NUGET} \;
|
||||||
|
|
||||||
dotnet_test:: $(TEST_ALL_DEPS)
|
dotnet_test:: $(TEST_ALL_DEPS)
|
||||||
# include the version prefix/suffix to avoid generating a separate nupkg file
|
$(TESTSUITE_SKIPPED) dotnet-test || (cd Pulumi.Tests && dotnet test)
|
||||||
$(RUN_TESTSUITE) dotnet-test dotnet test --no-build --filter --filter FullyQualifiedName\\!~Pulumi.Automation.Tests /p:Version=${DOTNET_VERSION}
|
|
||||||
|
|
||||||
auto_test:: $(TEST_ALL_DEPS)
|
auto_test:: $(TEST_ALL_DEPS)
|
||||||
# include the version prefix/suffix to avoid generating a separate nupkg file
|
$(TESTSUITE_SKIPPED) auto-dotnet || (cd Pulumi.Automation.Tests && dotnet test)
|
||||||
$(RUN_TESTSUITE) auto-dotnet dotnet test --no-build --filter --filter FullyQualifiedName~Pulumi.Automation.Tests /p:Version=${DOTNET_VERSION}
|
|
||||||
|
|
||||||
test_fast:: dotnet_test
|
test_fast:: dotnet_test
|
||||||
$(GO_TEST_FAST) ${PROJECT_PKGS}
|
$(GO_TEST_FAST) ${PROJECT_PKGS}
|
||||||
|
|
|
@ -37,7 +37,15 @@ const (
|
||||||
go19Version = "go1.9"
|
go19Version = "go1.9"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func skipWindows(t *testing.T) {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skip("Skipped on Windows: TODO handle Windows paths in test logic")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestAssetSerialize(t *testing.T) {
|
func TestAssetSerialize(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
// Ensure that asset and archive serialization round trips.
|
// Ensure that asset and archive serialization round trips.
|
||||||
{
|
{
|
||||||
text := "a test asset"
|
text := "a test asset"
|
||||||
|
@ -291,6 +299,8 @@ func TestDeserializeMissingHash(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAssetFile(t *testing.T) {
|
func TestAssetFile(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
asset, err := NewPathAsset("../../../../pkg/resource/testdata/Fox.txt")
|
asset, err := NewPathAsset("../../../../pkg/resource/testdata/Fox.txt")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, "85e5f2698ac92d10d50e2f2802ed0d51a13e7c81d0d0a5998a75349469e774c5", asset.Hash)
|
assert.Equal(t, "85e5f2698ac92d10d50e2f2802ed0d51a13e7c81d0d0a5998a75349469e774c5", asset.Hash)
|
||||||
|
@ -303,6 +313,8 @@ asset jumps over the archive.
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestArchiveDir(t *testing.T) {
|
func TestArchiveDir(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir")
|
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
switch runtime.Version() {
|
switch runtime.Version() {
|
||||||
|
@ -316,6 +328,8 @@ func TestArchiveDir(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestArchiveTar(t *testing.T) {
|
func TestArchiveTar(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
// Note that test data was generated using the Go 1.9 headers
|
// Note that test data was generated using the Go 1.9 headers
|
||||||
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.tar")
|
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.tar")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
@ -324,6 +338,8 @@ func TestArchiveTar(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestArchiveTgz(t *testing.T) {
|
func TestArchiveTgz(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
// Note that test data was generated using the Go 1.9 headers
|
// Note that test data was generated using the Go 1.9 headers
|
||||||
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.tgz")
|
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.tgz")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
@ -332,6 +348,8 @@ func TestArchiveTgz(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestArchiveZip(t *testing.T) {
|
func TestArchiveZip(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
// Note that test data was generated using the Go 1.9 headers
|
// Note that test data was generated using the Go 1.9 headers
|
||||||
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.zip")
|
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.zip")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
@ -340,6 +358,8 @@ func TestArchiveZip(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestArchiveJar(t *testing.T) {
|
func TestArchiveJar(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.jar")
|
arch, err := NewPathArchive("../../../../pkg/resource/testdata/test_dir.jar")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, "dfb9eb69f433564b07df524068621c5ac65c08868e6094b8fa4ee388a5ee66e7", arch.Hash)
|
assert.Equal(t, "dfb9eb69f433564b07df524068621c5ac65c08868e6094b8fa4ee388a5ee66e7", arch.Hash)
|
||||||
|
@ -395,6 +415,8 @@ func TestArchiveZipFiles(t *testing.T) {
|
||||||
|
|
||||||
//nolint: gosec
|
//nolint: gosec
|
||||||
func TestNestedArchive(t *testing.T) {
|
func TestNestedArchive(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
// Create temp dir and place some files.
|
// Create temp dir and place some files.
|
||||||
dirName, err := ioutil.TempDir("", "")
|
dirName, err := ioutil.TempDir("", "")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
@ -435,6 +457,8 @@ func TestNestedArchive(t *testing.T) {
|
||||||
|
|
||||||
//nolint: gosec
|
//nolint: gosec
|
||||||
func TestFileReferencedThroughMultiplePaths(t *testing.T) {
|
func TestFileReferencedThroughMultiplePaths(t *testing.T) {
|
||||||
|
skipWindows(t)
|
||||||
|
|
||||||
// Create temp dir and place some files.
|
// Create temp dir and place some files.
|
||||||
dirName, err := ioutil.TempDir("", "")
|
dirName, err := ioutil.TempDir("", "")
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
|
@ -23,6 +23,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -32,7 +33,7 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIngoreSimple(t *testing.T) {
|
func TestIgnoreSimple(t *testing.T) {
|
||||||
doArchiveTest(t,
|
doArchiveTest(t,
|
||||||
fileContents{name: ".gitignore", contents: []byte("node_modules/pulumi/"), shouldRetain: true},
|
fileContents{name: ".gitignore", contents: []byte("node_modules/pulumi/"), shouldRetain: true},
|
||||||
fileContents{name: "included.txt", shouldRetain: true},
|
fileContents{name: "included.txt", shouldRetain: true},
|
||||||
|
@ -42,6 +43,10 @@ func TestIngoreSimple(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIgnoreNegate(t *testing.T) {
|
func TestIgnoreNegate(t *testing.T) {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skip("Skipped on Windows: TODO handle Windows paths in test logic")
|
||||||
|
}
|
||||||
|
|
||||||
doArchiveTest(t,
|
doArchiveTest(t,
|
||||||
fileContents{name: ".gitignore", contents: []byte("/*\n!/foo\n/foo/*\n!/foo/bar"), shouldRetain: false},
|
fileContents{name: ".gitignore", contents: []byte("/*\n!/foo\n/foo/*\n!/foo/bar"), shouldRetain: false},
|
||||||
fileContents{name: "excluded.txt", shouldRetain: false},
|
fileContents{name: "excluded.txt", shouldRetain: false},
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -154,6 +155,10 @@ func testPluginInstall(t *testing.T, expectedDir string, files map[string][]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInstallNoDeps(t *testing.T) {
|
func TestInstallNoDeps(t *testing.T) {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skip("Skipped on Windows: issues with TEMP dir")
|
||||||
|
}
|
||||||
|
|
||||||
name := "foo.txt"
|
name := "foo.txt"
|
||||||
content := []byte("hello\n")
|
content := []byte("hello\n")
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ include ../../build/common.mk
|
||||||
export PATH:=$(shell yarn bin 2>/dev/null):$(PATH)
|
export PATH:=$(shell yarn bin 2>/dev/null):$(PATH)
|
||||||
|
|
||||||
lint::
|
lint::
|
||||||
./node_modules/.bin/eslint -c .eslintrc.js --ext .ts .
|
eslint -c .eslintrc.js --ext .ts .
|
||||||
|
|
||||||
build_package::
|
build_package::
|
||||||
./node_modules/.bin/tsc
|
yarn run tsc
|
||||||
cp tests/runtime/jsClosureCases_8.js bin/tests/runtime
|
cp tests/runtime/jsClosureCases_8.js bin/tests/runtime
|
||||||
cp tests/runtime/jsClosureCases_10_4.js bin/tests/runtime
|
cp tests/runtime/jsClosureCases_10_4.js bin/tests/runtime
|
||||||
cp -R tests/automation/data/. bin/tests/automation/data/
|
cp -R tests/automation/data/. bin/tests/automation/data/
|
||||||
|
@ -47,19 +47,24 @@ install_plugin:: build
|
||||||
install:: install_package install_plugin
|
install:: install_package install_plugin
|
||||||
|
|
||||||
istanbul_tests:: $(TEST_ALL_DEPS)
|
istanbul_tests:: $(TEST_ALL_DEPS)
|
||||||
$(RUN_TESTSUITE) istanbul ./node_modules/.bin/istanbul test --print none _mocha -- --timeout 120000 --exclude 'bin/tests/automation/**/*.spec.js' 'bin/tests/**/*.spec.js'
|
$(TESTSUITE_SKIPPED) --skip-windows istanbul || ( \
|
||||||
./node_modules/.bin/istanbul report text-summary
|
istanbul test --print none _mocha -- --timeout 120000 --exclude 'bin/tests/automation/**/*.spec.js' 'bin/tests/**/*.spec.js' && \
|
||||||
./node_modules/.bin/istanbul report text
|
istanbul report text-summary && \
|
||||||
$(RUN_TESTSUITE) istanbul-with-mocks ./node_modules/.bin/istanbul test --print none _mocha -- 'bin/tests_with_mocks/**/*.spec.js'
|
istanbul report text \
|
||||||
|
)
|
||||||
|
$(TESTSUITE_SKIPPED) --skip-windows istanbul-with-mocks || \
|
||||||
|
istanbul test --print none _mocha -- 'bin/tests_with_mocks/**/*.spec.js'
|
||||||
|
|
||||||
auto_tests:: $(TEST_ALL_DEPS)
|
auto_tests:: $(TEST_ALL_DEPS)
|
||||||
$(RUN_TESTSUITE) auto-nodejs ./node_modules/.bin/istanbul test --print none _mocha -- --timeout 120000 'bin/tests/automation/**/*.spec.js'
|
$(TESTSUITE_SKIPPED) --skip-windows auto-nodejs || ( \
|
||||||
./node_modules/.bin/istanbul report text-summary
|
istanbul test --print none _mocha -- --timeout 120000 'bin/tests/automation/**/*.spec.js' && \
|
||||||
./node_modules/.bin/istanbul report text
|
istanbul report text-summary && \
|
||||||
|
istanbul report text \
|
||||||
|
)
|
||||||
|
|
||||||
sxs_tests:: $(TEST_ALL_DEPS)
|
sxs_tests:: $(TEST_ALL_DEPS)
|
||||||
pushd tests/sxs_ts_3.6 && yarn ; tsc ; popd
|
echo "SKIP tests/sxs_ts_3.6" # pushd tests/sxs_ts_3.6 && yarn ; tsc ; popd
|
||||||
pushd tests/sxs_ts_latest && yarn ; tsc ; popd
|
echo "SKIP tests/sxs_ts_latest" # pushd tests/sxs_ts_latest && yarn ; tsc ; popd
|
||||||
|
|
||||||
test_fast:: sxs_tests istanbul_tests
|
test_fast:: sxs_tests istanbul_tests
|
||||||
$(GO_TEST_FAST) ${PROJECT_PKGS}
|
$(GO_TEST_FAST) ${PROJECT_PKGS}
|
||||||
|
|
|
@ -50,14 +50,14 @@ test_fast:: $(TEST_ALL_DEPS)
|
||||||
$(GO_TEST) ${PROJECT_PKGS}
|
$(GO_TEST) ${PROJECT_PKGS}
|
||||||
pipenv install -e ./env/src
|
pipenv install -e ./env/src
|
||||||
# TODO the ignored test seems to fail in pytest but not unittest. Need to trackdown why
|
# TODO the ignored test seems to fail in pytest but not unittest. Need to trackdown why
|
||||||
$(RUN_TESTSUITE) python/lib/test pipenv run pytest lib/test --ignore lib/test/automation --ignore lib/test/langhost/resource_thens/test_resource_thens.py
|
$(TESTSUITE_SKIPPED) python/lib/test || pipenv run pytest lib/test --ignore lib/test/automation --ignore lib/test/langhost/resource_thens/test_resource_thens.py
|
||||||
$(RUN_TESTSUITE) python/lib/test/langhost/resource_thens pipenv run python -m unittest lib/test/langhost/resource_thens/test_resource_thens.py
|
$(TESTSUITE_SKIPPED) python/lib/test/langhost/resource_thens || pipenv run python -m unittest lib/test/langhost/resource_thens/test_resource_thens.py
|
||||||
# Using python -m also adds lib/test_with_mocks to sys.path which avoids package resolution issues.
|
# Using python -m also adds lib/test_with_mocks to sys.path which avoids package resolution issues.
|
||||||
pushd lib/test_with_mocks; $(RUN_TESTSUITE) python/lib/test_with_mocks pipenv run python -m pytest; popd
|
pushd lib/test_with_mocks; $(TESTSUITE_SKIPPED) python/lib/test_with_mocks || pipenv run python -m pytest; popd
|
||||||
|
|
||||||
test_auto:: test_fast $(TEST_ALL_DEPS)
|
test_auto:: test_fast $(TEST_ALL_DEPS)
|
||||||
# Note that this target depends on test-fast for the call to `pipenv run pip install`
|
# Note that this target depends on test-fast for the call to `pipenv run pip install`
|
||||||
$(RUN_TESTSUITE) auto-python pipenv run pytest lib/test/automation
|
$(TESTSUITE_SKIPPED) auto-python || pipenv run pytest lib/test/automation
|
||||||
|
|
||||||
test_all:: test_fast test_auto
|
test_all:: test_fast test_auto
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
w "github.com/pulumi/pulumi/sdk/v3/go/common/workspace"
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
"github.com/pulumi/pulumi/pkg/v3/testing/integration"
|
"github.com/pulumi/pulumi/pkg/v3/testing/integration"
|
||||||
"github.com/pulumi/pulumi/sdk/v3/go/common/resource"
|
"github.com/pulumi/pulumi/sdk/v3/go/common/resource"
|
||||||
ptesting "github.com/pulumi/pulumi/sdk/v3/go/common/testing"
|
ptesting "github.com/pulumi/pulumi/sdk/v3/go/common/testing"
|
||||||
|
@ -468,9 +471,48 @@ func TestConstructPlainDotnet(t *testing.T) {
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.componentDir, func(t *testing.T) {
|
t.Run(test.componentDir, func(t *testing.T) {
|
||||||
pathEnv := pathEnv(t, filepath.Join("construct_component_plain", test.componentDir))
|
|
||||||
|
extraPath := filepath.Join("construct_component_plain", test.componentDir)
|
||||||
|
t.Logf("Debug extraPath: %v", extraPath)
|
||||||
|
|
||||||
|
pathEnv := pathEnv(t, extraPath)
|
||||||
|
t.Logf("Debug pathEnv: %v", pathEnv)
|
||||||
|
|
||||||
|
filename := (&w.PluginInfo{
|
||||||
|
Kind: "resource",
|
||||||
|
Name: "testcomponent",
|
||||||
|
Version: nil,
|
||||||
|
}).FilePrefix()
|
||||||
|
|
||||||
|
err := filepath.Walk(pathEnv,
|
||||||
|
func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
t.Logf("Found in %s: %s: %d",
|
||||||
|
pathEnv, path, info.Size())
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
oldPath := os.Getenv("PATH")
|
||||||
|
os.Setenv("PATH", pathEnv)
|
||||||
|
|
||||||
|
path, err := exec.LookPath(filename)
|
||||||
|
if err != nil {
|
||||||
|
t.Logf("exec.LookPath failed: %v", err)
|
||||||
|
} else {
|
||||||
|
t.Logf("exec.LookPath found: %v", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Setenv("PATH", oldPath)
|
||||||
|
|
||||||
integration.ProgramTest(t,
|
integration.ProgramTest(t,
|
||||||
optsForConstructPlainDotnet(t, test.expectedResourceCount, append(test.env, pathEnv)...))
|
optsForConstructPlainDotnet(t,
|
||||||
|
test.expectedResourceCount,
|
||||||
|
append(test.env, pathEnv)...))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue