+ @mock.patch('mimetypes.guess_type', return_value=('text/plain', None))
+ @mock.patch('os.path.exists', return_value=True)
+ @mock.patch('boto3.resource')
+ @mock.patch('os.walk',
+ return_value=[
+ (testcase.TestCase.dir_results, ('',), ('bar',))])
+ def test_publish_artifacts4(self, *args):
+ self.assertEqual(self.test.publish_artifacts(),
+ testcase.TestCase.EX_OK)
+ args[0].assert_called_once_with(self.test.res_dir)
+ expected = [
+ mock.call('s3', endpoint_url=os.environ['S3_ENDPOINT_URL']),
+ mock.call().meta.client.head_bucket(Bucket='xtesting'),
+ mock.call().Bucket('xtesting'),
+ mock.call().Bucket().upload_file(
+ '/var/lib/xtesting/results/xtesting.log',
+ 'prefix/xtesting.log',
+ ExtraArgs={'ContentType': 'text/plain'}),
+ mock.call().Bucket('xtesting'),
+ mock.call().Bucket().upload_file(
+ '/var/lib/xtesting/results/xtesting.debug.log',
+ 'prefix/xtesting.debug.log',
+ ExtraArgs={'ContentType': 'text/plain'}),
+ mock.call().Bucket('xtesting'),
+ mock.call().Bucket().upload_file(
+ '/var/lib/xtesting/results/bar', 'prefix/bar',
+ ExtraArgs={'ContentType': 'text/plain'})]
+ self.assertEqual(args[1].mock_calls, expected)