name: CI

env:
  NODE_VERSION: 14


on:
  push: {branches: [master, feature.*]}
  pull_request:

jobs:
  unit_tests_rb:
    name: "Unit tests: Ruby"
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: ruby/setup-ruby@v1
        with: {bundler-cache: true}
      - name: Run tests
        run: bundle exec rspec tests/

  unit_tests_ts:
    name: "Unit tests: Typescript"
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with: {node-version: "${{ env.NODE_VERSION }}"}
      - uses: dart-lang/setup-dart@v1
        with: {sdk: stable}
      - run: npm install
      - run: npm test

  dart_sass:
    name: Dart Sass
    runs-on: ubuntu-latest
    if: "github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip dart-sass')"

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with: {node-version: "${{ env.NODE_VERSION }}"}
      - run: npm install
      - uses: dart-lang/setup-dart@v1
        with: {sdk: stable}

      - name: Install dart-sass
        run: |
          GITHUB_REF=${PR_REF:-$CURRENT_REF}
          if [[ "$GITHUB_REF" == refs/heads/feature.* ]]; then branch="${GITHUB_REF:11}"; else branch=master; fi
          git clone https://github.com/sass/dart-sass.git ../dart-sass --depth 1 --branch "$branch"
          (cd ../dart-sass; dart pub get)
        env:
          PR_REF: "${{ github.base_ref }}"
          CURRENT_REF: "${{ github.ref }}"

      - name: Run specs
        run: npm run sass-spec -- --dart ../dart-sass

  libsass:
    name: LibSass
    runs-on: ubuntu-latest
    if: "github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip libsass')"

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with: {node-version: "${{ env.NODE_VERSION }}"}
      - run: npm install

      - name: Install sassc
        run: |
          export SASS_LIBSASS_PATH=$BUILD_DIR/../libsass
          export SASS_SASSC_PATH=$BUILD_DIR/../sassc
          git clone https://github.com/sass/libsass.git $SASS_LIBSASS_PATH
          (cd $SASS_LIBSASS_PATH; git checkout $GITISH)
          git clone https://github.com/sass/sassc.git $SASS_SASSC_PATH
          (cd $SASS_SASSC_PATH; git checkout $GITISH)
          make -C $SASS_SASSC_PATH
        env:
          BUILD_DIR: "${{ github.workspace }}"

      - name: Run specs
        run: npm run sass-spec -- --impl libsass -c ../sassc/bin/sassc