1*4882a593Smuzhiyunimport os 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunimport infra.basetest 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunclass TestSudo(infra.basetest.BRTest): 7*4882a593Smuzhiyun config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 8*4882a593Smuzhiyun """ 9*4882a593Smuzhiyun BR2_PACKAGE_SUDO=y 10*4882a593Smuzhiyun BR2_TARGET_ROOTFS_CPIO=y 11*4882a593Smuzhiyun # BR2_TARGET_ROOTFS_TAR is not set 12*4882a593Smuzhiyun """ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun def test_run(self): 15*4882a593Smuzhiyun img = os.path.join(self.builddir, "images", "rootfs.cpio") 16*4882a593Smuzhiyun self.emulator.boot(arch="armv5", 17*4882a593Smuzhiyun kernel="builtin", 18*4882a593Smuzhiyun options=["-initrd", img]) 19*4882a593Smuzhiyun self.emulator.login() 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun # -D don't set a password 22*4882a593Smuzhiyun # -h set home directory 23*4882a593Smuzhiyun # -H don't create home directory 24*4882a593Smuzhiyun # -s set shell 25*4882a593Smuzhiyun self.assertRunOk("adduser -D -h /tmp -H -s /bin/sh sudotest") 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun self.assertRunOk("echo 'sudotest ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers") 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun output, exit_code = self.emulator.run("su - sudotest -c 'echo hello world'") 30*4882a593Smuzhiyun self.assertEqual(output, ["hello world"]) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun output, exit_code = self.emulator.run("su - sudotest -c 'sudo echo hello world'") 33*4882a593Smuzhiyun self.assertEqual(exit_code, 0) 34*4882a593Smuzhiyun self.assertEqual(output, ["hello world"]) 35