import os import infra.basetest class TestGnuplot(infra.basetest.BRTest): rootfs_overlay = \ infra.filepath("tests/package/test_gnuplot/rootfs-overlay") config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ f""" BR2_PACKAGE_GNUPLOT=y BR2_ROOTFS_OVERLAY="{rootfs_overlay}" BR2_TARGET_ROOTFS_CPIO=y # BR2_TARGET_ROOTFS_TAR is not set """ def gen_gnuplot_cmd(self, gpcmd): return f"gnuplot -e '{gpcmd}'" 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. self.assertRunOk("gnuplot --version") # When the locale is C, Gnuplot print the warning: # "line 0: warning: iconv failed to convert degree sign" # We set the locale to avoid this warning. self.assertRunOk('export LC_ALL="en_US.UTF-8"') # We check Gnuplot can print a string. string = "Hello Buildroot !" cmd = self.gen_gnuplot_cmd(f'print "{string}"') out, ret = self.emulator.run(cmd) self.assertEqual(ret, 0) self.assertEqual(out[0], string) # We check Gnuplot can do a simple arithmetic operation. op1 = 123 op2 = 456 expected_result = op1 * op2 cmd = self.gen_gnuplot_cmd(f"print {op1} * {op2}") out, ret = self.emulator.run(cmd) self.assertEqual(ret, 0) self.assertEqual(int(out[0]), expected_result) # We check Gnuplot can return a specific exit code. exit_code = 123 cmd = self.gen_gnuplot_cmd(f"exit status {exit_code}") _, ret = self.emulator.run(cmd) self.assertEqual(ret, exit_code) # We render a simple plot on the terminal. gpcmd = "set term dumb; set grid; plot [-5:5] x**2;" cmd = self.gen_gnuplot_cmd(gpcmd) self.assertRunOk(cmd) # We check a Gnuplot script executes correctly. cmd = "gnuplot /root/gnuplot-test.plot" self.assertRunOk(cmd) # Our Gnuplot script is supposed to have generated a text # output of the plot. We check this file contains the plot # title set in the script. exp_str = "Buildroot Test Plot" cmd = f"grep -Fo '{exp_str}' /root/gnuplot-test.txt" out, ret = self.emulator.run(cmd) self.assertEqual(ret, 0) self.assertEqual(out[0], exp_str)