Mocha: рд╡рд┐рдХрд▓реНрдк рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдорд╛рд░реНрдЪ 2015  ┬╖  71рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mochajs/mocha

рдореИрдВ рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдкреИрдЯрд░реНрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреВрдВ рдЬреЛ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдПрдХ рдЙрдЪрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рди рдХрд░реЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ ignore рдореЗрдВ glob ignore рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

рд╡рд┐рдЪрд╛рд░? рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЬрд▓реНрджреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

feature good-first-issue help wanted usability

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

image

рд╕рднреА 71 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдк рдмреЗрд╣рддрд░ рджреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛
рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдПред рд╡рд╣реА рдореИрдВрдиреЗ рдХрд┐рдпрд╛ред
Am 04.03.2015 15:52 schrieb "рдХрд╛рдЗрд▓ рдкреА рдбреЗрд╡рд┐рд╕" рд╕реВрдЪрдирд╛рдПрдВ @github.com:

рдореИрдВ рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдкреИрдЯрд░реНрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдореИрдВ рдХрд░ рд╕рдХреВрдВ
рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
рдЬрдм рддрдХ рд╡реЗ рдПрдХ рдЙрдЪрд┐рдд рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рддрдм рддрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ
рдкреИрдЯрд░реНрдиред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрдкреЗрдХреНрд╖рд╛ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ
рдЧреНрд▓реЛрдм рдореЗрдВред

рд╡рд┐рдЪрд╛рд░? рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЬрд▓реНрджреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mochajs/mocha/issues/1577

рдореИрдВ (рдФрд░ рдЕрддреАрдд рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдм рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рд╣реИ рдХрд┐ рдЧреНрд▓реЛрдм рдХреА рдЕрдирджреЗрдЦреА рд╡рд╣реАрдВ рд╣реИред

рдЧреНрд▓реЛрдм рдЗрдЧреНрдиреЛрд░ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╕рд┐рд░реНрдл рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдкрд░ рдХреЛрдИ рдЖрдкрддреНрддрд┐?

рдореБрдЭреЗ рдмрд╕ рдЗрд╕рдХреА рднреА рдЬрд╝рд░реВрд░рдд рдереА рдФрд░ рдпрд╣ рджреЗрдЦрдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдореЛрдЪрд╛ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ "testApp" рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореЛрдЪрд╛ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ mocha.opts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЬреЛрдбрд╝ рд╕рдХреЗрдВ, рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрде рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдЕрдиреНрдп рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЙрдк-рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХреЗрдВред

рдЬрдм рд╣рдо testApp рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЗрдкреЛ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝ рд╣реЛрдЧрд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╣рд╛рдпрдХ рд╣реИред

@KylePDavis @toddbluhm

рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╢рд╛рдпрдж рд╕рд┐рд░реНрдл рдпрд╣реА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

$ mocha $(find test/ ! -path '*testApp*')

рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рд░реЛрдорд╛рдВрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ recursive рдзреНрд╡рдЬ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдбрд╝ рдкрд░ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, Makefile , Gruntfile.js , gulpfile.js , рдЖрджрд┐, рдЖрджрд┐ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @boneskull рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рдмрдирд╛рддрд╛ рд╣реИ - рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рджреА рдЧрдИ рд╣реИ:

$ tree .
.
тФФтФАтФА spec
    тФЬтФАтФА fixtures
    тФЬтФАтФА integration
    тФФтФАтФА unit

4 directories, 0 files

рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред Json рддрд╛рдХрд┐ рдЖрдк рдмрд╕ npm test рдЪрд▓рд╛ рд╕рдХреЗрдВ

  "scripts": {
    "test": "mocha spec/unit spec/integration"
  }

рдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде:

$ tree .
.
тФФтФАтФА src
    тФФтФАтФА models
        тФЬтФАтФА user.js
        тФФтФАтФА userSpec.js

2 directories, 2 files

рдЖрдк @boneskull рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдЪрд╢реНрдорд╛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдХреЗрд╡рд▓ Spec рдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЪрд▓рд╛рдПрдЧрд╛)

  "scripts": {
    "test": "mocha $(find src -name '*Spec.js')"
  }

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдлрд┐рдХреНрд╕реНрдб :)

