filelift 0.3.1

A small CLI for lifting local files to S3-compatible object storage.
use std::fs;

#[test]
fn unix_installer_uses_user_bin_and_release_assets() {
    let script = fs::read_to_string("scripts/install.sh").expect("install.sh should exist");

    assert!(script.contains("REPO=\"EaveLuo/filelift\""));
    assert!(script.contains("${FILELIFT_INSTALL_DIR:-$HOME/.local/bin}"));
    assert!(script.contains("x86_64-apple-darwin"));
    assert!(script.contains("aarch64-apple-darwin"));
    assert!(script.contains("x86_64-unknown-linux-gnu"));
    assert!(script.contains("$HOME/.profile"));
    assert!(script.contains("$HOME/.zshrc"));
    assert!(script.contains("Installing or updating filelift"));
    assert!(script.contains("cp -f"));
    assert!(script.contains("\"$INSTALL_DIR/$BINARY_NAME\" --version"));
    assert!(script.contains("another filelift is earlier on your PATH"));
    assert!(script.contains("cargo install filelift --force"));
}

#[test]
fn windows_installer_uses_user_path_and_release_assets() {
    let script = fs::read_to_string("scripts/install.ps1").expect("install.ps1 should exist");

    assert!(script.contains("$Repo = \"EaveLuo/filelift\""));
    assert!(script.contains("$env:LOCALAPPDATA"));
    assert!(script.contains("Programs\\filelift\\bin"));
    assert!(script.contains("$env:FILELIFT_VERSION"));
    assert!(script.contains("Installing or updating filelift"));
    assert!(script.contains("x86_64-pc-windows-msvc"));
    assert!(script.contains("SetEnvironmentVariable(\"Path\""));
    assert!(script.contains("User)"));
    assert!(script.contains("& $InstalledPath --version"));
    assert!(script.contains("Another filelift is earlier on your PATH"));
    assert!(script.contains("cargo install filelift --force"));
}

#[test]
fn release_workflow_uploads_installer_assets() {
    let workflow =
        fs::read_to_string(".github/workflows/release.yml").expect("release workflow should exist");

    assert!(workflow.contains("filelift-x86_64-pc-windows-msvc.zip"));
    assert!(workflow.contains("filelift-x86_64-unknown-linux-gnu.tar.gz"));
    assert!(workflow.contains("filelift-x86_64-apple-darwin.tar.gz"));
    assert!(workflow.contains("filelift-aarch64-apple-darwin.tar.gz"));
    assert!(workflow.contains("softprops/action-gh-release"));
}

#[test]
fn release_workflow_publishes_crate() {
    let workflow =
        fs::read_to_string(".github/workflows/release.yml").expect("release workflow should exist");

    assert!(workflow.contains("cargo-publish"));
    assert!(workflow.contains("CARGO_REGISTRY_TOKEN"));
    assert!(workflow.contains("cargo publish --locked"));
    assert!(workflow.contains("Verify release tag matches Cargo version"));
    assert!(workflow.contains("expected=\"v${version}\""));
}