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 / 200 OK
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\\",\\"line\\":5,'
stderr '{\\"path\\":\\"rules.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"]
}
