Skip to content

Commit 636fd3b

Browse files
committed
feat: pass TESTLENS_GITHUB_TOKEN via env file as well
To avoid passing absolute paths
1 parent eae8e5a commit 636fd3b

3 files changed

Lines changed: 7 additions & 30 deletions

File tree

setup-testlens.sh

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ write_env_properties_file() {
1313
{
1414
while IFS= read -r var_name; do
1515
printf '%s=%s\n' "$var_name" "$(escape_for_java_properties "${!var_name}")"
16-
done < <(printf '%s\n' "${!GITHUB_@}" "${!RUNNER_@}" "JOB_CHECK_RUN_ID" | sort -u)
16+
done < <(printf '%s\n' "${!GITHUB_@}" "${!RUNNER_@}" "JOB_CHECK_RUN_ID" "TESTLENS_GITHUB_TOKEN" | sort -u)
1717
} > "$properties_file"
1818
}
1919

@@ -33,21 +33,12 @@ if [[ -n "$GRADLE_USER_HOME" ]] || [[ -f settings.gradle ]] || [[ -f settings.gr
3333
# SC2001: sed is intentionally used here over bash parameter expansion for readability,
3434
# as the bash equivalent `${VAR//\\//}` is visually ambiguous for backslash-to-slash substitution.
3535
GRADLE_USER_HOME=$(echo "$GRADLE_USER_HOME" | sed 's|\\|/|g')
36-
# When running in a shell script (as opposed to inline action YAML), bash on Windows
37-
# normalizes paths to Git Bash style (/c/Users/...). The Groovy init script however
38-
# runs on the JVM which requires Windows style paths (C:/Users/...).
39-
# shellcheck disable=SC2001
40-
GRADLE_USER_HOME_GROOVY=$(echo "$GRADLE_USER_HOME" | sed 's|^/\([a-zA-Z]\)/|\1:/|')
41-
else
42-
GRADLE_USER_HOME_GROOVY="$GRADLE_USER_HOME"
4336
fi
4437

4538
# write files required by TestLens
4639
write_env_properties_file "$PWD/.gradle/testlens-env.properties"
4740
mkdir -p "$GRADLE_USER_HOME/init.d"
48-
echo -n "$TESTLENS_GITHUB_TOKEN" > "$GRADLE_USER_HOME"/init.d/TESTLENS_GITHUB_TOKEN
4941
cat << EOF > "$GRADLE_USER_HOME"/init.d/testlens-init.gradle
50-
import org.gradle.api.provider.*;
5142
gradle.beforeProject { project ->
5243
// Locate the env properties file relative to the build root as seen at runtime
5344
// so it resolves whether the build runs on the runner or in a container/VM.
@@ -62,25 +53,20 @@ gradle.beforeProject { project ->
6253
TestLensSetup.configure(project, relativeBuildPath, envPropertiesFile)
6354
}
6455
}
65-
abstract class TestLensGitHubTokenValueSource implements ValueSource<String, ValueSourceParameters.None> {
66-
String obtain() { new File('$GRADLE_USER_HOME_GROOVY/init.d/TESTLENS_GITHUB_TOKEN').text }
67-
}
6856
final class TestLensSetup {
6957
static def configure(Project project, String relativeBuildPath, File envPropertiesFile) {
7058
project.plugins.withId('java') {
7159
project.testing.suites.configureEach {
7260
dependencies { runtimeOnly('app.testlens:junit-platform-instrumentation:$INSTRUMENTATION_VERSION') }
7361
}
7462
}
75-
def providers = project.providers
7663
project.tasks.withType(Test).configureEach { task ->
7764
def muteMarker = new File(task.temporaryDir, 'testlens-mute.marker')
7865
def logsDir = new File(task.temporaryDir, 'testlens-logs')
7966
def workUnitPath = task.path + (relativeBuildPath.isEmpty() ? '' : ' [' + relativeBuildPath + ']')
8067
task.environment('TESTLENS_PROJECT_ID', '$TESTLENS_PROJECT_ID')
8168
task.environment('TESTLENS_WORK_UNIT_PATH', workUnitPath)
8269
task.environment('TESTLENS_MUTE_MARKER_FILE', muteMarker.absolutePath)
83-
task.environment('TESTLENS_GITHUB_TOKEN', providers.of(TestLensGitHubTokenValueSource){}.get())
8470
task.environment('TESTLENS_ENV_PROPERTIES_FILE', envPropertiesFile.absolutePath)
8571
if ('true'.equalsIgnoreCase('$WRITE_LOG_FILES')) {
8672
task.environment('TESTLENS_LOGS_DIR', logsDir.absolutePath)
@@ -136,7 +122,6 @@ if [[ -f "pom.xml" ]]; then
136122
<configuration>
137123
<environmentVariables>
138124
<TESTLENS_PROJECT_ID>$TESTLENS_PROJECT_ID</TESTLENS_PROJECT_ID>
139-
<TESTLENS_GITHUB_TOKEN>$TESTLENS_GITHUB_TOKEN</TESTLENS_GITHUB_TOKEN>
140125
<TESTLENS_WORK_UNIT_PATH>\${project.name}</TESTLENS_WORK_UNIT_PATH>
141126
<TESTLENS_ENV_PROPERTIES_FILE>\${maven.multiModuleProjectDirectory}/.mvn/testlens-env.properties</TESTLENS_ENV_PROPERTIES_FILE>
142127
<TESTLENS_LOGS_DIR>$(if [[ $WRITE_LOG_FILES = "true" ]]; then echo '${project.build.directory}/testlens-logs'; fi)</TESTLENS_LOGS_DIR>
@@ -149,7 +134,6 @@ if [[ -f "pom.xml" ]]; then
149134
<configuration>
150135
<environmentVariables>
151136
<TESTLENS_PROJECT_ID>$TESTLENS_PROJECT_ID</TESTLENS_PROJECT_ID>
152-
<TESTLENS_GITHUB_TOKEN>$TESTLENS_GITHUB_TOKEN</TESTLENS_GITHUB_TOKEN>
153137
<TESTLENS_WORK_UNIT_PATH>\${project.name}</TESTLENS_WORK_UNIT_PATH>
154138
<TESTLENS_ENV_PROPERTIES_FILE>\${maven.multiModuleProjectDirectory}/.mvn/testlens-env.properties</TESTLENS_ENV_PROPERTIES_FILE>
155139
<TESTLENS_LOGS_DIR>$(if [[ $WRITE_LOG_FILES = "true" ]]; then echo '${project.build.directory}/testlens-logs'; fi)</TESTLENS_LOGS_DIR>

test/env-properties.bats

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@ setup() {
1111
unset "${!GITHUB_@}" "${!RUNNER_@}"
1212
}
1313

14-
@test "captures GITHUB_*, RUNNER_*, and JOB_CHECK_RUN_ID variables" {
14+
@test "captures GITHUB_*, RUNNER_*, JOB_CHECK_RUN_ID, and TESTLENS_GITHUB_TOKEN variables" {
1515
echo "rootProject.name = 'demo'" > settings.gradle
1616
export GITHUB_REPOSITORY="octo/demo"
1717
export RUNNER_NAME="runner-7"
1818
export JOB_CHECK_RUN_ID="12345"
19+
export TESTLENS_GITHUB_TOKEN="some-token"
1920
run "$SCRIPT"
2021
assert_success
2122
assert_contains "$GRADLE_ENV_PROPS" "GITHUB_REPOSITORY=octo/demo"
2223
assert_contains "$GRADLE_ENV_PROPS" "RUNNER_NAME=runner-7"
2324
assert_contains "$GRADLE_ENV_PROPS" "JOB_CHECK_RUN_ID=12345"
25+
assert_contains "$GRADLE_ENV_PROPS" "TESTLENS_GITHUB_TOKEN=some-token"
2426
}
2527

2628
@test "does not capture unrelated variables" {

test/gradle.bats

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,6 @@ setup() {
6060
assert_not_contains "$init" "$WORKDIR/.gradle/testlens-env.properties"
6161
}
6262

63-
@test "token file contains the raw token" {
64-
export TESTLENS_GITHUB_TOKEN="some-token"
65-
export GRADLE_USER_HOME="$GRADLE_HOME"
66-
run "$SCRIPT"
67-
assert_file "$GRADLE_HOME/init.d/TESTLENS_GITHUB_TOKEN"
68-
assert_equal "$(cat "$GRADLE_HOME/init.d/TESTLENS_GITHUB_TOKEN")" "some-token"
69-
}
70-
7163
@test "log-files switch is included in init script" {
7264
export GRADLE_USER_HOME="$GRADLE_HOME"
7365
export WRITE_LOG_FILES="true"
@@ -83,11 +75,10 @@ setup() {
8375
assert_contains "$init" "if (!'30'.empty)"
8476
}
8577

86-
@test "windows backslash GRADLE_USER_HOME is converted to JVM style in the token path" {
78+
@test "windows backslash GRADLE_USER_HOME is normalized to forward slashes" {
8779
export RUNNER_OS="Windows"
88-
export GRADLE_USER_HOME='C:\gradle\home'
80+
export GRADLE_USER_HOME="$WORKDIR\\gradle\\home"
8981
run "$SCRIPT"
9082
assert_success
91-
assert_contains "C:/gradle/home/init.d/testlens-init.gradle" \
92-
"new File('C:/gradle/home/init.d/TESTLENS_GITHUB_TOKEN')"
83+
assert_file "$WORKDIR/gradle/home/init.d/testlens-init.gradle"
9384
}

0 commit comments

Comments
 (0)