@danielstjules рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╛рдо рдореЗрдВ Spec рд╕рд╛рде рдХрд┐рд╕реА рднреА dir рдХреЛ рдорд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред рд╢рд╛рдпрдж рдЖрдк -name '*.spec.js'

рд╣рд╛рдБ, рддреБрдо рд╕рд╣реА рд╣реЛ! рджрд┐рдорд╛рдЧрд╝ рдХрд╛ рджрд╣реАред рдпрд╣ рдмрд╛рдд рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдХрдорд╛рдВрдб:

  "scripts": {
    "test": "mocha $(find src -name '*Spec.js')"
  }

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдПрдХ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ: рдореИрдВ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлреАрдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИ рдЬрд┐рдирдореЗрдВ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдирд╛рдордХрд░рдг рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓рдЧрд╛рддрд╛рд░ file рддрд░реНрдХ рдпрд╛ grep рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ node_modules рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА - рдЧреБрд▓-рдореЛрдЪрд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╕рд┐рд░реНрдл gulp рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдирдлрд░рдд рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

рдореИрдВ рдПрдХ рдкрд▓ рдФрд░ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ +1 рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдХрд▓реНрдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

main.js
main.spec.js
utilities.js
utilities.spec.js

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдЧрдарди рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рдмрдирд╛рдо рдкрд░реАрдХреНрд╖рдг рдЦреЛрдЬрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ; рдЖрдк рд╣рдореЗрд╢рд╛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдареАрдХ рдмрдЧрд▓ рдореЗрдВ рдмреИрдард╛ рд╣реЛ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИ рдФрд░ рдореЗрд░реА рдирд┐рд░реНрдорд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛред

рдореЗрд░реЗ рдЧреИрд░-рдорд╛рдирдХ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдЬреЛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╡рд╣ рд╕рднреА рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореЗрд░реЗ рд╕рднреА рдлреЛрд▓реНрдбрд░ рдиреЛрдб_рдореЙрдбрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рдмреЙрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВ; рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╡реИрд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓рдЧрднрдЧ рд╕рднреА рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддрд╛рдХрд┐ рд╕рдорддрд╛ рдЕрдЪреНрдЫреА рд▓рдЧреЗред

рдирдорд╕реНрддреЗ, рдореЗрд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг *.test.js рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╕рднреА tests рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рднреА рдореЛрдЪрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрде рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реИ рдЬреЛ ./test/**/*.js ред рдореИрдВ рдЙрд╕рдХреЛ рдХреИрд╕реЗ рдХрд░реВ?

рдпрд╣рд╛рдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдирд╛рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЪрд▓ рд░рд╣реЗ рдкрд░реАрдХреНрд╖рдг рд╡реАрд╕реАрдПрд╕ рдореЗрдВ рдмрд╣реБрдд рд╢реЛрд░ рдкреИрджрд╛ рдХрд░реЗрдВрдЧреЗред

@calebthebrewer рд╢реБрдХреНрд░ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ gulp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ;) рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

+1 @calebthebrewer

рдХреЛрдгреАрдп 2.0 рдФрд░ рдкреЙрд▓рд┐рдорд░ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЛрдб рдореЗрдВ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ @ рдХреНрд░рд┐рд╕рд┐рд╕рдЧреЗрд▓ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдПрдХ рд╕рд╛рдл, рдореЙрдбреНрдпреВрд▓рд░, рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдкрджрд╛рдиреБрдХреНрд░рдо рд░рдЦрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ q рд╡рд╛рджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджреВрд░рджрд░реНрд╢рд┐рддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

import q from 'q';

import authRouterTest from '../app/routes/_authentication.router.e2e.js';

import productRouterTest from '../app/routes/_product.router.e2e.js';

import productModelTest from '../app/models/product.model.spec.js';

// Dynamically constructed sequence of functions
let funcs = [ productModelTest(), authRouterTest(), productRouterTest() ];

