def test_upload_existing_project_to_dbfs(dbfs_path_exists_mock): # pylint: disable=unused-argument # Check that we don't upload the project if it already exists on DBFS with mock.patch("mlflow.projects.databricks._upload_to_dbfs") as upload_to_dbfs_mock: dbfs_path_exists_mock.return_value = True databricks._upload_project_to_dbfs( project_dir=TEST_PROJECT_DIR, experiment_id=0) assert upload_to_dbfs_mock.call_count == 0
def test_upload_project_to_dbfs(dbfs_root_mock, tmpdir, dbfs_path_exists_mock, upload_to_dbfs_mock): # pylint: disable=unused-argument # Upload project to a mock directory dbfs_path_exists_mock.return_value = False dbfs_uri = databricks._upload_project_to_dbfs(project_dir=TEST_PROJECT_DIR, experiment_id=0) # Get expected tar local_tar_path = os.path.join(dbfs_root_mock, dbfs_uri.split("/dbfs/")[1]) expected_tar_path = str(tmpdir.join("expected.tar.gz")) file_utils.make_tarfile(output_filename=expected_tar_path, source_dir=TEST_PROJECT_DIR, archive_name=databricks.DB_TARFILE_ARCHIVE_NAME) # Extract the tarred project, verify its contents assert filecmp.cmp(local_tar_path, expected_tar_path, shallow=False)