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/
|
||||
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/
|
||||
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