@@ -119,6 +119,36 @@ dependencies {
119119 androidTestImplementation ' com.google.code.gson:gson:2.8.9'
120120}
121121
122+ // SDK-170 — debug task that surfaces the build-time BuildConfig inputs the test APK was
123+ // built with. We only print *length* and *first 4 chars* of secrets so they never appear
124+ // in CI logs verbatim. Used by scripts/trace-bcit.sh.
125+ tasks. register(' printBuildConfig' ) {
126+ group = ' verification'
127+ description = ' Print the integration-test BuildConfig inputs as seen by the build (length-only for secrets).'
128+ doLast {
129+ def localProperties = new Properties ()
130+ def localPropertiesFile = rootProject. file(' local.properties' )
131+ if (localPropertiesFile. exists()) {
132+ localPropertiesFile. withInputStream { localProperties. load(it) }
133+ }
134+ def showPrefix = System . getenv(' TRACE_SHOW_PREFIX' ) == ' 1'
135+ def report = { String name ->
136+ def fromLocal = localProperties. getProperty(name)
137+ def fromEnv = System . getenv(name)
138+ def chosen = fromLocal ?: fromEnv ?: ' '
139+ def source = fromLocal ? ' local.properties' : (fromEnv ? ' env' : ' default-fallback' )
140+ def line = " ${ name} length=${ chosen.length()} source=${ source} "
141+ if (showPrefix && chosen. length() >= 4 ) {
142+ line + = " prefix=${ chosen.substring(0, 4)} \u 2026"
143+ }
144+ println line
145+ }
146+ report(' ITERABLE_API_KEY' )
147+ report(' ITERABLE_SERVER_API_KEY' )
148+ report(' ITERABLE_TEST_USER_EMAIL' )
149+ }
150+ }
151+
122152// Jacoco coverage for integration tests
123153tasks. withType(Test ) {
124154 jacoco. includeNoLocationClasses = true
0 commit comments