Best JavaScript code snippet using stryker-parent
serve.js
Source:serve.js
1/**2 * Description: Serve a project3 * Author: Liam4 * CreatedAt: 2017-1216-12165 * UpdateBy:6 * UpdateAt:7 */ 8var webpack = require('webpack'),9 GMILOG = require ('../util/gmi-log'),10 chokidar = require ('chokidar')11// Generate webpack config object 12var CommonsChunkPlugin = require ("webpack/lib/optimize/CommonsChunkPlugin"),13 path = require ('path'),14 fs = require ('fs'),15 fsExtra = require ('fs-extra'),16 uglifyJsPlugin = webpack.optimize.UglifyJsPlugin,17 srcDir = path.resolve (process.cwd (), 'src'),18 distDir = path.resolve (process.cwd (), 'dist')19// Render Html20var glob = require ('glob'),21 minify = require ('html-minifier').minify22// Generate sass file23var sass = require ('node-sass')24if (fs.existsSync (path.resolve (process.cwd (), 'projectConfig.js'))) {25 var projectConfig = require (path.resolve (process.cwd (), 'projectConfig.js'))26}27// Express28var express = require ('express')29var app = express ()30var opener = require ('opener')31// RunServer Object32RunServer = module.exports = {}33RunServer.run = function () {34 RunServer.readyUp ()35 RunServer.startServe ()36}37RunServer.readyUp = function () {38 RunServer.webpackTool ()39 RunServer.renderHtml ()40 RunServer.renderSass ()41 RunServer.copyAssets ()42 // RunServer.copyJsLib ()43 RunServer.copyLib ()44 RunServer.watch ()45 // RunServer.copyScssLib ()46}47RunServer.startServe = function () {48 app.use (projectConfig.root, express.static (distDir))49 // app.get(projectConfig.root, function (req, res) {50 // res.send('Hello World')51 // res.redirect ('/')52 // })53 if (projectConfig) {54 app.listen (projectConfig.port)55 var browserObject = opener ("http://localhost:" + projectConfig.port + projectConfig.root)56 }57 // console.log (browserObject)58}59RunServer.localhost = function (port) {60 app.use ('/', express.static (path.resolve (process.cwd (), '')))61 app.listen (port)62 var browserTemp = opener ("http://localhost:" + port)63}64RunServer.renderSass = function () {65 setTimeout ( () => {66 sass.render ({67 file: 'src/scss/pages/main.scss',68 includePaths: ['src/scss/pages/'],69 outFile: 'dist/css',70 sourceMap: true,71 outputStyle: 'compressed',72 }, (error, result) => {73 if (error) {74 GMILOG.E_LOG (error)75 } else {76 fsExtra.outputFile ('dist/css/style.min.css', result.css, err => {77 if (err) console.log (err)78 })79 }80 })81 }, 500)82}83RunServer.renderHtml = function () {84 // console.log ("run render : " + srcDir + '/**/*.html')85 glob ('src/pages/**/*.html', {}, (err, files) => {86 // console.log (files)87 if (err) {88 console.log (err)89 }90 if (files.length < 1) {91 console.log ("no files")92 // return93 }94 files.forEach (path => {95 fs.readFile (path, 'utf8', (err, content) => {96 if (err) console.log (err)97 renderRecursive (path, content)98 })99 })100 })101}102RunServer.copyAssets = function () {103 fsExtra.copy ('src/assets/', 'dist/assets/', (err) => {104 if (err) console.log (err)105 console.log ("Assets" + " copied!") 106 })107}108RunServer.copyJsLib = function () {109 fsExtra.copy ('src/js/lib', 'dist/js/lib', (err) => {110 if (err) console.log (err)111 console.log ("js lib" + " copied!") 112 })113}114RunServer.copyLib = function () {115 fsExtra.copy ('src/lib', 'dist/lib', (err) => {116 if (err) console.log (err)117 console.log ("lib" + " copied!") 118 })119}120RunServer.copyScssLib = function () {121 fsExtra.copy ('src/scss/lib', 'dist/css/lib', (err) => {122 if (err) console.log (err)123 console.log ("scss lib" + " copied!") 124 })125}126/**127 * add 128 * unlink129 * unlinkDir130 * change131 * 132 */133RunServer.watch = function () {134 chokidar.watch ('src', {135 // ignored: /^src(\\|\/)js(\\|\/)pages.*\.js$/,136 ignoreInitial: true137 }).on ('all', (event, path) => {138 console.log (`event : ${event} ; path : ${path}`)139 if (/^src(\\|\/)js(\\|\/)pages.*\.js$/.test (path)) {140 console.log (path)141 if (event == "add" || event == "unlink") {142 RunServer.webpackTool (event)143 }144 } else if (/^src(\\|\/)pages.*\.html$/.test (path)) {145 console.log(path)146 RunServer.renderHtml ()147 } else if (/^src(\\|\/)scss(\\|\/)pages.*\.scss$/.test (path)) {148 RunServer.renderSass ()149 } else if (/^src(\\|\/)assets*/.test (path)) {150 console.log (path)151 if (event == "add") {152 fsExtra.copy (path, path.replace ('src', 'dist'), (err) => {153 if (err) console.log (err)154 console.log (path + " copied!") 155 })156 }157 } else if (/^src(\\|\/)lib.*\.js$/.test (path)) {158 if (event != "unlink" && event != "unlinkDir") {159 fsExtra.copy (path, path.replace ('src', 'dist'), (err) => {160 if (err) console.log (err)161 console.log (path + " copied!") 162 })163 }164 }165 })166}167RunServer.webpackTool = function (event) {168 if (event == "add" || event == "unlink") {169 if (RunServer.watching) {170 RunServer.watching.close (() => {171 console.log ("restart watch")172 })173 }174 if (RunServer.myDevConfig != null) {175 RunServer.myDevConfig = null176 }177 if (RunServer.devCompiler != null) {178 RunServer.devCompiler = null179 }180 var JsFileName = getJsFile (),181 EntryFileName = getEntryName ()182 //å建ä¸ä¸ªwebpacké
置对象183 RunServer.myDevConfig = Object.create ({184 //å
许ç¼åæé«æ§è½185 cache: true,186 //çæsourcemapæ件187 devtool: projectConfig.sourceMap || "cheap-module-eval-source-map",188 //å¤æ件å
¥å£189 entry: JsFileName,190 output: {191 //__dienameè¿åå½åæ件æå¨çè·¯å²192 path: path.resolve (distDir, 'js/'),193 //The publicPath specifies the public URL address of the output files when referenced in a browser.194 // the url to the output directory resolved relative to the HTML pageï¼ç½ç«è¿è¡æ¶è®¿é®çè·¯å¾195 publicPath: path.resolve (distDir, 'js/'),196 //çææ件çå½å197 filename: "[name].js",198 //æ¯æªè¢«åå¨entryä¸ï¼å´åéè¦è¢«æå
åºæ¥çæ件å½åé
ç½®,å¨æéå è½½ï¼å¼æ¥ï¼æ¨¡åçæ¶åï¼è¿æ ·çæ件æ¯æ²¡æ被åå¨entryä¸çï¼å¦ä½¿ç¨CommonJSçæ¹å¼å¼æ¥å 载模å199 /*200 require.ensure(["modules/tips.jsx"], function(require) {201 var a = require("modules/tips.jsx");202 // ...203 }, 'tips');204 å¼æ¥å è½½ç模åæ¯è¦ä»¥æ件形å¼å è½½å¦ï¼æ以è¿æ¶çæçæ件åæ¯ä»¥chunknameé
ç½®çï¼çæåºçæ件åå°±æ¯tips.min.jsã205 */206 chunkFilename: "[chunkhash].js"207 },208 resolve: {209 //æ¥æ¾moduleçè¯ä»è¿éå¼å§æ¥æ¾210 //root: '/pomy/github/flux-example/src', //ç»å¯¹è·¯å¾211 //èªå¨æ©å±æ件åç¼åï¼æå³çæ们require模åå¯ä»¥çç¥ä¸ååç¼å212 //extensions: ['', '.js', '.json', '.scss'],213 //模åå«åå®ä¹ï¼æ¹ä¾¿åç»ç´æ¥å¼ç¨å«åï¼æ é¡»å¤åé¿é¿çå°å214 alias: {215 // zepto: srcDir + "/js/lib/zepto.min.js",216 core: srcDir + "/js/core",217 util: srcDir + "/js/util",218 tool: srcDir + "/js/tool",219 }220 },221 module: {222 //å è½½å¨é
ç½®223 //解æåºzeptoçè·¯å¾ï¼ç¶å使ç¨å è½½å¨è¿è¡zeptoçæ¹å224 rules: [{225 test: /\.js$/,226 exclude: [/node_modules/],227 use: [{228 loader: 'babel-loader',229 options: {230 presets: ['es2015']231 }232 }],233 },234 // Loaders for other file types can go here235 ],236 },237 plugins: [238 new CommonsChunkPlugin ({name: 'common', chunks: EntryFileName}),239 new uglifyJsPlugin ({240 // æç´§åçè¾åº241 beautify: projectConfig.jsBeautify || true,242 // å é¤ææç注é243 comments: projectConfig.jsComments || false,244 compress: {245 // å¨UglifyJså é¤æ²¡æç¨å°ç代ç æ¶ä¸è¾åºè¦å246 warnings: projectConfig.jsWarnings || false,247 // å é¤ææç `console` è¯å¥248 // è¿å¯ä»¥å
¼å®¹ieæµè§å¨249 drop_console: projectConfig.jsDrop_console || false,250 // å
åµå®ä¹äºä½æ¯åªç¨å°ä¸æ¬¡çåé251 collapse_vars: projectConfig.jsCollapse_vars || false,252 // æååºåºç°å¤æ¬¡ä½æ¯æ²¡æå®ä¹æåéå»å¼ç¨çéæå¼253 reduce_vars: projectConfig.jsReduce_vars || false,254 }255 })256 ]257 //å½æ们æ³å¨é¡¹ç®ä¸requireä¸äºå
¶ä»çç±»åºæè
APIï¼èåä¸æ³è®©è¿äºç±»åºçæºç 被æ建å°è¿è¡æ¶æ件ä¸ï¼è¿å¨å®é
å¼åä¸å¾æå¿
è¦ãæ¤æ¶æ们就å¯ä»¥éè¿é
ç½®externalsåæ°æ¥è§£å³è¿ä¸ªé®é¢258 // externals: {259 // "jquery": "jQuery"260 // }261 })262 RunServer.devCompiler = webpack (RunServer.myDevConfig)263 RunServer.watching = RunServer.devCompiler.watch ({ // watch options:264 aggregateTimeout: 300, // wait so long for more changes265 poll: false // use polling instead of native watchers266 // pass a number to set the polling interval267 }, function (err, stats) {268 if (err) GMILOG.E_LOG (err)269 // GMILOG.N_LOG ("-")270 if (!RunServer.statsHash) {271 RunServer.statsHash = stats.hash272 GMILOG.N_LOG (stats.toString ({273 profile: true, colors: true274 }))275 } else {276 if (RunServer.statsHash != stats.hash) {277 GMILOG.N_LOG (stats.toString ({278 profile: true, colors: true279 })) 280 }281 }282 }) 283 } else {284 var JsFileName = getJsFile (),285 EntryFileName = getEntryName ()286 //å建ä¸ä¸ªwebpacké
置对象287 RunServer.myDevConfig = Object.create ({288 //å
许ç¼åæé«æ§è½289 cache: true,290 //çæsourcemapæ件291 devtool: projectConfig.sourceMap || "cheap-module-eval-source-map",292 //å¤æ件å
¥å£293 entry: JsFileName,294 output: {295 //__dienameè¿åå½åæ件æå¨çè·¯å²296 path: path.resolve (distDir, 'js/'),297 //The publicPath specifies the public URL address of the output files when referenced in a browser.298 // the url to the output directory resolved relative to the HTML pageï¼ç½ç«è¿è¡æ¶è®¿é®çè·¯å¾299 publicPath: path.resolve (distDir, 'js/'),300 //çææ件çå½å301 filename: "[name].js",302 //æ¯æªè¢«åå¨entryä¸ï¼å´åéè¦è¢«æå
åºæ¥çæ件å½åé
ç½®,å¨æéå è½½ï¼å¼æ¥ï¼æ¨¡åçæ¶åï¼è¿æ ·çæ件æ¯æ²¡æ被åå¨entryä¸çï¼å¦ä½¿ç¨CommonJSçæ¹å¼å¼æ¥å 载模å303 /*304 require.ensure(["modules/tips.jsx"], function(require) {305 var a = require("modules/tips.jsx");306 // ...307 }, 'tips');308 å¼æ¥å è½½ç模åæ¯è¦ä»¥æ件形å¼å è½½å¦ï¼æ以è¿æ¶çæçæ件åæ¯ä»¥chunknameé
ç½®çï¼çæåºçæ件åå°±æ¯tips.min.jsã309 */310 chunkFilename: "[chunkhash].js"311 },312 resolve: {313 //æ¥æ¾moduleçè¯ä»è¿éå¼å§æ¥æ¾314 //root: '/pomy/github/flux-example/src', //ç»å¯¹è·¯å¾315 //èªå¨æ©å±æ件åç¼åï¼æå³çæ们require模åå¯ä»¥çç¥ä¸ååç¼å316 //extensions: ['', '.js', '.json', '.scss'],317 //模åå«åå®ä¹ï¼æ¹ä¾¿åç»ç´æ¥å¼ç¨å«åï¼æ é¡»å¤åé¿é¿çå°å318 alias: {319 // zepto: srcDir + "/js/lib/zepto.min.js",320 core: srcDir + "/js/core",321 util: srcDir + "/js/util",322 tool: srcDir + "/js/tool"323 }324 },325 module: {326 //å è½½å¨é
ç½®327 //解æåºzeptoçè·¯å¾ï¼ç¶å使ç¨å è½½å¨è¿è¡zeptoçæ¹å328 rules: [{329 test: /\.js$/,330 exclude: [/node_modules/],331 use: [{332 loader: 'babel-loader',333 options: {334 presets: ['es2015']335 }336 }],337 },338 // Loaders for other file types can go here339 ],340 },341 plugins: [342 new CommonsChunkPlugin ({name: 'common', chunks: EntryFileName}),343 new uglifyJsPlugin ({344 // æç´§åçè¾åº345 beautify: projectConfig.jsBeautify || true,346 // å é¤ææç注é347 comments: projectConfig.jsComments || false,348 compress: {349 // å¨UglifyJså é¤æ²¡æç¨å°ç代ç æ¶ä¸è¾åºè¦å350 warnings: projectConfig.jsWarnings || false,351 // å é¤ææç `console` è¯å¥352 // è¿å¯ä»¥å
¼å®¹ieæµè§å¨353 drop_console: projectConfig.jsDrop_console || false,354 // å
åµå®ä¹äºä½æ¯åªç¨å°ä¸æ¬¡çåé355 collapse_vars: projectConfig.jsCollapse_vars || false,356 // æååºåºç°å¤æ¬¡ä½æ¯æ²¡æå®ä¹æåéå»å¼ç¨çéæå¼357 reduce_vars: projectConfig.jsReduce_vars || false,358 }359 })360 ]361 //å½æ们æ³å¨é¡¹ç®ä¸requireä¸äºå
¶ä»çç±»åºæè
APIï¼èåä¸æ³è®©è¿äºç±»åºçæºç 被æ建å°è¿è¡æ¶æ件ä¸ï¼è¿å¨å®é
å¼åä¸å¾æå¿
è¦ãæ¤æ¶æ们就å¯ä»¥éè¿é
ç½®externalsåæ°æ¥è§£å³è¿ä¸ªé®é¢362 // externals: {363 // "jquery": "jQuery"364 // }365 })366 RunServer.devCompiler = webpack (RunServer.myDevConfig)367 RunServer.watching = RunServer.devCompiler.watch ({ // watch options:368 aggregateTimeout: 300, // wait so long for more changes369 poll: false // use polling instead of native watchers370 // pass a number to set the polling interval371 }, function (err, stats) {372 if (err) GMILOG.E_LOG (err)373 // GMILOG.N_LOG ("-")374 if (!RunServer.statsHash) {375 RunServer.statsHash = stats.hash376 GMILOG.N_LOG (stats.toString ({377 profile: true, colors: true378 }))379 } else {380 if (RunServer.statsHash != stats.hash) {381 GMILOG.N_LOG (stats.toString ({382 profile: true, colors: true383 })) 384 }385 }386 }) 387 }388 // RunServer.devCompiler.run ((err, stats) => {389 // if (err) GMILOG.E_LOG (err)390 // // GMILOG.N_LOG ("-")391 // if (!RunServer.statsHash) {392 // RunServer.statsHash = stats.hash393 // GMILOG.N_LOG (stats.toString ({394 // profile: true, colors: true395 // }))396 // } else {397 // if (RunServer.statsHash != stats.hash) {398 // GMILOG.N_LOG (stats.toString ({399 // profile: true, colors: true400 // })) 401 // }402 // }403 // }) 404}405function renderRecursive (path, content) {406 // console.log (content + "\n-------" + path)407 let regexOuter = /<\%\ \@\@include="(.*?)"\ \%>/408 let regexInclude = /include="(.*?)"/409 let regexInner = />(.*?)</410 let rootReg = /\@PATH\@/411 let versionReg = /\@VERSION\@/412 // let COMMENT_PSEUDO_COMMENT_OR_LT_BANG = new RegExp(413 // '<!--[\\s\\S]*?(?:-->)?'414 // + '<!---+>?' // A comment with no body415 // + '|<!(?![dD][oO][cC][tT][yY][pP][eE]|\\[CDATA\\[)[^>]*>?'416 // + '|<[?][^>]*>?', // A pseudo-comment417 // 'g');418 let cleanComment = /\<\!\-\-(\ |)(.*?)\-\-\>/419 while (cleanComment.test (content)) {420 content = content.replace (cleanComment, '')421 }422 // while (COMMENT_PSEUDO_COMMENT_OR_LT_BANG.test (content)) {423 // content = content.replace (COMMENT_PSEUDO_COMMENT_OR_LT_BANG, '')424 // }425 content = content.replace (regexOuter, match => {426 let matchInclude = match427 let contentUpdated = ''428 // console.log (content)429 // console.log (matchInclude)430 match.replace (regexInclude, match => {431 // console.log (match)432 match.replace (/"(.*?)"/, matchIncludeFile => {433 let includeFileName = matchIncludeFile.substring (1, matchIncludeFile.length - 1)434 // console.log (path)435 let pathRelative = path.split ('/').slice (0, -1).join ('/')436 // console.log (pathRelative)437 if (/^\//.test (includeFileName)) {438 includeFileName = includeFileName.replace (/^\//, '')439 pathRelative = "src/pages"440 }441 if (/^includes\//.test (includeFileName)) {442 includeFileName = includeFileName.replace (/^includes\//, '')443 pathRelative = "src/pages/includes"444 }445 while (true) {446 if (/^\.\//.test (includeFileName)) {447 includeFileName = includeFileName.replace (/^\.\//, '')448 } else {449 break450 }451 }452 while (true) {453 if (/^\.\.\//.test (includeFileName)) {454 includeFileName = includeFileName.replace (/^\.\.\//, '')455 pathRelative = pathRelative.split ('/').slice (0, -1).join ('/')456 } else {457 break458 }459 }460 // console.log (includeFileName)461 // includeFileName.replace (/^\.\//, currentPath => {462 // console.log (currentPath)463 // })464 // console.log (includeFileName)465 let includeFilePath = pathRelative + "/" + includeFileName466 // contentUpdated = ' ' + matchInclude.replace (regexOuter, '').trim ()467 contentUpdated = matchInclude.replace (regexOuter, match => {468 let content = ''469 // console.log (includeFilePath)470 if (!fs.existsSync (includeFilePath)) {471 GMILOG.E_LOG (includeFilePath + " File not found!")472 } else {473 content = fs.readFileSync (includeFilePath, 'utf8')474 return '' + content + ''475 }476 })477 })478 })479 return contentUpdated480 })481 // console.log (content + "\n-------" + path)482 // console.log (/<\%\ \@\@include="(.*?)"\ \%>/.test (content))483 if (/<\%\ \@\@include="(.*?)"\ \%>/.test (content)) {484 renderRecursive (path, content)485 } else {486 let filename = path.replace (/^src/, 'dist').replace (/pages\//, '')487 while (versionReg.test (content)) {488 content = content.replace (versionReg, projectConfig.version)489 }490 while (rootReg.test (content)) {491 content = content.replace (rootReg, projectConfig.root)492 }493 // console.log (filename)494 fsExtra.outputFile (filename, minify (content, {collapseWhitespace: true, removeComments: true}), err => {495 if (err) console.log (err)496 })497 }498}499//è·åææjs\pagesç®å½ä¸çæ件夹å称500function getDirName () {501 var fileList = []502 var jsPath = path.resolve (srcDir, 'js/pages')503 // GMILOG.N_LOG (jsPath);504 if (!fs.existsSync (jsPath)) {505 GMILOG.E_LOG (jsPath + " is not exist!")506 } else {507 var dirs = fs.readdirSync (jsPath)508 dirs.forEach (function (item) {509 fileList.push (item)510 })511 }512 // GMILOG.N_LOG (fileList);513 return fileList514}515//éåè·åjsæ件çæ°ç»516function getJsFile () {517 //è·åjsç®å½ä¸æææ件夹ååæ°ç»518 var fileList = getDirName ()519 var totalFiles = {}520 var matchs = [],521 files = {}522 if (fileList.length > 0) {523 fileList.forEach (function (fileItem) {524 if (fileItem.match (/(.+)\.js$/)) {525 matchs = fileItem.match (/(.+)\.js$/)526 if (matchs) {527 files[matchs[1]] = path.resolve (srcDir, 'js/pages', fileItem)528 }529 } else {530 var jsPath = path.resolve (srcDir, 'js/pages/' + fileItem)531 // if (!fs.existsSync (jsPath)) {532 // GMILOG.E_LOG (jsPath + " is not exist!")533 // } else {534 var dirs = fs.readdirSync (jsPath)535 dirs.forEach (function (item) {536 matchs = item.match (/(.+)\.js$/)537 if (matchs) {538 files[matchs[1]] = path.resolve (srcDir, 'js/pages/' + fileItem, item)539 }540 });541 // }542 }543 })544 }545 return files546 //synchronous read dir,return an array of filenames excluding '.' and '..'547 // console.log("this is detected js: " + dirs);548 //declare matchs array and file object will be used later549 //use reg match any.js file550}551//éåè·åjsæ件çæ°ç»552function getEntryName () {553 //è·åjsç®å½ä¸æææ件夹ååæ°ç»554 var fileList = getDirName ()555 var totalFiles = {}556 var entryName = []557 var matchs = [],558 files = {}559 if (fileList.length > 0) {560 fileList.forEach (function (fileItem) {561 if (fileItem.match (/(.+)\.js$/)) {562 matchs = fileItem.match (/(.+)\.js$/)563 if (matchs) {564 entryName.push (matchs[1]);565 }566 } else {567 var jsPath = path.resolve (srcDir, 'js/pages/' + fileItem)568 // if (!fs.existsSync (jsPath)) {569 // GMILOG.E_LOG (jsPath + " is not exist!")570 // } else {571 var dirs = fs.readdirSync (jsPath)572 dirs.forEach (function (item) {573 matchs = item.match (/(.+)\.js$/)574 if (matchs) {575 entryName.push (matchs[1])576 }577 })578 // }579 }580 })581 }582 return entryName;583 //synchronous read dir,return an array of filenames excluding '.' and '..'584 // console.log("this is detected js: " + dirs);585 //declare matchs array and file object will be used later586 //use reg match any.js file...
app-server-test.js
Source:app-server-test.js
...25 });26 }).to.throw(/FastBootAppServer must be provided with either a distPath or a downloader option, but not both/);27 });28 it("serves an HTTP 500 response if the app can't be found", function() {29 return runServer('not-found-server')30 .then(() => request('http://localhost:3000'))31 .then(response => {32 expect(response.statusCode).to.equal(500);33 expect(response.body).to.match(/No Application Found/);34 });35 });36 it("serves static assets", function() {37 return runServer('basic-app-server')38 .then(() => request('http://localhost:3000/assets/fastboot-test.js'))39 .then(response => {40 expect(response.statusCode).to.equal(200);41 expect(response.body).to.contain('"use strict";');42 })43 .then(() => request('http://localhost:3000/'))44 .then(response => {45 expect(response.statusCode).to.equal(200);46 expect(response.body).to.contain('Welcome to Ember');47 });48 });49 it("returns a 404 status code for non-existent assets", function() {50 return runServer('basic-app-server')51 .then(() => request('http://localhost:3000/assets/404-does-not-exist.js'))52 .then(response => {53 expect(response.statusCode).to.equal(404);54 expect(response.body).to.match(/Not Found/);55 })56 .then(() => request('http://localhost:3000/'))57 .then(response => {58 expect(response.statusCode).to.equal(200);59 expect(response.body).to.contain('Welcome to Ember');60 });61 });62 it("executes beforeMiddleware", function() {63 return runServer('before-middleware-server')64 .then(() => request('http://localhost:3000'))65 .then(response => {66 expect(response.statusCode).to.equal(418);67 expect(response.headers['x-test-header']).to.equal('testing');68 expect(response.body).to.equal(JSON.stringify({ send: 'json back'}));69 });70 });71 it("executes afterMiddleware when there is an error", function() {72 return runServer('after-middleware-server')73 .then(() => request('http://localhost:3000'))74 .then(response => {75 expect(response.body).to.not.match(/error/);76 expect(response.headers['x-test-header']).to.equal('testing');77 });78 });79 it("returns a 401 status code for non-authenticated request", function() {80 return runServer('auth-app-server')81 .then(() => request('http://localhost:3000/'))82 .then(response => {83 expect(response.statusCode).to.equal(401);84 expect(response.headers['www-authenticate']).equal('Basic realm=Authorization Required');85 })86 .then(() => request({ uri: 'http://localhost:3000/', headers: { 'Authorization': 'Basic dG9tc3Rlcjp6b2V5' }}))87 .then(response => {88 expect(response.statusCode).to.equal(200);89 expect(response.body).to.contain('Welcome to Ember');90 });91 });92 it("responds on the configured host and port", function() {93 return runServer('ipv4-app-server')94 .then(() => request('http://127.0.0.1:4100/'))95 .then((response) => {96 expect(response.statusCode).to.equal(200);97 expect(response.body).to.contain('Welcome to Ember');98 });99 });100 it("allows setting sandbox globals", function() {101 return runServer('sandbox-globals-app-server')102 .then(() => request('http://localhost:3000/'))103 .then((response) => {104 expect(response.statusCode).to.equal(200);105 expect(response.body).to.contain('Welcome to Ember from MY GLOBAL!');106 });107 });108 it("allows changing of distpath", function() {109 return runServer('dist-path-change-server')110 .then(() => request('http://localhost:3000/'))111 .then((response) => {112 expect(response.statusCode).to.equal(200);113 expect(response.body).to.contain('Welcome to Ember from MY GLOBAL!');114 });115 });116});117function runServer(name) {118 return new Promise((res, rej) => {119 let serverPath = path.join(__dirname, 'fixtures', `${name}.js`);120 server = fork(serverPath, {121 silent: true122 });123 server.on('error', rej);124 server.stdout.on('data', data => {125 if (data.toString().match(/HTTP server started/)) {126 res();127 }128 });129 server.stderr.on('data', data => {130 console.log(data.toString());131 });...
server.js
Source:server.js
...21let server;22// this function starts our server and returns a Promise.23// In our test code, we need a way of asynchronously starting24// our server, since we'll be dealing with promises there.25function runServer() {26 const port = process.env.PORT || 8080;27 return new Promise((resolve, reject) => {28 server = app.listen(port, () => {29 console.log(`Your app is listening on port ${port}`);30 resolve(server);31 }).on('error', err => {32 reject(err)33 });34 });35}36// like `runServer`, this function also needs to return a promise.37// `server.close` does not return a promise on its own, so we manually38// create one.39function closeServer() {40 return new Promise((resolve, reject) => {41 console.log('Closing server');42 server.close(err => {43 if (err) {44 reject(err);45 // so we don't also call `resolve()`46 return;47 }48 resolve();49 });50 });51}52// if server.js is called directly (aka, with `node server.js`), this block53// runs. but we also export the runServer command so other code (for instance, test code) can start the server as needed.54if (require.main === module) {55 runServer().catch(err => console.error(err));56};...
process.js
Source:process.js
1export function getAppProcesses() {2 return [3 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '1'},4 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '2'},5 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '3'},6 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '4'},7 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '5'},8 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '6'},9 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '7'},10 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '8'},11 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '9'},12 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '10'},13 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '11'},14 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '12'},15 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '13'},16 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '14'},17 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:80', 'status': 1, 'id': '15'},18 {'name': 'web', 'cmd': 'python manage.py runserver 0.0.0.0:8000', 'status': 0, 'id': '16'}19 ]20}21export function getAppProcessTypes() {22 return [23 {'name': 'web'}, {'name': 'celery'}, {'name': 'cbeat'}, {'name': 'cron'}, {'name': 'sync1'}, {'name': 'sync2'}24 ]...
gulpfile.js
Source:gulpfile.js
1'use strict';2var gulp = require('gulp');3var rename = require('gulp-rename');4var sass = require('gulp-sass');5var cleanCSS = require('gulp-clean-css');6var uglify = require('gulp-uglify');7var os = require('os');8var spawn = require('child_process').spawn;9gulp.task('build-css', function() {10 return gulp.src('static/scss/style.scss')11 .pipe(sass())12 .pipe(cleanCSS({compatibility: 'ie8'}))13 .pipe(rename({ extname: '.min.css' }))14 .pipe(gulp.dest('static/css/'));15});16gulp.task('build-js', function() {17 return gulp.src('static/js/script.js')18 .pipe(uglify())19 .pipe(rename({ extname: '.min.js' }))20 .pipe(gulp.dest('static/js/'));21});22gulp.task('runserver', ['build-css', 'build-js'], function() {23 gulp.watch('static/scss/style.scss', ['build-css']);24 gulp.watch('static/js/script.js', ['build-js']);25 // Compatibility across all platforms26 const pythonPath = (os.platform() === 'win32' ? '/scripts/' : '/bin/') + 'python';27 var runserver = spawn(28 process.env['VIRTUAL_ENV'] + pythonPath, ['manage.py', 'runserver'], { stdio: 'inherit' }29 );30 runserver.on('close', function(code) {31 if(code !== 0) {32 console.error('Django runserver exited with error code: ' + code);33 } else {34 console.log('Django runserver exited normally.');35 }36 });...
test-sever.js
Source:test-sever.js
1const mockstarLocalServer = require('../../lib');2let runServer;3function start(opts = {}) {4 return new Promise((resolve, reject) => {5 mockstarLocalServer6 .findAvailablePort(9528)7 .then(port => {8 runServer = mockstarLocalServer.startServer(9 Object.assign({}, opts, {port: port}),10 (isSuccess, data) => {11 isSuccess ? resolve(data) : reject(data);12 },13 );14 })15 .catch(err => {16 reject(err);17 });18 });19}20function stop() {21 if (!runServer || typeof runServer.stop !== 'function') {22 return;23 }24 // let t1 = Date.now();25 runServer.stop(() => {26 // console.log('-close success-', Date.now() - t1);27 });28}29module.exports = {30 start: start,31 stop: stop,...
coalescing.js
Source:coalescing.js
1'use strict';2const runServer = function (port) {3 console.log(`Server running on port ${port}.`);4};5runServer(3000);6runServer();7const runServer = function (port = 3000) {8 console.log(`Server running on port ${port}.`);9};10const runServer = function (port = 3000) {11 port = port || 3000; //falsy12 console.log(`Server running on port ${port}.`);13};14runServer(4000);15runServer(undefined);16runServer(0); //falsy17const runServer = function (port = 3000) {18 port = port ?? 3000; //null or undefined19 console.log(`Server running on port ${port}.`);20};21runServer(4000);22runServer(undefined);...
shorthand.js
Source:shorthand.js
2const runServer = function (port = 3000) {3 port = port ?? 3000; //null or undefined4 console.log(`Server running on port ${port}.`);5};6runServer(4000);7runServer(undefined);8runServer(0); //falsy9let i = 5;10i = i + 1;11i += 1;12i++;13i = i + 2;14i += 2;15port = port + 3000;16port += 3000;17const runServer = function (port = 3000) {18 port ??= 3000; //null or undefined19 console.log(`Server running on port ${port}.`);20};21runServer(4000);22runServer(undefined);...
Using AI Code Generation
1var runServer = require('stryker-parent').runServer;2runServer();3var runClient = require('stryker-parent').runClient;4runClient();5at Context.<anonymous> (test.js:4:14)6at callFn (node_modules/mocha/lib/runnable.js:334:21)7at Test.Runnable.run (node_modules/mocha/lib/runnable.js:327:7)8at Runner.runTest (node_modules/mocha/lib/runner.js:429:10)9at next (node_modules/mocha/lib/runner.js:349:14)10at next (node_modules/mocha/lib/runner.js:295:14)11at Immediate._onImmediate (node_modules/mocha/lib/runner.js:339:5)12at runCallback (timers.js:672:20)13at tryOnImmediate (timers.js:645:5)14at processImmediate [as _immediateCallback] (timers.js:617:5)</stackTrace>
Using AI Code Generation
1var stryker = require('stryker-parent');2stryker.runServer();3var stryker = require('stryker');4module.exports = stryker;5var Stryker = require('stryker/src/Stryker');6var stryker = new Stryker();7module.exports = stryker;8var Stryker = function () {9 this.runServer = function () {10 console.log('Running server');11 };12};13module.exports = Stryker;
Using AI Code Generation
1import { runServer } from 'stryker-parent';2runServer();3import { runServer } from './src/child-process-server';4export { runServer };5import { ChildProcessServer } from 'stryker';6const server = new ChildProcessServer();7server.run();8import { run } from 'stryker-child';9run();10import { run } from './src/child-process-client';11export { run };12import { ChildProcessClient } from 'stryker';13const client = new ChildProcessClient();14client.run();
Using AI Code Generation
1const runServer = require('stryker-parent').runServer;2runServer({port: 1234});3module.exports = {4 runServer: function(options) {5 }6}7module.exports = function(config) {8 config.set({9 });10};11module.exports = function(config) {12 config.set({13 });14};
Using AI Code Generation
1const strykerParent = require('stryker-parent');2const { runServer } = strykerParent;3const { runStryker } = require('stryker');4runServer(async () => {5 await runStryker();6});
Using AI Code Generation
1var strykerParent = require('stryker-parent');2var server = strykerParent.runServer();3server.on('message', function (message) {4 console.log(message);5});6server.send('Hello from child process');7var childProcess = require('child_process');8var path = require('path');9var child = childProcess.fork(path.join(__dirname, 'test.js'));10child.on('message', function (message) {11 console.log(message);12 child.send('Hello from parent process');13});
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!