bug(gapic-node-processing): setOnlyDefaultSystemTests incorrectly matches substring on absolute path
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
- Ambito
- build-system, tooling
Direzione di ricerca
Iniziate in gapic-node-processing/src/combine-libraries.ts e ispezionate setOnlyDefaultSystemTests(), concentrandovi sul modo in cui vengono confrontati i percorsi assoluti normalizzati. Riproducete o esaminate il caso di fixture v2/v3 descritto nell’issue, quindi verificate che il filtraggio delle versioni non sia influenzato da nomi di directory non correlati come /tmp/upgrade-nodejs-v2Mp8W e che l’output della fixture generata non produca più diff indesiderati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
In gapic-node-processing/src/combine-libraries.ts, setOnlyDefaultSystemTests() filters out sample test fixtures from non-default versions when combining multi-version libraries (e.g., google-iam with v2 and v3).
It currently uses .includes(defaultVersion) on the full absolute file path:
function setOnlyDefaultSystemTests(defaultVersion: string, filePaths: FilePaths[]) {
const systemTestRegex = new RegExp('system-test/fixtures/sample/src');
for (let i = filePaths.length - 1; i >= 0; i--) {
const filePathObj = filePaths[i];
const normalizedPath = filePathObj.filePath.replace(/\\/g, '/');
if (systemTestRegex.test(normalizedPath) &&
!normalizedPath.includes(defaultVersion)) {
filePaths.splice(i, 1);
}
}
}
Bug Behavior
If the workspace or temporary directory path where Librarian/generator runs happens to contain the substring defaultVersion (for example, /tmp/upgrade-nodejs-v2Mp8W containing "v2"), normalizedPath.includes("v2") evaluates to true for all API versions (including v3).
As a result:
!normalizedPath.includes(defaultVersion)evaluates tofalse.v3fixture files are not filtered out.v3sample fixtures overwritev2sample fixtures, generating unintended client diffs (e.g.,packages/google-iam/system-test/fixtures/sample/src/index.tsexportingAccessPoliciesClientinstead ofPoliciesClient).
Reference PR & CI Breakage
This issue was observed during Librarian version upgrade in:
- Pull Request: https://github.com/googleapis/google-cloud-node/pull/9340
- Affected Commit:
559da2d4(wheremktemp -dgenerated/tmp/upgrade-nodejs-v2Mp8W) - CI Failure: https://github.com/googleapis/google-cloud-node/actions/runs/34998266744/job/104479939975?pr=9340 (clean CI runner without
v2in path did not generate thev3diffs, causing agit diffdiscrepancy).
Suggested Fix
Match the version directory boundary specifically rather than performing an unconstrained substring check across the absolute path:
const versionDirRegex = new RegExp(`(^|/)${defaultVersion}(/|$)`);
if (systemTestRegex.test(normalizedPath) && !versionDirRegex.test(normalizedPath)) {
filePaths.splice(i, 1);
}
- Lingua principale
- TypeScript
- Stelle
- 3.2k
- Fork
- 723
- Merge medio
- 3g 2h
- PR unite (30g)
- 172
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di googleapis/google-cloud-node
-
api: spanner
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
googleapis/google-cloud-node#9513 ·
I maintainer di solito rispondono entro 1 giorno
-
google-auth-library: JWT with a JSON keyFile signs without iss since 10.6.1 (invalid_grant: account not found)Forse già presa @Marinski l’ha presa 8 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
googleapis/google-cloud-node#9469 ·
I maintainer di solito rispondono entro 1 giorno
-
priority: p1 samples type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
googleapis/google-cloud-node#9367 ·
I maintainer di solito rispondono entro 1 giorno
-
TransferManager uploadFileInChunks does not error when abortedForse già presa @Om-singhaI l’ha presa 46 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
googleapis/google-cloud-node#9193 ·
I maintainer di solito rispondono entro 1 giorno
-
google-auth-library: getErrorFromOAuthErrorResponse() copies stack as non-writable, breaking error decoration in consumersForse già presa @Om-singhaI l’ha presa 46 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
googleapis/google-cloud-node#9155 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di googleapis/google-cloud-node
Issue simili
-
Tenant
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
MTES-MCT/Dossier-Facile-Frontend#2061 ·
I maintainer di solito rispondono entro 1 giorno
-
area:frontend
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
interledger/publisher-tools#905 ·
I maintainer di solito rispondono entro 1 giorno
-
Add: Cbeebies PL SDApertaapproved check:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
iptv-org/iptv#54525 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
DB-plane provider_chat_options.* is accepted by config set but never merged into the loaded configAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
area:web
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
praetorianer777/GoTome#178 ·
I maintainer di solito rispondono entro 1 giorno