aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jake/test/integration/jakelib
diff options
context:
space:
mode:
authorMinteck <minteck@phoenixnet.tech>2021-10-17 20:08:04 +0200
committerMinteck <minteck@phoenixnet.tech>2021-10-17 20:08:04 +0200
commit3a94acf27ea1eff8bd1125450f07c0c366332e80 (patch)
tree5bd619df0b7e04afc174df98736a527477522acb /node_modules/jake/test/integration/jakelib
downloadwolfeye-js-3a94acf27ea1eff8bd1125450f07c0c366332e80.tar.gz
wolfeye-js-3a94acf27ea1eff8bd1125450f07c0c366332e80.tar.bz2
wolfeye-js-3a94acf27ea1eff8bd1125450f07c0c366332e80.zip
Initial commit
Diffstat (limited to 'node_modules/jake/test/integration/jakelib')
-rw-r--r--node_modules/jake/test/integration/jakelib/concurrent.jake.js113
-rw-r--r--node_modules/jake/test/integration/jakelib/publish.jake.js49
-rw-r--r--node_modules/jake/test/integration/jakelib/required_module.jake.js10
-rw-r--r--node_modules/jake/test/integration/jakelib/rule.jake.js222
4 files changed, 394 insertions, 0 deletions
diff --git a/node_modules/jake/test/integration/jakelib/concurrent.jake.js b/node_modules/jake/test/integration/jakelib/concurrent.jake.js
new file mode 100644
index 0000000..684c86f
--- /dev/null
+++ b/node_modules/jake/test/integration/jakelib/concurrent.jake.js
@@ -0,0 +1,113 @@
+
+namespace('concurrent', function () {
+ task('A', function () {
+ console.log('Started A');
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ console.log('Finished A');
+ resolve();
+ }, 200);
+ });
+ });
+
+ task('B', function () {
+ console.log('Started B');
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ console.log('Finished B');
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('C', function () {
+ console.log('Started C');
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ console.log('Finished C');
+ resolve();
+ }, 100);
+ });
+ });
+
+ task('D', function () {
+ console.log('Started D');
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ console.log('Finished D');
+ resolve();
+ }, 300);
+ });
+ });
+
+ task('Ba', ['A'], function () {
+ console.log('Started Ba');
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ console.log('Finished Ba');
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('Afail', function () {
+ console.log('Started failing task');
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ console.log('Failing B with error');
+ throw new Error('I failed');
+ }, 50);
+ });
+ });
+
+ task('simple1', ['A','B'], {concurrency: 2}, function () {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('simple2', ['C','D'], {concurrency: 2}, function () {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('seqconcurrent', ['simple1','simple2'], function () {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('concurrentconcurrent', ['simple1','simple2'], {concurrency: 2}, function () {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('subdep', ['A','Ba'], {concurrency: 2}, function () {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 50);
+ });
+ });
+
+ task('fail', ['A', 'B', 'Afail'], {concurrency: 3}, function () {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ resolve();
+ }, 50);
+ });
+ });
+
+});
+
+
diff --git a/node_modules/jake/test/integration/jakelib/publish.jake.js b/node_modules/jake/test/integration/jakelib/publish.jake.js
new file mode 100644
index 0000000..52dd04a
--- /dev/null
+++ b/node_modules/jake/test/integration/jakelib/publish.jake.js
@@ -0,0 +1,49 @@
+/*
+ * Jake JavaScript build tool
+ * Copyright 2112 Matthew Eernisse (mde@fleegix.org)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+*/
+
+const PROJECT_DIR = process.env.PROJECT_DIR;
+
+let fs = require('fs');
+let { publishTask, rmRf, mkdirP } = require(`${PROJECT_DIR}/lib/jake`);
+
+fs.writeFileSync('package.json', '{"version": "0.0.1"}');
+mkdirP('tmp_publish');
+fs.writeFileSync('tmp_publish/foo.txt', 'FOO');
+
+publishTask('zerb', function () {
+ this.packageFiles.include([
+ 'package.json'
+ , 'tmp_publish/**'
+ ]);
+ this.publishCmd = 'node -p -e "\'%filename\'"';
+ this.gitCmd = 'echo'
+ this.scheduleDelay = 0;
+
+ this._ensureRepoClean = function () {};
+ this._getCurrentBranch = function () {
+ return 'v0.0'
+ };
+});
+
+jake.setTaskTimeout(5000);
+
+jake.Task['publish'].on('complete', function () {
+ rmRf('tmp_publish', {silent: true});
+ rmRf('package.json', {silent: true});
+});
+
diff --git a/node_modules/jake/test/integration/jakelib/required_module.jake.js b/node_modules/jake/test/integration/jakelib/required_module.jake.js
new file mode 100644
index 0000000..c63751d
--- /dev/null
+++ b/node_modules/jake/test/integration/jakelib/required_module.jake.js
@@ -0,0 +1,10 @@
+let { task, namespace } = require("jake");
+
+namespace('usingRequire', function () {
+ task('test', () => {
+ console.log('howdy test');
+ });
+});
+
+
+
diff --git a/node_modules/jake/test/integration/jakelib/rule.jake.js b/node_modules/jake/test/integration/jakelib/rule.jake.js
new file mode 100644
index 0000000..8e977dd
--- /dev/null
+++ b/node_modules/jake/test/integration/jakelib/rule.jake.js
@@ -0,0 +1,222 @@
+/*
+ * Jake JavaScript build tool
+ * Copyright 2112 Matthew Eernisse (mde@fleegix.org)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+*/
+
+const PROJECT_DIR = process.env.PROJECT_DIR;
+
+let exec = require('child_process').execSync;
+let fs = require('fs');
+let util = require('util');
+let { rule, rmRf } = require(`${PROJECT_DIR}/lib/jake`);
+
+directory('tmpsrc');
+directory('tmpbin');
+
+////////////////////////////////////////////////////////////
+// Simple Suffix Rule
+file('tmp', ['tmp_init', 'tmp_dep1.o', 'tmp_dep2.o'], function (params) {
+ console.log('tmp task');
+ let data1 = fs.readFileSync('tmp_dep1.o');
+ let data2 = fs.readFileSync('tmp_dep2.o');
+ fs.writeFileSync('tmp', data1 + data2);
+});
+
+rule('.o', '.c', function () {
+ let cmd = util.format('cp %s %s', this.source, this.name);
+ console.log(cmd + ' task');
+ exec(cmd);
+});
+
+file('tmp_dep1.c', function () {
+ fs.writeFileSync('tmp_dep1.c', 'src_1');
+ console.log('tmp_dep1.c task');
+});
+
+// note that tmp_dep2.o depends on tmp_dep2.c, which is a
+// static file.
+task('tmp_init', function () {
+ fs.writeFileSync('tmp_dep2.c', 'src_2');
+ console.log('tmp_dep2.c task');
+});
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Pattern Rule
+file('tmp_p', ['tmp_init', 'tmp_dep1.oo', 'tmp_dep2.oo'], function (params) {
+ console.log('tmp pattern task');
+ let data1 = fs.readFileSync('tmp_dep1.oo');
+ let data2 = fs.readFileSync('tmp_dep2.oo');
+ fs.writeFileSync('tmp_p', data1 + data2 + ' pattern');
+});
+
+rule('%.oo', '%.c', function () {
+ let cmd = util.format('cp %s %s', this.source, this.name);
+ console.log(cmd + ' task');
+ exec(cmd);
+});
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Pattern Rule with Folder
+// i.e. rule('tmpbin/%.oo', 'tmpsrc/%.c', ...
+file('tmp_pf', [
+ 'tmp_src_init'
+ , 'tmpbin'
+ , 'tmpbin/tmp_dep1.oo'
+ , 'tmpbin/tmp_dep2.oo' ], function (params) {
+ console.log('tmp pattern folder task');
+ let data1 = fs.readFileSync('tmpbin/tmp_dep1.oo');
+ let data2 = fs.readFileSync('tmpbin/tmp_dep2.oo');
+ fs.writeFileSync('tmp_pf', data1 + data2 + ' pattern folder');
+});
+
+rule('tmpbin/%.oo', 'tmpsrc/%.c', function () {
+ let cmd = util.format('cp %s %s', this.source, this.name);
+ console.log(cmd + ' task');
+ exec(cmd);
+});
+
+file('tmpsrc/tmp_dep2.c',['tmpsrc'], function () {
+ fs.writeFileSync('tmpsrc/tmp_dep2.c', 'src/src_2');
+ console.log('tmpsrc/tmp_dep2.c task');
+});
+
+// Create static files in folder tmpsrc.
+task('tmp_src_init', ['tmpsrc'], function () {
+ fs.writeFileSync('tmpsrc/tmp_dep1.c', 'src/src_1');
+ console.log('tmpsrc/tmp_dep1.c task');
+});
+////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////
+// Namespace Test. This is a Mixed Test.
+// Test for
+// - rules belonging to different namespace.
+// - rules with folder and pattern
+task('tmp_ns', [
+ 'tmpbin'
+ , 'rule:init'
+ , 'tmpbin/tmp_dep2.oo' // *** This relies on a rule defined before.
+ , 'rule:tmpbin/dep1.oo'
+ , 'rule:tmpbin/file2.oo' ], function () {
+ console.log('tmp pattern folder namespace task');
+ let data1 = fs.readFileSync('tmpbin/dep1.oo');
+ let data2 = fs.readFileSync('tmpbin/tmp_dep2.oo');
+ let data3 = fs.readFileSync('tmpbin/file2.oo');
+ fs.writeFileSync('tmp_ns', data1 + data2 + data3 + ' pattern folder namespace');
+});
+
+namespace('rule', function () {
+ task('init', ['tmpsrc'], function () {
+ fs.writeFileSync('tmpsrc/file2.c', 'src/src_3');
+ console.log('tmpsrc/file2.c init task');
+ });
+
+ file('tmpsrc/dep1.c',['tmpsrc'], function () {
+ fs.writeFileSync('tmpsrc/dep1.c', 'src/src_1');
+ console.log('tmpsrc/dep1.c task');
+ }, {async: true});
+
+ rule('tmpbin/%.oo', 'tmpsrc/%.c', function () {
+ let cmd = util.format('cp %s %s', this.source, this.name);
+ console.log(cmd + ' ns task');
+ exec(cmd);
+ });
+});
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Chain rule
+// rule('tmpbin/%.pdf', 'tmpbin/%.dvi', function() { ...
+// rule('tmpbin/%.dvi', 'tmpsrc/%.tex', ['tmpbin'], function() { ...
+task('tmp_cr', [
+ 'chainrule:init'
+ , 'chainrule:tmpbin/file1.pdf'
+ , 'chainrule:tmpbin/file2.pdf' ], function () {
+ console.log('tmp chainrule namespace task');
+ let data1 = fs.readFileSync('tmpbin/file1.pdf');
+ let data2 = fs.readFileSync('tmpbin/file2.pdf');
+ fs.writeFileSync('tmp_cr', data1 + data2 + ' chainrule namespace');
+});
+
+namespace('chainrule', function () {
+ task('init', ['tmpsrc', 'tmpbin'], function () {
+ fs.writeFileSync('tmpsrc/file1.tex', 'tex1 ');
+ fs.writeFileSync('tmpsrc/file2.tex', 'tex2 ');
+ console.log('chainrule init task');
+ });
+
+ rule('tmpbin/%.pdf', 'tmpbin/%.dvi', function () {
+ let cmd = util.format('cp %s %s', this.source, this.name);
+ console.log(cmd + ' dvi->pdf task');
+ exec(cmd);
+ });
+
+ rule('tmpbin/%.dvi', 'tmpsrc/%.tex', ['tmpbin'], function () {
+ let cmd = util.format('cp %s %s', this.source, this.name);
+ console.log(cmd + ' tex->dvi task');
+ exec(cmd);
+ });
+});
+////////////////////////////////////////////////////////////
+namespace('precedence', function () {
+ task('test', ['foo.html'], function () {
+ console.log('ran test');
+ });
+
+ rule('.html', '.txt', function () {
+ console.log('created html');
+ let data = fs.readFileSync(this.source);
+ fs.writeFileSync(this.name, data.toString());
+ });
+});
+
+namespace('regexPattern', function () {
+ task('test', ['foo.html'], function () {
+ console.log('ran test');
+ });
+
+ rule(/\.html$/, '.txt', function () {
+ console.log('created html');
+ let data = fs.readFileSync(this.source);
+ fs.writeFileSync(this.name, data.toString());
+ });
+});
+
+namespace('sourceFunction', function () {
+
+ let srcFunc = function (taskName) {
+ return taskName.replace(/\.[^.]+$/, '.txt');
+ };
+
+ task('test', ['foo.html'], function () {
+ console.log('ran test');
+ });
+
+ rule('.html', srcFunc, function () {
+ console.log('created html');
+ let data = fs.readFileSync(this.source);
+ fs.writeFileSync(this.name, data.toString());
+ });
+});
+
+////////////////////////////////////////////////////////////
+task('clean', function () {
+ rmRf('./foo');
+ rmRf('./tmp');
+});