replace jest with ava
This commit is contained in:
parent
27cc8b23fe
commit
0347b72305
11775 changed files with 84546 additions and 1440575 deletions
9
node_modules/arrgv/.editorconfig
generated
vendored
Normal file
9
node_modules/arrgv/.editorconfig
generated
vendored
Normal 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
4
node_modules/arrgv/.eslintrc
generated
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
{
|
||||
"extends": "astur"
|
||||
}
|
||||
3
node_modules/arrgv/.travis.yml
generated
vendored
Normal file
3
node_modules/arrgv/.travis.yml
generated
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- '8'
|
||||
21
node_modules/arrgv/LICENSE
generated
vendored
Normal file
21
node_modules/arrgv/LICENSE
generated
vendored
Normal 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
48
node_modules/arrgv/README.md
generated
vendored
Normal 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
66
node_modules/arrgv/index.js
generated
vendored
Normal 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
33
node_modules/arrgv/package.json
generated
vendored
Normal 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
73
node_modules/arrgv/test.js
generated
vendored
Normal 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');
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue