def test_localsourcepaths_files(tmpdir): tmpdir.mkdir('abc') tmpdir.join('moo.cow').write('z') abcpath = tmpdir.join('abc') abcpath.join('hello.txt').write('hello') abcpath.join('blah.x').write('x') abcpath.join('blah.y').write('x') abcpath.join('blah.z').write('x') abcpath.mkdir('def') defpath = abcpath.join('def') defpath.join('world.txt').write('world') defpath.join('moo.cow').write('y') a = upload.LocalSourcePath() a.add_includes('**') a.add_includes('*.txt') a.add_includes(('moo.cow', '*blah*')) with pytest.raises(ValueError): a.add_includes('**/**/*') a.add_excludes('**') a.add_excludes('**/blah.x') with pytest.raises(ValueError): a.add_excludes('**/**/blah.x') a.add_excludes(['world.txt']) a.add_path(str(tmpdir)) a_set = set() for file in a.files(True): sfile = str(file.parent_path / file.relative_path) a_set.add(sfile) assert len(a._include) == 3 assert len(a._exclude) == 2 assert not a.can_rename() assert len(a.paths) == 1 assert _resolve_pypath(abcpath.join('blah.x')) in a_set assert _resolve_pypath(defpath.join('world.txt')) in a_set assert _resolve_pypath(defpath.join('moo.cow')) not in a_set b = upload.LocalSourcePath() b.add_includes(['moo.cow', '*blah*']) b.add_includes('*.txt') b.add_excludes(('world.txt', )) b.add_excludes('**/blah.x') b.add_paths([pathlib.Path(str(tmpdir))]) for file in a.files(True): sfile = str(file.parent_path / file.relative_path) assert sfile in a_set assert upload.LocalSourcePath.is_stdin('-') assert upload.LocalSourcePath.is_stdin('/dev/stdin') assert not upload.LocalSourcePath.is_stdin('/') a = upload.LocalSourcePath() a.add_includes('z') a.add_path(str(tmpdir) + '/abc/hello.txt') a_set = set() for file in a.files(True): sfile = str(file.parent_path / file.relative_path) a_set.add(sfile) assert len(a_set) == 0 c = upload.LocalSourcePath() c.add_path('-') for file in c.files(False): assert file.use_stdin d = upload.LocalSourcePath() d.add_path(str(tmpdir.join('moo.cow'))) i = 0 for file in d.files(True): assert str(file.parent_path.absolute()) == str(tmpdir) assert str(file.relative_path) == 'moo.cow' assert not file.use_stdin i += 1 assert i == 1 tmpdir.join('moo.cow2').ensure(file=True) d.add_path(str(tmpdir.join('moo.cow2'))) i = 0 for file in d.files(True): i += 1 assert i == 2
def test_specification(tmpdir): lsp = upload.LocalSourcePath() lsp.add_paths(['-', '/dev/stdin']) with pytest.raises(ValueError): upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=4194304, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=0, overwrite=True, recursive=True, rename=True, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control='cc', content_type='ct', lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) lsp = upload.LocalSourcePath() lsp.add_path(str(tmpdir)) with pytest.raises(ValueError): upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=4194304, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=0, overwrite=True, recursive=True, rename=True, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control='cc', content_type='ct', lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) lsp = upload.LocalSourcePath() lsp.add_path(str(tmpdir)) with pytest.raises(ValueError): upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=-1, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=0, overwrite=True, recursive=True, rename=False, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control='cc', content_type='ct', lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) with pytest.raises(ValueError): upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=upload._MAX_BLOCK_BLOB_CHUNKSIZE_BYTES + 1, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=0, overwrite=True, recursive=True, rename=False, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control='cc', content_type='ct', lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) with pytest.raises(ValueError): upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=4194304, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=-1, overwrite=True, recursive=True, rename=False, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control='cc', content_type='ct', lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) with pytest.raises(ValueError): upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=4194304, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=upload._MAX_BLOCK_BLOB_ONESHOT_BYTES + 1, overwrite=True, recursive=True, rename=False, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control=None, content_type=None, lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) spec = upload.Specification( upload_options=options.Upload( access_tier=None, chunk_size_bytes=4194304, delete_extraneous_destination=False, delete_only=False, mode=azmodels.StorageModes.Auto, one_shot_bytes=0, overwrite=True, recursive=True, rename=False, rsa_public_key=None, stdin_as_page_blob_size=0, store_file_properties=options.FileProperties( attributes=True, cache_control=None, content_type=None, lmt=None, md5=True, ), strip_components=0, vectored_io=None, ), skip_on_options=options.SkipOn( filesize_match=True, lmt_ge=False, md5_match=True, ), local_source_path=lsp, ) spec.add_azure_destination_path(azops.DestinationPath()) assert len(spec.destinations) == 1