diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0f3ea0b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +jobs: + test: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies (macOS) + if: runner.os == 'macOS' + run: brew install bats-core fzf + + - name: Install dependencies (Linux) + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install -y bats fzf + + - name: Run tests + run: bats tests diff --git a/tests/create_worktree.bats b/tests/create_worktree.bats index 9ff699f..634a05f 100644 --- a/tests/create_worktree.bats +++ b/tests/create_worktree.bats @@ -27,13 +27,13 @@ teardown() { run create_worktree "existing-dir" [ "$status" -eq 0 ] - [ "${lines[-1]}" = "$WT_BASE_DIR/existing-dir" ] + [ "${lines[${#lines[@]}-1]}" = "$WT_BASE_DIR/existing-dir" ] } @test "create_worktree creates a new branch and worktree if branch does not exist" { run create_worktree "new-feature" [ "$status" -eq 0 ] - [ "${lines[-1]}" = "$WT_BASE_DIR/new-feature" ] + [ "${lines[${#lines[@]}-1]}" = "$WT_BASE_DIR/new-feature" ] # Verify side effects [ -d "$WT_BASE_DIR/new-feature" ] @@ -52,7 +52,7 @@ teardown() { run create_worktree "existing-branch" [ "$status" -eq 0 ] - [ "${lines[-1]}" = "$WT_BASE_DIR/existing-branch" ] + [ "${lines[${#lines[@]}-1]}" = "$WT_BASE_DIR/existing-branch" ] # Verify side effects [ -d "$WT_BASE_DIR/existing-branch" ] @@ -72,7 +72,7 @@ teardown() { run create_worktree "feature-from-base" "base-branch" [ "$status" -eq 0 ] - [ "${lines[-1]}" = "$WT_BASE_DIR/feature-from-base" ] + [ "${lines[${#lines[@]}-1]}" = "$WT_BASE_DIR/feature-from-base" ] # Verify side effects [ -d "$WT_BASE_DIR/feature-from-base" ] diff --git a/tests/pick_worktree.bats b/tests/pick_worktree.bats index 51c827d..803192e 100644 --- a/tests/pick_worktree.bats +++ b/tests/pick_worktree.bats @@ -9,6 +9,7 @@ setup() { echo -e "feature\t/tmp/feature" } fzf() { + cat > /dev/null return 1 # Simulate user pressing Esc } export -f list_worktrees fzf