def test10_collectSettings_settings_in_environment_get_recovered(self): result_a = vfxtest.collectSettings([ '--target', './subfolder', '--failfast', 'False', '--cfg', './other.cfg', '--limit', '13', 'foo', 'bar', 'baz' ]) self.assertEqual(result_a['target'], '{}{}{}'.format(os.getcwd(), os.sep, 'subfolder')) self.assertEqual(result_a['failfast'], False) self.assertEqual(result_a['cfg'], '{}{}{}'.format(os.getcwd(), os.sep, 'other.cfg')) self.assertEqual(result_a['limit'], 13) self.assertEqual(result_a['filter_tokens'], ['foo', 'bar', 'baz']) self.assertEqual(result_a['subprocess'], False) serialized = json.dumps(result_a) os.environ['vfxtest_settings'] = serialized result_b = vfxtest.collectSettings() os.environ.pop('vfxtest_settings') self.assertEqual(result_b['subprocess'], True) result_a['subprocess'] = None result_b['subprocess'] = None self.assertEqual(result_a, result_b)
def test05_collectSettings_invalid_boolean_string_raises_SystemExit(self): true_boolean_strings = ['true', 'True', 'yes', 'y', '1'] for item in true_boolean_strings: result = vfxtest.collectSettings(['--failfast', item]) self.assertEqual(result['failfast'], True) false_boolean_strings = ['false', 'False', 'no', 'n', '0'] for item in false_boolean_strings: result = vfxtest.collectSettings(['--failfast', item]) self.assertEqual(result['failfast'], False) with self.assertRaises(SystemExit): result = vfxtest.collectSettings(['--failfast', 'Nope'])
def test04_context_matches_context_in_settings(self): foo = vfxtest.TestCase(test_run=True) settings = vfxtest.collectSettings() settings['context'] = 'awesomeContext' foo.settings = settings self.assertEqual(foo.context, 'awesomeContext')
def test09_collectSettings_falls_back_to_cfg_in_parent_folder(self): cwd = os.getcwd() os.chdir('./python') result = vfxtest.collectSettings([]) self.assertEqual(result['cfg'], '{}{}{}'.format(cwd, os.sep, '.config')) os.chdir('..')
def test07_prepareTestEnvironment_nonexistent_test_output_parent_folder_raises_SystemExit( self): with self.assertRaises(SystemExit): settings = vfxtest.collectSettings( ['--cfg', './test_output-non-existent-parent-folder.cfg']) settings['test_no_pythonpath'] = True vfxtest.prepareTestEnvironment(settings)
def test05_context_settings_matches_settings(self): foo = vfxtest.TestCase(test_run=True) settings = vfxtest.collectSettings() settings['context'] = 'python3.x' foo.settings = settings self.assertEqual(foo.context_settings, settings['context_details']['python3.x'])
def test07_runNative_with_limit_works_as_expected(self): settings = vfxtest.collectSettings(['--limit', '1']) vfxtest.prepareTestEnvironment(settings) vfxtest.runNative(settings=settings, use_coverage=False) self.assertEqual(settings['files_run'], 1) self.assertEqual(settings['tests_run'], 3) self.assertEqual(settings['errors'], 0)
def test08_runNative_in_subfolder_works_as_expected(self): settings = vfxtest.collectSettings(['--target', './python']) vfxtest.prepareTestEnvironment(settings) vfxtest.runNative(settings=settings) self.assertEqual(settings['files_run'], 1) self.assertEqual(settings['tests_run'], 3) self.assertEqual(settings['errors'], 0)
def test09_runNative_no_tests_at_all_does_not_try_to_report_coverage(self): settings = vfxtest.collectSettings(['--target', './python']) settings['filter_tokens'].append('does-not-get-matched') vfxtest.prepareTestEnvironment(settings) vfxtest.runNative(settings=settings) self.assertEqual(settings['files_run'], 0) self.assertEqual(settings['tests_run'], 0) self.assertEqual(settings['errors'], 0)
def test06__createTestRootFolder_invalid_test_output_raises_OSError(self): invalid_test_output = os.path.abspath('./does/not/exist') self.assertFalse(os.path.exists(invalid_test_output)) runner = vfxtest.TextTestRunner() settings = vfxtest.collectSettings() settings['output_folder'] = invalid_test_output with self.assertRaises(OSError): vfxtest._createTestRootFolder(settings=settings, name=['invalid'])
def test03_collectSettings_returns_default_args(self): result = vfxtest.collectSettings() self.assertTrue(isinstance(result, dict)) self.assertEqual(result['target'], os.getcwd()) self.assertEqual(result['failfast'], True) self.assertEqual(result['cfg'], os.sep.join([result['target'], '.config'])) self.assertEqual(result['limit'], 0) self.assertEqual(result['filter_tokens'], []) self.assertEqual(result['cwd'], os.getcwd())
def test04_collectSettings_explicit_values_for_clear_and_failfast_get_respected( self): result_a = vfxtest.collectSettings([ '--target', './subfolder', '--failfast', 'False', '--cfg', './other.cfg', '--limit', '13', 'foo', 'bar', 'baz' ]) result_b = vfxtest.collectSettings([ '-t', './subfolder', '-f', 'False', '-c', './other.cfg', '-l', '13', 'foo', 'bar', 'baz' ]) self.assertEqual(result_a['target'], '{}{}{}'.format(os.getcwd(), os.sep, 'subfolder')) self.assertEqual(result_a['failfast'], False) self.assertEqual(result_a['cfg'], '{}{}{}'.format(os.getcwd(), os.sep, 'other.cfg')) self.assertEqual(result_a['limit'], 13) self.assertEqual(result_a['filter_tokens'], ['foo', 'bar', 'baz']) self.assertEqual(result_a, result_b)
def test02_runNative_with_filter_tokens_runs_successfully(self): settings = vfxtest.collectSettings([ '--target', '.', '_01', ]) vfxtest.prepareTestEnvironment(settings) vfxtest.runNative(settings=settings, use_coverage=False) self.assertEqual(settings['files_run'], 1) self.assertEqual(settings['tests_run'], 3) self.assertEqual(settings['errors'], 0)
def test08_prepareTestEnvironment_nonexistent_test_output_folder_gets_created( self): if os.path.exists('./remove_me'): shutil.rmtree('./remove_me') settings = vfxtest.collectSettings( ['--cfg', './test_output-create-folder.cfg']) settings['test_no_pythonpath'] = True vfxtest.prepareTestEnvironment(settings, ) self.assertTrue(os.path.exists('./remove_me')) shutil.rmtree('./remove_me')
def test10_runNative_with_failfast_stops_on_first_error(self): settings = vfxtest.collectSettings(['--failfast', 'true']) print(settings['failfast']) print(settings['target']) vfxtest.prepareTestEnvironment(settings) with mock.patch('awesome_module.buzz', side_effect=Exception()): vfxtest.runNative(settings=settings, use_coverage=False) self.assertEqual(settings['files_run'], 1) self.assertEqual(settings['tests_run'], 2) self.assertEqual(settings['errors'], 1)
def test03_combineCoverages_works_as_expected(self): settings = vfxtest.collectSettings([ '_02', ]) vfxtest.prepareTestEnvironment(settings) settings['context'] = 'differentContext' vfxtest.runNative(settings=settings) self.assertEqual(settings['files_run'], 1) self.assertEqual(settings['tests_run'], 3) self.assertTrue( os.path.exists('{}/.coverage.differentContext'.format( settings['output_folder']))) settings = vfxtest.collectSettings() vfxtest.combineCoverages(settings) self.assertFalse( os.path.exists('{}/.coverage.differentContext'.format( settings['output_folder']))) self.assertTrue( os.path.exists('{}/.coverage'.format(settings['output_folder'])))
def test01_runNative_runs_successfully(self): settings = vfxtest.collectSettings() vfxtest.prepareTestEnvironment(settings) cov_file = os.path.abspath('{}/.coverage.native'.format( settings['output_folder'])) if os.path.exists(cov_file): os.remove(cov_file) vfxtest.runNative(settings=settings, use_coverage=True) self.assertEqual(settings['files_run'], 2) self.assertEqual(settings['tests_run'], 6) self.assertEqual(settings['errors'], 0) self.assertTrue(os.path.exists(cov_file))
def test14_prepareTestEnvironment_without_python_contexts_still_preps_pythonpath_or_throws_EnvironmentError( self): if os.path.exists('./no_python_contexts'): shutil.rmtree('./no_python_contexts') settings = vfxtest.collectSettings( ['--cfg', './test_no-python-contexts.cfg']) # Python 2.x if sys.version.startswith('2.'): vfxtest.prepareTestEnvironment(settings) proof = './no_python_contexts/_dcc_settings/PYTHONPATH/mock/mock.py' self.assertTrue(os.path.exists(proof)) elif sys.version.startswith('3.'): with self.assertRaises(EnvironmentError): vfxtest.prepareTestEnvironment(settings) else: raise EnvironmentError('Python version not tested: {}'.format( sys.version)) shutil.rmtree('./no_python_contexts')
def test01_collectSettings_help_raises_SystemError(self): with self.assertRaises(SystemExit): result = vfxtest.collectSettings(['--help'])
def test06_collectSettings_nonexistent_cfg_file_raises_SystemExit(self): with self.assertRaises(SystemExit): result = vfxtest.collectSettings(['--cfg', 'does_not_exist.cfg'])
def test11_collectSettings_invalid_cfg_file_prints_useful_error_and_raises_SystemExit( self): with mock.patch.object(vfxtest, '_extractLineNumber', return_value=3): with self.assertRaises(SystemExit): result = vfxtest.collectSettings(['--cfg', 'invalid_json.cfg'])
def test12_collectSettings_cfg_bool_values_defined_as_strings_get_converted( self): result = vfxtest.collectSettings(['--cfg', 'boolean_as_string.cfg']) self.assertTrue(result['debug_mode'])
def test05_resolveContext_defaults_to_native(self): settings = vfxtest.collectSettings(['--target', './python2.x']) vfxtest.prepareTestEnvironment(settings) self.assertEqual(settings['context'], 'python2.x')
def test04_resolveContext_defaults_to_native(self): settings = vfxtest.collectSettings() vfxtest.prepareTestEnvironment(settings) self.assertEqual(settings['context'], 'native')
def test02_collectSettings_unknown_argument_raises_SystemError(self): with self.assertRaises(SystemExit): result = vfxtest.collectSettings(['--doesnotexist'])
def test02_settings_can_be_get_and_set(self): foo = vfxtest.TestCase(test_run=True) settings = vfxtest.collectSettings() foo.settings = settings self.assertEqual(foo.settings, settings)