Adding upstream version 1:10.0.2+ds.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
bf2768bd0f
commit
ea34ddeea6
37998 changed files with 9510514 additions and 0 deletions
136
scripts/xml-preprocess-test.py
Normal file
136
scripts/xml-preprocess-test.py
Normal file
|
@ -0,0 +1,136 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2023 Red Hat, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Unit tests for xml-preprocess"""
|
||||
|
||||
import contextlib
|
||||
import importlib
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
import tempfile
|
||||
import unittest
|
||||
from io import StringIO
|
||||
|
||||
xmlpp = importlib.import_module("xml-preprocess")
|
||||
|
||||
|
||||
class TestXmlPreprocess(unittest.TestCase):
|
||||
"""Tests for xml-preprocess.Preprocessor"""
|
||||
|
||||
def test_preprocess_xml(self):
|
||||
with tempfile.NamedTemporaryFile(mode="w", delete=False) as temp_file:
|
||||
temp_file.write("<root></root>")
|
||||
temp_file_name = temp_file.name
|
||||
result = xmlpp.preprocess_xml(temp_file_name)
|
||||
self.assertEqual(result, "<root></root>")
|
||||
os.remove(temp_file_name)
|
||||
|
||||
def test_save_xml(self):
|
||||
with tempfile.NamedTemporaryFile(mode="w", delete=False) as temp_file:
|
||||
temp_file_name = temp_file.name
|
||||
xmlpp.save_xml("<root></root>", temp_file_name)
|
||||
self.assertTrue(os.path.isfile(temp_file_name))
|
||||
os.remove(temp_file_name)
|
||||
|
||||
def test_include(self):
|
||||
with tempfile.NamedTemporaryFile(mode="w", delete=False) as inc_file:
|
||||
inc_file.write("<included>Content from included file</included>")
|
||||
inc_file_name = inc_file.name
|
||||
xml_str = f"<?include {inc_file_name} ?>"
|
||||
expected = "<included>Content from included file</included>"
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess(xml_str)
|
||||
self.assertEqual(result, expected)
|
||||
os.remove(inc_file_name)
|
||||
self.assertRaises(FileNotFoundError, xpp.preprocess, xml_str)
|
||||
|
||||
def test_envvar(self):
|
||||
os.environ["TEST_ENV_VAR"] = "TestValue"
|
||||
xml_str = "<root>$(env.TEST_ENV_VAR)</root>"
|
||||
expected = "<root>TestValue</root>"
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess(xml_str)
|
||||
self.assertEqual(result, expected)
|
||||
self.assertRaises(KeyError, xpp.preprocess, "$(env.UNKNOWN)")
|
||||
|
||||
def test_sys_var(self):
|
||||
xml_str = "<root>$(sys.ARCH)</root>"
|
||||
expected = f"<root>{platform.architecture()[0]}</root>"
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess(xml_str)
|
||||
self.assertEqual(result, expected)
|
||||
self.assertRaises(KeyError, xpp.preprocess, "$(sys.UNKNOWN)")
|
||||
|
||||
def test_cus_var(self):
|
||||
xml_str = "<root>$(var.USER)</root>"
|
||||
expected = "<root></root>"
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess(xml_str)
|
||||
self.assertEqual(result, expected)
|
||||
xml_str = "<?define USER=FOO?><root>$(var.USER)</root>"
|
||||
expected = "<root>FOO</root>"
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess(xml_str)
|
||||
self.assertEqual(result, expected)
|
||||
|
||||
def test_error_warning(self):
|
||||
xml_str = "<root><?warning \"test warn\"?></root>"
|
||||
expected = "<root></root>"
|
||||
xpp = xmlpp.Preprocessor()
|
||||
out = StringIO()
|
||||
with contextlib.redirect_stdout(out):
|
||||
result = xpp.preprocess(xml_str)
|
||||
self.assertEqual(result, expected)
|
||||
self.assertEqual(out.getvalue(), "[Warning]: test warn\n")
|
||||
self.assertRaises(RuntimeError, xpp.preprocess, "<?error \"test\"?>")
|
||||
|
||||
def test_cmd(self):
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess('<root><?cmd "echo hello world"?></root>')
|
||||
self.assertEqual(result, "<root>hello world</root>")
|
||||
self.assertRaises(
|
||||
subprocess.CalledProcessError,
|
||||
xpp.preprocess, '<?cmd "test-unknown-cmd"?>'
|
||||
)
|
||||
|
||||
def test_foreach(self):
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess(
|
||||
'<root><?foreach x in a;b;c?>$(var.x)<?endforeach?></root>'
|
||||
)
|
||||
self.assertEqual(result, "<root>abc</root>")
|
||||
|
||||
def test_if_elseif(self):
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess('<root><?if True?>ok<?endif?></root>')
|
||||
self.assertEqual(result, "<root>ok</root>")
|
||||
result = xpp.preprocess('<root><?if False?>ok<?endif?></root>')
|
||||
self.assertEqual(result, "<root></root>")
|
||||
result = xpp.preprocess('<root><?if True?>ok<?else?>ko<?endif?></root>')
|
||||
self.assertEqual(result, "<root>ok</root>")
|
||||
result = xpp.preprocess('<root><?if False?>ok<?else?>ko<?endif?></root>')
|
||||
self.assertEqual(result, "<root>ko</root>")
|
||||
result = xpp.preprocess(
|
||||
'<root><?if False?>ok<?elseif True?>ok2<?else?>ko<?endif?></root>'
|
||||
)
|
||||
self.assertEqual(result, "<root>ok2</root>")
|
||||
result = xpp.preprocess(
|
||||
'<root><?if False?>ok<?elseif False?>ok<?else?>ko<?endif?></root>'
|
||||
)
|
||||
self.assertEqual(result, "<root>ko</root>")
|
||||
|
||||
def test_ifdef(self):
|
||||
xpp = xmlpp.Preprocessor()
|
||||
result = xpp.preprocess('<root><?ifdef USER?>ok<?else?>ko<?endif?></root>')
|
||||
self.assertEqual(result, "<root>ko</root>")
|
||||
result = xpp.preprocess(
|
||||
'<?define USER=FOO?><root><?ifdef USER?>ok<?else?>ko<?endif?></root>'
|
||||
)
|
||||
self.assertEqual(result, "<root>ok</root>")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
Loading…
Add table
Add a link
Reference in a new issue