def test_get_metadata_path(): test_file_structure = { 'directory_dataset': { 'file1.txt': '', 'file2.txt': '', 'agdc-metadata.yaml.gz': '' }, 'file_dataset.tif': '', 'file_dataset.tif.agdc-md.yaml': '', 'dataset_metadata.yaml': '', 'no_metadata.tif': '', } out_dir = write_files(test_file_structure) assert_file_structure(out_dir, test_file_structure) # A metadata file can be specified directly. path = get_metadata_path(out_dir.joinpath('dataset_metadata.yaml')) assert Path(path).absolute() == out_dir.joinpath( 'dataset_metadata.yaml').absolute() # A dataset directory will have an internal 'agdc-metadata' file. path = get_metadata_path(out_dir.joinpath('directory_dataset')) assert Path(path).absolute() == out_dir.joinpath( 'directory_dataset', 'agdc-metadata.yaml.gz').absolute() # Other out_dir can have a sibling file ending in 'agdc-md.yaml' path = get_metadata_path(out_dir.joinpath('file_dataset.tif')) assert Path(path).absolute() == out_dir.joinpath( 'file_dataset.tif.agdc-md.yaml').absolute() # URLs are always themselves example_url = 'http://localhost/dataset.yaml' url = get_metadata_path(example_url) assert url == example_url # Lack of metadata raises an error. with pytest.raises(ValueError): get_metadata_path(out_dir.joinpath('no_metadata.tif')) # Nonexistent dataset raises a ValueError. with pytest.raises(ValueError): get_metadata_path(out_dir.joinpath('missing-dataset.tif'))
def test_find_metadata_path(): FILES = { 'directory_dataset': { 'file1.txt': '', 'file2.txt': '', 'agdc-metadata.yaml.gz': '' }, 'file_dataset.tif': '', 'file_dataset.tif.agdc-md.yaml': '', 'dataset_metadata.yaml': '', 'no_metadata.tif': '', } out_dir = write_files(FILES) assert_file_structure(out_dir, FILES) # A metadata file can be specified directly. path = get_metadata_path(out_dir.joinpath('dataset_metadata.yaml')) assert path.absolute() == out_dir.joinpath( 'dataset_metadata.yaml').absolute() # A dataset directory will have an internal 'agdc-metadata' file. path = get_metadata_path(out_dir.joinpath('directory_dataset')) assert path.absolute() == out_dir.joinpath( 'directory_dataset', 'agdc-metadata.yaml.gz').absolute() # Other out_dir can have a sibling file ending in 'agdc-md.yaml' path = get_metadata_path(out_dir.joinpath('file_dataset.tif')) assert path.absolute() == out_dir.joinpath( 'file_dataset.tif.agdc-md.yaml').absolute() # Lack of metadata raises an error. with pytest.raises(ValueError): get_metadata_path(out_dir.joinpath('no_metadata.tif')) # Nonexistent dataset raises a ValueError. with pytest.raises(ValueError): get_metadata_path(out_dir.joinpath('missing-dataset.tif'))
def test_testutils_write_files(): from datacube.testutils import write_files, assert_file_structure files = {'a.txt': 'string', 'aa.txt': ('line1\n', 'line2\n')} pp = write_files(files) assert pp.exists() assert_file_structure(pp, files) # test that we detect missing files (pp / 'a.txt').unlink() with pytest.raises(AssertionError): assert_file_structure(pp, files) with pytest.raises(AssertionError): assert_file_structure(pp, {'aa.txt': 3}) with pytest.raises(ValueError): write_files({'tt': 3})