From 01ea6562a63c0eca512b89cd39ab678ac2fc7099 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Tue, 22 May 2018 23:53:45 +0200
Subject: [PATCH] Fix #214: Do not crash on flac import if musicbrainz tags are
 missing

---
 api/funkwhale_api/music/metadata.py | 5 ++++-
 api/tests/music/test_metadata.py    | 8 ++++++++
 changes/changelog.d/214.bugfix      | 1 +
 3 files changed, 13 insertions(+), 1 deletion(-)
 create mode 100644 changes/changelog.d/214.bugfix

diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py
index 494256711..519dd8b5e 100644
--- a/api/funkwhale_api/music/metadata.py
+++ b/api/funkwhale_api/music/metadata.py
@@ -30,7 +30,7 @@ def get_id3_tag(f, k):
 
 def get_flac_tag(f, k):
     try:
-        return f.get(k)[0]
+        return f.get(k, [])[0]
     except (KeyError, IndexError):
         raise TagNotFound(k)
 
@@ -158,6 +158,9 @@ CONF = {
             'musicbrainz_recordingid': {
                 'field': 'musicbrainz_trackid'
             },
+            'test': {
+                'field': 'test'
+            },
         }
     },
 }
diff --git a/api/tests/music/test_metadata.py b/api/tests/music/test_metadata.py
index 3f1ea9177..e7b9012b6 100644
--- a/api/tests/music/test_metadata.py
+++ b/api/tests/music/test_metadata.py
@@ -57,3 +57,11 @@ def test_can_get_metadata_from_flac_file(field, value):
     data = metadata.Metadata(path)
 
     assert data.get(field) == value
+
+
+def test_can_get_metadata_from_flac_file_not_crash_if_empty():
+    path = os.path.join(DATA_DIR, 'sample.flac')
+    data = metadata.Metadata(path)
+
+    with pytest.raises(metadata.TagNotFound):
+        data.get('test')
diff --git a/changes/changelog.d/214.bugfix b/changes/changelog.d/214.bugfix
new file mode 100644
index 000000000..f2f36c4af
--- /dev/null
+++ b/changes/changelog.d/214.bugfix
@@ -0,0 +1 @@
+Do not crash on flac import if musicbrainz tags are missing (#214)
-- 
GitLab