ãã¹ããã¡ã€ã«ãã¿ãŒã³ã«äžèŽãããã¡ã€ã«ã®ã¿ããã¹ãã§ããããã«ãé€å€ãã¿ãŒã³ãæäŸããæ©èœãå¿ èŠã§ãã ããã«ãããããŒã¿ãã¡ã€ã«ã劥åœãªãã¿ãŒã³ã«åŸã£ãŠããéããããŒã¿ãã¡ã€ã«ããã¹ããã¡ã€ã«ãšå ±åãããããšãã§ããŸãã
ããã¯ã glob
ignore
ãªãã·ã§ã³ãèšå®ãããªãã·ã§ã³ãæäŸããã ãã ãšæããŸãã
èãïŒ ãããããã°ãããã«PRã§ããŸãã
1ã€ã¯ãã¹ãçšããã1ã€ã¯ãã¹ãçšã®2ã€ã®äžŠåãã£ã¬ã¯ããªãäœæããæ¹ãããã§ãããã
ããŒã¿ãã¡ã€ã«çšã ãããç§ãããããšã§ãã
åå04.03.201515ïŒ52schriebãKylePDavisã [email protected] ïŒ
é€å€ãã¿ãŒã³ãæäŸã§ããããã«ããããšæããŸã
ãã¹ããã¡ã€ã«ã®ãã¿ãŒã³ã«äžèŽãããã¹ããã¡ã€ã«ã®ã¿ã ããã«ãããããŒã¿ãèš±å¯ãããŸã
劥åœãªãã®ã«åŸãéãããã¹ããã¡ã€ã«ãšå ±åãããã¡ã€ã«
ãã¿ãŒã³ãããã¯åã«ç¡èŠãªãã·ã§ã³ãèšå®ãããªãã·ã§ã³ãæäŸããããšã ãšæããŸã
ã°ããã§ãèãïŒ ãããããã°ãããã«PRã§ããŸãã
â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/mochajs/mocha/issues/1577ã
ç§ã¯ã§ããŸããïŒãããŠéå»ã«ããããŸããïŒããglob ignoreãããããã«ããããšã«æ°ä»ããã®ã§ãããããããå¿ èŠã¯ãããŸããã
ã³ãã³ãã©ã€ã³åŒæ°ãè¿œå ããŠglobignoreãªãã·ã§ã³ãèšå®ããã®ã¯éåžžã«ç°¡åã§ãã æåã«èããŠå°ã話ãåãããã£ãã ãã§ãã
ãã®ããã®PRãäœæããããšã«ç°è°ã¯ãããŸããïŒ
ç§ããããå¿ èŠã ã£ãã®ã§ãããã¢ã«ããŸã æã£ãŠããªãã£ãã®ã§ã³ã£ããããŸããã ããã¯çŽ æŽãããè¿œå ã«ãªããšæããŸãã ãã¹ããã©ã«ãå ã«ãtestAppããããããã¹ãå°çšã«äœ¿çšããŠããŸãã mochaããã®ãã©ã«ããŒå ã§ãã¹ããå®è¡ããããšããªãããã«ããŸãã ä»ã®ãã¹ãŠã®ãã¹ããµããã©ã«ããŒãæ瀺çã«å«ããã®ã§ã¯ãªããmocha.optsãã¡ã€ã«ã«excludeãè¿œå ããŠããã®ç¹å®ã®ãã¹ãé€å€ã§ãããšäŸ¿å©ã§ãã
testAppã移åããããšã¯ã§ããŸãããå®éã«ã¯ãªããžããªå ã®ä»ã®å Žæã«ã¯åãŸããããã¹ããã©ã«ããŒå ã®ç¹å®ã®ãã¡ã€ã«ãžã®çžå¯Ÿãã¹ãååŸããŸãã
ããã¯çŽ æŽãããè¿œå ã«ãªããšæããŸãã 確ãã«éèŠã§ã¯ãããŸãããã圹ã«ç«ã¡ãŸãã
@KylePDavis @toddbluhm
ãããå¿ èŠãªå Žåã¯ããããã
$ mocha $(find test/ ! -path '*testApp*')
ã§ããããç§ã¯ãã®ã¢ã€ãã¢ã«ããã»ã©è奮ããŠããŸããã ã·ã§ã«ã³ãã³ãMakefile
ã Gruntfile.js
ã gulpfile.js
ã§ãåãããšãéæã§ããã®ã§ã recursive
ãã©ã°ã®ååšã«ã€ããŠãå°ãæ°ã«ãªããŸãã gulpfile.js
ãªã©ã
@boneskullã¯è¯ãç¹ã ãšæããŸã-ããã¯ãã§ã«ããŸããŸãªæ¹æ³ã§éæå¯èœã§ãã ãããŠããããå®å šã«åé¿ããããã«ãã£ã¬ã¯ããªãæ§é åã§ãããšããäºå®ã¯å«ãŸããŠããŸããã ããšãã°ããã®æ§é ãäžããããå ŽåïŒ
$ tree .
.
âââ spec
âââ fixtures
âââ integration
âââ unit
4 directories, 0 files
package.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'
ã欲ããã§ããã
ãããããã ãïŒ Brainfartã ãããææããŠãããŠããããšãã
äŸã®ä¿®æ£ãããã³ãã³ãïŒ
"scripts": {
"test": "mocha $(find src -name '*Spec.js')"
}
ãã®æ©èœã®æå¹ãªäœ¿çšäŸã¯ãŸã ãããšæããŸãããã¡ã€ã«ãæ©èœããšã«ã°ã«ãŒãåããåŸåããããããåãã¹ããã¡ã€ã«ã¯ããã¹ãããŠããããžãã¯ãå«ããã¡ã€ã«ã®é£ã«ãããŸãã ãã¹ããã¡ã€ã«ã®åœåã¯ã file
åŒæ°ãŸãã¯grep
ãªãã·ã§ã³ã§äžè²«ããŠæ©èœããŸããã node_modules
ãããªãã®ã¯æ瀺çã«ç¡èŠããããšæããŸãã
æ¢ããŠãã人ã®ããã«-gulp-mochaã¯ãããéæããããšãã§ããŸããç§ã¯ç§ãããå¿
èŠããªããšããã«gulp
ãå«ããã®ãå«ãã§ãã
å°ãæéãåã£ãŠããã®ã¢ã€ãã¢ã+1ããããšæããŸãã éåžžã®JavaScriptãããžã§ã¯ããšã¯ç°ãªããç§ã¯GOãåäœãã¹ããè¡ãæ¹æ³ã«åŸãã®ã奜ãã§ããã¹ãããããã¹ãŠã®ãã¡ã€ã«ã®æšªã«ã¹ããã¯ãã¡ã€ã«ãå«ããŸãã ããšãã°ãç§ã®ãããžã§ã¯ãã®1ã€ã®ãã£ã¬ã¯ããªã¯æ¬¡ã®ããã«ãªããŸãã
main.js
main.spec.js
utilities.js
utilities.spec.js
ãã®ã¿ã€ãã®çµç¹ã§ã¯ããã¹ããã¡ã€ã«ã®åäžã®ãã£ã¬ã¯ããªãæãäžããããããã¹ããèŠã€ããã®ãã¯ããã«ç°¡åã§ããããšãããããŸããã ãã¹ãã¯ããã¹ããããã¡ã€ã«ã®ããé£ã«ããããã«ãã¹ã¯ãªããã¯ãããã€ãããããŒãžã§ã³ã®ãã¹ãŠã®.spec.jsãã¡ã€ã«ãã¹ã¯ãªããåããããšãåžžã«æåŸ ããŠããŸãã
ç§ã®éæšæºã®ã¬ã€ã¢ãŠãã®ããã«ãç§ãããããã®ã¯ãnode_modulesãã£ã¬ã¯ããªãé€ããã¹ãŠã®ãã©ã«ãã§ãã¹ãŠã®åäœãã¹ããå®è¡ããããšã§ãã
çŸåšãè¿ãã«Windowsããã¯ã¹ã¯ãããŸãããããã®æ€çŽ¢æ§æãWindowsã§æ©èœãããã©ããã¯ããããŸããã ç§ã®æèŠã§ã¯ãé€å€ãªãã·ã§ã³ã®æ¹ãã¯ããã«çŽæçã§ãã ããã«ãã»ãšãã©ãã¹ãŠã®åäœãã¹ããã¬ãŒã ã¯ãŒã¯ã«ã¯ããšã«ãããã¡ã€ã«ãç¡èŠããæ¹æ³ãå«ãŸããŠãããããããªãã£ãããã°äŸ¿å©ã§ãã
ããã«ã¡ã¯ãç§ã®ãã¹ãŠã®ãã¹ãã¯*.test.js
圢åŒããµããŒãããŠããŸãã ãããã¯ãã¹ãŠtests
ãã£ã¬ã¯ããªã«ãããŸãã çŸåšãé€å€ããããã¹ããããã€ããããŸãããmochaã®ããã©ã«ããã¹ã§ãã./test/**/*.js
ä¿æããŠããŸãã ãããã©ããã£ããåºæ¥ãã®ïŒ
ããã§ã¯ã2ã€ã®å¥ã ã®ãã£ã¬ã¯ããªãäœæããããšã¯ã§ããŸããããŸãããã£ã¬ã¯ããªéã§ãã¹ãã移åãããšãVCSã§å€ãã®ãã€ãºãçºçããããšã«åæããå¿ èŠããããŸãã
@calebthebrewerãããããããšã«ãç§ã¯ãããžã§ã¯ãã§
+1 @calebthebrewer
Angular 2.0ãšPolymerã§ã¯ã³ã³ããŒãã³ãã¢ãŒãã«ãªã£ãŠããã®ã§ã@ KrisSiegelã«åæããŸãã ãã¹ãŠã®ã³ãŒãããã³ãã«ã«ä¿ã€ããšã§ãã¯ãªãŒã³ã§ã¢ãžã¥ãŒã«åŒã®ãä¿å®ã容æãªãã¡ã€ã«éå±€ãç¶æãããŸãã
次ã®ãããªæ¹æ³ã§q
promiseã©ã€ãã©ãªã䜿çšããŠãã¹ããããŒãããéã«äºæž¬ã§ããåé¡ã¯ãããŸããã
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/
1ã€ã®ãã¹ããã¡ã€ã«ã眮ãããšãã§ããŸãã
æåŸã®ãã¹ããããã¯å ã§promiseã解決ããåãã¹ãã次ã®ããã«ãŸãšããããšãã§ããŸã
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;
};
ç§ãèããŠããªãããšããªãéããããã¯ããªãããŸãããããã§ãã
ãŸã ã°ãããç¡èŠããå¿ èŠããããŸãã bashã³ãã³ãã®äœ¿çšã¯ãã¯ãã¹ãã©ãããã©ãŒã ãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸããã
+1
æ¬åœã«node_modules
ãé€å€ããããšæããŸãã Exclusion
ã¯ã recursive
éåžžã«äŸ¿å©ãªã³ã³ãããªã³ã®ããã§ãã
@godspeedelbowãªããã®ç¹å®ã®ãã£ã¬ã¯ããªãæ瀺çã«ç¡èŠããå¿
èŠãããã®ã§ããããïŒ éåžžã node_modules
ããã¹ããã£ã¬ã¯ããªã«ãããšãã話ã¯èããŸããã
FWIWãç§ããããæ¬åœã«äœ¿ãããšãã§ããŸããã ãã¹ããã©ã€ãã©ãªèªäœãããã¯ããã«å€§ãããããžã§ã¯ããããã€ããããŸããããã«ããããã¹ããããé©åã«æŽçã§ããããã«ãªããŸãïŒãã£ã¯ã¹ãã£ã¯ãã¹ããã£ã¬ã¯ããªIMHOã«å±ããŸãïŒã
node_modules
ãç¡èŠããããšã¯ãäºæããªãããšãããŠãããšãïŒç§ããã¹ããããã¡ã€ã«ã®é£ã«ã¹ããã¯ãã¡ã€ã«ãä¿æããã®ã§ã¯ãªãããã¹ãããã³ãŒãããé¢ããŠåäžã®ãã©ã«ããŒã«ä¿æãããããªå ŽåïŒã«éèŠã«ãªããŸãã¡ã€ã³ãããžã§ã¯ããšããã«å«ãŸããããã€ãã®ãããžã§ã¯ãïŒããããããã¹ããããnpmãªããžããªã§ã¯ãªããå
éšã©ã€ãã©ãªã§ãïŒã«å¯ŸããŠåäœãã¹ããå®è¡ããŸãããç¬èªã®äŸåé¢ä¿å
ã§åäœãã¹ããå®è¡ããããªãå Žåã
ãã®åé¡ã¯ãã1幎è¿ãç¶ããŠããã®ã§ãå®è£ ãããããšã¯ããŸãæåŸ ã§ããŸããã ç§ã®æèŠã§ã¯ãåé¿çã«ã¯ãã©ãããã©ãŒã åºæã®ã¿ãŒããã«ã³ãã³ããå¿ èŠã§ãããããã¹ããããã£ã¬ã¯ããªããšã«ãã¿ãŒã³ãæ瀺çã«æå®ãããããå®è£ ããããšãéèŠã§ãïŒãããã£ãŠããã¹ãã¹ã¯ãªããã«ãã£ã¬ã¯ããªãè¿œå ããå¿ èŠããããŸãïŒã ç§ã¯ããããã©ãŒã¯ããŠèªåã§ããã ãã§ãããåãã£ã¬ã¯ããªãšãã¿ãŒã³ãæå®ããããããŒãªæ¹æ³ã䜿çšããæ¹ããã¢ã«ã«å®è£ ããæéãèŠã€ãããããç°¡åã§ãã
@KrisSiegelãã€ã§ãsrc/**/*.js
ãšsrc/**/*.spec.js
ãŸãã Goãããžã§ã¯ããšRustãããžã§ã¯ãã§ã¯ããããžã§ã¯ãã«ãŒãããéå§ãããããé »ç¹ã«èŠãããŸãã å®éã®ãšãããåŸè
ã¯æ¯èŒçãŸãã§ãã
圌ãã¯èª°ããèªåã§ãããããã®ã«æéããããã®ãåŸ ã£ãŠããã ãã ãšæããŸããã äœæããã®ãé£ãããããã®ããã«ã¯èŠããŸããïŒããžãã¯ãã¹ãã²ããã£ã³ãŒãã¹ããŒããã·ã³ã®æ··ä¹±ã§ãªãéãïŒã
ç§ã¯å®éã«èªåèªèº«ã®ãã¹ããã¬ãŒã ã¯ãŒã¯ã«åãçµãã§ããã®ã§ãå人çã«ãããè¡ãããã«é§ãç«ãŠãããŠããŸãããã¢ã«ããžã£ã¹ãã³ãããŒããªã©ã®å®å šãªä»£æ¿ãšãªãããšãç®çãšããŠããŸãããã³ã¢ã¯ããã·ã³ãã«ã§åŒ·åã§ãã ãšã¯ãããããã¡ããããžã§ã¯ãã®ATMã§ããããŸã é²è¡äžã®äœæ¥ãå€ãããŸãã
ç§ã¯Mochaã䜿çšããŠããã¬ãŒã ã¯ãŒã¯ãå¹æçã«ããŒãã¹ãã©ããããŠããŸãã ã¢ãµãŒã·ã§ã³ãå®å®ãããŸã§ãæåã¯Chaiã䜿çšããŠããŸããïŒãã¬ãŒã ã¯ãŒã¯ã®ã¢ãµãŒã·ã§ã³ã䜿çšããŠãã¹ãããŠãããããçŸåšã¯å®è³ªçã«APIããã¯ãããŠããŸãïŒã
ãããããã¯åé¿çã§ããã¹ããã¯ãšãœãŒã¹ãã¡ã€ã«ã®ãã¢ãªã³ã°ã«ã€ããŠãåãããšãèšããŸããããã®ããã«æ§é åãããJavaScriptãããžã§ã¯ãã¯ããŸãèŠãããŸããã ç§ã¯åºæ¬çã«ãã®ãã¿ãŒã³ã䜿çšããŸãããç¬èªã®ã«ã¹ã¿ã ãã«ãã·ã¹ãã ã§ãã§ã«ããªã倧ããªãããžã§ã¯ãã«åå ããå Žåããããå€æŽããã®ã¯å¿ ãããç°¡åã§ã¯ãããŸããã
Excludeã¯ãå€ãã®ãŠãŒãã£ãªãã£ãæã£ãŠããããªãåºæ¬çãªãã¿ãŒã³ã§ãã ã¢ã«ã«ã¯ãããå¿ èŠã ãšæããŸã:)ã ç§ã®å°è±¡ã§ã¯ãããŸããããã®åé¡ã¯ãã©ãããã©ãŒã åºæã®åé¿çã«åºã¥ããŠã¯ããŒãºããããããããããåŸ ã€ã®ã§ã¯ãªããæãŸãããªããšããå°è±¡ã§ããã ãããã¢ã«ã®äººã ãå®éã«æãã§ãããã®ã§ãããªãããããæ°é±é以å ã«è¡ãããªããã°ãç§ã¯ç¢ºãã«ããããã¯ã©ã³ã¯ã¢ãŠãããããšãã§ããŸãã
@KrisSiegel誰ããå®éã«ããããã¯ã©ã³ã¯ã¢ãŠãããå ŽåãçŽæçã§ãªãç¹å¥ãªæ§æãè¿œå ã®ãã©ã°ãå«ãŸããŠããªãéãããããã¯ããããããŒãžããããšç¢ºä¿¡ããŠããŸãã FWIWã_this_ã®PRã¯ãŸã ãããŸããããã©ãããã©ãŒã ã«äŸåããããšãèãããšããã®åé¡ã解決ãããçç±ã¯ããªã匱ãã£ãã§ãã ãããŠãããã€ãã®ãã¹ããå®è¡ããããã ãã«GNU find
ãã€ã³ã¹ããŒã«ããããšãããšããªãWindowsãŠãŒã¶ãŒã¯ããŸãèŠãããŸããã
ã¯ããŒãºãããå¯èœæ§ããããŸãããããŒãã®å®è£ ã¯ãããã«éžè±ããŸãããåæ§ã®ç¶æ³ãã¯ããŒãºãããåé¡ãé²è¡äžã®PR ïŒã
ããã䟡å€ããããã®ã®ããã«+1ã ç§ãäœæãããããžã§ã¯ãã«ã¯ã app
ãŸãã¯src
ãã©ã«ããŒã¯å¿
èŠãããŸãããã代ããã«ãããŸããŸãªã€ã³ã¿ãŒãã§ã€ã¹å®è£
ãæã€ããŸããŸãªéã®ååä»ããã©ã«ããŒããããŸãã ãŸããã€ã³ã¿ãŒãã§ã€ã¹ããšã«ãã¹ãããã³ãã«ãããŸãŸã«ãããã¹ãã«1ã€ã®ãã©ã«ããŒã䜿çšããããã«åŒ·å¶ãããªãããã«ããŸãã
.mochaignore
ãŸãã¯ä»ã®ãªãã·ã§ã³ã§ç¡èŠãããã¡ã€ã«ãæå®ã§ããããšãçæ³çã§ããããããã°ã **/*.spec.js
ã°ããã§å®è¡ã§ãã node_modules
ããã®ãã¹ããå«ãŸããå¯èœæ§ãããããšãå¿é
ããå¿
èŠããããŸããã
ä»ã®ã»ãšãã©ãã¹ãŠã®ãã«ãããŒã«ã§ãããå¯èœã§ãã .npmignore
ã .gitignore
ã .jshintignore
ããããjscsã«ã¯.jscsrc
ä»ããŠæ§æãããªãã·ã§ã³ããããŸãã éŽäžã®åŒãåºãã®ã¢ãããŒãããé¢ããŠãã³ã³ããŒãã³ã/æ©èœãã¡ã€ã«ãšãã©ã«ããŒã®ç·šæã«åãã£ãŠç§»åãã人ãå¢ããŠããã®ã§ãã¢ã«ãããããµããŒãããã®ã§ããã°äŸ¿å©ã§ãã
@isiahmeadowsã¯ãä»ã®äººãèšåããããã«ãç°¡åã«å€æŽã§ããªããã©ã«ããŒæ§é ã§ç«ã¡åŸçããŠããããã services/
ã routes/
ãªã©ãnode_modules
åãããã«ãããžã§ã¯ãã®ã«ãŒãã«ãããŸãã node_modules
ãé€å€ããããã®3çªç®ã®ããŒã«ïŒã³ãã³ãã©ã€ã³ãgulpããŸãã¯ãã®ä»ã®ãã®ïŒãå¿
èŠã§ãã
ã©ãããå§ããã°ãããããã£ãŠããã°ãèªåã§ã¢ã«ã«å®è£ ããããšæããŸã:)
@ godspeedelbow @ adambuczynskiäžæçãªè§£æ±ºç:)
"scripts": {
"test": "mocha $(find . -name '*.spec.js' ! -ipath '*node_modules*')"
}
ããã«ã¡ã¯@danielstjulesããããšãïŒ è©ŠããŠã¿ãŸããããäœããã®çç±ã§find . -name '*.spec.js' ! -ipath '*node_modules*'
ã¯ãã¹ããã¡ã€ã«ã1ã€ããèŠã€ããŸããã
ãã¹ããåŸããã¿ãŒã³ã«åãããã«'*.spec.js'
ãæŽæ°ããŸãããïŒ ããšãã°ã_all_ jsãã¡ã€ã«ãç
§åããã«ã¯ã次ã䜿çšããŸãã
"scripts": {
"test": "mocha $(find . -name '*.js' ! -ipath '*node_modules*')"
}
@danielstjulesã¯æ声ãäžããŸãããããã¯ç§ãä¿¡ããŠããWindowsã§ã¯æ©èœããŸããããã®ã¢ããªã§ã¯åé¡ãããŸããããç§ã¯ãããå ¥ããã®ããããã£ãŠããŸãã
ãããŸã§ã®éãã¢ããªã®ã³ãŒããšãã¹ããapp
ãµããã©ã«ããŒã«ç§»åããŠããã®ãã©ã«ããŒããã¹ãã®å¯Ÿè±¡ã«ãã node_modules
ããã®ä»ã®ãã©ã«ããŒã«ã€ããŠå¿é
ããå¿
èŠããªãããã«ããŸããã
@danielstjulesããããã¹ãŠã®ãã¹ããã¡ã€ã«ã¯*.spec.js
圢åŒã§ãã äœããã®çç±ã§ä»¥åã¯æ©èœããŸããã§ããããåé¡ãªãæ©èœããããã«ãªããŸããã ãã®* NIXåé¿çãããããšãã
ããã次ã®ã¡ãžã£ãŒã®ããã«è¡ãããã®ãèŠããã§ãã ç¹ã«.mochaignore
ãµããŒãããããšã¯ç§ã«ã¯åççã ãšæããŸã
@boneskullããããšããããã¯çŽ æŽãããããšã§ãã
次ã®ã¡ãžã£ãŒãªãªãŒã¹ã§ã¯ã mocha.opts
ã䜿çšããã®ã§ã¯ãªãããããžã§ã¯ãã®ã«ãŒãã«é
眮ã§ãããªãã·ã§ã³ãæž¡ãããã®ãããæšæºçãªã .mocharc
å®è£
ãæ€èšããŸããã test
ãã©ã«ãã«ãããŸããïŒ
ããã«ãããMochaã®æ§æãã¯ããã«ç°¡åã«ãªããä»ã®ããŒã«ã§è¡ãããæ¹æ³ãšäžèŽããŸãã ããã«ã mocha.opts
ããã ãã«test
ãã©ã«ããçšæããå¿
èŠã¯ãããŸããã ïŒãã¹ãŠã®ãã¹ããããã¹ãããã¢ãžã¥ãŒã«ãšäžŠã¹ãŠé
眮ããŸãïŒã
@adambuczynski絶察ã«ã ç§ã¯mocha.opts
ã®ãã¡ã³ã§ã¯ãããŸãã
@adambuczynskiçŽ æŽãããã³ã¡ã³ãã åæããŸããæšæºã®.mocharcãªãã·ã§ã³ãã¡ã€ã«ãå¿ èŠã§ããã³ãŒãã®æšªã«ãã¹ããä¿æããã®ã¯ãšãŠãè¯ãã®ã§ããã¹ããã£ã¬ã¯ããªã䜿çšããªããªããŸããã
+1ãé€å€ãæ¬åœã«å¿ èŠã ãšæããŸãã
@adambuczynski @boneskullããã¥ã¡ã³ãã«ã¯ãäŸã¯ç€ºãããŠããŸãããã --opts
ã䜿çšããŠoptsãã¡ã€ã«ãžã®ãã¹ãæå®ã§ããããšã瀺ãããŠããŸãã ç§ã¯çŸåšã®ãããžã§ã¯ãã§ããã䜿çšããŠããã mocha --opts .mocharc
ãšããŠæ©èœããããšã確èªã§ããŸã
@GRUBESã«æè¬ããŸãã çµå±ããã¹ãã»ããã¢ãããã«ããŒãããã«é
眮ããã®ã§ã test
ãã©ã«ããŒã䜿ãç¶ããŸãããããããå¯èœã§ããããšãç¥ã£ãŠãããšããã§ãããã
Globã«ã¯ç¡èŠãªãã·ã§ã³ãããã®ã§ãé€å€ãªãã·ã§ã³ãè¿œå ããŠglobignoreã«è»¢éããã ãã§ã倧ããããšã§ã¯ãããŸããã
ç¡èŠäžèŽãé€å€ããã«ã¯ããã¿ãŒã³ãŸãã¯globãã¿ãŒã³ã®é åãè¿œå ããŸãã 泚ïŒç¡èŠãã¿ãŒã³ã¯ãä»ã®èšå®ã«é¢ä¿ãªããåžžã«dotïŒtrueã¢ãŒãã§ãã
ãªãããã«1幎以äžãããã®ãããããŸããã :-)
@ inf3rnoãšããã§ã誰ããå®éã«åº§ã£ãŠããããæžããŠããã°ãããã¯ãããããã£ãšæ©ã解決ãããã§ãããã
@isiahmeadowsãããã§ãããã¯ç§ã§ã¯ãããŸããã ïŒD
ããã§ãããã¯ãŸã PRãå¿
èŠã§ããïŒ test
ãštest-integration
ã®è€æ°ã®ãã£ã¬ã¯ããªã§ã¯ãªãããã¹ããã¡ã€ã«ã®ã³ãã±ãŒã·ã§ã³ã䜿çšãããã®ã§ããããè¿œå ã§ããã°å¹žãã§ãã
--exclude
ãããªãªãã·ã§ã³ãè¿œå ãããšãããããããŸããã
ãŸãã¯mocha test/*.js !test/_*.js
ãããªãã®ããµããŒãããŸã
èãåºããã°ããïŒ mocha "./{,!(node_modules)/**/}*.test.js"
ã¯node_modulesãé€ããã¹ãŠã®* .test.jsãã¡ã€ã«ãååŸãã mocha "./test/**/!(notThisOne).js"
notThisOne.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'
çµå±ãfindã³ãã³ãã䜿çšããã ãã§ãã
mocha $(find . -type d -name node_modules -prune -o -name '*.test.js')
@mdumouchelããŒãžã§ã³2.xïŒã€ãŸããnpmã«ãããã®ïŒã䜿çšããŠããå Žåã¯ããšã«ããæ©èœããŸããã ãµããŒãã¯3.xãIIRCã§éå§ãããŸãã
ããã¯å¥åŠãªããšã§ããBashã§è©ŠããŠã¿ãŠãäºéåŒçšç¬Šã䜿çšã§ãããšæããŸããã WindowsãšBashã®äž¡æ¹ã§æ©èœããæ§æ/ãšã¹ã±ãŒããç¥ã£ãŠãã人ã¯ããŸããïŒ
ãŸããããã¹ã解決ã§ããŸããããšãããšã©ãŒã¯ããã¹ããããžã§ã¯ãå ã®ã©ã®ãã¡ã€ã«ãšãäžèŽããªãããšãæå³ããŠãããšç¢ºä¿¡ããŠããŸãã ç§ãäžãããã¹ã¯ã察å¿ãããœãŒã¹ãã¡ã€ã«ã®æšªã«ã.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
åé¡ïŒ2ã€ã®ãã¹ã®ãããããäœããšäžèŽããªãå Žåãã¢ã«ã¯ç§ã«Error: cannot resolve path (or pattern)
ãäžããŸãã
OKãããã§ç§ã¯å®¹èµŠããŸãã ããã¯ãŠãŒã¶ãŒãã¬ã³ããªãŒã§ã¯ãããŸããã
ããã¯ç§ãã¡ããã¹ãã ãšæãããšã§ãïŒ
--exclude <glob-or-path>
ãµããŒã--exclude
_è€æ°_ã€ã³ã¹ã¿ã³ã¹ããµããŒããã--exclude
ãªãã·ã§ã³ãšãã¹ãŠã®éãªãã·ã§ã³åŒæ°ã1ã€ã®ãªã¹ãã«çµåããŸãïŒåºæ¬çã«ã¯çŸåšã_n_éãªãã·ã§ã³åŒæ°ããµããŒãããŠããŸããããã¯ãã¹ãŠã°ããã§ããå¯èœæ§ããããŸãããããã¯_additive_ã®ã¿ã§ãã ããã¯ããªããæåŸ ããããã«ã¯æ©èœããŸããïŒ
$ mocha 'src/**/*.spec.js' '!src/forbidden/**/*.spec.js'
ãããã£ãŠãäžèšã¯æ©èœããã¯ãã§ããã --exclude
ã¯å®éã«ã¯!
åãªãç ç³ã§ãã
ããã«ã .mochaignore
ïŒïŒ2036ïŒã®ãµããŒãã¯è¯ãããã«èãããŸãããå¥ã®åé¡ã§ãã .gitignore
ãããªåäœãããããã«ãã«ã§ãã3pã¢ãžã¥ãŒã«ãããã¯ãã§ãã ESLintãè¡ã£ãŠããããšã¯ãç§ãã¡ã®ç®çã«ã¯ååã§ãããšç¢ºä¿¡ããŠããŸãã
...æ確ã§ãªãå Žåã¯ãã³ãã³ãã©ã€ã³ã§åŒçšç¬Šã§å²ãŸããŠããªãã°ããã䜿çšããªãã§ãã ããã ïŒ2355ãåç §
é©ããããšã«ã --ignore-path
ãããªãªãã·ã§ã³ã¯ãŸã ãããŸããããã¹ãŠã®ãã¹ããtests
ãã©ã«ããŒã«å
¥ãã以å€ã«ãã¢ãžã¥ãŒã«ãšäžç·ã«ãã¹ãã眮ãããšãã§ããªãçç±ã¯ãããŸããã
+1
ãã¿ãŒã³ã§ãã¡ã€ã«ããã£ã¬ã¯ããªãç¡èŠããããšã¯éåžžã«äŸ¿å©ãªæ©èœã§ã
@isiahmeadows
ãã€ã§ãsrc / /.js
ããããã§ããŸããã§ãã- **/*
ãã¿ãŒã³ãããã³ã°ãå£ããŠãããååž°çã«æ©èœããŸããã
ç·šéïŒ @ScottFreeCodeã«ã¯ä»¥äžã®çãããããŸã
**/*
ãã¿ãŒã³ãããã³ã°ã¯å£ããŠãããååž°çã«æ©èœããŸããã
ããªãã®éã¯åŒçšãããŠããŸããïŒ
+1
https://github.com/zinserjan/mocha-webpack/issues/124ã§èª¬æãããŠããããã«ïŒ
src/
äžã«ã¯ããšã¯ã¹ãã¬ã¹ãµãŒããŒãèµ·åããããã¯ã°ã©ãŠã³ãã§å®è¡ãããserver.ts
ãšãããã¡ã€ã«ããããŸãã éåžžãã«ãã¬ããžã®å®è¡äžã¯ãµãŒããŒã皌åããŠãããããããŒãã¯ãã§ã«äœ¿çšãããŠããŸãã
ãããã£ãŠãããã¯æãŸãããªãããã®ãã¡ã€ã«ã®ã¿ãé€å€ãããŸãã
ã¢ã«ã¯ç¡èŠããå¿ èŠããããšããç§ã®æèŠãè¡šæããŸãããªããªãããã®éãã£ãšãã¡ã³ããã¯ãŸã 説åŸåãå¿ èŠãšããŠããããã§ãã
ã¢ã«ã¯ã«ãã³ã§ãã ä»ã®ãã¹ãŠã®ãã¹ããã¬ãŒã ã¯ãŒã¯ãç®æããŠãããã¹ããã¬ãŒã ã¯ãŒã¯ã®ã¯ãã¹ãã©ãããã©ãŒã æ©èœã»ããã®æ°ŽæºãäžããŠã¿ãŸãããïŒ ãã¹ãŠãBashã«ä»»ããããšãç±æããã®ããããã¹ãã§ãã ãã®2017幎ã¯ãã§ã«ã
ãŸããWindowsã®äººã
ã¯Bashã®!(glob)
ïŒå®éã«ã¯Bash䞻矩ã§ãããPOSIXæšæºã§ãããããŸããïŒã«çžåœãããã®ãæã£ãŠããªãããšãææããŠãããŸãã
Mochaã®globingã¯ãGlob JSã¢ãžã¥ãŒã«ãä»ããŠåŠçãããããããã®ãŸãŸã§ã¯Bashã®äŸåé¢ä¿ã¯ãããŸããã ïŒæ³šïŒãã¹ãåŒçšã¯äŸãã°ãã©ã®ããã¢ã«ã¯åžæãšã¯ç°ãªãã·ã§ã«åŠçã°ãããåé¿ããããã«å¿
èŠãªå ŽåããããŸã**
globstaræ¡åŒµåãªããŸãã¯äœã§ãããã¯ãããŸããããã®ç¹å¥ãªãã®ã§ããïŒ
@ScottFreeCodeglobã䜿çšãããšãã«extglob: true
ã䜿çšããŸããïŒ ãã®å Žåã¯ãåé¿çãšããŠãã®æ§æã§ãããéããããšãã§ããŸãïŒglob / minimatchã¯ãã®ãªãã·ã§ã³ãæå¹ã«ããŠãµããŒãããŠããããïŒã
globãžã®ãã¹ãæž¡ããŠããããã§ãã ããæç¹ã§ã°ãããã¿ãŒã³ãä»ããŠåŠå®ãæ©èœããããšã¯ééããããŸããããããã¯ã¢ãžã¥ãŒã«ã®å€ãããŒãžã§ã³ã§ãã£ãå¯èœæ§ããããŸããïŒ ãããã«ãããç§ãã¡ã¯äºéæã®æ¯ãèãã®ãã¹ããè¡ã£ãŠããã®ã§ã誰ãããã¹ããæåºããŠããã€ãã®åŠå®ãã¿ãŒã³ãæ©èœããããšã確èªãããå ŽåïŒãŸãã¯èª°ãããã§ã«æã£ãŠããã°ããã³ã°ãã¹ãã«æ¬ é¥ãèŠã€ããå ŽåïŒãããã¯çŽ æŽãããããšã§ãã
ãã ããæ瀺çãªignore
/ exclude
ãªãã·ã§ã³ã䜿çšããããšã«ã¯æ確ãªå©ç¹ããããŸãã å®éã«ã¯ãè€æ°ã®å©ç¹ããããŸãã
çŸç¶ãç¹å®ã®ã·ã§ã«ã«äŸåããããšãæå³ããŠããªãããšãæ確ã«ãããã£ãã ãã§ãã ; ^ïŒ
å€ãã®å Žåãå å«ãªã¹ãããé€å€ãªã¹ããåŒãããã®ã¯ãåŠå®ãããéšåãæã€å å«ãªã¹ããããåçŽã§ã
æ¬åœã§ãããããŠç§ã¯ããã«ã€ããŠã»ãšãã©å¿ããŠããŸããð
ãã®åé¡ã«æ¥ã人ïŒ
åé¿çã¯ãããããµããŒããããŠããã¯ããªã®ã§ãã°ããã䜿çšããããšã§ãã 誰ãããã®ç¹å®ã®è¡åãæãã§ãããªããPRãéã£ãŠãã ããã
--exclude
ãªãã·ã§ã³ã¯æ©èœããŸããïŒ
ããã¥ã¡ã³ãã§èŠã€ãããŸããã
@ sepo-oneããã¥ã¡ã³ããæŽæ°ããããã«PRãéããŸããã
mocha -h
å©çšå¯èœãªãã¹ãŠã®ãªãã·ã§ã³ã確èªã§ããŸãã
ãããç§ã¯å€ãããŒãžã§ã³ã®ã¢ã«ã䜿ã£ãŠããŸãã ã¢ããã°ã¬ãŒãããã --exclude
ãªãã·ã§ã³ããããŸãã
ãšã«ããããã¥ã¡ã³ããæŽæ°ããå¿
èŠããããšæããŸãã
ããããšã@outsideris
æãåèã«ãªãã³ã¡ã³ã