def test_remove_options(self):
		obs = ScriptInfo(self.info_dict, 'example_script', 'example_script.py')
		obs.remove_options('choice_ex,repeat_ex')
		self.assertEqual(obs.optional_opts, [])

		obs = ScriptInfo(self.info_dict, 'example_script', 'example_script.py')
		obs.remove_options('choice_ex')
		self.assertEqual(len(obs.optional_opts), 1)
		obs_option = obs.optional_opts[0]
		self.assertEqual(obs_option.name, 'repeat_ex')
		self.assertEqual(obs_option.type, 'repeat')
		self.assertEqual(obs_option.short_opt, '-r')
		self.assertEqual(obs_option.long_opt, '--repeat_ex')
		self.assertEqual(obs_option.label, 'An example of existing_filepaths option')
		self.assertEqual(obs_option.default, None)
		self.assertEqual(obs_option.choices, None)
		self.assertEqual(obs_option.format, None)

		# Try to remove a required option
		obs = ScriptInfo(self.info_dict, 'example_script', 'example_script.py')
		self.assertRaises(ValueError, obs.remove_options, 'input_fp')

		# Try to remove an option which does not existss
		obs = ScriptInfo(self.info_dict, 'example_script', 'example_script.py')
		self.assertRaises(ValueError, obs.remove_options, 'option')
	def test_get_optional_opt(self):
		obj = ScriptInfo(self.info_dict, 'example_script', 'example_script.py')
		obs = obj._get_optional_opt('repeat_ex')
		self.assertEqual(obs.name, 'repeat_ex')
		self.assertEqual(obs.type, 'repeat')
		self.assertEqual(obs.short_opt, '-r')
		self.assertEqual(obs.long_opt, '--repeat_ex')
		self.assertEqual(obs.label, 'An example of existing_filepaths option')
		self.assertEqual(obs.default, None)
		self.assertEqual(obs.choices, None)
		self.assertEqual(obs.format, None)

		# This option does not exists
		obs = obj._get_optional_opt('option')
		self.assertEqual(obs, None)

		# This option is required
		obs = obj._get_optional_opt('input_fp')
		self.assertEqual(obs, None)