Improved NodeJS interpreter interaction
- Catch AttributeError in `__del__` if process was not initialized and self.proc was not created - Skip test_jsnode if node is not installed - Removed package-lock from gitignore
This commit is contained in:
parent
89608142fb
commit
3fbd283db1
4 changed files with 81 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -113,4 +113,3 @@ tests/samples/login_pswd.txt
|
||||||
|
|
||||||
# NPM
|
# NPM
|
||||||
node_modules/
|
node_modules/
|
||||||
package-lock.json
|
|
||||||
|
|
|
@ -108,8 +108,13 @@ class NodeInterpreter(Interpreter):
|
||||||
return json.loads(resp.content)
|
return json.loads(resp.content)
|
||||||
|
|
||||||
def __del__(self) -> None:
|
def __del__(self) -> None:
|
||||||
self.proc.terminate()
|
try:
|
||||||
self.proc.communicate()
|
self.proc.terminate()
|
||||||
|
self.proc.communicate()
|
||||||
|
except AttributeError:
|
||||||
|
logging.warning(
|
||||||
|
'NodeJS process was not initialized'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Js2PyInterpreter(Interpreter):
|
class Js2PyInterpreter(Interpreter):
|
||||||
|
|
67
python_aternos/data/package-lock.json
generated
Normal file
67
python_aternos/data/package-lock.json
generated
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
{
|
||||||
|
"name": "data",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"vm2": "^3.9.13"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/acorn": {
|
||||||
|
"version": "8.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
|
||||||
|
"integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
|
||||||
|
"bin": {
|
||||||
|
"acorn": "bin/acorn"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/acorn-walk": {
|
||||||
|
"version": "8.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
|
||||||
|
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vm2": {
|
||||||
|
"version": "3.9.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.13.tgz",
|
||||||
|
"integrity": "sha512-0rvxpB8P8Shm4wX2EKOiMp7H2zq+HUE/UwodY0pCZXs9IffIKZq6vUti5OgkVCTakKo9e/fgO4X1fkwfjWxE3Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"acorn": "^8.7.0",
|
||||||
|
"acorn-walk": "^8.2.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"vm2": "bin/vm2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"acorn": {
|
||||||
|
"version": "8.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
|
||||||
|
"integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA=="
|
||||||
|
},
|
||||||
|
"acorn-walk": {
|
||||||
|
"version": "8.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
|
||||||
|
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
|
||||||
|
},
|
||||||
|
"vm2": {
|
||||||
|
"version": "3.9.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.13.tgz",
|
||||||
|
"integrity": "sha512-0rvxpB8P8Shm4wX2EKOiMp7H2zq+HUE/UwodY0pCZXs9IffIKZq6vUti5OgkVCTakKo9e/fgO4X1fkwfjWxE3Q==",
|
||||||
|
"requires": {
|
||||||
|
"acorn": "^8.7.0",
|
||||||
|
"acorn-walk": "^8.2.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,7 +12,13 @@ class TestJsNode(unittest.TestCase):
|
||||||
|
|
||||||
self.tests = files.read_sample('token_input.txt')
|
self.tests = files.read_sample('token_input.txt')
|
||||||
self.results = files.read_sample('token_output.txt')
|
self.results = files.read_sample('token_output.txt')
|
||||||
self.js = atjsparse.NodeInterpreter()
|
|
||||||
|
try:
|
||||||
|
self.js = atjsparse.NodeInterpreter()
|
||||||
|
except OSError as err:
|
||||||
|
self.skipTest(
|
||||||
|
f'Unable to start NodeJS interpreter: {err}'
|
||||||
|
)
|
||||||
|
|
||||||
def test_exec(self) -> None:
|
def test_exec(self) -> None:
|
||||||
|
|
||||||
|
|
Reference in a new issue