name: Run scaffold for hrp

on:
  push:
    branches:
      - master
      - v2
      - v3
  pull_request:

env:
  DISABLE_GA: "true"

jobs:
  scaffold-with-python-plugin:
    strategy:
      fail-fast: false
      matrix:
        go-version:
          - 1.17.x
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go-version }}
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build hrp binary
        run: make build
      - name: Run start project
        run: ./output/hrp startproject demo
      - name: Run generated demo tests
        run: ./output/hrp run demo/testcases/
      - name: Run API test demo in examples
        run: ./output/hrp run examples/demo-with-py-plugin/testcases/demo.json
      - name: Run load test demo in examples
        run: |
          ./output/hrp boom examples/demo-with-py-plugin/testcases/demo.json --spawn-count 10 --spawn-rate 10 --loop-count 10

  scaffold-with-go-plugin:
    strategy:
      fail-fast: false
      matrix:
        go-version:
          - 1.17.x
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go-version }}
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build hrp binary
        run: make build
      - name: Run start project
        run: ./output/hrp startproject demo --go
      - name: Build plugin
        run: ./output/hrp build -o demo/debugtalk.bin demo/plugin/debugtalk.go
      - name: Run generated demo tests
        run: ./output/hrp run demo/testcases/
      - name: Run API test demo in examples
        run: |
          ./output/hrp build -o examples/demo-with-go-plugin/debugtalk.bin examples/demo-with-go-plugin/plugin/debugtalk.go
          ./output/hrp run examples/demo-with-go-plugin/testcases/demo.json
      - name: Run load test demo in examples
        run: |
          ./output/hrp build -o examples/demo-with-go-plugin/debugtalk.bin examples/demo-with-go-plugin/plugin/debugtalk.go
          ./output/hrp boom examples/demo-with-go-plugin/testcases/demo.json --spawn-count 10 --spawn-rate 10 --loop-count 10

  scaffold-without-custom-plugin:
    strategy:
      fail-fast: false
      matrix:
        go-version:
          - 1.17.x
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go-version }}
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build hrp binary
        run: make build
      - name: Run start project
        run: ./output/hrp startproject demo --ignore-plugin
      - name: Run generated demo tests
        run: ./output/hrp run demo/testcases/requests.json
      - name: Run API test demo in examples
        run: ./output/hrp run examples/demo-without-plugin/testcases/requests.json
      - name: Run load test demo in examples
        run: |
          ./output/hrp boom examples/demo-without-plugin/testcases/requests.json --spawn-count 10 --spawn-rate 10 --loop-count 10
