def testUploadArtifactsMissingType(self): """Tests that the type information is used for validation.""" data = { 'artifact_type_info': { 'log': 'text/plain' }, 'tests': { 'foo': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'screenshot': 'foo.png', } } } } with self.assertRaises(ValueError): UTRA.upload_artifacts(data, '/tmp', True)
def testUploadArtifactsBasic(self, exists_patch, copy_patch, rmtree_patch, mkd_patch, digest_patch): """Upload a single artifact.""" mkd_patch.return_value = 'foo_dir' exists_patch.return_value = False digest_patch.return_value = 'deadbeef' data = { 'artifact_type_info': { 'log': 'text/plain' }, 'tests': { 'foo': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'log': 'foo.txt', } } } } self.assertEqual( upload_test_result_artifacts.upload_artifacts( data, '/tmp', True, 'test-bucket'), { 'artifact_type_info': { 'log': 'text/plain' }, 'tests': { 'foo': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'log': 'deadbeef', } } }, 'artifact_permanent_location': 'gs://chromium-test-artifacts/sha1', }) mkd_patch.assert_called_once_with(prefix='upload_test_artifacts') digest_patch.assert_called_once_with('/tmp/foo.txt') copy_patch.assert_called_once_with('/tmp/foo.txt', 'foo_dir/deadbeef') rmtree_patch.assert_called_once_with('foo_dir')
def testUploadArtifactsNoUpload(self, copy_patch, rmtree_patch, mkd_patch, digest_patch): """Simple test; no artifacts, so data shouldn't change.""" mkd_patch.return_value = 'foo_dir' data = { 'artifact_type_info': { 'log': 'text/plain' }, 'tests': { 'foo': { 'actual': 'PASS', 'expected': 'PASS', } } } self.assertEqual(UTRA.upload_artifacts(data, '/tmp', True), data) mkd_patch.assert_called_once_with(prefix='upload_test_artifacts') digest_patch.assert_not_called() copy_patch.assert_not_called() rmtree_patch.assert_called_once_with('foo_dir')
def _loadTest(self, json_data, upload): return UTRA.upload_artifacts(json_data, '/tmp', upload)
def testUploadArtifactsComplex(self, exists_patch, copy_patch, rmtree_patch, mkd_patch, digest_patch): """Upload multiple artifacts.""" mkd_patch.return_value = 'foo_dir' exists_patch.return_value = False digest_patch.side_effect = [ 'deadbeef1', 'deadbeef2', 'deadbeef3', 'deadbeef4' ] data = { 'artifact_type_info': { 'log': 'text/plain', 'screenshot': 'image/png', }, 'tests': { 'bar': { 'baz': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'log': 'baz.log.txt', 'screenshot': 'baz.png', } } }, 'foo': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'log': 'foo.log.txt', 'screenshot': 'foo.png', } }, } } self.assertEqual( UTRA.upload_artifacts(data, '/tmp', True), { 'artifact_type_info': { 'log': 'text/plain', 'screenshot': 'image/png', }, 'tests': { 'bar': { 'baz': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'log': 'deadbeef1', 'screenshot': 'deadbeef2', } } }, 'foo': { 'actual': 'PASS', 'expected': 'PASS', 'artifacts': { 'log': 'deadbeef3', 'screenshot': 'deadbeef4', } }, }, 'artifact_permanent_location': 'gs://chromium-test-artifacts/sha1', }) mkd_patch.assert_called_once_with(prefix='upload_test_artifacts') digest_patch.assert_has_calls([ mock.call('/tmp/baz.log.txt'), mock.call('/tmp/baz.png'), mock.call('/tmp/foo.log.txt'), mock.call('/tmp/foo.png') ]) copy_patch.assert_has_calls([ mock.call('/tmp/baz.log.txt', 'foo_dir/deadbeef1'), mock.call('/tmp/baz.png', 'foo_dir/deadbeef2'), mock.call('/tmp/foo.log.txt', 'foo_dir/deadbeef3'), mock.call('/tmp/foo.png', 'foo_dir/deadbeef4'), ]) rmtree_patch.assert_called_once_with('foo_dir')
def _loadTest(self, json_data, upload): return upload_test_result_artifacts.upload_artifacts( json_data, '/tmp', upload, 'test-bucket')