-
Notifications
You must be signed in to change notification settings - Fork 149
Conversation
load: function(gemini, options) { | ||
_.chain(options.system.plugins) | ||
load: (gemini) => { | ||
_.chain(gemini.config.system.plugins) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_.chain(gemini.config.system.plugins) => _(gemini.config.system.plugins)
4b4ec2b
to
49a6e91
Compare
return plugin.opts === false; | ||
}) | ||
.map(function(plugin) { | ||
.map((pair) => ({name: pair[0], opts: pair[1]})) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.map(_.curry(_.zipObject)(['name', 'opts']))
/cc @eGavr
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Андрюх, +1 за знание лодаша :)
но исходный вариант более понятный
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
тут можно вообще проще:
_(gemini.config.system.plugins)
.map((opts, name) => ({name, opts}))
🆗 |
|
||
Plugin example with the listening on the events: | ||
```javascript | ||
module.exports = function(gemini, options) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а че не стрелочные функции в примере?
2 similar comments
.fin(() => this.emit(RunnerEvents.END)); | ||
.fin(() => { | ||
this.emit(RunnerEvents.END); | ||
this.emit(RunnerEvents.END_RUNNER, this); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
событие END_RUNNER
должно кидаться раньше, чем END
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
в текущей логике это не так. Вообще событие END
не должно бросаться, но это дело версии 5.x, кстати куда мы там пишем что нужно оторвать в новой версии? Надо дописать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
На BEGIN
вообще не нашел, чтобы кто то подписывался в gemini, а на END
подписывается только flat репортер.
Пишем в этот issue #555. Кажется ему номер 555 не случайно достался =)
Дописал, что нужно выпилить события BEGIN и END
|
||
const proxyquire = require('proxyquire'); | ||
|
||
let plugins; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а зачем эта переменная вне дескрайба?
|
||
return run_() | ||
.then(() => assert.callOrder(begin, end)); | ||
.then(() => assert.callOrder(begin, startRunner, end, endRunner)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
и тут у тебя должен тест упасть. Хотя, кажется, по этому тесту видно, что последовательность событий неправильная
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
нет, не падает.
return getTests(paths, options) | ||
.then((suiteCollection) => { | ||
return this.emitAndWait(RunnerEvents.START_RUNNER, runner) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
кстати, скорее всего этим мы сломали обратную совместимость. Теперь те, кто работают с gemini
через API
(например gemini-gui
) не имеют возможности подписаться на события от gemini
. Так что имеет смысл пробрасывать сообщения от раннера наверх. Но тогда встает вопрос о необходимости фасада как такового
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, теперь gemini-gui
не может подписаться на события от gemini
, проверил.
Что делаем?
Костыляем? )
Костыльнул, но что то мне вообще не нравится так.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
мы можем пробрасывать наружу только START_RUNNER
и END_RUNNER
как это было раньше
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
То есть я правильно понял. Что нужно, чтобы не раннер эмитил события START_RUNNER
и END_RUNNER
, а gemini?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
скажем так: gemini тоже должен их эммитить. Ну типа ок, мы унесли их в runner
, но gemini должен их пробрасывать наверх
c656c61
to
faec51b
Compare
@@ -37,6 +41,7 @@ module.exports = class TestsRunner extends Runner { | |||
const suites = suiteCollection.allSuites(); | |||
|
|||
return q.fcall(() => { | |||
this.emit(RunnerEvents.START_RUNNER, this); | |||
this.emit(RunnerEvents.BEGIN, { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/cc @SevInf привет. Не помнишь кто подписывается на данное событие? В gemini и плагинах не получается найти.
3 similar comments
}); | ||
|
||
afterEach(() => sandbox.restore()); | ||
|
||
it('should passthrough "START_RUNNER" and "END_RUNNER" events', () => { | ||
sandbox.stub(temp, 'init'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
давай стаб наверх вынесем
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
я не могу его вынести, он тогда ломает другие тесты.
const onStartRunner = sandbox.spy().named('onStartRunner'); | ||
runner.on(RunnerEvents.START_RUNNER, onStartRunner); | ||
|
||
return run_().then(() => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
странное форматирование :)
const onEndRunner = sandbox.spy().named('onEndRunner'); | ||
runner.on(RunnerEvents.END_RUNNER, onEndRunner); | ||
|
||
return run_().then(() => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
и снова странное форматирование
/ok |
/ok |
eac2182
to
ab7ea60
Compare
ceaea7f
to
ab7ea60
Compare
@@ -37,6 +41,7 @@ module.exports = class TestsRunner extends Runner { | |||
const suites = suiteCollection.allSuites(); | |||
|
|||
return q.fcall(() => { | |||
this.emit(RunnerEvents.START_RUNNER, this); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@DudaGod Дима, вот это беда. Мы эммитили это событие (как и END_RUNNER
) через emitAndWait
. А теперь мы не ждем результата. Это очень плохо, т.к. на это событие может выполняться (и выполняется) всякая тяжелая инициализация + если в этой инициализации есть ошибки, мы их не видим
No description provided.