def test_run_tests_exits_on_failed_test(self): """ tests that run_tests exits when app tests fail and writes to log. """ now = datetime.datetime.utcnow() yesterday = now - datetime.timedelta(days=1) os.makedirs(os.path.join(os.path.dirname(self.log_file), 'test_results'), exist_ok=True) os.makedirs(os.path.join(self.app_home, self.app_name), exist_ok=True) log_file_now = os.path.join( os.path.dirname(self.log_file), 'test_results', 'test_%s.log' % (now.strftime('%Y%m%d-%H%M%S')) ) log_file_yesterday = os.path.join( os.path.dirname(self.log_file), 'test_results', 'test_%s.log' % (yesterday.strftime('%Y%m%d-%H%M%S')) ) install_django_app = InstallDjangoApp( self.dist_version, self.log_file, self.log_level, venv=self.venv, git_repo=self.git_repo ) with open(log_file_now, 'w') as log: log.write('FAILED') with open(log_file_yesterday, 'w') as log: log.write('OK') try: install_django_app.run_tests(self.app_home) self.fail('run_tests did not exit on failed test') except SystemExit as error: self.assertEqual(1, error.code, 'run_tests exited with: %s' % str(error)) self.log('ERROR: %s tests failed' % self.app_name)
def test_run_tests_log_file(self): """ tests that run_tests logs to the right file. """ os.makedirs(os.path.join(self.app_home, self.app_name), exist_ok=True) install_django_app = InstallDjangoApp( self.dist_version, self.log_file, self.log_level, venv=self.venv, git_repo=self.git_repo, ) install_django_app.run_tests(self.app_home) if self.dist_version == '14.04': args, kwargs = subprocess.check_call.call_args if self.dist_version == '16.04': args, kwargs = subprocess.run.call_args self.assertTrue(isinstance(kwargs['stderr'], io.TextIOWrapper), kwargs['stderr']) log_file_regex = re.compile('%s/test_results/test_\d{8}-\d{6}\.log' % os.path.dirname(self.log_file)) self.assertTrue( log_file_regex.match(kwargs['stderr'].name), kwargs['stderr'].name )