3
votes

Comment inverser les barres obliques inverses dans $ {relativeFile} dans Visual Studio Code dans launch.json?

J'essaie de configurer (Windows) Visual Studio Code launch.json pour lancer des tests jest pour le fichier actuel. Pour obtenir le chemin, j'utilise la variable $ {relativeFile} qui donne une chaîne avec des barres obliques inverses comme celle-ci "src \ services \ some-service.spec.ts" , bien que dans le Les barres obliques de documentation semblent tout à fait normales.

Il semble que jest n'accepte pas ce type de chemin à cause de la barre oblique inversée. Lorsque je passe manuellement le même chemin avec des barres obliques normales, cela fonctionne très bien.

La question est: y a-t-il un moyen d'inverser les barres obliques inverses dans les variables prédéfinies du chemin VSCode telles que $ {relativeFile} ou peut-être des solutions de contournement?


2 commentaires

Je l'ai trouvé sur github . Désolé, je n'ai pas vu, que ce n'est toujours pas résolu.


J'ai vu ce fil et je n'avais aucune idée d'où il avait trouvé cet exemple, c'était probablement juste une idée.


3 Réponses :


2
votes

[Mise à jour] 01/05/2020

Jest cli prend désormais en charge l'option - -runTestsByPath , de sorte que vous puissiez spécifier explicitement un chemin de fichier plutôt qu'un modèle, ce qui vous permet d'utiliser \ sur Windows.

Donc, le suivant launch.json devrait fonctionner:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Jest Current FileBaseName",
      "type": "node",
      "request": "launch",
      "args": [
        "node_modules/jest/bin/jest.js",
        "--runInBand",
        "${fileBasename}"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "cwd": "${workspaceRoot}"
    },
    {
      "name": "Jest Custom",
      "type": "node",
      "request": "launch",
      "args": [
        "node_modules/jest/bin/jest.js",
        "--runInBand",
        "${input:testName}"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "cwd": "${workspaceRoot}"
    }
  ],
  "inputs": [
    {
      "type": "promptString",
      "id": "testName",
      "description": "The file or name you want to test",
      "default": "${fileBaseName}"
    }
  ]
}

Voici la réponse originale:


Il semble que la plaisanterie ne prévoie pas travailler avec \ et vscode ne prévoit pas de fournir des fonctionnalités pour remplacer les caractères dans les variables prédéfinies.

Mais il existe des solutions de contournement:

  1. utilisez $ {fileBasename} au lieu de ${relativeFile}

  2. Ou utilisez variables d'entrée pour que vscode vous invite à saisir le nom du test personnalisé lors du débogage.

Voici un exemple de launch.json pour les deux solutions de contournement ci-dessus.

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Jest Current File",
      "type": "node",
      "request": "launch",
      "args": [
        "node_modules/jest/bin/jest.js",
        "--runInBand",
        "--runTestsByPath",
        "${relativeFile}"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "cwd": "${workspaceFolder}"
    }
  ]
}

0 commentaires

0
votes

Ce problème est très similaire à celui auquel j'ai donné une réponse ailleurs . Pour résumer l'explication ici:

  1. Au lieu d'exécuter directement node ... , exécutez bash -c node ... pour pouvoir utiliser la substitution de commande shell dans la ligne de commande.
  2. Passez le chemin à travers le programme cygpath -m pour obtenir des barres obliques, quelque chose comme $ (cygpath -m $ {relativeFile}) .

Voir la réponse liée pour plus de détails et d'exemples.


0 commentaires

2
votes

Utilisez la variable extension.commandvariable.file.relativeFilePosix de l'extension variable de commande où vous avez besoin de $ {relativeFile} avec des barres obliques. Il existe également d'autres substitutions utiles dans cette extension.


1 commentaires

L'utilisation de VS Code pour exécuter des tests de plaisanterie via le débogueur nécessite des barres obliques, c'est le seul correctif qui fonctionne. Merci beaucoup!