def test_mc_init(self): proj_list = mcapi.get_all_projects() proj_dict = {p.name:p for p in proj_list} self.assertFalse('CLITest' in proj_dict) testargs = ['mc', 'init'] with captured_output(wd=self.proj_path) as (sout, serr): init_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() remote = mcapi.use_remote() url = remote.config.mcurl self.assertEqual(out[0], "Created new project at: " + url) testargs = ['mc', 'init'] with captured_output(wd=self.proj_path) as (sout, serr): init_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertTrue(re.match("Already in project. name: CLITest", out[0])) proj_list = mcapi.get_all_projects() proj_dict = {p.name:p for p in proj_list} self.assertTrue('CLITest' in proj_dict) with working_dir(self.proj_path): proj = make_local_project() self.assertEqual(proj.name, 'CLITest')
def test_one_file(self): # ls 1 file (in top directory) testargs = ['mc', 'ls', self.files[2][0]] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[1].split()[i_l_type], 'file') self.assertEqual(out[1].split()[i_r_size], '-') self.assertEqual(out[1].split()[i_r_type], '-') self.assertEqual(out[1].split()[i_name], 'level_1/file_A.txt') self.assertEqual(out[1].split()[i_id], '-') testargs = ['mc', 'up', self.files[2][0]] with captured_output(wd=self.proj_path) as (sout, serr): up_subcommand(testargs) #print_stringIO(sout) testargs = ['mc', 'ls', self.files[2][0]] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[1].split()[i_l_type], 'file') self.assertNotEqual(out[1].split()[i_r_size], '-') self.assertEqual(out[1].split()[i_r_type], 'file') self.assertEqual(out[1].split()[i_name], 'level_1/file_A.txt') self.assertNotEqual(out[1].split()[i_id], '-')
def test_mc_clone(self): proj_list = mcapi.get_all_projects() proj_dict = {p.name: p for p in proj_list} self.assertFalse('CLITest' in proj_dict) mkdir_if(self.cli_test_project_path) mkdir_if(self.proj_path) testargs = ['mc', 'init'] with captured_output(wd=self.proj_path) as (sout, serr): init_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() remote = mcapi.use_remote() url = remote.config.mcurl self.assertEqual(out[0], "Created new project at: " + url) proj_list = mcapi.get_all_projects() proj_dict = {p.name: p for p in proj_list} self.clean_files() mkdir_if(self.cli_test_project_path) testargs = ['mc', 'clone', proj_dict['CLITest'].id] with captured_output(wd=self.cli_test_project_path) as (sout, serr): clone_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertTrue(re.match("Cloned project", out[0])) self.assertEqual('CLITest', out[3].split()[0])
def test_mc_expt(self): testargs = ['mc', 'init'] with captured_output(wd=self.proj_path) as (sout, serr): init_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() remote = mcapi.use_remote() url = remote.config.mcurl self.assertEqual(out[0], "Created new project at: " + url) testargs = ['mc', 'expt', '-c', 'test_A'] with captured_output(wd=self.proj_path) as (sout, serr): expt_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertTrue(re.match("Created experiment: test_A", out[0])) self.assertTrue(re.match("Set current experiment: 'test_A'", out[1])) testargs = ['mc', 'expt', '-c', 'test_B'] with captured_output(wd=self.proj_path) as (sout, serr): expt_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertTrue(re.match("Created experiment: test_B", out[0])) self.assertTrue(re.match("Set current experiment: 'test_B'", out[1])) proj_list = mcapi.get_all_projects() proj_dict = {p.name: p for p in proj_list} expts_list = proj_dict['CLITest'].get_all_experiments() expts_dict = {e.name: e for e in expts_list} self.assertEqual(len(expts_list), 2) self.assertTrue('test_A' in expts_dict) self.assertTrue('test_B' in expts_dict) testargs = ['mc', 'expt', '-d', 'test_B', '-n'] with captured_output(wd=self.proj_path) as (sout, serr): expt_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() proj_list = mcapi.get_all_projects() proj_dict = {p.name: p for p in proj_list} expts_list = proj_dict['CLITest'].get_all_experiments() expts_dict = {e.name: e for e in expts_list} self.assertEqual(len(expts_list), 2) self.assertTrue('test_A' in expts_dict) self.assertTrue('test_B' in expts_dict) testargs = ['mc', 'expt', '-d', 'test_B'] with captured_output(wd=self.proj_path) as (sout, serr): expt_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() proj_list = mcapi.get_all_projects() proj_dict = {p.name: p for p in proj_list} expts_list = proj_dict['CLITest'].get_all_experiments() expts_dict = {e.name: e for e in expts_list} self.assertEqual(len(expts_list), 1) self.assertTrue('test_A' in expts_dict)
def test_one_dir(self): # ls directory testargs = ['mc', 'ls', self.dirs[0]] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[2].split()[i_l_type], 'file') self.assertEqual(out[2].split()[i_r_type], '-') self.assertEqual(out[3].split()[i_l_type], 'file') self.assertEqual(out[3].split()[i_r_type], '-') self.assertEqual(out[4].split()[i_l_type], 'dir') self.assertEqual(out[4].split()[i_r_type], '-') testargs = ['mc', 'up', self.files[2][0], self.files[3][0]] with captured_output(wd=self.proj_path) as (sout, serr): up_subcommand(testargs) #print_stringIO(sout) testargs = ['mc', 'ls', self.dirs[0]] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[2].split()[i_l_type], 'file') self.assertNotEqual(out[2].split()[i_r_type], '-') self.assertEqual(out[3].split()[i_l_type], 'file') self.assertNotEqual(out[3].split()[i_r_type], '-') self.assertEqual(out[4].split()[i_l_type], 'dir') self.assertEqual(out[4].split()[i_r_type], '-')
def init(cls): mkdir_if(cls.cli_test_project_path) mkdir_if(cls.proj_path) testargs = ['mc', 'init'] with captured_output(wd=cls.proj_path) as (sout, serr): init_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() cls.make_test_files() testargs = ['mc', 'up', '-r', '.'] with captured_output(wd=cls.proj_path) as (sout, serr): up_subcommand(testargs) cls.remove_test_files()
def test_mc_templates_by_name_json(self): testargs = ['mc', 'templates', '--json', 'Create Samples'] with captured_output() as (sout, serr): self.templates_subcommand(testargs) #print_stringIO(sout) template = json.loads(sout.getvalue()) self.assertTrue(True)
def test_mc_templates_by_id(self): testargs = ['mc', 'templates', '--id', 'global_Create Samples'] with captured_output() as (sout, serr): self.templates_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() err = serr.getvalue().splitlines() self.assertTrue(True)
def test_one_with_intermediate(self): self.assertFalse(os.path.exists(self.files[4][0])) # download 1 file (in level_2 directory) testargs = ['mc', 'down', self.files[4][0]] with captured_output(wd=self.proj_path) as (sout, serr): down_subcommand(testargs) #print_stringIO(sout) self.assertTrue(os.path.exists(self.files[4][0]))
def test_samp_details(self): samp_subcommand = SampSubcommand() # print sample details testargs = ['mc', 'samp', '--details'] with captured_output(wd=self.proj_path) as (sout, serr): samp_subcommand(testargs) #print_stringIO(sout) self.assertTrue(True)
def test_samp_list_names(self): samp_subcommand = SampSubcommand() # list samples testargs = ['mc', 'samp'] + [samp.name for samp in self.samp] with captured_output(wd=self.proj_path) as (sout, serr): samp_subcommand(testargs) #print_stringIO(sout) self.assertTrue(True)
def test_proc_list(self): proc_subcommand = ProcSubcommand() # list processes testargs = ['mc', 'proc'] with captured_output(wd=self.proj_path) as (sout, serr): proc_subcommand(testargs) #print_stringIO(sout) self.assertTrue(True)
def test_samp_list_ids(self): proc_subcommand = ProcSubcommand() # list samples testargs = ['mc', 'samp', '--id'] + [p.id for p in self.proc] with captured_output(wd=self.proj_path) as (sout, serr): proc_subcommand(testargs) #print_stringIO(sout) self.assertTrue(True)
def test_proc_json(self): proc_subcommand = ProcSubcommand() # print process JSON data testargs = ['mc', 'proc', '--json'] with captured_output(wd=self.proj_path) as (sout, serr): proc_subcommand(testargs) #print_stringIO(sout) data = json.loads(sout.getvalue()) self.assertTrue(True)
def test_samp_json(self): samp_subcommand = SampSubcommand() # print sample JSON data testargs = ['mc', 'samp', '--json'] with captured_output(wd=self.proj_path) as (sout, serr): samp_subcommand(testargs) #print_stringIO(sout) data = json.loads(sout.getvalue()) self.assertTrue(True)
def test_mc_remote(self): testargs = ['mc', 'remote'] with captured_output() as (sout, serr): remote_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() err = serr.getvalue().splitlines() remote = use_remote() url = remote.config.mcurl self.assertEqual(url, out[1].split()[1])
def test_mc_proj(self): testargs = ['mc', 'proj'] with captured_output() as (sout, serr): self.proj_subcommand(testargs) print_stringIO(sout) out = sout.getvalue().splitlines() err = serr.getvalue().splitlines() headers = out[0].split() self.assertEqual(headers[0], "name") self.assertEqual(headers[1], "owner") self.assertEqual(headers[2], "id")
def test_one_in_top(self): # upload 1 file (in top directory) testargs = ['mc', 'up', self.files[0][0]] with captured_output(wd=self.proj_path) as (sout, serr): up_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() proj = self.get_proj() file = proj.get_by_local_path(self.files[0][0]) self.assertTrue(isinstance(file, mcapi.File)) self.assertEqual(file.name, os.path.basename(self.files[0][0])) self.assertEqual(file._directory_id, proj.get_top_directory().id)
def test_recursive(self): for d in self.dirs: self.assertFalse(os.path.exists(d)) for f in self.files[2:]: self.assertFalse(os.path.exists(f[0])) # download files in level_1 and level_2 testargs = ['mc', 'down', '-r', self.dirs[0]] with captured_output(wd=self.proj_path) as (sout, serr): down_subcommand(testargs) #print_stringIO(sout) for d in self.dirs: self.assertTrue(os.path.exists(d)) for f in self.files[2:]: self.assertTrue(os.path.exists(f[0]))
def test_recursive_all(self): for d in self.dirs: self.assertFalse(os.path.exists(d)) for f in self.files: self.assertFalse(os.path.exists(f[0])) # download everything testargs = ['mc', 'down', '-r', '.'] with captured_output(wd=self.proj_path) as (sout, serr): down_subcommand(testargs) #print_stringIO(sout) for d in self.dirs: self.assertTrue(os.path.exists(d)) for f in self.files: self.assertTrue(os.path.exists(f[0]))
def test_one_with_intermediate(self): # upload 1 file (in level_2 directory) testargs = ['mc', 'up', self.files[4][0]] with captured_output(wd=self.proj_path) as (sout, serr): up_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() proj = self.get_proj() file = proj.get_by_local_path(self.files[4][0]) parent = proj.get_directory_by_id(file._directory_id) self.assertTrue(isinstance(file, mcapi.File)) self.assertEqual(file.name, os.path.basename(self.files[4][0])) self.assertEqual(file._directory_id, parent.id) self.assertEqual(parent.path, "CLITest/level_1/level_2")
def test_recursive(self): # upload files in level_1 and level_2 testargs = ['mc', 'up', '-r', self.dirs[0]] with captured_output(wd=self.proj_path) as (sout, serr): up_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() proj = self.get_proj() for d in self.dirs: dir = proj.get_by_local_path(d) self.assertTrue(isinstance(dir, mcapi.Directory)) for f in self.files[2:]: file = proj.get_by_local_path(f[0]) self.assertTrue(isinstance(file, mcapi.File))
def test_mc_templates_all(self): testargs = ['mc', 'templates'] with captured_output() as (sout, serr): self.templates_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() err = serr.getvalue().splitlines() headers = out[0].split() self.assertEqual(headers[0], "name") self.assertEqual(headers[1], "id") name = [x.split("global_")[0].strip() for x in out if "global_" in x] id = [x.split("global_")[1].strip() for x in out if "global_" in x] for n in name: self.assertEqual(name.index(n), id.index(n))
def test_two_dir(self): # ls two directories testargs = ['mc', 'ls', self.dirs[0], self.dirs[1]] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[2].split()[i_l_type], 'file') self.assertEqual(out[2].split()[i_r_type], '-') self.assertEqual(out[3].split()[i_l_type], 'file') self.assertEqual(out[3].split()[i_r_type], '-') self.assertEqual(out[4].split()[i_l_type], 'dir') self.assertEqual(out[4].split()[i_r_type], '-') self.assertEqual(out[8].split()[i_l_type], 'file') self.assertEqual(out[8].split()[i_r_type], '-') self.assertEqual(out[9].split()[i_l_type], 'file') self.assertEqual(out[9].split()[i_r_type], '-') testargs = ['mc', 'up', self.dirs[1]] with captured_output(wd=self.proj_path) as (sout, serr): up_subcommand(testargs) #print_stringIO(sout) testargs = ['mc', 'ls', self.dirs[0], self.dirs[1], '--checksum'] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[2].split()[i_l_type], 'file') self.assertEqual(out[2].split()[i_r_type], '-') self.assertEqual(out[3].split()[i_l_type], 'file') self.assertEqual(out[3].split()[i_r_type], '-') self.assertEqual(out[4].split()[i_l_type], 'dir') self.assertNotEqual(out[4].split()[i_r_size], '-') self.assertEqual(out[4].split()[i_r_type], 'dir') self.assertEqual(out[8].split()[i_l_type], 'file') self.assertNotEqual(out[8].split()[i_r_size], '-') self.assertEqual(out[8].split()[i_r_type], 'file') self.assertEqual(out[8].split()[i_eq], 'True') self.assertEqual(out[9].split()[i_l_type], 'file') self.assertNotEqual(out[9].split()[i_r_size], '-') self.assertEqual(out[9].split()[i_r_type], 'file') # test equivalence check with open(self.files[4][0], 'w') as f: f.write("changed") testargs = ['mc', 'ls', self.dirs[0], self.dirs[1], '--checksum'] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) out = sout.getvalue().splitlines() self.assertEqual(out[8].split()[i_eq], 'False') # test json testargs = ['mc', 'ls', self.dirs[0], self.dirs[1], '--checksum'] with captured_output(wd=self.proj_path) as (sout, serr): ls_subcommand(testargs) #print_stringIO(sout) self.assertTrue(True)