// This function takes an array of promise-producing functions and
// runs them sequentially.
let execTests = () => {

    let result = q();

    funcs.forEach((f) => {

        result = result.then(f);
    });

    return result;
};

// Execute tests
execTests();

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд╣реАрдВ рд╕реЗ рднреА рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ test/ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдЖрдк рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рд╡рд╛рджреЗ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ

import q from 'q'

export default () => {

    let Q = q.defer();

    describe('something', () => {

        it('should', (done) => {

            ...
        });
    });

    describe('something', () => {

        it('should', (done) => {

            ...
        });

        it('should', (done) => {

            ...

            Q.resolve('test complete');
        });
    });

    return Q.promise;
};

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╣рдореЗрдВ рдЕрднреА рднреА рдЧреНрд▓реЛрдм рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдмреИрд╢ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

+1

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ node_modules рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред Exclusion recursive рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╕рд╛рдереА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

@godspeedelbow рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА? рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ node_modules рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирддрд╛ред

FWIW, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдорд┐рд▓реА рд╣реИрдВ рдЬрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ (рдЬреБрдбрд╝рдирд╛рд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ IMHO рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред

node_modules рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рддрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдпрд╛ рддреЛ рдХреБрдЫ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдореИрдВ рдЬрд╣рд╛рдБ рдореИрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрдЧрд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реВрдБ, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ рдмрдирд╛рдо рдЙрдиреНрд╣реЗрдВ рдПрдХрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдХреЛрдб рд╕реЗ рджреВрд░ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ) рдпрд╛ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рдПрдХ рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рдХреА рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ (рд╢рд╛рдпрдж рд╡реЗ рдЖрдВрддрд░рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдПрдирдкреАрдПрдо рд░реЗрдкреЛ рдореЗрдВ рдирд╣реАрдВ, рдХрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рднреАрддрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдПрдХ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреА рдЬреНрдпрд╛рджрд╛ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрд░реНрдорд┐рдирд▓ рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдореИрдВ рдЗрд╕реЗ рдХрд╛рдВрдЯрд╛ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдмрд╕ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░реВрдБрдЧрд╛ рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдкреИрдЯрд░реНрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рд╣реИрдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдореЛрдЪрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЦреЛрдЬрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

@ рдХреНрд░рд┐рд╕рд┐рд╕рдЧреЗрд▓ рдЖрдк рд╣рдореЗрд╢рд╛ src/**/*.js рдФрд░ src/**/*.spec.js ред рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЧреЛ рдФрд░ рдЬрдВрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ред рддрдереНрдп рдХреА рдмрд╛рдд, рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд╕ рдЗрд╕реЗ рдЦреБрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓реЗрдВред рдпрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдкреИрдЪ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рддрд░реНрдХ рдПрдХ рд╕реНрдкреЗрдЧреЗрдЯреА рдХреЛрдб рд░рд╛рдЬреНрдп рдорд╢реАрди рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рд╣реИ)ред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореЛрдЪрд╛, рдЬреИрд╕реНрдореАрди, рдЯреЗрдк, рдЖрджрд┐ рдХрд╛ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред рдпрд╣ рдЕрднреА рднреА рдЦрд┐рд▓реМрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдПрдЯреАрдПрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдореИрдВ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдврд╛рдВрдЪреЗ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдЪрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬрдм рддрдХ рдореИрдВ рдЙрди рд╕реНрдерд┐рд░ рд╣реЛ рдЧрдпрд╛ (рдЬрдм рд╡реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдкреАрдЖрдИ рдЕрдм рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЬрдм рд╕реЗ рдореИрдВ рдЦреБрдж рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдЬреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ) рдЬрдм рддрдХ рдореИрдВ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП Chai рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рд╣рд╛рдБ, рдпрд╣ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рдХрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреБрдХреНрддрд┐ рдФрд░ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреА рдЬреЛрдбрд╝реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреАред рдореИрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрдм рдореИрдВ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрддрд╛ рд╣реВрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдмрд╣рд┐рд╖реНрдХрд░рдг рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЛрдЪрд╛ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреА рдЫрд╛рдк рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдХрдЖрд░реНрдбреНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдВрдж рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдирд╣реАрдВ рдерд╛ рдмрдирд╛рдо рдкреИрдЪ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ред рдЕрдЧрд░ рдпрд╣ рдХреБрдЫ рдореЛрдЪрд╛ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЕрдЧрд░ рдпрд╣ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреИрдЪ рдХреЛ рдХреНрд░реИрдВрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@ рдХреНрд░рд╛рдЗрд╕реАрдЧреЗрд▓ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреИрдЪ рдХреЛ рдХреНрд░реИрдВрдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЕрдирдЬрд╛рдиреЗ, рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред FWIW, _this_ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд╣реЛрдирд╛ рдмрд╛рдХреА рд╣реИ, рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрд╣реБрдд рдХрдордЬреЛрд░ рдерд╛ рдпрджрд┐ рдЖрдк рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░ рдорд╛рдирддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрдПрдирдпреВ find рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдпрд╣ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗрдм рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛ рд░рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдиреЛрдб рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрдЧрд╛ ( рдмрдВрдж рдореБрджреНрджрд╛ , рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдкреАрдЖрд░ )ред

рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдХреЗ рд▓рд┐рдП +1ред рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛ рдореИрдВрдиреЗ рдмрдирд╛рдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ app рдпрд╛ src рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рдПрдХ рдЪрд░ рд░рд╛рд╢рд┐ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

.mochaignore рдпрд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ **/*.spec.js рдЧреНрд▓реЛрдм рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ node_modules рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд▓рдЧрднрдЧ рд╕рднреА рдЕрдиреНрдп рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .npmignore , .gitignore , .jshintignore , рдФрд░ jscs .jscsrc рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ рдореЛрдЪрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЬреБрд░реНрд░рд╛рдм рджрд░рд╛рдЬ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреВрд░ рдШрдЯрдХ / рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрдЧрдарди рдХреА рдУрд░ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред

@isiahmeadows рдЬреИрд╕рд╛ рдХрд┐ рджреВрд╕рд░реЛрдВ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП services/ , routes/ , рдЖрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ node_modules рд╣реИред рдореИрдВ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рд╣реБрдЖ рдЬреЛ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ node_modules рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреАрд╕рд░рд╛ рдЯреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди, рдпрд╛ gulp, рдпрд╛ рдХреБрдЫ рдФрд░) рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реЛред

рдореИрдВ рдЗрд╕реЗ рдореЛрдЪрд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ :)

@godspeedelbow @adambuczynski рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди :)

  "scripts": {
    "test": "mocha $(find . -name '*.spec.js' ! -ipath '*node_modules*')"
  }

рд╣рд╛рдп @danielstjules рдзрдиреНрдпрд╡рд╛рдж! рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ find . -name '*.spec.js' ! -ipath '*node_modules*' рдХреЗрд╡рд▓ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдкрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдЯрд░реНрди рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП '*.spec.js' рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдерд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП _all_ js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

  "scripts": {
    "test": "mocha $(find . -name '*.js' ! -ipath '*node_modules*')"
  }

@danielstjules рдЪреАрдпрд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЬрдмрдХрд┐ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдбрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рдмреАрдЪ, рдореИрдВрдиреЗ app рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХреВрдВ рдФрд░ node_modules рдпрд╛ рдЕрдиреНрдп рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди

@danielstjules рд╣рд╛рдБ, рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓реЗрдВ *.spec.js рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж * NIX рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ред

рдореИрдВ рдЗрд╕реЗ рдЖрдЧрд╛рдореА рдкреНрд░рдореБрдЦ рдХреЗ рд▓рд┐рдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ .mochaignore рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдореБрдЭреЗ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ

@boneskull рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдкрд╛рд╕рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ "рдорд╛рдирдХ" .mocharc рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ mocha.opts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред test рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ?

рдЗрд╕рд╕реЗ рдореЛрдЪрд╛ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдкред рд╕рд╛рде рд╣реА, рдпрд╣ рд╣реИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдордЬрдмреВрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдПрдХ test рдлрд╝реЛрд▓реНрдбрд░ рдмрд╕ рдХреЗ рд▓рд┐рдП mocha.opts ред (рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд░рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ)ред

@adambuczynski рдмрд┐рд▓реНрдХреБрд▓ред рдореИрдВ mocha.opts рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ

@adambuczynski рд╢рд╛рдирджрд╛рд░ рдЯрд┐рдкреНрдкрдгреАред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдореИрдВ рдПрдХ рдорд╛рдирдХ .mocharc рд╡рд┐рдХрд▓реНрдк рдлрд╝рд╛рдЗрд▓ рднреА рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдореИрдВ рдЕрдм рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд░рдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред

+1, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред

@adambuczynski @boneskull рдкреНрд░рд▓реЗрдЦрди рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдСрдкреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --opts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ mocha --opts .mocharc рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╕рд╛рднрд╛рд░ @GRUBES рдЕрдВрдд рдореЗрдВ, рдореИрдВ test рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд░рд╣рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рд╡рд╣рд╛рдБ рд░рдЦрддрд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред

рдЧреНрд▓реЛрдм рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдирджреЗрдЦрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рдЧреНрд▓реЛрдм рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдЪреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди рдпрд╛ рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛрдбрд╝реЗрдВред рдиреЛрдЯ: рдЕрдирджреЗрдЦрд╛ рдкреИрдЯрд░реНрди рд╣рдореЗрд╢рд╛ рдбреЙрдЯ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ: рд╕рд╣реА рдореЛрдб, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИред :-)

@ inf3rno BTW, рдпрд╣ рд╢рд╛рдпрдж рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реЛрдЧрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреИрда рдЧрдпрд╛ рдФрд░ рдкреИрдЪ рд▓рд┐рдЦрд╛ рдерд╛ред

@isiahmeadows рд╕реБрдиреЛ, рд▓реЗрдХрд┐рди рд╡рд╣ рдореБрдЭреЗ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред : рдбреА

рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдПрдХ рдкреАрдЖрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ test рдФрд░ test-integration рдХреЗ рд▓рд┐рдП рдХрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЙрд▓реЛрдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛

2036, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдлрд╝рд╛рдЗрд▓, рдПрдХ рдкреАрдЖрд░ # 2173 рд╣реИ

рд╢рд╛рдпрдж --exclude рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдпрд╛ mocha test/*.js !test/_*.js рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ

рд╕рдордЭреЗ рдЧреНрд▓реЛрдм рдЖрдЙрдЯ: mocha "./{,!(node_modules)/**/}*.test.js" рд╕рднреА * .test.js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдиреЛрдб_рдореЙрдбрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдФрд░ mocha "./test/**/!(notThisOne).js" рдЯреЗрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рдХрд░ notThisnne.js

