Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Оптимизировал процесс подсчета coverage #120

Merged
merged 3 commits into from
Feb 3, 2016

Conversation

eGavr
Copy link
Contributor

@eGavr eGavr commented Jan 26, 2016

Описание

В текущей реализации coverage считается каждый раз после запуска тестов в определенном бандле, то есть после запуска тестов на desktop считается coverage для desktop, после запуска тестов на touch-pad считается coverage для desktop и touch-pad (хотя ранее уже был посчитан coverage для desktop), после запуска тестов на touch-phone считается coverage для desktop, touch-pad и touch-phone и т. д.

Решение

Запускать все тесты и подсчет coverage один раз, после сборки всех бандлов с тестами.

Тесты

Протестировал интеграционно

Важно

Ломает обратную совместимость!

Ревью

/cc @blond

@@ -11,10 +11,17 @@ var path = require('path'),
XJST_EXPORT_NAME = 'BEMHTML';

module.exports = function (helper) {
// необходимо знание про имена всех банлов, в которых запускаются тесты,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

бандлов

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

С большой буквы коммент? А еще у нас часть шаблонизаторов может не иметь возможности считать каверадж. Такие, как старый bemhtml и handlebars. Мы это можем как-то учитывать?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А еще у нас часть шаблонизаторов может не иметь возможности считать каверадж

Уточни... Мы такие мы же явно указываем в опции для чего считать coverage.

@anton-rudeshko
Copy link

Ох костыль-то, костыль! :)

@@ -26,7 +26,8 @@ Runner.prototype.run = function (files) {
failures ? defer.reject(new Error('tmpl-specs: ' + failures + ' failing')) : defer.resolve();
}

if (opts.coverage.engines.length > 0) {
// если это последний бандл, в котором запускались тесты, то необходимо собрать coverage
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Снова с маленькой и без точки

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Посмотрел по уже имеющимся комментам, @blond пишет с большой буквы без точки

@eGavr
Copy link
Contributor Author

eGavr commented Jan 26, 2016

Нашел багу, пока рано ревью делать.

Ох костыль-то, костыль! :)

В связи с текущей архитектурой, пока не нашли лучшего способа :(

Там скорее в istanbul-е проблема .

но зато ускоряет сборку :)

@eGavr eGavr force-pushed the fix/coverage-collection branch 2 times, most recently from 7aff833 to afe8677 Compare January 26, 2016 14:32
@eGavr
Copy link
Contributor Author

eGavr commented Jan 26, 2016

@blond 🆙

@eGavr eGavr force-pushed the fix/coverage-collection branch 2 times, most recently from 8b95549 to 0ef6bb8 Compare January 26, 2016 15:53
@eGavr
Copy link
Contributor Author

eGavr commented Jan 26, 2016

И снова нашел багу :)
На этот раз при интеграционном тестировании, пока рано делать ревью.

@qfox
Copy link
Contributor

qfox commented Jan 26, 2016

Оставь потомкам что-нибудь, что ты творишь!!!

@blond
Copy link
Member

blond commented Jan 26, 2016

Я, наверное, не вовремя... но у Instrumenter есть опция для того, чтобы записывать результат в нужную глобальную переменную.

Может проще при сборке генерировать разное имя переменной для каждой платформы? Тогда всё останется примерно как есть, но лишних операций не будет.

Единственное над чем надо будет подумать, когда запускать репортеры для coverage: как сейчас на каждую платформу или один раз в конце.

@eGavr
Copy link
Contributor Author

eGavr commented Jan 26, 2016

Я, наверное, не вовремя... но у Instrumenter есть опция для того, чтобы записывать результат в нужную глобальную переменную.

👍

Не вовремя – это когда все все влито, выпущены версии... с багами :)

а ты предалагаешь отличное решение на этапе разработки :)

Единственное над чем надо будет подумать, когда запускать репортеры для coverage: как сейчас на каждую платформу или один раз в конце.

Кажется, что если оставить как есть, то сможем избежать дополнительных возможных костылей :) или там прям дикий-дикий профит от этого?

@blond
Copy link
Member

blond commented Jan 26, 2016

Кажется, что если оставить как есть, то сможем избежать дополнительных возможных костылей :) или там прям дикий-дикий профит от этого?

Я о том, что не факт, что получится оставить как есть. Надо же чтобы результаты одной платформы не перетирались результатами другой.

@eGavr
Copy link
Contributor Author

eGavr commented Jan 26, 2016

Я немного не так понял твой последний вопрос про то, когда запускать репортеры для coverage :)

Давай вернемся снова к нему:

Единственное над чем надо будет подумать, когда запускать репортеры для coverage: как сейчас на каждую платформу или один раз в конце.

Полагаю, что в любом случае надо в конце ОДИН раз, а по другому вроде и никак, но теперь (раз coverage можно записывать в отдельные переменные) API не поломаем.

В общем идея реализации без поломки обратной совместимости уже появилась, кину код, будем ревьюить ;)

@eGavr eGavr force-pushed the fix/coverage-collection branch 6 times, most recently from 6b05306 to 83b9a9c Compare January 27, 2016 14:06
@eGavr
Copy link
Contributor Author

eGavr commented Jan 27, 2016

@blond 🆙

@eGavr eGavr force-pushed the fix/coverage-collection branch from 83b9a9c to e279e43 Compare January 27, 2016 14:32
grep: (typeof process.env.BEM_TMPL_SPECS_GREP === 'undefined' ?
opts.grep :
process.env.BEM_TMPL_SPECS_GREP) || false,
diffOpts: diffOpts
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Раз уж лодашим, давай по полной )

_.defaults(opts.htmlDiffer, { preset: 'bem' })

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот так будет работать:

_.defaults(opts.htmlDiffer || {}, {preset: 'bem'});

@eGavr eGavr force-pushed the fix/coverage-collection branch 11 times, most recently from 01c7dea to 63f280f Compare February 1, 2016 13:48
@eGavr
Copy link
Contributor Author

eGavr commented Feb 1, 2016

@blond 🆙 , please :)

@eGavr eGavr force-pushed the fix/coverage-collection branch 6 times, most recently from 68e1a1c to ef71a5b Compare February 3, 2016 08:28
@eGavr eGavr force-pushed the fix/coverage-collection branch from ef71a5b to 077b452 Compare February 3, 2016 08:30
@eGavr
Copy link
Contributor Author

eGavr commented Feb 3, 2016

@blond 🆙

1.0.0
-----

### Крупные изменения
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Давай назовём раздел API.

@blond
Copy link
Member

blond commented Feb 3, 2016

LGTM

@eGavr eGavr force-pushed the fix/coverage-collection branch from 077b452 to f9e4cc0 Compare February 3, 2016 10:16
eGavr added a commit that referenced this pull request Feb 3, 2016
Оптимизировал процесс подсчета coverage
@eGavr eGavr merged commit eb7df18 into master Feb 3, 2016
@eGavr eGavr deleted the fix/coverage-collection branch February 3, 2016 14:25
@blond blond removed the in progress label Feb 3, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants