dc101babfd
Signed-off-by: Julien Olivain <ju.o@free.fr> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
99 lines
2.5 KiB
Python
99 lines
2.5 KiB
Python
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)
|