summaryrefslogtreecommitdiff
path: root/.github/workflows/libjs-test262.yml
blob: 60e3fee1993d7429a6269bfa8d692ab06a753e84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
name: Run test262 with LibJS and push results to the website repo

on: [push]

env:
  SERENITY_SOURCE_DIR: ${{ github.workspace }}

jobs:
  run_and_update_results:
    runs-on: self-hosted
    if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'

    concurrency: libjs-test262

    steps:
      - name: Cleanup
        run: |
          echo "Cleaning up previous run"
          rm -rf "${{ github.workspace }}/*"

      - name: Checkout SerenityOS/serenity
        uses: actions/checkout@v2

      - name: Checkout linusg/libjs-test262
        uses: actions/checkout@v2
        with:
          repository: linusg/libjs-test262
          path: libjs-test262

      - name: Checkout linusg/libjs-website
        uses: actions/checkout@v2
        with:
          repository: linusg/libjs-website
          path: libjs-website

      - name: Checkout tc39/test262
        uses: actions/checkout@v2
        with:
          repository: tc39/test262
          path: test262

      - name: Checkout tc39/test262-parser-tests
        uses: actions/checkout@v2
        with:
          repository: tc39/test262-parser-tests
          path: test262-parser-tests

      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install ninja-build unzip

      - name: Setup Python
        uses: actions/setup-python@v2

      - name: Install Python dependencies
        # The setup-python action set default python to python3.x. Note that we are not using system python here.
        run: |
          python -m pip install --upgrade pip
          pip install -r libjs-test262/requirements.txt

      - name: Check versions
        run: set +e; g++ --version; g++-10 --version; python --version; python3 --version; ninja --version

      - name: Create build directory
        run: |
          mkdir -p libjs-test262/Build/UCD
          mkdir -p libjs-test262/Build/CLDR

      - name: UnicodeData cache
        # TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
        uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
        with:
          path: ${{ github.workspace }}/libjs-test262/Build/UCD
          key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}

      - name: UnicodeLocale cache
        # TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
        uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
        with:
          path: ${{ github.workspace }}/libjs-test262/Build/CLDR
          key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}

      - name: Build libjs-test262-runner and test-js
        working-directory: libjs-test262
        run: |
          cd Build
          cmake -GNinja -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DSERENITY_SOURCE_DIR=${{ env.SERENITY_SOURCE_DIR }} ..
          ninja libjs-test262-runner test-js

      - name: Run test262 and test262-parser-tests
        working-directory: libjs-test262
        run: |
          python3 run_all_and_update_results.py \
            --serenity .. \
            --test262 ../test262 \
            --test262-parser-tests ../test262-parser-tests \
            --results-json ../libjs-website/test262/data/results.json

      - name: Deploy to GitHub pages
        uses: JamesIves/github-pages-deploy-action@4.1.1
        with:
          git-config-name: BuggieBot
          git-config-email: buggiebot@serenityos.org
          branch: main
          repository-name: linusg/libjs-website
          token: ${{ secrets.BUGGIEBOT }}
          folder: libjs-website