0000: 63 6f 6e 73 74 20 73 61 75 63 65 6c 61 62 73 42 const saucelabsB
0010: 72 6f 77 73 65 72 73 20 3d 20 72 65 71 75 69 72 rowsers = requir
0020: 65 28 27 2e 2f 73 61 75 63 65 6c 61 62 73 2d 62 e('./saucelabs-b
0030: 72 6f 77 73 65 72 73 27 29 2e 62 72 6f 77 73 65 rowsers').browse
0040: 72 73 2c 0a 20 20 52 49 4f 54 5f 57 49 54 48 5f rs,. RIOT_WITH_
0050: 43 4f 4d 50 49 4c 45 52 5f 50 41 54 48 20 3d 20 COMPILER_PATH =
0060: 27 2e 2e 2f 64 69 73 74 2f 72 69 6f 74 2f 72 69 '../dist/riot/ri
0070: 6f 74 2b 63 6f 6d 70 69 6c 65 72 2e 6a 73 27 2c ot+compiler.js',
0080: 0a 20 20 52 49 4f 54 5f 50 41 54 48 20 3d 20 27 . RIOT_PATH = '
0090: 2e 2e 2f 64 69 73 74 2f 72 69 6f 74 2f 72 69 6f ../dist/riot/rio
00a0: 74 2e 6a 73 27 2c 0a 20 20 69 73 44 65 62 75 67 t.js',. isDebug
00b0: 20 3d 20 70 72 6f 63 65 73 73 2e 65 6e 76 2e 44 = process.env.D
00c0: 45 42 55 47 2c 0a 20 20 69 73 53 61 75 63 65 6c EBUG,. isSaucel
00d0: 61 62 73 20 3d 20 70 72 6f 63 65 73 73 2e 65 6e abs = process.en
00e0: 76 2e 53 41 55 43 45 4c 41 42 53 2c 0a 20 20 69 v.SAUCELABS,. i
00f0: 73 54 72 61 76 69 73 20 3d 20 21 21 70 72 6f 63 sTravis = !!proc
0100: 65 73 73 2e 65 6e 76 2e 54 52 41 56 49 53 5f 42 ess.env.TRAVIS_B
0110: 55 49 4c 44 5f 4e 55 4d 42 45 52 2c 0a 20 20 2f UILD_NUMBER,. /
0120: 2f 20 73 70 6c 69 74 20 74 68 65 20 72 69 6f 74 / split the riot
0130: 2b 63 6f 6d 70 69 6c 65 72 20 74 65 73 74 73 20 +compiler tests
0140: 66 72 6f 6d 20 74 68 65 20 6e 6f 72 6d 61 6c 20 from the normal
0150: 72 69 6f 74 20 63 6f 72 65 20 74 65 73 74 73 0a riot core tests.
0160: 20 20 74 65 73 74 73 53 65 74 75 70 20 3d 20 27 testsSetup = '
0170: 2e 2f 73 70 65 63 73 2f 62 72 6f 77 73 65 72 2f ./specs/browser/
0180: 69 6e 64 65 78 2e 6a 73 27 2c 0a 20 20 74 65 73 index.js',. tes
0190: 74 46 69 6c 65 73 20 3d 20 60 2e 2f 73 70 65 63 tFiles = `./spec
01a0: 73 2f 24 7b 70 72 6f 63 65 73 73 2e 65 6e 76 2e s/${process.env.
01b0: 54 45 53 54 5f 46 4f 4c 44 45 52 7d 2f 2a 2a 2f TEST_FOLDER}/**/
01c0: 2a 2e 73 70 65 63 2e 6a 73 60 2c 0a 20 20 6e 65 *.spec.js`,. ne
01d0: 65 64 73 43 6f 6d 70 69 6c 65 72 20 3d 20 2f 63 edsCompiler = /c
01e0: 6f 6d 70 69 6c 65 72 2f 2e 74 65 73 74 28 70 72 ompiler/.test(pr
01f0: 6f 63 65 73 73 2e 65 6e 76 2e 54 45 53 54 5f 46 ocess.env.TEST_F
0200: 4f 4c 44 45 52 29 2c 0a 20 20 70 72 65 70 72 6f OLDER),. prepro
0210: 63 65 73 73 6f 72 73 20 3d 20 7b 7d 2c 0a 20 20 cessors = {},.
0220: 62 72 6f 77 73 65 72 73 20 3d 20 69 73 53 61 75 browsers = isSau
0230: 63 65 6c 61 62 73 20 3f 20 4f 62 6a 65 63 74 2e celabs ? Object.
0240: 6b 65 79 73 28 73 61 75 63 65 6c 61 62 73 42 72 keys(saucelabsBr
0250: 6f 77 73 65 72 73 29 20 3a 20 5b 27 43 68 72 6f owsers) : ['Chro
0260: 6d 65 48 65 61 64 6c 65 73 73 4e 6f 53 61 6e 64 meHeadlessNoSand
0270: 62 6f 78 27 5d 0a 0a 6d 6f 64 75 6c 65 2e 65 78 box']..module.ex
0280: 70 6f 72 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e ports = function
0290: 28 63 6f 6e 66 29 20 7b 0a 20 20 70 72 65 70 72 (conf) {. prepr
02a0: 6f 63 65 73 73 6f 72 73 5b 74 65 73 74 46 69 6c ocessors[testFil
02b0: 65 73 5d 20 3d 20 5b 27 72 6f 6c 6c 75 70 27 5d es] = ['rollup']
02c0: 0a 20 20 2f 2f 20 65 6e 61 62 6c 65 20 74 68 65 . // enable the
02d0: 20 63 6f 76 65 72 61 67 65 20 66 6f 72 20 72 69 coverage for ri
02e0: 6f 74 2e 6a 73 0a 20 20 69 66 20 28 21 6e 65 65 ot.js. if (!nee
02f0: 64 73 43 6f 6d 70 69 6c 65 72 20 26 26 20 21 69 dsCompiler && !i
0300: 73 44 65 62 75 67 29 20 70 72 65 70 72 6f 63 65 sDebug) preproce
0310: 73 73 6f 72 73 5b 52 49 4f 54 5f 50 41 54 48 5d ssors[RIOT_PATH]
0320: 20 3d 20 5b 27 63 6f 76 65 72 61 67 65 27 5d 0a = ['coverage'].
0330: 0a 20 20 63 6f 6e 66 2e 73 65 74 28 7b 0a 20 20 . conf.set({.
0340: 20 20 62 61 73 65 50 61 74 68 3a 20 27 27 2c 0a basePath: '',.
0350: 20 20 20 20 61 75 74 6f 57 61 74 63 68 3a 20 74 autoWatch: t
0360: 72 75 65 2c 0a 20 20 20 20 66 72 61 6d 65 77 6f rue,. framewo
0370: 72 6b 73 3a 20 5b 27 6d 6f 63 68 61 27 5d 2c 0a rks: ['mocha'],.
0380: 20 20 20 20 70 72 6f 78 69 65 73 3a 20 7b 0a 20 proxies: {.
0390: 20 20 20 20 20 27 2f 74 61 67 2f 27 3a 20 27 2f '/tag/': '/
03a0: 62 61 73 65 2f 74 61 67 2f 27 0a 20 20 20 20 7d base/tag/'. }
03b0: 2c 0a 20 20 20 20 66 69 6c 65 73 3a 20 5b 0a 20 ,. files: [.
03c0: 20 20 20 20 20 27 2e 2f 68 65 6c 70 65 72 73 2f './helpers/
03d0: 70 6f 6c 79 66 69 6c 6c 73 2e 6a 73 27 2c 0a 20 polyfills.js',.
03e0: 20 20 20 20 20 27 2e 2e 2f 6e 6f 64 65 5f 6d 6f '../node_mo
03f0: 64 75 6c 65 73 2f 63 68 61 69 2f 63 68 61 69 2e dules/chai/chai.
0400: 6a 73 27 2c 0a 20 20 20 20 20 20 27 2e 2e 2f 6e js',. '../n
0410: 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 73 69 6e 6f ode_modules/sino
0420: 6e 2f 70 6b 67 2f 73 69 6e 6f 6e 2e 6a 73 27 2c n/pkg/sinon.js',
0430: 0a 20 20 20 20 20 20 27 2e 2e 2f 6e 6f 64 65 5f . '../node_
0440: 6d 6f 64 75 6c 65 73 2f 73 69 6e 6f 6e 2d 63 68 modules/sinon-ch
0450: 61 69 2f 6c 69 62 2f 73 69 6e 6f 6e 2d 63 68 61 ai/lib/sinon-cha
0460: 69 2e 6a 73 27 2c 0a 20 20 20 20 20 20 7b 0a 20 i.js',. {.
0470: 20 20 20 20 20 20 20 70 61 74 74 65 72 6e 3a 20 pattern:
0480: 27 74 61 67 2f 2a 2e 74 61 67 27 2c 0a 20 20 20 'tag/*.tag',.
0490: 20 20 20 20 20 73 65 72 76 65 64 3a 20 74 72 75 served: tru
04a0: 65 2c 0a 20 20 20 20 20 20 20 20 69 6e 63 6c 75 e,. inclu
04b0: 64 65 64 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 ded: false.
04c0: 20 7d 2c 0a 20 20 20 20 20 20 6e 65 65 64 73 43 },. needsC
04d0: 6f 6d 70 69 6c 65 72 20 3f 20 52 49 4f 54 5f 57 ompiler ? RIOT_W
04e0: 49 54 48 5f 43 4f 4d 50 49 4c 45 52 5f 50 41 54 ITH_COMPILER_PAT
04f0: 48 20 3a 20 52 49 4f 54 5f 50 41 54 48 2c 0a 20 H : RIOT_PATH,.
0500: 20 20 20 20 20 74 65 73 74 73 53 65 74 75 70 2c testsSetup,
0510: 0a 20 20 20 20 20 20 74 65 73 74 46 69 6c 65 73 . testFiles
0520: 0a 20 20 20 20 5d 2c 0a 20 20 20 20 73 61 75 63 . ],. sauc
0530: 65 4c 61 62 73 3a 20 7b 0a 20 20 20 20 20 20 62 eLabs: {. b
0540: 75 69 6c 64 3a 20 27 54 52 41 56 49 53 20 23 27 uild: 'TRAVIS #'
0550: 20 2b 20 70 72 6f 63 65 73 73 2e 65 6e 76 2e 54 + process.env.T
0560: 52 41 56 49 53 5f 42 55 49 4c 44 5f 4e 55 4d 42 RAVIS_BUILD_NUMB
0570: 45 52 20 2b 20 27 20 28 27 20 2b 20 70 72 6f 63 ER + ' (' + proc
0580: 65 73 73 2e 65 6e 76 2e 54 52 41 56 49 53 5f 42 ess.env.TRAVIS_B
0590: 55 49 4c 44 5f 49 44 20 2b 20 27 29 27 2c 0a 20 UILD_ID + ')',.
05a0: 20 20 20 20 20 74 75 6e 6e 65 6c 49 64 65 6e 74 tunnelIdent
05b0: 69 66 69 65 72 3a 20 70 72 6f 63 65 73 73 2e 65 ifier: process.e
05c0: 6e 76 2e 54 52 41 56 49 53 5f 4a 4f 42 5f 4e 55 nv.TRAVIS_JOB_NU
05d0: 4d 42 45 52 2c 0a 20 20 20 20 20 20 74 65 73 74 MBER,. test
05e0: 4e 61 6d 65 3a 20 60 72 69 6f 74 6a 73 24 7b 20 Name: `riotjs${
05f0: 6e 65 65 64 73 43 6f 6d 70 69 6c 65 72 20 3f 20 needsCompiler ?
0600: 27 2b 63 6f 6d 70 69 6c 65 72 27 20 3a 20 27 27 '+compiler' : ''
0610: 7d 60 2c 0a 20 20 20 20 7d 2c 0a 20 20 20 20 63 }`,. },. c
0620: 61 70 74 75 72 65 54 69 6d 65 6f 75 74 3a 20 33 aptureTimeout: 3
0630: 30 30 30 30 30 2c 0a 20 20 20 20 62 72 6f 77 73 00000,. brows
0640: 65 72 4e 6f 41 63 74 69 76 69 74 79 54 69 6d 65 erNoActivityTime
0650: 6f 75 74 3a 20 33 30 30 30 30 30 2c 0a 20 20 20 out: 300000,.
0660: 20 62 72 6f 77 73 65 72 44 69 73 63 6f 6e 6e 65 browserDisconne
0670: 63 74 54 6f 6c 65 72 61 6e 63 65 3a 20 32 2c 0a ctTolerance: 2,.
0680: 20 20 20 20 63 75 73 74 6f 6d 4c 61 75 6e 63 68 customLaunch
0690: 65 72 73 3a 20 4f 62 6a 65 63 74 2e 61 73 73 69 ers: Object.assi
06a0: 67 6e 28 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 gn(. {.
06b0: 20 20 20 20 43 68 72 6f 6d 65 48 65 61 64 6c 65 ChromeHeadle
06c0: 73 73 4e 6f 53 61 6e 64 62 6f 78 3a 20 7b 0a 20 ssNoSandbox: {.
06d0: 20 20 20 20 20 20 20 20 20 62 61 73 65 3a 20 27 base: '
06e0: 43 68 72 6f 6d 65 48 65 61 64 6c 65 73 73 27 2c ChromeHeadless',
06f0: 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 . flags
0700: 3a 20 5b 27 2d 2d 6e 6f 2d 73 61 6e 64 62 6f 78 : ['--no-sandbox
0710: 27 5d 2c 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 '],. }.
0720: 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 73 61 75 },. sau
0730: 63 65 6c 61 62 73 42 72 6f 77 73 65 72 73 0a 20 celabsBrowsers.
0740: 20 20 20 29 2c 0a 20 20 20 20 62 72 6f 77 73 65 ),. browse
0750: 72 73 3a 20 62 72 6f 77 73 65 72 73 2c 0a 0a 20 rs: browsers,..
0760: 20 20 20 72 65 70 6f 72 74 65 72 73 3a 20 5b 27 reporters: ['
0770: 73 61 75 63 65 6c 61 62 73 27 5d 0a 20 20 20 20 saucelabs'].
0780: 20 20 2e 63 6f 6e 63 61 74 28 69 73 53 61 75 63 .concat(isSauc
0790: 65 6c 61 62 73 20 3f 20 5b 5d 20 3a 20 5b 27 63 elabs ? [] : ['c
07a0: 6f 76 65 72 61 67 65 27 5d 29 0a 20 20 20 20 20 overage']).
07b0: 20 2e 63 6f 6e 63 61 74 28 69 73 54 72 61 76 69 .concat(isTravi
07c0: 73 20 3f 20 5b 5d 20 3a 20 27 70 72 6f 67 72 65 s ? [] : 'progre
07d0: 73 73 27 29 2c 0a 0a 20 20 20 20 70 72 65 70 72 ss'),.. prepr
07e0: 6f 63 65 73 73 6f 72 73 3a 20 70 72 65 70 72 6f ocessors: prepro
07f0: 63 65 73 73 6f 72 73 2c 0a 0a 20 20 20 20 72 6f cessors,.. ro
0800: 6c 6c 75 70 50 72 65 70 72 6f 63 65 73 73 6f 72 llupPreprocessor
0810: 3a 20 7b 0a 20 20 20 20 20 20 2f 2f 20 75 73 65 : {. // use
0820: 20 6f 75 72 20 64 65 66 61 75 6c 74 20 72 6f 6c our default rol
0830: 6c 75 70 20 70 6c 75 67 69 6e 73 20 61 64 64 69 lup plugins addi
0840: 6e 67 20 61 6c 73 6f 20 74 68 65 20 72 69 6f 74 ng also the riot
0850: 20 70 6c 75 67 69 6e 0a 20 20 20 20 20 20 2f 2f plugin. //
0860: 20 74 6f 20 69 6d 70 6f 72 74 20 64 69 6e 61 6d to import dinam
0870: 69 63 61 6c 6c 79 20 74 68 65 20 74 61 67 73 0a ically the tags.
0880: 20 20 20 20 20 20 65 78 74 65 72 6e 61 6c 3a 20 external:
0890: 5b 27 72 69 6f 74 27 2c 20 27 65 78 74 65 72 6e ['riot', 'extern
08a0: 61 6c 2d 68 65 6c 70 65 72 73 27 5d 2c 0a 20 20 al-helpers'],.
08b0: 20 20 20 20 70 6c 75 67 69 6e 73 3a 20 5b 0a 20 plugins: [.
08c0: 20 20 20 20 20 20 20 72 65 71 75 69 72 65 28 27 require('
08d0: 72 6f 6c 6c 75 70 2d 70 6c 75 67 69 6e 2d 72 69 rollup-plugin-ri
08e0: 6f 74 27 29 28 29 0a 20 20 20 20 20 20 5d 2e 63 ot')(). ].c
08f0: 6f 6e 63 61 74 28 72 65 71 75 69 72 65 28 27 2e oncat(require('.
0900: 2e 2f 63 6f 6e 66 69 67 2f 64 65 66 61 75 6c 74 ./config/default
0910: 73 27 29 2e 70 6c 75 67 69 6e 73 29 2c 0a 20 20 s').plugins),.
0920: 20 20 20 20 6f 75 74 70 75 74 3a 20 7b 0a 20 20 output: {.
0930: 20 20 20 20 20 20 66 6f 72 6d 61 74 3a 20 27 69 format: 'i
0940: 69 66 65 27 2c 0a 20 20 20 20 20 20 20 20 67 6c ife',. gl
0950: 6f 62 61 6c 73 3a 20 7b 0a 20 20 20 20 20 20 20 obals: {.
0960: 20 20 20 72 69 6f 74 3a 20 27 72 69 6f 74 27 0a riot: 'riot'.
0970: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
0980: 7d 2c 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 },. },.. c
0990: 6c 69 65 6e 74 3a 20 7b 0a 20 20 20 20 20 20 6d lient: {. m
09a0: 6f 63 68 61 3a 20 7b 0a 20 20 20 20 20 20 20 20 ocha: {.
09b0: 74 69 6d 65 6f 75 74 3a 20 69 73 53 61 75 63 65 timeout: isSauce
09c0: 6c 61 62 73 20 3f 20 33 30 30 30 30 20 3a 20 33 labs ? 30000 : 3
09d0: 30 30 30 2c 20 2f 2f 20 73 61 75 63 65 6c 61 62 000, // saucelab
09e0: 20 74 65 73 74 73 20 63 61 6e 20 62 65 20 72 65 tests can be re
09f0: 61 6c 6c 79 20 72 65 61 6c 6c 79 20 73 6c 6f 77 ally really slow
0a00: 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 68 61 6e . // chan
0a10: 67 65 20 4b 61 72 6d 61 27 73 20 64 65 62 75 67 ge Karma's debug
0a20: 2e 68 74 6d 6c 20 74 6f 20 74 68 65 20 6d 6f 63 .html to the moc
0a30: 68 61 20 77 65 62 20 72 65 70 6f 72 74 65 72 0a ha web reporter.
0a40: 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 65 72 reporter
0a50: 3a 20 27 68 74 6d 6c 27 0a 20 20 20 20 20 20 7d : 'html'. }
0a60: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 6f 76 . },.. cov
0a70: 65 72 61 67 65 52 65 70 6f 72 74 65 72 3a 20 7b erageReporter: {
0a80: 0a 20 20 20 20 20 20 64 69 72 3a 20 27 2e 2e 2f . dir: '../
0a90: 63 6f 76 65 72 61 67 65 27 2c 0a 20 20 20 20 20 coverage',.
0aa0: 20 72 65 70 6f 72 74 65 72 73 3a 20 5b 7b 0a 20 reporters: [{.
0ab0: 20 20 20 20 20 20 20 74 79 70 65 3a 20 27 6c 63 type: 'lc
0ac0: 6f 76 27 2c 0a 20 20 20 20 20 20 20 20 73 75 62 ov',. sub
0ad0: 64 69 72 3a 20 27 72 65 70 6f 72 74 2d 6c 63 6f dir: 'report-lco
0ae0: 76 27 0a 20 20 20 20 20 20 7d 5d 0a 20 20 20 20 v'. }].
0af0: 7d 2c 0a 0a 20 20 20 20 73 69 6e 67 6c 65 52 75 },.. singleRu
0b00: 6e 3a 20 74 72 75 65 0a 20 20 7d 29 0a 7d 0a n: true. }).}.