Пример #1
0
def test_failed_item_added_to_drop_failed_log():
    # Verifies that the import command adds a failed item to the
    # drop-failed log
    mock_job = create_mock_job()
    mock_run = create_mock_run(mock_job)
    mock_job.new_run = MagicMock(return_value=mock_run)
    args = create_args(mock_job.id)
    failed_item = create_mock_item(is_valid=True)

    Command.create_import_job = MagicMock(return_value=mock_job)
    config = {}

    command = Command(config)
    repo = None

    repo_changeset = RepoChangeset(failed_item, Graph(), Graph())

    plastron.commands.importcommand.create_repo_changeset = MagicMock(return_value=repo_changeset)
    command.get_source = MagicMock()
    command.get_source.exists = MagicMock(return_value=True)
    command.update_repo = MagicMock(side_effect=FailureException)

    for _ in command.execute(repo, args):
        pass

    plastron.commands.importcommand.create_repo_changeset.assert_called_once()
    command.update_repo.assert_called_once()
    mock_run.drop_failed.assert_called_once()
Пример #2
0
def test_invalid_item_added_to_drop_invalid_log():
    # Verifies that the import command adds an invalid item to the
    # drop-invalid log
    mock_job = create_mock_job()
    mock_run = create_mock_run(mock_job)
    mock_job.new_run = MagicMock(return_value=mock_run)
    args = create_args(mock_job.id)

    invalid_item = create_mock_item(is_valid=False)

    Command.create_import_job = MagicMock(return_value=mock_job)
    config = {}

    command = Command(config)
    repo = None

    repo_changeset = RepoChangeset(invalid_item, None, None)

    plastron.commands.importcommand.create_repo_changeset = MagicMock(return_value=repo_changeset)
    command.update_repo = MagicMock()

    for _ in command.execute(repo, args):
        pass

    plastron.commands.importcommand.create_repo_changeset.assert_called_once()
    command.update_repo.assert_not_called()
    mock_run.drop_invalid.assert_called_once()
Пример #3
0
def test_cannot_resume_without_job_id():
    # Verifies that the import command throws FailureException when resuming a
    # job and the job id is not provided
    command = Command()
    args = argparse.Namespace(resume=True, job_id=None)
    repo = None

    with pytest.raises(FailureException) as excinfo:
        for _ in command.execute(repo, args):
            pass

    assert "Resuming a job requires a job id" in str(excinfo.value)
Пример #4
0
def test_model_is_required_unless_resuming():
    # Verifies that the import command throws FailureException if model
    # is not provided when not resuming
    job_id = 'test_id'
    args = create_args(job_id)
    args.model = None
    config = {}

    command = Command(config)
    repo = None
    with pytest.raises(FailureException) as excinfo:
        for _ in command.execute(repo, args):
            pass

    assert "A model is required unless resuming an existing job" in str(excinfo.value)
Пример #5
0
def test_cannot_resume_without_job_directory():
    # Verifies that the import command throws FailureException when resuming a
    # job and the directory associated with job id is not found
    jobs_dir = '/nonexistent_directory'
    config = {'JOBS_DIR': jobs_dir}
    command = Command(config)
    args = create_args('test_job_id')
    args.resume = True
    repo = None

    with pytest.raises(FailureException) as excinfo:
        for _ in command.execute(repo, args):
            pass

    assert "no such job directory found" in str(excinfo.value)
Пример #6
0
def test_cannot_resume_without_config_file():
    # Verifies that the import command throws ConfigMissingError when resuming a
    # job and a config file is not found
    job_id = 'test_id'
    args = create_args(job_id)
    args.resume = True

    with tempfile.TemporaryDirectory() as tmpdirname:
        config = {'JOBS_DIR': tmpdirname}

        # Make subdirectory in tmpdirname for job
        job_dir = os.path.join(tmpdirname, job_id)
        os.mkdir(job_dir)

        command = Command(config)
        repo = None

        with pytest.raises(ConfigMissingError) as excinfo:
            for _ in command.execute(repo, args):
                pass

        assert "config.yml is missing" in str(excinfo.value)
Пример #7
0
def test_exception_when_no_validation_ruleset():
    # Verifies that the import command throws FailureException if item
    # validation throws a NoValidationRulesetException
    mock_job = create_mock_job()
    args = create_args(mock_job.id)
    config = {}

    Command.create_import_job = MagicMock(return_value=mock_job)

    command = Command(config)
    repo = None

    item = MagicMock(Item)
    item.validate = MagicMock(side_effect=ValidationError("test"))
    repo_changeset = RepoChangeset(item, None, None)

    plastron.commands.importcommand.create_repo_changeset = MagicMock(return_value=repo_changeset)

    with pytest.raises(FailureException) as excinfo:
        for _ in command.execute(repo, args):
            pass

    assert "Unable to run validation" in str(excinfo.value)