def test_with_rebased_files_returns_same_args_when_there_are_no_files(
         self):
     args = ToolArguments()
     rebased_args = args.with_rebased_files(
         Directory(os.path.join(ROOT_DIR, 'inputs')),
         Directory(os.path.join(ROOT_DIR, 'outputs')))
     self.assertEqual(args, rebased_args)
 def test_clone_but_returns_other_args_equal_to_original_args_except_for_changed_attributes(
         self):
     args = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                          args='--arg')
     cloned_args = args.clone_but(args='--other-arg')
     self.assertIsNot(args, cloned_args)
     self.assertEqual(cloned_args.input_files, args.input_files)
     self.assertEqual(cloned_args.args, '--other-arg')
 def test_with_rebased_files_returns_correct_args_when_there_are_files(
         self):
     args = ToolArguments(input_files=(StandaloneFile('file.exe'), ))
     rebased_args = args.with_rebased_files(
         Directory(os.path.join(ROOT_DIR, 'inputs')),
         Directory(os.path.join(ROOT_DIR, 'outputs')))
     self.assertEqual(len(rebased_args.input_files), 1)
     self.assertEqual(rebased_args.input_files[0].path,
                      os.path.join(ROOT_DIR, 'inputs', 'file.exe'))
 def test_without_paths_and_output_files_returns_correct_args_when_there_are_files(
         self):
     args = ToolArguments(input_files=(File(
         'file.exe', Directory(os.path.join(ROOT_DIR, 'inputs'))), ), )
     stripped_args = args.without_paths_and_output_files
     self.assertEqual(len(stripped_args.input_files), 1)
     self.assertEqual(stripped_args.input_files[0].path, 'file.exe')
 def test_from_test_settings_input_files_are_present_when_two_inputs_are_given(
         self):
     test_settings = ToolTestSettings(tool='tool',
                                      input=('test1.exe', 'test2.exe'))
     args = ToolArguments.from_test_settings(test_settings)
     self.assertEqual(len(args.input_files), 2)
     self.assertEqual(args.input_files[0].name, 'test1.exe')
     self.assertEqual(args.input_files[1].name, 'test2.exe')
 def test_log_file_name_returns_correct_name_when_there_are_two_input_files(self):
     self.tool = self.create_tool(
         name='tool',
         args=ToolArguments(
             input_files=(StandaloneFile('file1.exe'), StandaloneFile('file2.exe'))
         )
     )
     self.assertEqual(self.tool.log_file_name, 'tool.log')
 def test_from_tool_arguments_returns_correct_test_case_name(self):
     name = TestCaseName.from_tool_arguments(
         test_name='Test',
         tool_arguments=ToolArguments(
             input_files=(StandaloneFile('gcd.exe'),),
             args='-a x86'
         )
     )
     self.assertEqual(name, 'Test (gcd.exe -a x86)')
 def setUp(self):
     self.name = 'tool'
     self.dir = mock.Mock(spec_set=Directory)
     type(self.dir).path = mock.PropertyMock(return_value='/test/outputs/tool')
     self.cmd_runner = mock.Mock(spec_set=CmdRunner)
     self.args = ToolArguments(
         input_files=(File('file.exe', Directory('/test')),)
     )
     self.output = 'output'
     self.return_code = 0
     self.timeouted = False
 def test_args_is_set_to_none_when_empty_args_are_passed(self):
     # When a user writes the following settings
     #
     #     args=''
     #
     # we want to consider it as
     #
     #     args=None
     #
     # Otherwise, the runner would pass an extra empty argument when running
     # the tool.
     args = ToolArguments(args='')
     self.assertIsNone(args.args)
 def setUp(self):
     self.cmd_runner = mock.Mock(spec_set=CmdRunner)
     self.test_settings = mock.Mock(spec_set=ToolTestSettings)
     self.tool_name = 'tool'
     self.tool_output = 'output'
     self.tool_return_code = 0
     self.tool_timeout = 300
     self.tool_timeouted = False
     self.cmd_runner.run_cmd.return_value = (self.tool_output,
                                             self.tool_return_code,
                                             self.tool_timeouted)
     self.tools_dir = mock.Mock()
     self.tools_dir.path = '/path/to/retdec/bin'
     self.tool_runner = ToolRunner(self.cmd_runner, self.tools_dir,
                                   self.test_settings)
     self.tool_dir = mock.Mock()
     self.tool_dir.path = '/test/outputs/tool'
     self.tool_arguments = ToolArguments(
         input_files=(File('file.exe', Directory('/test')), ))
 def test_args_as_list_returns_empty_list_when_no_args(self):
     args = ToolArguments(args=None)
     self.assertEqual(args.args_as_list, [])
 def test_as_list_returns_correct_list_when_just_args_is_set(self):
     args = ToolArguments(args='  --arg1   --arg2  ')
     self.assertEqual(args.as_list, ['--arg1', '--arg2'])
 def test_as_str_returns_space_separated_string_of_arguments(self):
     args = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                          args='--arg1 --arg2')
     self.assertEqual(args.as_str, 'file.exe --arg1 --arg2')
 def test_as_list_returns_empty_list_when_nothing_is_set(self):
     args = ToolArguments()
     self.assertEqual(args.as_list, [])
 def test_as_list_returns_correct_list_when_just_input_file_is_set(self):
     args = ToolArguments(input_files=(StandaloneFile('file.exe'), ))
     self.assertEqual(args.as_list, ['file.exe'])
 def test_repr_returns_executable_repr_that_creates_original_args(self):
     args = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                          args='--arg')
     self.assertEqual(args, eval(repr(args)))
 def test_args_cannot_be_changed(self):
     with self.assertRaises(AttributeError):
         self.tool.args = ToolArguments(
             input_files=(File('other_file.exe', Directory('/test')),)
         )
 def test_log_file_name_returns_correct_name_when_there_is_no_input_file(self):
     self.tool = self.create_tool(
         name='tool',
         args=ToolArguments()
     )
     self.assertEqual(self.tool.log_file_name, 'tool.log')
 def test_from_test_settings_args_is_present_when_set(self):
     test_settings = ToolTestSettings(tool='tool',
                                      input='test.exe',
                                      args='--arg1 --arg2')
     args = ToolArguments.from_test_settings(test_settings)
     self.assertEqual(args.args, test_settings.args)
 def test_without_paths_and_output_files_returns_same_args_when_there_are_no_files(
         self):
     args = ToolArguments()
     self.assertEqual(args, args.without_paths_and_output_files)
 def test_args_as_list_separates_args_by_whitespace(self):
     args = ToolArguments(args=' \t  --arg1    \t    --arg2  \t  ')
     self.assertEqual(args.args_as_list, ['--arg1', '--arg2'])
 def test_clone_returns_other_args_equal_to_original_args(self):
     args = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                          args='--arg')
     cloned_args = args.clone()
     self.assertIsNot(args, cloned_args)
     self.assertEqual(args, cloned_args)
 def test_from_test_settings_input_files_are_present_when_single_input_is_given(
         self):
     test_settings = ToolTestSettings(tool='tool', input='test.exe')
     args = ToolArguments.from_test_settings(test_settings)
     self.assertEqual(len(args.input_files), 1)
     self.assertEqual(args.input_files[0].name, 'test.exe')
 def test_two_args_having_same_data_are_equal(self):
     args1 = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                           args='--arg')
     args2 = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                           args='--arg')
     self.assertEqual(args1, args2)
 def test_from_test_settings_input_files_is_empty_tuple_when_input_is_not_given(
         self):
     test_settings = ToolTestSettings(tool='tool')
     args = ToolArguments.from_test_settings(test_settings)
     self.assertEqual(args.input_files, ())
 def test_two_args_having_different_input_file_are_not_equal(self):
     args1 = ToolArguments(input_files=(StandaloneFile('file1.exe'), ))
     args2 = ToolArguments(input_files=(StandaloneFile('file2.exe'), ))
     self.assertNotEqual(args1, args2)
 def scenario_invalid_settings_error_is_raised(self, test_settings,
                                               ref_exc_substr):
     with self.assertRaises(InvalidTestSettingsError) as cm:
         ToolArguments.from_test_settings(test_settings)
     self.assertIn(ref_exc_substr, str(cm.exception))
 def test_two_args_having_different_args_are_not_equal(self):
     args1 = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                           args='--arg')
     args2 = ToolArguments(input_files=(StandaloneFile('file.exe'), ),
                           args='--other-arg')
     self.assertNotEqual(args1, args2)