Repository: mir-dataset-loaders/mirdata

Issue:
validate inside load
Prompted by #118 -

We run validation every time `dataset.load()` is called, but we don't run it when, for example, `dataset.Track()` is called. Since validation can be quite slow, should we consider taking it out of `.load()` and instead leaving it up to users to run it themselves?
Pros:
* it simplifies the API and the tests
* it speeds up common use cases
* it removes the need for the `slience_validator` flag

Con:
* We leave it up to users to validate their datasets, which means "invalid" data can more easily go unnoticed.

Thoughts?

Discussion:
codecov[bot]: # [Codecov](https://codecov.io/gh/mir-dataset-loaders/mirdata/pull/132?src=pr&el=h1) Report
> Merging [#132](https://codecov.io/gh/mir-dataset-loaders/mirdata/pull/132?src=pr&el=desc) into [master](https://codecov.io/gh/mir-dataset-loaders/mirdata/commit/d30c3424462558c1686a4fbfbe346b4a83b8c6d3?src=pr&el=desc) will **increase** coverage by `1.7%`.
> The diff coverage is `100%`.


```diff
@@            Coverage Diff            @@
##           master     #132     +/-   ##
=========================================
+ Coverage   94.07%   95.77%   +1.7%     
=========================================
  Files          15       14      -1     
  Lines        1518     1492     -26     
=========================================
+ Hits         1428     1429      +1     
+ Misses         90       63     -27
```


Patch:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e549a8e..7b17335 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -276,7 +276,7 @@ def track_ids():
 
 
 # -- keep this function as it is
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load Example dataset
     Args:
         data_home (str): Local path where the dataset is stored.
@@ -287,7 +287,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     data = {}
     for key in INDEX.keys():
         data[key] = Track(key, data_home=data_home)
diff --git a/README.md b/README.md
index 4a87c94..07195de 100644
--- a/README.md
+++ b/README.md
@@ -44,6 +44,13 @@ import mirdata
 mirdata.orchset.download()
 ```
 
+### Validate the data
+```python
+import mirdata
+
+mirdata.orchset.validate()
+```
+
 ### Load the Orchset Dataset
 ```python
 import mirdata
diff --git a/mirdata/beatles.py b/mirdata/beatles.py
index 2fee960..16d6780 100644
--- a/mirdata/beatles.py
+++ b/mirdata/beatles.py
@@ -179,7 +179,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load Beatles dataset
 
     Args:
@@ -193,7 +193,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     beatles_data = {}
     for key in track_ids():
         beatles_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/guitarset.py b/mirdata/guitarset.py
index 6488b98..86ca330 100644
--- a/mirdata/guitarset.py
+++ b/mirdata/guitarset.py
@@ -306,7 +306,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load GuitarSet
     Args:
         data_home (str): Local path where GuitarSet is stored.
@@ -317,7 +317,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     guitarset_data = {}
     for key in INDEX.keys():
         guitarset_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/ikala.py b/mirdata/ikala.py
index 6d4f308..6d29408 100644
--- a/mirdata/ikala.py
+++ b/mirdata/ikala.py
@@ -217,7 +217,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load iKala dataset
 
     Args:
@@ -232,7 +232,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     ikala_data = {}
     for key in INDEX.keys():
         ikala_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/maps.py b/mirdata/maps.py
deleted file mode 100644
index 416d69f..0000000
--- a/mirdata/maps.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from .utils import download_from_remote, untar, RemoteFileMetadata, get_save_path
-
-
-REMOTE = RemoteFileMetadata(
-    filename='MAPS.tar',
-    url='https://amubox.univ-amu.fr/s/iNG0xc5Td1Nv4rR/download',
-    checksum=('9a8b89a7897b0ad95a505b4daa788302'),
-    destination_dir=None,
-)
-
-DATASET_DIR = 'MAPS'
-
-
-def download(data_home=None, force_overwrite=False):
-    save_path = get_save_path(data_home)
-    download_path = download_from_remote(REMOTE, force_overwrite=force_overwrite)
-    untar(download_path, save_path)
-    validate()
-
-
-def validate():
-    pass
-
-
-def load():
-    raise NotImplementedError()
-
-
-def cite():
-    raise NotImplementedError()
diff --git a/mirdata/medley_solos_db.py b/mirdata/medley_solos_db.py
index c4a835a..804ccc4 100644
--- a/mirdata/medley_solos_db.py
+++ b/mirdata/medley_solos_db.py
@@ -35,10 +35,8 @@ from __future__ import division
 from __future__ import print_function
 
 import csv
-import json
 import librosa
 import logging
-import numpy as np
 import os
 
 import mirdata.utils as utils
@@ -167,6 +165,8 @@ def validate(data_home=None, silence=False):
             index but has a different checksum compare to the reference checksum
 
     """
+    if data_home is None:
+        data_home = utils.get_default_dataset_path(DATASET_DIR)
 
     missing_files, invalid_checksums = utils.validator(
         INDEX, data_home, silence=silence
@@ -174,16 +174,7 @@ def validate(data_home=None, silence=False):
     return missing_files, invalid_checksums
 
 
-def track_ids():
-    """Return track ids
-
-    Returns:
-        (list): A list of track ids
-    """
-    return list(INDEX.keys())
-
-
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load Medley-solos-DB
     Args:
         data_home (str): Local path where Medley-solos-DB is stored.
@@ -194,7 +185,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     medley_solos_db_data = {}
     for key in INDEX.keys():
         medley_solos_db_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/medleydb_melody.py b/mirdata/medleydb_melody.py
index 0ea1d92..c559c2c 100644
--- a/mirdata/medleydb_melody.py
+++ b/mirdata/medleydb_melody.py
@@ -202,7 +202,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load MedleyDB melody dataset
 
     Args:
@@ -217,7 +217,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     medleydb_melody_data = {}
     for key in track_ids():
         medleydb_melody_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/medleydb_pitch.py b/mirdata/medleydb_pitch.py
index a59c53c..17aba75 100644
--- a/mirdata/medleydb_pitch.py
+++ b/mirdata/medleydb_pitch.py
@@ -174,7 +174,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load MedleyDB pitch dataset
 
     Args:
@@ -188,7 +188,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     medleydb_pitch_data = {}
     for key in track_ids():
         medleydb_pitch_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/orchset.py b/mirdata/orchset.py
index 8d81d5a..eb64dcb 100644
--- a/mirdata/orchset.py
+++ b/mirdata/orchset.py
@@ -205,6 +205,8 @@ def validate(data_home=None, silence=False):
             index but has a different checksum compare to the reference checksum
 
     """
+    if data_home is None:
+        data_home = utils.get_default_dataset_path(DATASET_DIR)
 
     missing_files, invalid_checksums = utils.validator(
         INDEX, data_home, silence=silence
@@ -221,7 +223,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load ORCHSET dataset
 
     Args:
@@ -236,7 +238,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     orchset_data = {}
     for key in track_ids():
         orchset_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/rwc_classical.py b/mirdata/rwc_classical.py
index 89916e3..562360c 100644
--- a/mirdata/rwc_classical.py
+++ b/mirdata/rwc_classical.py
@@ -170,7 +170,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load RWC-Classical dataset
 
         Args:
@@ -184,7 +184,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     rwc_classical_data = {}
     for key in track_ids():
         rwc_classical_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/rwc_genre.py b/mirdata/rwc_genre.py
index 7fee94b..1bcaf9b 100644
--- a/mirdata/rwc_genre.py
+++ b/mirdata/rwc_genre.py
@@ -174,7 +174,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load RWC-Genre dataset
 
     Args:
@@ -188,7 +188,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     rwc_genre_data = {}
     for key in track_ids():
         rwc_genre_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/rwc_jazz.py b/mirdata/rwc_jazz.py
index 2fd44da..9765a9f 100644
--- a/mirdata/rwc_jazz.py
+++ b/mirdata/rwc_jazz.py
@@ -170,7 +170,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load RWC-Jazz dataset
 
     Args:
@@ -184,7 +184,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     rwc_jazz_data = {}
     for key in track_ids():
         rwc_jazz_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/rwc_popular.py b/mirdata/rwc_popular.py
index c4d9672..05254ff 100644
--- a/mirdata/rwc_popular.py
+++ b/mirdata/rwc_popular.py
@@ -211,7 +211,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load RWC-Genre dataset
 
     Args:
@@ -225,7 +225,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     rwc_popular_data = {}
     for key in track_ids():
         rwc_popular_data[key] = Track(key, data_home=data_home)
diff --git a/mirdata/salami.py b/mirdata/salami.py
index c4a31bf..a4c3552 100644
--- a/mirdata/salami.py
+++ b/mirdata/salami.py
@@ -242,7 +242,7 @@ def track_ids():
     return list(INDEX.keys())
 
 
-def load(data_home=None, silence_validator=False):
+def load(data_home=None):
     """Load SALAMI dataset
 
     Args:
@@ -256,7 +256,6 @@ def load(data_home=None, silence_validator=False):
     if data_home is None:
         data_home = utils.get_default_dataset_path(DATASET_DIR)
 
-    validate(data_home, silence=silence_validator)
     salami_data = {}
     for key in track_ids():
         salami_data[key] = Track(key, data_home=data_home)
diff --git a/setup.py b/setup.py
index d1c4edd..5af6197 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
 if __name__ == '__main__':
     setup(
         name='mirdata',
-        version='0.0.18',
+        version='0.0.19',
         description='Common loaders for MIR datasets.',
         url='https://github.com/mir-dataset-loaders/mirdata',
         packages=find_packages(exclude=['test', '*.test', '*.test.*']),


Test patch:
diff --git a/tests/test_beatles.py b/tests/test_beatles.py
index db08365..d8b71e1 100644
--- a/tests/test_beatles.py
+++ b/tests/test_beatles.py
@@ -85,11 +85,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/Beatles'
-    beatles_data = beatles.load(data_home=data_home, silence_validator=True)
+    beatles_data = beatles.load(data_home=data_home)
     assert type(beatles_data) is dict
     assert len(beatles_data.keys()) == 180
 
-    beatles_data_default = beatles.load(silence_validator=True)
+    beatles_data_default = beatles.load()
     assert type(beatles_data_default) is dict
     assert len(beatles_data_default.keys()) == 180
 
@@ -195,31 +195,10 @@ def test_fix_newpoint():
     assert np.array_equal(new_beat_positions3, np.array(['1', '2', '3']))
 
 
-def test_cite():
-    beatles.cite()
-
-
-@pytest.fixture
-def mock_validate(mocker):
-    return mocker.patch.object(beatles, 'validate')
-
-
-@pytest.fixture
-def data_home(tmpdir):
-    return str(tmpdir)
+def test_validate():
+    beatles.validate()
+    beatles.validate(silence=True)
 
 
-def test_validate_invalid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (True, True)
-
-    missing_files, invalid_checksums = beatles.validate(data_home)
-    assert missing_files and invalid_checksums
-    mock_validator.assert_called_once()
-
-
-def test_validate_valid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (False, False)
-
-    missing_files, invalid_checksums = beatles.validate(data_home)
-    assert not (missing_files or invalid_checksums)
-    mock_validator.assert_called_once()
+def test_cite():
+    beatles.cite()
diff --git a/tests/test_guitarset.py b/tests/test_guitarset.py
index 3d5e5ae..54dd4de 100644
--- a/tests/test_guitarset.py
+++ b/tests/test_guitarset.py
@@ -149,14 +149,19 @@ def test_track_ids():
 
 
 def test_load():
-    guitarset_data = guitarset.load(data_home=TEST_DATA_HOME, silence_validator=True)
+    guitarset_data = guitarset.load(data_home=TEST_DATA_HOME)
     assert isinstance(guitarset_data, dict)
     assert len(guitarset_data.keys()) == 360
 
-    guitarset_data_default = guitarset.load(silence_validator=True)
+    guitarset_data_default = guitarset.load()
     assert isinstance(guitarset_data_default, dict)
     assert len(guitarset_data_default.keys()) == 360
 
 
+def test_validate():
+    guitarset.validate()
+    guitarset.validate(silence=True)
+
+
 def test_cite():
     guitarset.cite()
diff --git a/tests/test_ikala.py b/tests/test_ikala.py
index 9101efb..0b4c325 100644
--- a/tests/test_ikala.py
+++ b/tests/test_ikala.py
@@ -79,11 +79,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/iKala'
-    ikala_data = ikala.load(data_home=data_home, silence_validator=True)
+    ikala_data = ikala.load(data_home=data_home)
     assert type(ikala_data) is dict
     assert len(ikala_data.keys()) == 252
 
-    ikala_data_default = ikala.load(silence_validator=True)
+    ikala_data_default = ikala.load()
     assert type(ikala_data_default) is dict
     assert len(ikala_data_default.keys()) == 252
 
@@ -162,5 +162,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
+def test_validate():
+    ikala.validate()
+    ikala.validate(silence=True)
+
+
 def test_cite():
     ikala.cite()
diff --git a/tests/test_medley_solos_db.py b/tests/test_medley_solos_db.py
index 2e34f23..61b7597 100644
--- a/tests/test_medley_solos_db.py
+++ b/tests/test_medley_solos_db.py
@@ -51,7 +51,6 @@ def test_track():
     assert track.__repr__() == repr_string
 
 
-
 def test_track_ids():
     track_ids = medley_solos_db.track_ids()
     assert type(track_ids) is list
@@ -60,10 +59,19 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/Medley-solos-DB'
-    msdb_data = medley_solos_db.load(data_home=data_home, silence_validator=True)
+    msdb_data = medley_solos_db.load(data_home=data_home)
+    assert type(msdb_data) is dict
+    assert len(msdb_data.keys()) == 21571
+
+    msdb_data = medley_solos_db.load()
     assert type(msdb_data) is dict
     assert len(msdb_data.keys()) == 21571
 
 
+def test_validate():
+    medley_solos_db.validate()
+    medley_solos_db.validate(silence=True)
+
+
 def test_cite():
     cite_str = medley_solos_db.cite()
diff --git a/tests/test_medleydb_melody.py b/tests/test_medleydb_melody.py
index d24a3f0..530449d 100644
--- a/tests/test_medleydb_melody.py
+++ b/tests/test_medleydb_melody.py
@@ -85,13 +85,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/MedleyDB-Melody'
-    medleydb_melody_data = medleydb_melody.load(
-        data_home=data_home, silence_validator=True
-    )
+    medleydb_melody_data = medleydb_melody.load(data_home=data_home)
     assert type(medleydb_melody_data) is dict
     assert len(medleydb_melody_data.keys()) is 108
 
-    medleydb_melody_data_default = medleydb_melody.load(silence_validator=True)
+    medleydb_melody_data_default = medleydb_melody.load()
     assert type(medleydb_melody_data_default) is dict
     assert len(medleydb_melody_data_default.keys()) is 108
 
@@ -194,31 +192,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
-def test_cite():
-    medleydb_melody.cite()
-
-
-@pytest.fixture
-def mock_validate(mocker):
-    return mocker.patch.object(medleydb_melody, 'validate')
-
-
-@pytest.fixture
-def data_home(tmpdir):
-    return str(tmpdir)
+def test_validate():
+    medleydb_melody.validate()
+    medleydb_melody.validate(silence=True)
 
 
-def test_validate_invalid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (True, True)
-
-    missing_files, invalid_checksums = medleydb_melody.validate(data_home)
-    assert missing_files and invalid_checksums
-    mock_validator.assert_called_once()
-
-
-def test_validate_valid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (False, False)
-
-    missing_files, invalid_checksums = medleydb_melody.validate(data_home)
-    assert not (missing_files or invalid_checksums)
-    mock_validator.assert_called_once()
+def test_cite():
+    medleydb_melody.cite()
diff --git a/tests/test_medleydb_pitch.py b/tests/test_medleydb_pitch.py
index 3c45def..22268b3 100644
--- a/tests/test_medleydb_pitch.py
+++ b/tests/test_medleydb_pitch.py
@@ -70,13 +70,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/MedleyDB-Pitch'
-    medleydb_pitch_data = medleydb_pitch.load(
-        data_home=data_home, silence_validator=True
-    )
+    medleydb_pitch_data = medleydb_pitch.load(data_home=data_home)
     assert type(medleydb_pitch_data) is dict
     assert len(medleydb_pitch_data.keys()) is 103
 
-    medleydb_pitch_data_default = medleydb_pitch.load(silence_validator=True)
+    medleydb_pitch_data_default = medleydb_pitch.load()
     assert type(medleydb_pitch_data_default) is dict
     assert len(medleydb_pitch_data_default.keys()) is 103
 
@@ -124,23 +122,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
-def test_cite():
-    medleydb_pitch.cite()
-
-
-@pytest.fixture
-def mock_validate(mocker):
-    return mocker.patch.object(medleydb_pitch, 'validate')
+def test_validate():
+    medleydb_pitch.validate()
+    medleydb_pitch.validate(silence=True)
 
 
-@pytest.fixture
-def data_home(tmpdir):
-    return str(tmpdir)
-
-
-def test_validate_valid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (False, False)
-
-    missing_files, invalid_checksums = medleydb_pitch.validate(data_home)
-    assert not (missing_files or invalid_checksums)
-    mock_validator.assert_called_once()
+def test_cite():
+    medleydb_pitch.cite()
diff --git a/tests/test_orchset.py b/tests/test_orchset.py
index 33ad52b..0898016 100644
--- a/tests/test_orchset.py
+++ b/tests/test_orchset.py
@@ -89,11 +89,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/Orchset'
-    orchset_data = orchset.load(data_home=data_home, silence_validator=True)
+    orchset_data = orchset.load(data_home=data_home)
     assert type(orchset_data) is dict
     assert len(orchset_data.keys()) is 64
 
-    orchset_data_default = orchset.load(silence_validator=True)
+    orchset_data_default = orchset.load()
     assert type(orchset_data_default) is dict
     assert len(orchset_data_default.keys()) is 64
 
@@ -198,31 +198,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
-def test_cite():
-    orchset.cite()
-
-
-@pytest.fixture
-def mock_validate(mocker):
-    return mocker.patch.object(orchset, 'validate')
-
-
-@pytest.fixture
-def data_home(tmpdir):
-    return str(tmpdir)
+def test_validate():
+    orchset.validate()
+    orchset.validate(silence=True)
 
 
-def test_validate_invalid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (True, True)
-
-    missing_files, invalid_checksums = orchset.validate(data_home)
-    assert missing_files and invalid_checksums
-    mock_validator.assert_called_once()
-
-
-def test_validate_valid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (False, False)
-
-    missing_files, invalid_checksums = orchset.validate(data_home)
-    assert not (missing_files or invalid_checksums)
-    mock_validator.assert_called_once()
+def test_cite():
+    orchset.cite()
diff --git a/tests/test_rwc_classical.py b/tests/test_rwc_classical.py
index 76f2984..f86ed62 100644
--- a/tests/test_rwc_classical.py
+++ b/tests/test_rwc_classical.py
@@ -78,11 +78,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/RWC-Classical'
-    rwc_classical_data = rwc_classical.load(data_home=data_home, silence_validator=True)
+    rwc_classical_data = rwc_classical.load(data_home=data_home)
     assert type(rwc_classical_data) is dict
     assert len(rwc_classical_data.keys()) == 50
 
-    rwc_classical_data_default = rwc_classical.load(silence_validator=True)
+    rwc_classical_data_default = rwc_classical.load()
     assert type(rwc_classical_data_default) is dict
     assert len(rwc_classical_data_default.keys()) == 50
 
@@ -205,5 +205,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
+def test_validate():
+    rwc_classical.validate()
+    rwc_classical.validate(silence=True)
+
+
 def test_cite():
     rwc_classical.cite()
diff --git a/tests/test_rwc_genre.py b/tests/test_rwc_genre.py
index 03d8485..6d3080e 100644
--- a/tests/test_rwc_genre.py
+++ b/tests/test_rwc_genre.py
@@ -79,11 +79,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/RWC-Genre'
-    rwc_genre_data = rwc_genre.load(data_home=data_home, silence_validator=True)
+    rwc_genre_data = rwc_genre.load(data_home=data_home)
     assert type(rwc_genre_data) is dict
     assert len(rwc_genre_data.keys()) == 90  # missing 10 files
 
-    rwc_genre_data_default = rwc_genre.load(silence_validator=True)
+    rwc_genre_data_default = rwc_genre.load()
     assert type(rwc_genre_data_default) is dict
     assert len(rwc_genre_data_default.keys()) == 90  # missing 10 files
 
@@ -108,5 +108,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
+def test_validate():
+    rwc_genre.validate()
+    rwc_genre.validate(silence=True)
+
+
 def test_cite():
     rwc_genre.cite()
diff --git a/tests/test_rwc_jazz.py b/tests/test_rwc_jazz.py
index 91dee98..b620203 100644
--- a/tests/test_rwc_jazz.py
+++ b/tests/test_rwc_jazz.py
@@ -76,11 +76,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/RWC-Jazz'
-    rwc_jazz_data = rwc_jazz.load(data_home=data_home, silence_validator=True)
+    rwc_jazz_data = rwc_jazz.load(data_home=data_home)
     assert type(rwc_jazz_data) is dict
     assert len(rwc_jazz_data.keys()) == 50
 
-    rwc_jazz_data_default = rwc_jazz.load(silence_validator=True)
+    rwc_jazz_data_default = rwc_jazz.load()
     assert type(rwc_jazz_data_default) is dict
     assert len(rwc_jazz_data_default.keys()) == 50
 
@@ -104,5 +104,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
+def test_validate():
+    rwc_jazz.validate()
+    rwc_jazz.validate(silence=True)
+
+
 def test_cite():
     rwc_jazz.cite()
diff --git a/tests/test_rwc_popular.py b/tests/test_rwc_popular.py
index ad60a7c..99e937f 100644
--- a/tests/test_rwc_popular.py
+++ b/tests/test_rwc_popular.py
@@ -89,11 +89,11 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/RWC-Popular'
-    rwc_popular_data = rwc_popular.load(data_home=data_home, silence_validator=True)
+    rwc_popular_data = rwc_popular.load(data_home=data_home)
     assert type(rwc_popular_data) is dict
     assert len(rwc_popular_data.keys()) == 100
 
-    rwc_popular_data_default = rwc_popular.load(silence_validator=True)
+    rwc_popular_data_default = rwc_popular.load()
     assert type(rwc_popular_data_default) is dict
     assert len(rwc_popular_data_default.keys()) == 100
 
@@ -204,5 +204,10 @@ def test_load_metadata():
     assert metadata_none is None
 
 
+def test_validate():
+    rwc_popular.validate()
+    rwc_popular.validate(silence=True)
+
+
 def test_cite():
     rwc_popular.cite()
diff --git a/tests/test_salami.py b/tests/test_salami.py
index eb79b4b..e160161 100644
--- a/tests/test_salami.py
+++ b/tests/test_salami.py
@@ -150,12 +150,12 @@ def test_track_ids():
 
 def test_load():
     data_home = 'tests/resources/mir_datasets/Salami'
-    salami_data = salami.load(data_home=data_home, silence_validator=True)
+    salami_data = salami.load(data_home=data_home)
     assert type(salami_data) is dict
     assert len(salami_data.keys()) == 1359
 
     # data home default
-    salami_data_default = salami.load(silence_validator=True)
+    salami_data_default = salami.load()
     assert type(salami_data_default) is dict
     assert len(salami_data_default.keys()) == 1359
 
@@ -217,31 +217,10 @@ def test_load_metadata():
     assert none_metadata is None
 
 
-def test_cite():
-    salami.cite()
-
-
-@pytest.fixture
-def mock_validate(mocker):
-    return mocker.patch.object(salami, 'validate')
-
-
-@pytest.fixture
-def data_home(tmpdir):
-    return str(tmpdir)
+def test_validate():
+    salami.validate()
+    salami.validate(silence=True)
 
 
-def test_validate_invalid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (True, True)
-
-    missing_files, invalid_checksums = salami.validate(data_home)
-    assert missing_files and invalid_checksums
-    mock_validator.assert_called_once()
-
-
-def test_validate_valid(data_home, mocker, mock_validator):
-    mock_validator.return_value = (False, False)
-
-    missing_files, invalid_checksums = salami.validate(data_home)
-    assert not (missing_files or invalid_checksums)
-    mock_validator.assert_called_once()
+def test_cite():
+    salami.cite()