Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
LI - Lawful Interception
Trial
Commits
58f005d9
Commit
58f005d9
authored
Jun 15, 2020
by
canterburym
Browse files
Adding testing
parent
672696cf
Changes
3
Hide whitespace changes
Inline
Side-by-side
.gitignore
0 → 100644
View file @
58f005d9
# Editors
.vscode/
.idea/
# Vagrant
.vagrant/
# Mac/OSX
.DS_Store
# Windows
Thumbs.db
# Source for the following rules: https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
\ No newline at end of file
.gitlab-ci.yml
0 → 100644
View file @
58f005d9
image
:
"
python:3.7"
before_script
:
-
python3 --version
-
pip3 install -q asn1tools lxml xmlschema
stages
:
-
Check Schemas
checkASN1
:
stage
:
Check Schemas
script
:
-
python3 testing/check_asn1.py
\ No newline at end of file
testing/check_asn1.py
0 → 100644
View file @
58f005d9
import
logging
from
asn1tools
import
parse_files
,
compile_dict
,
ParseError
,
CompileError
from
glob
import
glob
from
pathlib
import
Path
from
pprint
import
pprint
def
parseASN1File
(
asnFile
):
try
:
parse_files
(
asnFile
)
except
ParseError
as
ex
:
return
[
ex
]
return
[]
def
parseASN1Files
(
fileList
):
if
len
(
fileList
)
==
0
:
logging
.
warning
(
"No files specified"
)
return
{}
errors
=
{}
logging
.
info
(
"Parsing files..."
)
for
f
in
fileList
:
ex
=
parseASN1File
(
f
)
if
ex
:
logging
.
info
(
f
"
{
f
}
: Failed -
{
ex
!r}
"
)
else
:
logging
.
info
(
f
"
{
f
}
: OK"
)
errors
[
f
]
=
ex
return
errors
def
compileASN1Files
(
fileList
):
logging
.
info
(
"Compiling files..."
)
errors
=
[]
try
:
d
=
parse_files
(
fileList
)
for
modulename
,
module
in
d
.
items
():
# Weird fix because the compiler doesn't like RELATIVE-OID as a type
# Not sure if the on-the-wire encoding would be affected or not
# but for most checking purposes this doesn't matter
module
[
'types'
][
"RELATIVE-OID"
]
=
{
'type'
:
'OBJECT IDENTIFIER'
}
c
=
compile_dict
(
d
)
except
CompileError
as
ex
:
logging
.
info
(
f
"Compiler error:
{
ex
}
"
)
errors
.
append
(
ex
)
except
ParseError
as
ex
:
logging
.
info
(
f
"Parse error:
{
ex
}
"
)
errors
.
append
(
ex
)
logging
.
info
(
"Compiled OK"
)
return
errors
def
validateASN1Files
(
fileList
):
parseErrors
=
parseASN1Files
(
fileList
)
# if len(parseErrors > 0):
# logging.info ("Abandonding compile due to parse errors")
# compileErrors = compileASN1Files(fileList)
# leave this for now - TBD
compileErrors
=
[]
return
parseErrors
,
compileErrors
def
validateAllASN1FilesInPath
(
path
):
p
=
Path
(
path
)
fileGlob
=
[
str
(
f
)
for
f
in
p
.
rglob
(
'*.asn'
)]
fileGlob
+=
[
str
(
f
)
for
f
in
p
.
rglob
(
'*.asn1'
)]
return
validateASN1Files
(
fileGlob
)
if
__name__
==
'__main__'
:
parseErrors
,
compileErrors
=
validateAllASN1FilesInPath
(
"./"
)
parseErrorCount
=
0
print
(
"ASN.1 Parser checks:"
)
print
(
"-----------------------------"
)
for
filename
,
errors
in
parseErrors
.
items
():
if
len
(
errors
)
>
0
:
parseErrorCount
+=
len
(
errors
)
print
(
f
"
{
filename
}
:
{
len
(
errors
)
}
errors"
)
for
error
in
errors
:
print
(
" "
+
str
(
error
))
else
:
print
(
f
"
{
filename
}
: OK"
)
print
(
"-----------------------------"
)
print
(
"ASN.1 Compilation:"
)
print
(
"-----------------------------"
)
if
len
(
compileErrors
)
>
0
:
for
error
in
compileErrors
:
print
(
" "
+
str
(
error
))
else
:
print
(
"Compilation OK"
)
print
(
"-----------------------------"
)
print
(
f
"
{
parseErrorCount
}
parse errors,
{
len
(
compileErrors
)
}
compile errors"
)
exit
(
parseErrorCount
+
len
(
compileErrors
))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment