From 9a5a1c2d3773e37ae97d69ea1465a9ff6242c306 Mon Sep 17 00:00:00 2001 From: Nick Floyd <139819+nickfloyd@users.noreply.github.com> Date: Tue, 19 Mar 2024 15:52:13 -0500 Subject: [PATCH 1/4] adds setup script --- scripts/setup_run_env.sh | 83 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 scripts/setup_run_env.sh diff --git a/scripts/setup_run_env.sh b/scripts/setup_run_env.sh new file mode 100755 index 0000000000..23d3f9dd83 --- /dev/null +++ b/scripts/setup_run_env.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Check if launch.json already exists +if [ -f ".vscode/launch.json" ]; then + read -p "launch.json already exists. Overwrite? (y/n): " overwrite + if [[ $overwrite != "y" ]]; then + echo "Exiting without creating launch.json." + exit 1 + fi +fi + +# Prompt for environment variables +read -p "Enter TF_TEST_FILE: " TF_TEST_FILE +read -p "Enter TF_TEST_FUNCTION: " TF_TEST_FUNCTION +read -p "Enter GITHUB_TEST_COLLABORATOR: " GITHUB_TEST_COLLABORATOR +read -p "Enter GITHUB_TEST_COLLABORATOR_TOKEN: " GITHUB_TEST_COLLABORATOR_TOKEN +read -p "Enter GITHUB_TEST_USER: " GITHUB_TEST_USER +read -p "Enter GITHUB_TOKEN: " GITHUB_TOKEN +read -p "Enter GITHUB_TEMPLATE_REPOSITORY: " GITHUB_TEMPLATE_REPOSITORY +read -p "Enter GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID: " GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID +read -p "Enter GITHUB_ORGANIZATION: " GITHUB_ORGANIZATION +read -p "Enter TF_CLI_CONFIG_FILE: " TF_CLI_CONFIG_FILE +read -p "Enter TF_ACC: " TF_ACC +read -p "Enter TF_LOG: " TF_LOG +read -p "Enter APP_INSTALLATION_ID: " APP_INSTALLATION_ID + +# Export environment variables +export TF_TEST_FILE="$TF_TEST_FILE" +export TF_TEST_FUNCTION="$TF_TEST_FUNCTION" +export GITHUB_TEST_COLLABORATOR="$GITHUB_TEST_COLLABORATOR" +export GITHUB_TEST_COLLABORATOR_TOKEN="$GITHUB_TEST_COLLABORATOR_TOKEN" +export GITHUB_TEST_USER="$GITHUB_TEST_USER" +export GITHUB_TOKEN="$GITHUB_TOKEN" +export GITHUB_TEMPLATE_REPOSITORY="$GITHUB_TEMPLATE_REPOSITORY" +export GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID="$GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID" +export GITHUB_ORGANIZATION="$GITHUB_ORGANIZATION" +export TF_CLI_CONFIG_FILE="$TF_CLI_CONFIG_FILE" +export TF_ACC="$TF_ACC" +export TF_LOG="$TF_LOG" +export APP_INSTALLATION_ID="$APP_INSTALLATION_ID" + +# Create the launch.json file +cat << EOF > .vscode/launch.json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch test function", + "type": "go", + "request": "launch", + "mode": "test", + "program": "\${workspaceFolder}/github/\${env:TF_TEST_FILE}", + "args": [ + "-test.v", + "-test.run", + "^\${env:TF_TEST_FILE}$" + ], + "env": { + "GITHUB_TEST_COLLABORATOR": "\${env:GITHUB_TEST_COLLABORATOR}", + "GITHUB_TEST_COLLABORATOR_TOKEN": "\${env:GITHUB_TEST_COLLABORATOR_TOKEN}", + "GITHUB_TEST_USER": "\${env:GITHUB_TEST_USER}", + "GITHUB_TOKEN": "\${env:GITHUB_TOKEN}", + "GITHUB_TEMPLATE_REPOSITORY": "\${env:GITHUB_TEMPLATE_REPOSITORY}", + "GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID": "\${env:GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID}", + "GITHUB_ORGANIZATION": "\${env:GITHUB_ORGANIZATION}", + "TF_CLI_CONFIG_FILE": "\${env:TF_CLI_CONFIG_FILE}", + "TF_ACC": "\${env:TF_ACC}", + "TF_LOG": "\${env:TF_LOG}", + "APP_INSTALLATION_ID": "\${env:APP_INSTALLATION_ID}" + } + }, + { + "name": "Attach to Process", + "type": "go", + "request": "attach", + "mode": "local", + "processId": "\${command:AskForProcessId}" + } + ] +} +EOF + +echo "launch.json has been created." \ No newline at end of file From 1593dee7c5f96d3a8596bcc5fe50fa1b7df7c7b3 Mon Sep 17 00:00:00 2001 From: Nick Floyd <139819+nickfloyd@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:39:37 -0500 Subject: [PATCH 2/4] adds a script for setting up local testing --- .gitignore | 2 +- scripts/setup_testing.sh | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 scripts/setup_testing.sh diff --git a/.gitignore b/.gitignore index 400f9ea23a..4c0ef4d2a2 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,6 @@ terraform-provider-github # Test exclusions !command/test-fixtures/**/*.tfstate !command/test-fixtures/**/.terraform/ - +examples/testing/main.tf # do not commit secrets .env diff --git a/scripts/setup_testing.sh b/scripts/setup_testing.sh new file mode 100755 index 0000000000..ea2140df6b --- /dev/null +++ b/scripts/setup_testing.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Ask for the resource name +read -p "Enter the resource name to use in the test: " resourceName + +# Define the directory and file path +DIR="examples/${resourceName}" +FILE="${DIR}/main.tf" + +# Create the directory, if it doesn't already exist +mkdir -p "$DIR" + +# Create (or overwrite) the file and add the contents with the provided resource name +cat <"$FILE" +// Empty configuration +provider "github" { + //owner = "octokit" + //token = "ABC123" +} + +// Terraform global config for providers +terraform { + required_providers { + github = { + source = "integrations/github" + } + } + + // Example resource placeholder using provided resource name + resource "${resourceName}" "test" { + + } +} +EOF + +echo "File ${FILE} has been created with the specified contents." \ No newline at end of file From 128c657ccb2f0b54bb008c70d0784cfa251d8a41 Mon Sep 17 00:00:00 2001 From: Nick Floyd <139819+nickfloyd@users.noreply.github.com> Date: Wed, 20 Mar 2024 14:35:39 -0500 Subject: [PATCH 3/4] reworks the testing script to account for resource name --- .gitignore | 2 +- scripts/{setup_run_env.sh => setup_env.sh} | 0 scripts/setup_testing.sh | 5 +++-- 3 files changed, 4 insertions(+), 3 deletions(-) rename scripts/{setup_run_env.sh => setup_env.sh} (100%) diff --git a/.gitignore b/.gitignore index 4c0ef4d2a2..f2c12b5ea0 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,6 @@ terraform-provider-github # Test exclusions !command/test-fixtures/**/*.tfstate !command/test-fixtures/**/.terraform/ -examples/testing/main.tf +examples/testing/** # do not commit secrets .env diff --git a/scripts/setup_run_env.sh b/scripts/setup_env.sh similarity index 100% rename from scripts/setup_run_env.sh rename to scripts/setup_env.sh diff --git a/scripts/setup_testing.sh b/scripts/setup_testing.sh index ea2140df6b..d08edb84ab 100755 --- a/scripts/setup_testing.sh +++ b/scripts/setup_testing.sh @@ -1,10 +1,10 @@ #!/bin/bash # Ask for the resource name -read -p "Enter the resource name to use in the test: " resourceName +read -p "Enter the resource name to use in the test(i.e. issue_label for resource_github_issue_label): " resourceName # Define the directory and file path -DIR="examples/${resourceName}" +DIR="examples/testing/${resourceName}" FILE="${DIR}/main.tf" # Create the directory, if it doesn't already exist @@ -27,6 +27,7 @@ terraform { } // Example resource placeholder using provided resource name + // Documentation: https://registry.terraform.io/providers/integrations/github/latest/docs/resources/${resourceName} resource "${resourceName}" "test" { } From 99db17211573238ab3fde79e3477f41657da26e9 Mon Sep 17 00:00:00 2001 From: Nick Floyd <139819+nickfloyd@users.noreply.github.com> Date: Wed, 20 Mar 2024 15:04:16 -0500 Subject: [PATCH 4/4] updates the env setup for optional env vars --- scripts/setup_env.sh | 66 ++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/scripts/setup_env.sh b/scripts/setup_env.sh index 23d3f9dd83..434ed3143b 100755 --- a/scripts/setup_env.sh +++ b/scripts/setup_env.sh @@ -1,5 +1,11 @@ #!/bin/bash +# Check for '-include-optional-env' parameter +INCLUDE_OPTIONAL=false +if [ "$1" == "-include-optional-env" ]; then + INCLUDE_OPTIONAL=true +fi + # Check if launch.json already exists if [ -f ".vscode/launch.json" ]; then read -p "launch.json already exists. Overwrite? (y/n): " overwrite @@ -9,35 +15,41 @@ if [ -f ".vscode/launch.json" ]; then fi fi -# Prompt for environment variables -read -p "Enter TF_TEST_FILE: " TF_TEST_FILE -read -p "Enter TF_TEST_FUNCTION: " TF_TEST_FUNCTION -read -p "Enter GITHUB_TEST_COLLABORATOR: " GITHUB_TEST_COLLABORATOR -read -p "Enter GITHUB_TEST_COLLABORATOR_TOKEN: " GITHUB_TEST_COLLABORATOR_TOKEN -read -p "Enter GITHUB_TEST_USER: " GITHUB_TEST_USER +# Prompt for required environment variables + read -p "Enter GITHUB_TOKEN: " GITHUB_TOKEN -read -p "Enter GITHUB_TEMPLATE_REPOSITORY: " GITHUB_TEMPLATE_REPOSITORY -read -p "Enter GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID: " GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID -read -p "Enter GITHUB_ORGANIZATION: " GITHUB_ORGANIZATION -read -p "Enter TF_CLI_CONFIG_FILE: " TF_CLI_CONFIG_FILE -read -p "Enter TF_ACC: " TF_ACC -read -p "Enter TF_LOG: " TF_LOG -read -p "Enter APP_INSTALLATION_ID: " APP_INSTALLATION_ID +read -p "Enter GITHUB_OWNER: " GITHUB_OWNER +read -p "Enter GITHUB_ORGANIZATION (ex. octokit): " GITHUB_ORGANIZATION +read -p "Enter TF_TEST_FILE (ex. resource_github_team_members_test.go): " TF_TEST_FILE +read -p "Enter TF_TEST_FUNCTION (ex. TestAccGitHubRepositoryTopics): " TF_TEST_FUNCTION -# Export environment variables -export TF_TEST_FILE="$TF_TEST_FILE" -export TF_TEST_FUNCTION="$TF_TEST_FUNCTION" -export GITHUB_TEST_COLLABORATOR="$GITHUB_TEST_COLLABORATOR" -export GITHUB_TEST_COLLABORATOR_TOKEN="$GITHUB_TEST_COLLABORATOR_TOKEN" -export GITHUB_TEST_USER="$GITHUB_TEST_USER" export GITHUB_TOKEN="$GITHUB_TOKEN" -export GITHUB_TEMPLATE_REPOSITORY="$GITHUB_TEMPLATE_REPOSITORY" -export GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID="$GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID" +export GITHUB_OWNER="$GITHUB_OWNER" export GITHUB_ORGANIZATION="$GITHUB_ORGANIZATION" -export TF_CLI_CONFIG_FILE="$TF_CLI_CONFIG_FILE" -export TF_ACC="$TF_ACC" -export TF_LOG="$TF_LOG" -export APP_INSTALLATION_ID="$APP_INSTALLATION_ID" +export TF_TEST_FILE="$TF_TEST_FILE" +export TF_TEST_FUNCTION="$TF_TEST_FUNCTION" + +# Prompt for optional environment variables +if [ "$INCLUDE_OPTIONAL" = true ]; then + read -p "Enter GITHUB_TEST_USER: " GITHUB_TEST_USER + read -p "Enter GITHUB_TEST_COLLABORATOR: " GITHUB_TEST_COLLABORATOR + read -p "Enter GITHUB_TEST_COLLABORATOR_TOKEN: " GITHUB_TEST_COLLABORATOR_TOKEN + read -p "Enter GITHUB_TEMPLATE_REPOSITORY: " GITHUB_TEMPLATE_REPOSITORY + read -p "Enter GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID: " GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID + read -p "Enter TF_ACC: " TF_ACC + read -p "Enter APP_INSTALLATION_ID: " APP_INSTALLATION_ID + + # Export environment variables + export GITHUB_TEST_USER="$GITHUB_TEST_USER" + export GITHUB_TEST_COLLABORATOR="$GITHUB_TEST_COLLABORATOR" + export GITHUB_TEST_COLLABORATOR_TOKEN="$GITHUB_TEST_COLLABORATOR_TOKEN" + export GITHUB_TEMPLATE_REPOSITORY="$GITHUB_TEMPLATE_REPOSITORY" + export GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID="$GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID" + export GITHUB_ORGANIZATION="$GITHUB_ORGANIZATION" + export TF_ACC="$TF_ACC" + export TF_LOG="DEBUG" + export APP_INSTALLATION_ID="$APP_INSTALLATION_ID" +fi # Create the launch.json file cat << EOF > .vscode/launch.json @@ -53,7 +65,7 @@ cat << EOF > .vscode/launch.json "args": [ "-test.v", "-test.run", - "^\${env:TF_TEST_FILE}$" + "^\${env:TF_TEST_FUNCTION}$" ], "env": { "GITHUB_TEST_COLLABORATOR": "\${env:GITHUB_TEST_COLLABORATOR}", @@ -63,7 +75,7 @@ cat << EOF > .vscode/launch.json "GITHUB_TEMPLATE_REPOSITORY": "\${env:GITHUB_TEMPLATE_REPOSITORY}", "GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID": "\${env:GITHUB_TEMPLATE_REPOSITORY_RELEASE_ID}", "GITHUB_ORGANIZATION": "\${env:GITHUB_ORGANIZATION}", - "TF_CLI_CONFIG_FILE": "\${env:TF_CLI_CONFIG_FILE}", + "TF_CLI_CONFIG_FILE": "\${workspaceFolder}/examples/dev.tfrc", "TF_ACC": "\${env:TF_ACC}", "TF_LOG": "\${env:TF_LOG}", "APP_INSTALLATION_ID": "\${env:APP_INSTALLATION_ID}"