support/testing: add ed runtime test
Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
(cherry picked from commit dc101babfd
)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
9b689f8f5c
commit
3c2463c9cf
@ -1771,6 +1771,7 @@ F: support/testing/tests/package/test_cryptsetup/
|
|||||||
F: support/testing/tests/package/test_ddrescue.py
|
F: support/testing/tests/package/test_ddrescue.py
|
||||||
F: support/testing/tests/package/test_ddrescue/
|
F: support/testing/tests/package/test_ddrescue/
|
||||||
F: support/testing/tests/package/test_dos2unix.py
|
F: support/testing/tests/package/test_dos2unix.py
|
||||||
|
F: support/testing/tests/package/test_ed.py
|
||||||
F: support/testing/tests/package/test_file.py
|
F: support/testing/tests/package/test_file.py
|
||||||
F: support/testing/tests/package/test_file/
|
F: support/testing/tests/package/test_file/
|
||||||
F: support/testing/tests/package/test_fluidsynth.py
|
F: support/testing/tests/package/test_fluidsynth.py
|
||||||
|
98
support/testing/tests/package/test_ed.py
Normal file
98
support/testing/tests/package/test_ed.py
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import infra.basetest
|
||||||
|
|
||||||
|
|
||||||
|
class TestEd(infra.basetest.BRTest):
|
||||||
|
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||||
|
"""
|
||||||
|
BR2_PACKAGE_ED=y
|
||||||
|
BR2_TARGET_ROOTFS_CPIO=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
"""
|
||||||
|
|
||||||
|
def run_ed_cmds(self, ed_cmds):
|
||||||
|
cmd = "ed <<EOF\n"
|
||||||
|
cmd += "\n".join(ed_cmds)
|
||||||
|
cmd += "\nEOF"
|
||||||
|
self.assertRunOk(cmd)
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
|
||||||
|
self.emulator.boot(arch="armv5",
|
||||||
|
kernel="builtin",
|
||||||
|
options=["-initrd", cpio_file])
|
||||||
|
self.emulator.login()
|
||||||
|
|
||||||
|
# We check the program can run. This also check we have the
|
||||||
|
# actual GNU ed, rather than the Busybox ed, which does not
|
||||||
|
# recognize the --version option.
|
||||||
|
self.assertRunOk("ed --version")
|
||||||
|
|
||||||
|
test_fname = "test.txt"
|
||||||
|
input_text_lines = [
|
||||||
|
"Hello World",
|
||||||
|
"Embedded Linux is Hard."
|
||||||
|
]
|
||||||
|
output_expected_text = [
|
||||||
|
"Hello Buildroot",
|
||||||
|
"---------------",
|
||||||
|
"Making Embedded Linux Easy."
|
||||||
|
]
|
||||||
|
|
||||||
|
# We define few "ed" command sequences, creating and editing a
|
||||||
|
# text file. The final output of this sequence is expected to
|
||||||
|
# match the expected text previously defined.
|
||||||
|
create_file = ["a"]
|
||||||
|
create_file += input_text_lines
|
||||||
|
create_file += [
|
||||||
|
".",
|
||||||
|
f"w {test_fname}",
|
||||||
|
"q"
|
||||||
|
]
|
||||||
|
|
||||||
|
edit_file = [
|
||||||
|
f"r {test_fname}",
|
||||||
|
"1",
|
||||||
|
"s/World/Buildroot/",
|
||||||
|
"2",
|
||||||
|
"s/is Hard/Easy/",
|
||||||
|
"s/^/Making /",
|
||||||
|
"w",
|
||||||
|
"q"
|
||||||
|
]
|
||||||
|
|
||||||
|
insert_txt = [
|
||||||
|
f"r {test_fname}",
|
||||||
|
"2",
|
||||||
|
"i",
|
||||||
|
"This is a new line",
|
||||||
|
".",
|
||||||
|
"w",
|
||||||
|
"q"
|
||||||
|
]
|
||||||
|
|
||||||
|
change_txt = [
|
||||||
|
f"r {test_fname}",
|
||||||
|
"2",
|
||||||
|
"c",
|
||||||
|
"---------------",
|
||||||
|
".",
|
||||||
|
"w"
|
||||||
|
"q"
|
||||||
|
]
|
||||||
|
|
||||||
|
# We execute all "ed" command batches.
|
||||||
|
ed_cmd_batches = [
|
||||||
|
create_file,
|
||||||
|
edit_file,
|
||||||
|
insert_txt,
|
||||||
|
change_txt
|
||||||
|
]
|
||||||
|
for ed_cmd_batch in ed_cmd_batches:
|
||||||
|
self.run_ed_cmds(ed_cmd_batch)
|
||||||
|
|
||||||
|
# The final test file should contain the expected text.
|
||||||
|
out, ret = self.emulator.run(f"cat {test_fname}")
|
||||||
|
self.assertEqual(ret, 0)
|
||||||
|
self.assertEqual(out, output_expected_text)
|
Loading…
Reference in New Issue
Block a user