exec pint --no-color lint rules
! stdout .
cmp stderr stderr.txt

-- stderr.txt --
level=INFO msg="Loading configuration file" path=.pint.hcl
level=INFO msg="Finding all rules to check" paths=["rules"]
level=INFO msg="Checking Prometheus rules" entries=3 workers=10 online=true
Warning: label must be removed in aggregations (promql/aggregate)
  ---> rules/1.yaml:2 -> `disabled`
2 |   expr: sum(errors_total) by(keep,dropped)
                                      ^^^^^^^
                                      `dropped` label should be removed when aggregating all rules.

Warning: required label is being removed via aggregation (promql/aggregate)
  ---> rules/1.yaml:5 -> `B`
5 |   expr: sum(errors_total) without(keep,dropped)
                                      ^^^^
                                      Query is using aggregation with `without(keep, dropped)`, all
                                      labels included inside `without(...)` will be removed from the
                                      results.
                                      `keep` label is required and should be preserved when aggregating
                                      all rules.

level=INFO msg="Problems found" Warning=2
-- rules/1.yaml --
- record: disabled
  expr: sum(errors_total) by(keep,dropped)

- record: B
  expr: sum(errors_total) without(keep,dropped)

- record: C
  # pint disable promql/aggregate(keep:true)
  # pint disable promql/aggregate(dropped:false)
  expr: sum(sum(errors_total) without(keep)) by(dropped)

-- .pint.hcl --
parser {
  relaxed = ["rules/.*"]
}
rule {
    aggregate ".+" {
        keep = [ "keep" ]
    }
}
rule {
    aggregate ".+" {
        strip = [ "dropped" ]
    }
}
