Как создать отчет о покрытии расширения vscode TypeScript - PullRequest
0 голосов
/ 25 мая 2019

Кажется, что отчет о покрытии с coveralls невозможен для расширения VSCode, созданного с помощью TypeScript.

В настоящее время я добавляю тестовые случаи в наш проект https://github.com/PicGo/vs-picgo/pull/42, Я нашел несколько способов сообщить о покрытиях, но ни один из них не работает для меня.

Использование пользовательского TestRunner

Официальная документация мало упоминает о пользовательских тестах, но я нашел пост здесь . Он работает, когда я использую F5 для запуска Extension Test, но не работает, когда я запускаю npm run test в консоли (У меня нет вывода покрытия вообще).

Я также пытался понять пользовательский бегун (исходный код) в сообщении в блоге, но обнаружил, что мне нечего делать, потому что я не знаю, почему он работает.

Использование nyc

nyc с мокко очень мощным, но мы не можем этим воспользоваться. Когда я запускаю nyc ./node_modules/vscode/bin/test, я получаю 0% покрытия:

20190525000930

Я искал страницу с вопросом nyc, существует множество таких же проблем с охватом в 0% по проектам ТС, но ни одна из них не совпадает с нашей средой. Основное отличие состоит в том, что они используют mocha для тестирования, а не сценарий ./node_modules/vscode/bin/test VSCode, это создаст новый процесс для запуска тестовых js-файлов. Я не знаю, как с этим справиться.

Я обыскал все проблемы (mocha, tyc, istanbul, vscode и т. Д.), И их немного (я не нашел ?). Vscode TypeScripts использует отчет о покрытии для копирования. Итак, мой вопрос: как мне получить отчет о покрытии для моего расширения VSCode TS?

1 Ответ

0 голосов
/ 25 мая 2019

Добавить пользовательский тестовый исполнитель

См. в этом сообщении для получения дополнительной информации, вы можете просто скопировать код тестового организатора в файл test/index.ts вашего проекта.

Конфигурации конвейера Demo Azure

variables:
  system.debug: true
jobs:
  - job: Windows
    pool:
      name: Hosted VS2017
      demands: npm
    steps:
      - task: NodeTool@0
        displayName: 'Use Node 12.3.1'
        inputs:
          versionSpec: 12.3.1
      - task: Npm@1
        displayName: 'Install dependencies'
        inputs:
          verbose: false

      - task: Npm@1
        displayName: 'Compile sources and run tests'
        inputs:
          command: custom
          verbose: false
          customCommand: 'test'

      # https://stackoverflow.com/questions/45602358/lcov-info-has-absolute-path-for-sf
      - script: 'sed -i -- 's/..\\..\\//g' coverage/lcov.info && npm run coveralls'
        displayName: 'Publish code coverage'  
        env:
          COVERALLS_SERVICE_NAME: $(COVERALLS_SERVICE_NAME)
          COVERALLS_REPO_TOKEN: $(COVERALLS_REPO_TOKEN)

      - script: 'npm install -g vsce && vsce package'
        displayName: 'Build artifact'
      - task: CopyFiles@2
        inputs:
          contents: '*.vsix'
          TargetFolder: '$(Build.ArtifactStagingDirectory)'
      - task: PublishBuildArtifacts@1
        inputs:
          pathtoPublish: '$(Build.ArtifactStagingDirectory)'
          artifactName: vs-picgo-dev-build
trigger:
  branches:
    include:
    - '*'  # must quote since "*" is a YAML reserved character; we want a string
pr:
- dev*

Обратите внимание, что вы должны использовать sed для удаления префикса ..\..\ путей SF в lcov.info:

Перед:

SF:..\..\src\vs-picgo\index.ts

После:

SF:src\vs-picgo\index.ts

Демонстрационный проект: https://github.com/PicGo/vs-picgo

...