1*4882a593Smuzhiyunimport os 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunimport infra.basetest 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunclass TestPerlBase(infra.basetest.BRTest): 7*4882a593Smuzhiyun config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 8*4882a593Smuzhiyun """ 9*4882a593Smuzhiyun BR2_TARGET_ROOTFS_CPIO=y 10*4882a593Smuzhiyun # BR2_TARGET_ROOTFS_TAR is not set 11*4882a593Smuzhiyun """ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun def login(self): 14*4882a593Smuzhiyun cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") 15*4882a593Smuzhiyun self.emulator.boot(arch="armv5", 16*4882a593Smuzhiyun kernel="builtin", 17*4882a593Smuzhiyun options=["-initrd", cpio_file]) 18*4882a593Smuzhiyun self.emulator.login() 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun def module_test(self, module, script="1"): 21*4882a593Smuzhiyun cmd = "perl -M{} -e '{}'".format(module, script) 22*4882a593Smuzhiyun self.assertRunOk(cmd) 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun 25*4882a593Smuzhiyunclass TestPerl(TestPerlBase): 26*4882a593Smuzhiyun config = TestPerlBase.config + \ 27*4882a593Smuzhiyun """ 28*4882a593Smuzhiyun BR2_PACKAGE_PERL=y 29*4882a593Smuzhiyun """ 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun def version_test(self): 32*4882a593Smuzhiyun cmd = "perl -v" 33*4882a593Smuzhiyun output, exit_code = self.emulator.run(cmd) 34*4882a593Smuzhiyun self.assertEqual(exit_code, 0) 35*4882a593Smuzhiyun self.assertIn("This is perl 5", output[1]) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun def core_modules_test(self): 38*4882a593Smuzhiyun self.module_test("Cwd") 39*4882a593Smuzhiyun self.module_test("Data::Dumper") 40*4882a593Smuzhiyun self.module_test("Devel::Peek") 41*4882a593Smuzhiyun self.module_test("Digest::MD5") 42*4882a593Smuzhiyun self.module_test("Digest::SHA") 43*4882a593Smuzhiyun self.module_test("Encode") 44*4882a593Smuzhiyun self.module_test("Fcntl") 45*4882a593Smuzhiyun self.module_test("File::Glob") 46*4882a593Smuzhiyun self.module_test("Hash::Util") 47*4882a593Smuzhiyun self.module_test("I18N::Langinfo") 48*4882a593Smuzhiyun self.module_test("IO::Handle") 49*4882a593Smuzhiyun self.module_test("IPC::SysV") 50*4882a593Smuzhiyun self.module_test("List::Util") 51*4882a593Smuzhiyun self.module_test("MIME::Base64") 52*4882a593Smuzhiyun self.module_test("POSIX") 53*4882a593Smuzhiyun self.module_test("Socket") 54*4882a593Smuzhiyun self.module_test("Storable") 55*4882a593Smuzhiyun self.module_test("Sys::Hostname") 56*4882a593Smuzhiyun self.module_test("Sys::Syslog") 57*4882a593Smuzhiyun self.module_test("Time::HiRes") 58*4882a593Smuzhiyun self.module_test("Time::Piece") 59*4882a593Smuzhiyun self.module_test("Unicode::Collate") 60*4882a593Smuzhiyun self.module_test("Unicode::Normalize") 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun def test_run(self): 63*4882a593Smuzhiyun self.login() 64*4882a593Smuzhiyun self.version_test() 65*4882a593Smuzhiyun self.core_modules_test() 66