http response prometheus1m /api/v1/status/flags 200 {"status":"success","data":{"storage.tsdb.retention.time": "1d"}}
http response prometheus1m /api/v1/metadata 200 {"status":"success","data":{}}
http response prometheus1m /api/v1/status/config 200 {"status":"success","data":{"yaml":"global:\n  scrape_interval: 1m\n"}}
http response prometheus1m /api/v1/query_range 200 {"status":"success","data":{"resultType":"matrix","result":[]}}
http response prometheus1m /api/v1/query 200 {"status":"success","data":{"resultType":"vector","result":[]}}
http start prometheus1m 127.0.0.1:1094

http response prometheus5m /api/v1/status/flags 200 {"status":"success","data":{"storage.tsdb.retention.time": "1d"}}
http response prometheus5m /api/v1/metadata 200 {"status":"success","data":{}}
http response prometheus5m /api/v1/status/config 200 {"status":"success","data":{"yaml":"global:\n  scrape_interval: 5m\n"}}
http response prometheus5m /api/v1/query_range 200 {"status":"success","data":{"resultType":"matrix","result":[]}}
http response prometheus5m /api/v1/query 200 {"status":"success","data":{"resultType":"vector","result":[]}}
http start prometheus5m 127.0.0.1:2094

http response bitbucket /rest/insights/1.0/projects/prometheus/repos/rules/commits/.*/reports/pint 200 OK
http response bitbucket /rest/api/1.0/projects/prometheus/repos/rules/commits/.*/pull-requests 200 {}
http start bitbucket 127.0.0.1:6094

mkdir testrepo
cd testrepo
exec git init --initial-branch=main .

cp ../src/v1.yml rules.yml
exec ln -s rules.yml symlink.yml
exec ln -s symlink.yml double.yml
exec ln -s rules.yml ../ignored.yml
cp ../src/.pint.hcl .
env GIT_AUTHOR_NAME=pint
env GIT_AUTHOR_EMAIL=pint@example.com
env GIT_COMMITTER_NAME=pint
env GIT_COMMITTER_EMAIL=pint@example.com
exec git add .
exec git commit -am 'import rules and config'

exec git checkout -b v2
cp ../src/v2.yml rules.yml
exec git commit -am 'v2'

env BITBUCKET_AUTH_TOKEN="12345"
pint.error -l debug -d promql/series --no-color ci
! stdout .

stderr 'path=rules.yml rule=rule1'
stderr 'path=rules.yml rule=rule2'
stderr 'path=symlink.yml rule=rule1'
stderr 'path=symlink.yml rule=rule2'
stderr 'path=double.yml rule=rule1'
stderr 'path=double.yml rule=rule2'
! stderr 'path=ignored.yml'

stderr 'level=INFO msg="Problems found" Bug=4'
stderr 'result":"FAIL"'

! stderr '^rules.yml:5 Bug: Duration for `rate'
! stderr '^rules.yml:7 Bug: Duration for `rate'
stderr 'symlink.yml ~> rules.yml:5 Bug: Duration for `rate'
stderr 'symlink.yml ~> rules.yml:7 Bug: Duration for `rate'
stderr 'double.yml ~> rules.yml:5 Bug: Duration for `rate'
stderr 'double.yml ~> rules.yml:7 Bug: Duration for `rate'

stderr '{"path":"rules.yml","message":"Problem detected on symlinked file symlink.yml: .*","line":5}'
stderr '{"path":"rules.yml","message":"Problem detected on symlinked file double.yml: .*","line":5}'
stderr '{"path":"rules.yml","message":"Problem detected on symlinked file symlink.yml: .*","line":7}'
stderr '{"path":"rules.yml","message":"Problem detected on symlinked file double.yml: .*","line":7}'
! stderr '{"path":"symlink.yml"'
! stderr '{"path":"double.yml"'

stderr 'Problem detected on symlinked file symlink.yml:'
stderr 'Problem detected on symlinked file double.yml:'

-- src/v1.yml --
groups:
- name: foo
  rules:
  - alert: rule1
    expr: rate(errors_total[5m]) > 0
  - alert: rule2
    expr: rate(errors_total[5m]) > 0

-- src/v2.yml --
groups:
- name: foo
  rules:
  - alert: rule1
    expr: rate(errors_total[2m]) > 0
  - alert: rule2
    expr: rate(errors_total[2m]) > 0

-- src/.pint.hcl --
ci {
  baseBranch = "main"
}
repository {
  bitbucket {
    uri        = "http://127.0.0.1:6094"
    timeout    = "10s"
    project    = "prometheus"
    repository = "rules"
  }
}
prometheus "1m" {
  uri      = "http://127.0.0.1:1094"
  timeout  = "5s"
  required = true
  include = ["rules.yml"]
}
prometheus "5m" {
  uri      = "http://127.0.0.1:2094"
  timeout  = "5s"
  required = true
  include = ["symlink.yml", "double.yml"]
}
