def test_load(skip_remote, dataset): if dataset is None: pytest.skip() # run load all_data = dataset.load_tracks() assert isinstance(all_data, dict) track_ids = dataset.track_ids assert set(track_ids) == set(all_data.keys()) # test that all attributes and properties can be called for track_id in tqdm.tqdm(track_ids): track = all_data[track_id] track_data = get_attributes_and_properties(track) for attr in track_data["attributes"]: ret = getattr(track, attr) for prop in track_data["properties"]: ret = getattr(track, prop) for cprop in track_data["cached_properties"]: ret = getattr(track, cprop) jam = track.to_jams() assert jam.validate()
def test_track_placeholder_case(): data_home_dir = "not/a/real/path" for dataset_name in DATASETS: data_home = os.path.join(data_home_dir, dataset_name) module = importlib.import_module( "soundata.datasets.{}".format(dataset_name)) dataset = module.Dataset(os.path.join(data_home, dataset_name)) if dataset._track_class is None or dataset.remote_index: continue if dataset_name in CUSTOM_TEST_TRACKS: trackid = CUSTOM_TEST_TRACKS[dataset_name] else: trackid = dataset.track_ids[0] try: track_test = dataset.track(trackid) except: assert False, "{}: {}".format(dataset_name, sys.exc_info()[0]) track_data = get_attributes_and_properties(track_test) for attr in track_data["attributes"]: ret = getattr(track_test, attr) for prop in track_data["properties"]: with pytest.raises(Exception): ret = getattr(track_test, prop) for cprop in track_data["cached_properties"]: with pytest.raises(Exception): ret = getattr(track_test, cprop)
def test_load(skip_remote, dataset): if dataset is None: pytest.skip() # run load all_data = dataset.load_clips() assert isinstance(all_data, dict) clip_ids = dataset.clip_ids assert set(clip_ids) == set(all_data.keys()) # test that all attributes and properties can be called for clip_id in tqdm.tqdm(clip_ids): clip = all_data[clip_id] clip_data = get_attributes_and_properties(clip) for attr in clip_data["attributes"]: ret = getattr(clip, attr) for prop in clip_data["properties"]: ret = getattr(clip, prop) for cprop in clip_data["cached_properties"]: ret = getattr(clip, cprop) jam = clip.to_jams() assert jam.validate()
def test_track(): data_home_dir = "tests/resources/mir_datasets" for dataset_name in DATASETS: data_home = os.path.join(data_home_dir, dataset_name) module = importlib.import_module( "soundata.datasets.{}".format(dataset_name)) dataset = module.Dataset(os.path.join(TEST_DATA_HOME, dataset_name)) # if the dataset doesn't have a track object, make sure it raises a value error # and move on to the next dataset if dataset._track_class is None: with pytest.raises(NotImplementedError): dataset.track("~faketrackid~?!") continue if dataset_name in CUSTOM_TEST_TRACKS: trackid = CUSTOM_TEST_TRACKS[dataset_name] else: trackid = dataset.track_ids[0] # test data home specified try: track_test = dataset.track(trackid) except: assert False, "{}: {}".format(dataset_name, sys.exc_info()[0]) assert isinstance( track_test, core.Track ), "{}.track must be an instance of type core.Track".format( dataset_name) assert hasattr( track_test, "to_jams"), "{}.track must have a to_jams method".format( dataset_name) # test calling all attributes, properties and cached properties track_data = get_attributes_and_properties(track_test) for attr in track_data["attributes"]: ret = getattr(track_test, attr) for prop in track_data["properties"]: ret = getattr(track_test, prop) for cprop in track_data["cached_properties"]: ret = getattr(track_test, cprop) # Validate JSON schema try: jam = track_test.to_jams() except: assert False, "{}: {}".format(dataset_name, sys.exc_info()[0]) assert jam.validate( ), "Jams validation failed for {}.track({})".format( dataset_name, trackid) # will fail if something goes wrong with __repr__ try: text_trap = io.StringIO() sys.stdout = text_trap print(track_test) sys.stdout = sys.__stdout__ except: assert False, "{}: {}".format(dataset_name, sys.exc_info()[0]) with pytest.raises(ValueError): dataset.track("~faketrackid~?!")