def test_10_isdir(self, mock_isdir): """Test FileUtil.isdir()""" mock_isdir.return_value = True status = udocker.FileUtil("somedir").isdir() self.assertTrue(status) mock_isdir.return_value = False status = udocker.FileUtil("somedir").isdir() self.assertFalse(status)
def test_15_copyto(self): """Test FileUtil.copyto() file copy""" with mock.patch(BUILTINS + '.open', mock.mock_open()): status = udocker.FileUtil("source").copyto("dest") self.assertTrue(status) status = udocker.FileUtil("source").copyto("dest", "w") self.assertTrue(status) status = udocker.FileUtil("source").copyto("dest", "a") self.assertTrue(status)
def test_12_run_chdir_to_vol(self, mock_msg): """Test run change dir to volume""" # workdir cannot be set to a volume (regression of #51) if container_not_exists("busyRUN"): self.skipTest("no container") udocker_test_dir = "/tmp/UDOCKER.TEST" udocker.FileUtil(udocker_test_dir).mkdir() do_run(self, mock_msg, [ UDOCKER, "run", "--workdir=/aaa/tmp/UDOCKER.TEST", "-v", "/tmp:/aaa/tmp", "busyRUN", "/bin/pwd" ], None, " /aaa/tmp/UDOCKER.TEST") udocker.FileUtil(udocker_test_dir).remove()
def test_08_host_env(self, mock_msg): """Test binding of home dir""" if container_not_exists("busyRUN"): self.skipTest("no container") if not HOME: self.skipTest("no HOME dir") udocker_test_dir = HOME + "/UDOCKER.TEST" udocker.FileUtil(udocker_test_dir).mkdir() do_run(self, mock_msg, [ UDOCKER, "run", "--bindhome", "busyRUN", "/bin/ls", "-d", udocker_test_dir ], None, "!ls:") udocker.FileUtil(udocker_test_dir).remove()
def test_08_verify_tar03(self, mock_isfile, mock_call, mock_msg): """Test FileUtil.verify_tar() check tar file""" mock_msg.level = 0 mock_isfile.return_value = True mock_call.return_value = 1 status = udocker.FileUtil("tarball.tar").verify_tar() self.assertFalse(status)
def test_01_init(self, mock_config): """Test FileUtil() constructor""" udocker.conf = mock_config futil = udocker.FileUtil("filename.txt") self.assertEqual(futil.filename, "filename.txt") self.assertTrue(udocker.conf.tmpdir) self.assertTrue(udocker.conf.def_topdir)
def test_02_mktmp(self): """Test FileUtil.mktmp()""" udocker.conf.tmpdir = "/somewhere" tmp_file = udocker.FileUtil("filename2.txt").mktmp() self.assertTrue(tmp_file.endswith("-filename2.txt")) self.assertTrue(tmp_file.startswith("/somewhere/udocker-")) self.assertGreater(len(tmp_file.strip()), 68)
def test_13_find_exec(self, mock_mktmp, mock_getdata, mock_remove, mock_call): """Test FileUtil.find_exec() find executable""" mock_mktmp.return_value.mktmp.return_value = "/tmp/tmpfile" with mock.patch(BUILTINS + '.open', mock.mock_open()): # executable found mock_getdata.return_value = "/bin/executable" filename = udocker.FileUtil("executable").find_exec() self.assertEqual(filename, "/bin/executable") # executable not found mock_getdata.return_value = "not found" filename = udocker.FileUtil("executable").find_exec() self.assertEqual(filename, "") # executable not found mock_getdata.return_value = "xxxxx" filename = udocker.FileUtil("executable").find_exec() self.assertEqual(filename, "")
def test_14_find_inpath(self, mock_exists): """Test FileUtil.find_inpath() file is in a path""" # exist mock_exists.return_value = True filename = udocker.FileUtil("exec").find_inpath("/bin:/usr/bin") self.assertEqual(filename, "/bin/exec") # does not exist mock_exists.return_value = False filename = udocker.FileUtil("exec").find_inpath("/bin:/usr/bin") self.assertEqual(filename, "") # exist PATH= mock_exists.return_value = True filename = udocker.FileUtil("exec").find_inpath("PATH=/bin:/usr/bin") self.assertEqual(filename, "/bin/exec") # does not exist PATH= mock_exists.return_value = False filename = udocker.FileUtil("exec").find_inpath("PATH=/bin:/usr/bin") self.assertEqual(filename, "")
def test_05_remove_dir(self, mock_uid, mock_isfile, mock_islink, mock_isdir, mock_call): """Test FileUtil.remove() with directories""" mock_uid.return_value = os.getuid() mock_isfile.return_value = False mock_islink.return_value = False mock_isdir.return_value = True mock_call.return_value = 0 # remove directory under /tmp OK futil = udocker.FileUtil("/tmp/directory") futil.topdir = "/home/user/.udocker" futil.tmpdir = "/tmp" status = futil.remove() self.assertTrue(status) # remove directory under /tmp NOT OK mock_call.return_value = 1 futil = udocker.FileUtil("/tmp/directory") futil.topdir = "/home/user/.udocker" futil.tmpdir = "/tmp" status = futil.remove() self.assertFalse(status)
def test_04_remove_file(self, mock_uid, mock_isfile, mock_islink, mock_remove): """Test FileUtil.remove() with plain files""" mock_uid.return_value = os.getuid() mock_isfile.return_value = True # under /tmp futil = udocker.FileUtil("/tmp/filename4.txt") futil.topdir = "/home/user/.udocker" futil.tmpdir = "/tmp" status = futil.remove() self.assertTrue(status) # under user home futil = udocker.FileUtil("/home/user/.udocker/filename4.txt") futil.topdir = "/home/user/.udocker" futil.tmpdir = "/tmp" status = futil.remove() self.assertTrue(status) # outside of scope 1 futil = udocker.FileUtil("/etc/filename4.txt") futil.topdir = "/home/user/.udocker" futil.tmpdir = "/tmp" status = futil.remove() self.assertFalse(status)
def test_12_getdata(self): """Test FileUtil.size() get file content""" with mock.patch(BUILTINS + '.open', mock.mock_open(read_data='qwerty')): data = udocker.FileUtil("somefile").getdata() self.assertEqual(data, 'qwerty')
def test_03_uid(self, mock_stat): """Test FileUtil.uid()""" mock_stat.return_value.st_uid = 1234 uid = udocker.FileUtil("filename3.txt").uid() self.assertEqual(uid, 1234)
def tearDown(self): """Cleanup test""" udocker.FileUtil().cleanup()
def tearDownClass(cls): """Cleanup class""" do_action([UDOCKER, "rm", "busyTMP"]) do_action([UDOCKER, "rm", "busyRUN"]) do_action([UDOCKER, "rm", "busyTEST"]) udocker.FileUtil().cleanup()
def tearDownClass(cls): """Cleanup class""" do_action([UDOCKER, "rmi", "busybox:latest"]) do_action([UDOCKER, "rm", "busyNAME"]) do_action([UDOCKER, "rm", "busyTEST"]) udocker.FileUtil().cleanup()
def tearDownClass(cls): """Cleanup test""" udocker.FileUtil().cleanup()
def test_11_size(self, mock_stat): """Test FileUtil.size() get file size""" mock_stat.return_value.st_size = 4321 size = udocker.FileUtil("somefile").size() self.assertEqual(size, 4321)
def test_09_cleanup(self, mock_remove, mock_config): """Test FileUtil.cleanup() delete tmp files""" udocker.conf = mock_config udocker.conf.tmptrash = {'file1.txt': None, 'file2.txt': None} udocker.FileUtil("").cleanup() self.assertEqual(mock_remove.call_count, 2)