рдпрд╣ рд╕рднреА рджреЗрдЦреЗрдВ:
https://github.com/isaacs/node-glob#glob -primer
https://github.com/isaacs/node-glob/issues/62

@ScottFreeCode

рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рджреМрдбрд╝рддреЗ рд╕рдордп рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ

mocha "./{,!(node_modules)/**/}*.test.js"
-bash: !: event not found

рдХреНрдпрд╛ рдЗрд╕ рдЪрд░рд┐рддреНрд░ рдХреЛ рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@mdumouchel рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдирд╣реАрдВ рддреЛ рд╣рд╛рдБ рдХрд░рддрд╛ рд╣реИред

@isiahmeadows

рдлрд┐рд░ рднреА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ

node_modules/mocha/lib/utils.js:630
        throw new Error("cannot resolve path (or pattern) '" + path + "'");
              ^
Error: cannot resolve path (or pattern) './{,!(node_modules)/**/}*.test.js'

рдореИрдВ рд╕рд┐рд░реНрдл рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ

mocha $(find . -type d -name node_modules -prune -o -name '*.test.js')

@ mdumouchel рдпрджрд┐ рдЖрдк рд╕рдВрд╕реНрдХрд░рдг 2.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрд╛рдиреА

рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВрдиреЗ рдмреИрд╢ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рджреЛрд╣рд░реЗ-рдЙрджреНрдзрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдХрд┐рд╕реА рдХреЛ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ / рднрд╛рдЧрдиреЗ рдХрд╛ рдкрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдмреИрд╢ рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ "рдкрде рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛" рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкрде рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ; рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ ".test.js" рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╕рдВрдЧрдд рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдХреЙрдкреА рдХрд░рдХреЗ рдЗрд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ ...

