Skip to content

"before_each" misbehaves inside multiples "go_bandit" #164

@m4c0

Description

@m4c0

Problem

I want to have a single executable with multiple go_bandit suites. Some of them may contain before_each.

Expected result

Each suite installed by go_bandit runs in a "sandboxed" environment and no variables or before_each would leak between them.

### Current result

A before_each inside a go_bandit works like a global, surviving longer than the lambda, triggering UBs.

Code example

This zip contains an example CPP. It declares two go_bandit and one of them initialises a unique_ptr in a before_each. Running as-is crashes due to a UB after the before_each was called in the wrong go_bandit.

Changing the order of the go_bandits causes Bandit to complain about before_each without an it.

This setup simulates what would happen if each go_bandit was in its own CPP file.

Request

I think Bandit needs to be modified to do one of these three possible solutions:

  1. Support multiple go_bandit with before_each. Maybe there's a way to treat go_bandit's lambda as a implicit describe?
  2. Explicitly deny a before_each inside a go_bandit. This seems to be the norm, because there's no mention to before_each inside go_bandit in docs. if so, then code should fail and docs needs to be explicit about it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions