microsoft / tfs-cli

Cross-platform CLI for Microsoft Team Foundation Server and Visual Studio Team Services
MIT License
372 stars 132 forks source link

Crash when writing debug logs #466

Open mmaitre314 opened 2 months ago

mmaitre314 commented 2 months ago

When the tool fails to parse a JSON file, it crashes trying to write a debug log:

> npx tfx-cli extension create --manifests test.json --no-color --trace-level debug
TFS Cross Platform Command Line Interface v0.17.0
Copyright Microsoft Corporation
2024-09-07T19:10:32.263Z : merger.merge
2024-09-07T19:10:32.265Z : merger.gatherManifests
2024-09-07T19:10:32.266Z : Merging 1 manifest from the following paths:
2024-09-07T19:10:32.267Z : test.json
error: Error parsing the JSON in C:\Source\ado-notebook-preview\test.json:
2024-09-07T19:10:32.272Z : Error: The number of replacements (1) does not match the number of placeholders (0)
2024-09-07T19:10:32.272Z :     at format (C:\Source\ado-notebook-preview\node_modules\tfx-cli\_build\lib\trace.js:98:15)
2024-09-07T19:10:32.272Z :     at write (C:\Source\ado-notebook-preview\node_modules\tfx-cli\_build\lib\trace.js:83:24)
2024-09-07T19:10:32.272Z :     at log (C:\Source\ado-notebook-preview\node_modules\tfx-cli\_build\lib\trace.js:68:9)
2024-09-07T19:10:32.272Z :     at Object.debug (C:\Source\ado-notebook-preview\node_modules\tfx-cli\_build\lib\trace.js:60:9)
2024-09-07T19:10:32.272Z :     at C:\Source\ado-notebook-preview\node_modules\tfx-cli\_build\exec\extension\_lib\merger.js:157:43
2024-09-07T19:10:32.272Z :     at async Promise.all (index 0)
error: Error: The number of replacements (1) does not match the number of placeholders (0)

This is likely due to the code calling trace.debug(jsonData, null); in merger.js with the JSON string as first parameter, which gets interpreted as a format string.

test.json file to repro:

{
    // A comment
}