Skip to content
This repository has been archived by the owner on Jun 12, 2024. It is now read-only.

Commit

Permalink
Add ESLint
Browse files Browse the repository at this point in the history
  • Loading branch information
octosteve committed Oct 19, 2023
1 parent 56648c6 commit cd46c37
Show file tree
Hide file tree
Showing 4,822 changed files with 599,214 additions and 234 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
14 changes: 14 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"env": {
"browser": true,
"commonjs": true,
"es2021": true,
"jest": true
},
"extends": "standard",
"parserOptions": {
"ecmaVersion": "latest"
},
"rules": {
}
}
274 changes: 137 additions & 137 deletions __tests__/main.test.js
Original file line number Diff line number Diff line change
@@ -1,172 +1,172 @@
const process = require('process');
const cp = require('child_process');
const path = require('path');
const process = require('process')
const cp = require('child_process')
const path = require('path')

const np = process.execPath;
const ip = path.join(__dirname, '..', 'main.js');
const node = process.execPath
const ip = path.join(__dirname, '..', 'main.js')
const options = {
env: process.env,
encoding: 'utf-8'
};
env: process.env,
encoding: 'utf-8'
}

test('test runs', () => {
process.env['RESULT1_RESULTS'] = Buffer.from('{ "tests": [{ "name": "Test 1", "status": "pass", "message": null }] }').toString('base64');
process.env['INPUT_RUNNERS'] = 'result1';
process.env.RESULT1_RESULTS = Buffer.from('{ "tests": [{ "name": "Test 1", "status": "pass", "message": null }] }').toString('base64')
process.env.INPUT_RUNNERS = 'result1'

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
console.log(stdout);
expect(stdout).toBe('pass');
});
const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
console.log(stdout)
expect(stdout).toBe('pass')
})

test('outputs error if test-name not provided', () => {
process.env['INPUT_TEST-NAME'] = '';
process.env['INPUT_TEST-NAME'] = ''

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = atob(encodedResult);
const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = atob(encodedResult)

expect(result).toContain("Input required and not supplied: test-name");
});
expect(result).toContain('Input required and not supplied: test-name')
})

test('outputs error if command is not provided', () => {
process.env['INPUT_TEST-NAME'] = 'Test 1';
process.env['INPUT_COMMAND'] = '';
process.env['INPUT_TEST-NAME'] = 'Test 1'
process.env.INPUT_COMMAND = ''

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = atob(encodedResult);
const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = atob(encodedResult)

expect(result).toContain("Input required and not supplied: command");
});
expect(result).toContain('Input required and not supplied: command')
})

test('outputs error if expected-output is not provided', () => {
process.env['INPUT_TEST-NAME'] = 'Test 1';
process.env['INPUT_COMMAND'] = 'echo Hello, World!';
process.env['INPUT_EXPECTED-OUTPUT'] = '';
process.env['INPUT_TEST-NAME'] = 'Test 1'
process.env.INPUT_COMMAND = 'echo Hello, World!'
process.env['INPUT_EXPECTED-OUTPUT'] = ''

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = atob(encodedResult);
const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = atob(encodedResult)

expect(result).toContain("Input required and not supplied: expected-output");
});
expect(result).toContain('Input required and not supplied: expected-output')
})

test('outputs error if comparison-method is not provided', () => {
process.env['INPUT_TEST-NAME'] = 'Test 1';
process.env['INPUT_COMMAND'] = 'echo Hello, World!';
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!';
process.env['INPUT_COMPARISON-METHOD'] = '';
process.env['INPUT_TEST-NAME'] = 'Test 1'
process.env.INPUT_COMMAND = 'echo Hello, World!'
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!'
process.env['INPUT_COMPARISON-METHOD'] = ''

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = atob(encodedResult);
const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = atob(encodedResult)

expect(result).toContain("Input required and not supplied: comparison-method");
});
expect(result).toContain('Input required and not supplied: comparison-method')
})

test('throws error for invalid comparison method', () => {
process.env['INPUT_TEST-NAME'] = 'Test Invalid Comparison';
process.env['INPUT_COMMAND'] = 'echo Hello, World!';
process.env['INPUT_INPUT'] = 'Hello, World!';
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!';
process.env['INPUT_COMPARISON-METHOD'] = 'invalid_method';
process.env['INPUT_TIMEOUT'] = '10';
process.env['INPUT_TEST-NAME'] = 'Test Invalid Comparison'
process.env.INPUT_COMMAND = 'echo Hello, World!'
process.env.INPUT_INPUT = 'Hello, World!'
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!'
process.env['INPUT_COMPARISON-METHOD'] = 'invalid_method'
process.env.INPUT_TIMEOUT = '10'

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = atob(encodedResult);
const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = atob(encodedResult)

expect(result).toContain("Invalid comparison method: invalid_method");
});
expect(result).toContain('Invalid comparison method: invalid_method')
})

