name: Consistency Tests

on:
  - push
  - pull_request

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        python-version: ['3.10']
        nvim-tag: [stable]

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
      - name: Install tree-sitter CLI
        run: npm i -g tree-sitter-cli

      - name: Prepare Nvim
        env:
          NVIM_TAG: ${{ matrix.nvim-tag }}
        run: |
          sudo apt-get update && sudo apt-get install libfuse2
          sudo add-apt-repository universe
          wget https://github.com/neovim/neovim/releases/download/${NVIM_TAG}/nvim.appimage
          chmod u+x nvim.appimage && sudo mv nvim.appimage /usr/local/bin/nvim

          git clone -b v0.1.3 --depth 1 https://github.com/kiyoon/nvim-treesitter-textobjects-tests

          mkdir -p ~/.local/share/nvim/site/pack/nvim-treesitter-textobject/opt
          ln -s $(pwd) ~/.local/share/nvim/site/pack/nvim-treesitter-textobject/opt
          mkdir -p ~/.local/share/nvim/site/pack/nvim-treesitter/opt
          cd ~/.local/share/nvim/site/pack/nvim-treesitter/opt
          git clone https://github.com/nvim-treesitter/nvim-treesitter.git
          
      - name: Compile parsers
        run: nvim --headless -c "packadd nvim-treesitter" -c "TSInstallSync python" -c "q"

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          cd nvim-treesitter-textobjects-tests && pip install -e .
      - name: Test
        run: cd nvim-treesitter-textobjects-tests/tools && bash download_and_run_tests.sh || exit 1
