#!/usr/bin/env bash
set -euo pipefail

# The harness pins lockfile_mode to merge through the environment, which would
# override the mode this test selects in config.
unset MISE_LOCKFILE_MODE

# Upgrading a project's request must not move the pin of an equal request that
# a global config shadows and that writes the global lockfile.
export MISE_LOCKFILE=1

cat >"$MISE_CONFIG_DIR/config.toml" <<'TOML'
[settings]
lockfile_mode = "generate"

[tools]
dummy = "1"
TOML
cat >"$MISE_CONFIG_DIR/mise.lock" <<'LOCK'
lockfile_version = 1

[[tools.dummy]]
version = "1.0.0"
backend = "asdf:dummy"
specifiers = ["1"]
LOCK

mise install dummy@1.0.0 dummy@1.1.0
mkdir -p project
cat >project/mise.toml <<'TOML'
[tools]
dummy = "1"
TOML
cat >project/mise.lock <<'LOCK'
lockfile_version = 1

[[tools.dummy]]
version = "1.0.0"
backend = "asdf:dummy"
specifiers = ["1"]
LOCK

cd project
mise upgrade dummy
assert_contains "cat mise.lock" 'version = "1.1.0"'
assert_not_contains "cat mise.lock" 'version = "1.0.0"'
assert_contains "cat $MISE_CONFIG_DIR/mise.lock" 'version = "1.0.0"'
assert_not_contains "cat $MISE_CONFIG_DIR/mise.lock" 'version = "1.1.0"'