# 2173 рджреЗрдЦреЗрдВ

Eslint --ignore-path (рдФрд░ .eslintignore ) рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджреЗрдЦреЗрдВ: http://eslint.org/docs/user-guide/command-line-interface#ignoring -files

рдореЛрдЪрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрдорд╛рд▓ рд╣реЛрдЧрд╛: two_hearts:


рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди:

eslint "test/!(fixtures)/**/*.js" "test/*.js"

рдореЗрд░реА рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛

.
тФФтФАтФА src
тФФтФАтФА test
    тФФтФАтФА fixtures
        тФФтФАтФА data.js
    тФЬтФАтФА foo.js
    тФФтФАтФА bar.js

рд╕рдорд╕реНрдпрд╛: рдореЛрдЪрд╛ рдореБрдЭреЗ рдПрдХ Error: cannot resolve path (or pattern) рдЕрдЧрд░ 2 рд░рд╛рд╕реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХреБрдЫ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ:: рдирд┐рд░рд╛рд╢-рдкреАрдбрд╝рд┐рдд:

рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  1. рд╕рдорд░реНрдерди --exclude <glob-or-path>
  2. рд╕рдорд░реНрдерди _multiple_ --exclude рдЙрджрд╛рд╣рд░рдг
  3. рд╕рднреА рдЧреИрд░-рд╡рд┐рдХрд▓реНрдк рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА --exclude рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕реВрдЪреА рдореЗрдВ рдорд┐рд▓рд╛рдПрдВ (рдореВрд▓ рд░реВрдк рд╕реЗ
  4. рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо _n_ рдЧреИрд░-рд╡рд┐рдХрд▓реНрдк рддрд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдЧреНрд▓реЛрдм рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ _additive_ рд╣реИ; рдпрд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

$ mocha 'src/**/*.spec.js' '!src/forbidden/**/*.spec.js'

рддреЛ рдКрдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ --exclude рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ! рд▓рд┐рдП рд╕рд┐рд░реНрдл рдЪреАрдиреА рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, .mochaignore (# 2036) рд╕рдорд░реНрдерди рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред рдПрдХ 3p рдореЙрдбреНрдпреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо .gitignore -рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪ рд╕рдХреЗрдВ; рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ ESLint рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИред

... рдФрд░ рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдмрд┐рдирд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдЧреНрд▓рдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ; # 2355 рджреЗрдЦреЗрдВ

рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЕрднреА рднреА --ignore-path рдЬреИрд╕рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ tests рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

+1
рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрд▓реЛрдВ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ

@isiahmeadows

рдЖрдк рд╣рдореЗрд╢рд╛ src / / .js рдФрд░ src / /.spec.js рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдирд╣реАрдВ, рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ - **/* рдкреНрд░рддрд┐рдорд╛рди рдорд┐рд▓рд╛рди рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

EDIT: @ScottFreeCode рдХрд╛ рдЬрд╡рд╛рдм рдиреАрдЪреЗ рд╣реИ

**/* рдкреНрд░рддрд┐рдорд╛рди рдорд┐рд▓рд╛рди рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рд░рд╛рд╕реНрддреЗ рдЙрджреНрдзреГрдд рд╣реИрдВ ?

+1

image

рдЬреИрд╕рд╛ рдХрд┐ https://github.com/zinserjan/mocha-webpack/issues/124 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:

src/ рдЕрдВрджрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕реЗ server.ts рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдЖрдЧ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдЖрдорддреМрд░ рдкрд░ рдХрд╡рд░реЗрдЬ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреЛрд░реНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПред

рдореЗрд░реА рд░рд╛рдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдореЛрдЪрд╛ рдХреЛ рдПрдХ рдЕрдирджреЗрдЦреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдордп рдХреЗ рдмрд╛рдж рднреА, рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдЕрднреА рднреА рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореЛрдЪрд╛ рдХреИрдирди рд╣реИред рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлрд╝реАрдЪрд░ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рд╕рднреА рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЖрдХрд╛рдВрдХреНрд╖рд╛ рд░рдЦрддреЗ рд╣реИрдВ? рд╣рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХреЛ рдмреИрд╢ рддрдХ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЦреНрд╡рд╛рд╣рд┐рд╢ рд░рдЦрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ 2017 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред

рдореИрдВ рдпрд╣ рднреА рдмрддрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдмрд╛рд╢ рдХреЗ !(glob) (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ Bash-ism рд╣реИ, POSIX рдорд╛рдирдХ рднреА рдирд╣реАрдВ рд╣реИ) рдХреЗ рдмрд░рд╛рдмрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдореЛрдЪрд╛ рдХреЗ рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдореЗрдВ рдХреЛрдИ рдмреИрд╢ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЧреНрд▓реЛрдм рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред (рдиреЛрдЯ: рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╢реЗрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧреНрд▓рдмреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдореЛрдЪрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд▓реЛрдмрд╕реНрдЯрд╛рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ ** рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рдмрдирд╛рддрд╛ рд╣реИред)

@ScottFreeCode рдХреНрдпрд╛ рдЖрдк рдЧреНрд▓реЛрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп extglob: true рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЧреНрд▓реЛрдм / рдорд┐рдирд┐рдореИрдЪ рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред

рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл рдЧреНрд▓реЛрдм рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдкрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕реА рд╕рдордп рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд░рд╣рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛрд╣рд░реЗ-рд╕реНрдЯрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рднреА рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреИрдЯрд░реНрди рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЛрдИ рдЦрд╛рдореА рдорд┐рд▓рддреА рд╣реИ), рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕реНрдкрд╖реНрдЯ ignore / exclude рд╡рд┐рдХрд▓реНрдк рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рд╛рдн рд╣реИред рдХрдИ рдлрд╛рдпрджреЗ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ:

  • рдХрдо рдЕрд╕реНрдкрд╖реНрдЯ
  • рд╡рд┐рднрд┐рдиреНрди OSes рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдФрд░ рдирд┐рдпрдо рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЭрдбрд╝рдкреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЖрд╕рд╛рди рд╣реИ
  • рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рд╕реВрдЪреА рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рдмрд╣рд┐рд╖реНрдХреГрдд рд╕реВрдЪреА рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕реВрдЪреА рдирдХрд╛рд░рд╛рддреНрдордХ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ

рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╢реЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред ; ^)

рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рд╕реВрдЪреА рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рдмрд╣рд┐рд╖реНрдХреГрдд рд╕реВрдЪреА рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕реВрдЪреА рдирдХрд╛рд░рд╛рддреНрдордХ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ

рд╕рдЪ рд╣реИ, рдФрд░ рдореИрдВ рдЙрд╕ almost рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдпрд╛ рдерд╛

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐:

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЕрдм рдЧреНрд▓рдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдкреАрдЖрд░ рднреЗрдЬреЗрдВред

рдХреНрдпрд╛ --exclude рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдЗрд╕реЗ рдбреЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@ sepo-рдПрдХ рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PR рдЦреЛрд▓рд╛ред
рдЖрдк рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ mocha -h ред

рд╣рд╛рдБ, рдореИрдВ рдореЛрдЪрд╛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЙрдиреНрдирдд рдФрд░ --exclude рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдбреЙрдХреНрд╕ рдХреЛ рд╡реИрд╕реЗ рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рд╕рд╛рднрд╛рд░ @outsideris

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

wzup picture wzup  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jamietre picture jamietre  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

helloravi picture helloravi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danielserrao picture danielserrao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

robertherber picture robertherber  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