replace jest with ava

This commit is contained in:
Robert Brignull 2020-05-04 18:50:13 +01:00
parent 27cc8b23fe
commit 0347b72305
11775 changed files with 84546 additions and 1440575 deletions

9
node_modules/arrgv/.editorconfig generated vendored Normal file
View file

@ -0,0 +1,9 @@
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false

4
node_modules/arrgv/.eslintrc generated vendored Normal file
View file

@ -0,0 +1,4 @@
{
"extends": "astur"
}

3
node_modules/arrgv/.travis.yml generated vendored Normal file
View file

@ -0,0 +1,3 @@
language: node_js
node_js:
- '8'

21
node_modules/arrgv/LICENSE generated vendored Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) astur <astur@yandex.ru> (http://kozlov.am/)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

48
node_modules/arrgv/README.md generated vendored Normal file
View file

@ -0,0 +1,48 @@
# Arrgv
Parsing string to array of args like node on bash do.
[![Build Status][travis-image]][travis-url]
[![NPM version][npm-image]][npm-url]
When you type something like `node script.js bla bla bla` in shell and do `myArgs = process.argv.slice(2)` you get the same. All slashes, quotes and special symbols are handled same way.
## Install
```bash
npm install arrgv
```
## Tests
```bash
$ npm test
```
## Use cases
1. `spawn` a command that is given as a string
2. test `argv` parser with complicated example string
3. something else
## Example
```js
var arrgv = require('arrgv');
var str = '-param --format="hh:mm:ss" filename.ext';
console.log(arrgv(str));
/*
['-param',
'--format=hh:mm:ss',
'filename.ext' ]
*/
```
## License
MIT
[travis-url]: https://travis-ci.org/astur/arrgv
[travis-image]: https://travis-ci.org/astur/arrgv.svg?branch=master
[npm-url]: https://npmjs.org/package/arrgv
[npm-image]: https://badge.fury.io/js/arrgv.svg

66
node_modules/arrgv/index.js generated vendored Normal file
View file

@ -0,0 +1,66 @@
module.exports = str => {
const res = [];
if(!str || typeof str !== 'string') return res;
let sQuoted = false;
let dQuoted = false;
let backSlash = false;
let notEmpty = false;
let buffer = '';
str.split('').forEach((v, i, s) => {
if(sQuoted && v === `'`){
sQuoted = false;
notEmpty = true;
return;
}
if(!sQuoted && !dQuoted && !backSlash){
if(v === `'`){
sQuoted = true;
return;
}
if(v === '"'){
dQuoted = true;
return;
}
if(v === '\\'){
backSlash = true;
return;
}
if(['\b', '\f', '\n', '\r', '\t', ' '].includes(v)){
if(buffer.length > 0 || notEmpty){
res.push(buffer);
notEmpty = false;
}
buffer = '';
return;
}
}
if(!sQuoted && dQuoted && !backSlash && v === '"'){
dQuoted = false;
notEmpty = true;
return;
}
if(!sQuoted && dQuoted && !backSlash && v === '\\'){
backSlash = true;
if(['"', '`', '$', '\\'].includes(s[i + 1])){
return;
}
}
if(backSlash){
backSlash = false;
}
buffer += v;
});
if(buffer.length > 0 || notEmpty){
res.push(buffer);
notEmpty = false;
}
if(dQuoted) throw new SyntaxError('unexpected end of string while looking for matching double quote');
if(sQuoted) throw new SyntaxError('unexpected end of string while looking for matching single quote');
if(backSlash) throw new SyntaxError('unexpected end of string right after slash');
return res;
};

33
node_modules/arrgv/package.json generated vendored Normal file
View file

@ -0,0 +1,33 @@
{
"name": "arrgv",
"version": "1.0.2",
"description": "Parsing string to array of args like node on bash do.",
"main": "index.js",
"author": "astur <astur@yandex.ru> (http://kozlov.am/)",
"scripts": {
"test": "eslint . && nyc ava -v"
},
"repository": {
"type": "git",
"url": "https://github.com/astur/arrgv.git"
},
"engines": {
"node": ">=8.0.0"
},
"devDependencies": {
"ava": "^0.25.0",
"eslint": "^5.4.0",
"eslint-config-astur": "^1.6.1",
"nyc": "^12.0.2"
},
"keywords": [
"arguments",
"cli",
"parcing",
"testing",
"options",
"args",
"argv"
],
"license": "MIT"
}

73
node_modules/arrgv/test.js generated vendored Normal file
View file

@ -0,0 +1,73 @@
const test = require('ava');
const arrgv = require('.');
test('return array', t => {
t.true(Array.isArray(arrgv()), 'array must be returned when no args');
t.true(Array.isArray(arrgv('')), 'array must be returned on enpty string');
t.true(Array.isArray(arrgv(1)), 'array must be returned on number');
t.true(Array.isArray(arrgv([])), 'array must be returned on array');
t.true(Array.isArray(arrgv({})), 'array must be returned on object');
t.true(Array.isArray(arrgv(true)), 'array must be returned on true');
t.true(Array.isArray(arrgv(false)), 'array must be returned on false');
t.true(Array.isArray(arrgv(null)), 'array must be returned on null');
t.true(Array.isArray(arrgv(undefined)), 'array must be returned when on undefined');
});
test('split', t => {
t.deepEqual(arrgv('aaa bbb ccc'), ['aaa', 'bbb', 'ccc'], 'splits easy args by space');
t.deepEqual(arrgv(' aaa bbb ccc '), ['aaa', 'bbb', 'ccc'], 'trailing and leading spaces do not counts');
t.deepEqual(arrgv('aaa bbb ccc'), ['aaa', 'bbb', 'ccc'], 'multi space works as single');
});
test('double quotes', t => {
t.deepEqual(arrgv('aaa "bbb" ccc'), ['aaa', 'bbb', 'ccc'], 'no double quotes in string args');
t.deepEqual(arrgv('aaa "b\'bb" ccc'), ['aaa', 'b\'bb', 'ccc'], 'single quote saved in double quotes');
t.deepEqual(arrgv('aaa "bb"b ccc'), ['aaa', 'bbb', 'ccc'], 'no double quotes inside words');
t.deepEqual(arrgv('aaa "bbb ccc" ddd'), ['aaa', 'bbb ccc', 'ddd'], 'multi word args in double quotes');
t.deepEqual(arrgv('aaa bbb" "ccc ddd'), ['aaa', 'bbb ccc', 'ddd'], 'multi word args with double quoted space');
t.deepEqual(arrgv('aaa b"bb cc"c ddd'), ['aaa', 'bbb ccc', 'ddd'], 'double quotes in words make string arg');
t.deepEqual(arrgv('aaa "" bbb'), ['aaa', '', 'bbb'], 'empty string in double quotes');
t.deepEqual(arrgv('aaa ""'), ['aaa', ''], 'empty string in double quotes on last position');
});
test('single quotes', t => {
t.deepEqual(arrgv(`aaa 'bbb' ccc`), ['aaa', 'bbb', 'ccc'], 'no single quotes in string args');
t.deepEqual(arrgv(`aaa 'b"bb' ccc`), ['aaa', 'b"bb', 'ccc'], 'double quote saved in single quotes');
t.deepEqual(arrgv(`aaa 'bb'b ccc`), ['aaa', 'bbb', 'ccc'], 'no single quotes inside words');
t.deepEqual(arrgv(`aaa 'bbb ccc' ddd`), ['aaa', 'bbb ccc', 'ddd'], 'multi word args in single quotes');
t.deepEqual(arrgv(`aaa bbb' 'ccc ddd`), ['aaa', 'bbb ccc', 'ddd'], 'multi word args with single quoted space');
t.deepEqual(arrgv(`aaa b'bb cc'c ddd`), ['aaa', 'bbb ccc', 'ddd'], 'single quotes in words make string arg');
t.deepEqual(arrgv(`aaa '' bbb`), ['aaa', '', 'bbb'], 'empty string in single quotes');
t.deepEqual(arrgv(`aaa ''`), ['aaa', ''], 'empty string in single quotes on last position');
});
test('spaces', t => {
t.deepEqual(arrgv(`aaa\nbbb`), ['aaa', 'bbb'], '\\n is delimiter');
t.deepEqual(arrgv(`aaa\bbbb`), ['aaa', 'bbb'], '\\b is delimiter');
t.deepEqual(arrgv(`aaa\rbbb`), ['aaa', 'bbb'], '\\r is delimiter');
t.deepEqual(arrgv(`aaa\tbbb`), ['aaa', 'bbb'], '\\t is delimiter');
t.deepEqual(arrgv(`aaa\fbbb`), ['aaa', 'bbb'], '\\f is delimiter');
});
test('slashes', t => {
t.deepEqual(arrgv('aaa \\"bbb c\\"cc ddd'), ['aaa', '"bbb', 'c"cc', 'ddd'], 'slashed double quotes is usual char');
t.deepEqual(arrgv(`aaa \\'bbb c\\'cc ddd`), ['aaa', `'bbb`, `c'cc`, 'ddd'], 'slashed single quotes is usual char');
t.deepEqual(arrgv('\\$\\`\\"\\h aaa'), ['$`"h', 'aaa'], 'no slashes outside quotes');
t.deepEqual(arrgv('"\\$\\`\\"\\h aaa"'), ['$`"\\h aaa'], 'slashes saved in double quotes except $`"');
t.deepEqual(arrgv('\'\\$\\`\\h aaa\''), ['\\$\\`\\h aaa'], 'slashes saved in single quotes');
t.deepEqual(arrgv('"\\\\"'), ['\\'], 'slashes need escaping in double quotes');
t.deepEqual(arrgv('\'\\\\\''), ['\\\\'], 'slashes saved as is in single quotes');
});
test('errors', t => {
t.throws(() => {
arrgv('aaa"bbb');
}, SyntaxError, 'double quotes must be closed');
t.throws(() => {
arrgv('aaa\'bbb');
}, SyntaxError, 'single quotes must be closed');
t.throws(() => {
arrgv('aaa\\');
}, SyntaxError, 'end of string must not to be escaped');
});