test('handles command timeout correctly', () => {
process.env['INPUT_TEST-NAME'] = 'Test Timeout';
process.env['INPUT_COMMAND'] = 'sleep 3'; // This should timeout
process.env['INPUT_INPUT'] = '';
process.env['INPUT_EXPECTED-OUTPUT'] = 'beef';
process.env['INPUT_COMPARISON-METHOD'] = 'exact';
process.env['INPUT_TIMEOUT'] = '0.01'; // ~1 second timeout

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = JSON.parse(atob(encodedResult));

expect(result.tests[0].status).toBe('fail');
expect(result.tests[0].message).toContain("Command was killed due to timeout");
});
process.env['INPUT_TEST-NAME'] = 'Test Timeout'
process.env.INPUT_COMMAND = 'sleep 3' // This should timeout
process.env.INPUT_INPUT = ''
process.env['INPUT_EXPECTED-OUTPUT'] = 'beef'
process.env['INPUT_COMPARISON-METHOD'] = 'exact'
process.env.INPUT_TIMEOUT = '0.01' // ~1 second timeout

const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = JSON.parse(atob(encodedResult))

expect(result.tests[0].status).toBe('fail')
expect(result.tests[0].message).toContain('Command was killed due to timeout')
})

test('runs comparison method: exact', () => {
process.env['INPUT_TEST-NAME'] = 'Test Exact';
process.env['INPUT_COMMAND'] = 'echo Hello, World!';
process.env['INPUT_INPUT'] = '';
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!';
process.env['INPUT_COMPARISON-METHOD'] = 'exact';
process.env['INPUT_TIMEOUT'] = '10';

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = JSON.parse(atob(encodedResult));

expect(result.tests[0].status).toBe('pass');
expect(result.tests[0].message).toBe(null);
});
process.env['INPUT_TEST-NAME'] = 'Test Exact'
process.env.INPUT_COMMAND = 'echo Hello, World!'
process.env.INPUT_INPUT = ''
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!'
process.env['INPUT_COMPARISON-METHOD'] = 'exact'
process.env.INPUT_TIMEOUT = '10'

const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = JSON.parse(atob(encodedResult))

expect(result.tests[0].status).toBe('pass')
expect(result.tests[0].message).toBe(null)
})

test('runs comparison method: contains', () => {
process.env['INPUT_TEST-NAME'] = 'Test Contains';
process.env['INPUT_COMMAND'] = 'echo Hello, World!';
process.env['INPUT_INPUT'] = '';
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello';
process.env['INPUT_COMPARISON-METHOD'] = 'contains';
process.env['INPUT_TIMEOUT'] = '10';

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = JSON.parse(atob(encodedResult));

expect(result.tests[0].status).toBe('pass');
expect(result.tests[0].message).toBe(null);
});
process.env['INPUT_TEST-NAME'] = 'Test Contains'
process.env.INPUT_COMMAND = 'echo Hello, World!'
process.env.INPUT_INPUT = ''
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello'
process.env['INPUT_COMPARISON-METHOD'] = 'contains'
process.env.INPUT_TIMEOUT = '10'

const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = JSON.parse(atob(encodedResult))

expect(result.tests[0].status).toBe('pass')
expect(result.tests[0].message).toBe(null)
})

test('runs comparison method: regex', () => {
process.env['INPUT_TEST-NAME'] = 'Test Regex';
process.env['INPUT_COMMAND'] = 'echo Hello, World!';
process.env['INPUT_INPUT'] = '';
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello,\\sWorld!';
process.env['INPUT_COMPARISON-METHOD'] = 'regex';
process.env['INPUT_TIMEOUT'] = '10';

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();
const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = JSON.parse(atob(encodedResult));

expect(result.tests[0].status).toBe('pass');
expect(result.tests[0].message).toBe(null);
});
process.env['INPUT_TEST-NAME'] = 'Test Regex'
process.env.INPUT_COMMAND = 'echo Hello, World!'
process.env.INPUT_INPUT = ''
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello,\\sWorld!'
process.env['INPUT_COMPARISON-METHOD'] = 'regex'
process.env.INPUT_TIMEOUT = '10'

const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()
const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = JSON.parse(atob(encodedResult))

expect(result.tests[0].status).toBe('pass')
expect(result.tests[0].message).toBe(null)
})

test('passes input through standard input', () => {
process.env['INPUT_TEST-NAME'] = 'Test Input';
process.env['INPUT_COMMAND'] = 'cat';
process.env['INPUT_INPUT'] = 'Hello, World!';
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!';
process.env['INPUT_COMPARISON-METHOD'] = 'exact';
process.env['INPUT_TIMEOUT'] = '10';

const child = cp.spawnSync(np, [ip], options);
const stdout = child.stdout.toString();

const encodedResult = stdout.split('::set-output name=result::')[1].trim();
const result = JSON.parse(atob(encodedResult));

expect(result.tests[0].status).toBe('pass');
expect(result.tests[0].message).toBe(null);
});
process.env['INPUT_TEST-NAME'] = 'Test Input'
process.env.INPUT_COMMAND = 'cat'
process.env.INPUT_INPUT = 'Hello, World!'
process.env['INPUT_EXPECTED-OUTPUT'] = 'Hello, World!'
process.env['INPUT_COMPARISON-METHOD'] = 'exact'
process.env.INPUT_TIMEOUT = '10'

const child = cp.spawnSync(node, [ip], options)
const stdout = child.stdout.toString()

const encodedResult = stdout.split('::set-output name=result::')[1].trim()
const result = JSON.parse(atob(encodedResult))

expect(result.tests[0].status).toBe('pass')
expect(result.tests[0].message).toBe(null)
})
1 change: 1 addition & 0 deletions node_modules/.bin/acorn

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/eslint

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions node_modules/.bin/rimraf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit cd46c37

Please sign in to comment.