def check(dirname): with fake_server(monkeypatch, expected_basename='foo.zip'): project = project_ops.create(dirname) archivefile = os.path.join(dirname, "tmp.zip") project_ops.archive(project, archivefile) status = _upload(project, archivefile, "foo.zip", site='unit_test') assert status
def check(dirname): with fake_server(monkeypatch, expected_basename='foo.zip', fail_these=('stage', )): project = project_ops.create(dirname) archivefile = os.path.join(dirname, "tmp.zip") project_ops.archive(project, archivefile) status = _upload(project, archivefile, "foo.zip", site='unit_test') assert not status assert '501' in status.errors[0]
def upload(project, site=None, username=None, token=None, log_level=None): """Upload the project to the Anaconda server. The returned status; if successful, has a 'url' attribute with the project URL. Args: project (``Project``): the project site (str): site alias from Anaconda config username (str): Anaconda username token (str): Anaconda auth token log_level (str): Anaconda log level Returns: a ``Status``, if failed has ``errors`` """ failed = project.problems_status() if failed is not None: return failed suffix = ".tar.bz2" # delete=True breaks on windows if you use tmp_tarfile.name to re-open the file, # so don't use delete=True. tmp_tarfile = tempfile.NamedTemporaryFile(delete=False, prefix="anaconda_upload_", suffix=suffix) tmp_tarfile.close( ) # immediately un-use it to avoid file-in-use errors on Windows try: status = archive(project, tmp_tarfile.name) if not status: return status status = client._upload(project, tmp_tarfile.name, uploaded_basename=(project.name + suffix), site=site, username=username, token=token, log_level=log_level) return status finally: os.remove(tmp_tarfile.name)