|
@@ -0,0 +1,73 @@
|
|
|
+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)
|