diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..4c39a33 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + commit-message: + prefix: "ci" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0aa5415 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,57 @@ +name: CI + +on: + push: + branches: [master] + paths: + - grammar.js + - src/** + - test/** + - bindings/** + - binding.gyp + pull_request: + paths: + - grammar.js + - src/** + - test/** + - bindings/** + - binding.gyp + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +jobs: + test: + name: Test parsers + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-14] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: true + - name: Set up tree-sitter + uses: tree-sitter/setup-action/cli@v1 + - name: Run tests + uses: tree-sitter/parser-test-action@v2 + with: + test-rust: ${{runner.os == 'Linux'}} + - name: Set up test suite + shell: bash + run: |- + printf '%s\n' examples/*.yaml > "$RUNNER_TEMP/test-files" + while read -r file; do + printf '%s\n' "$file" >> "$RUNNER_TEMP/test-files" + if [[ -f ${file/in.yaml/error} ]]; then + printf '%s\n' "$file" >> "$RUNNER_TEMP/invalid-files" + fi + done < <(find -L examples/yaml-test-suite/name -name in.yaml) + - name: Parse test suite + uses: tree-sitter/parse-action@v4 + with: + files-list: ${{runner.temp}}/test-files + invalid-files-list: ${{runner.temp}}/invalid-files diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml new file mode 100644 index 0000000..d84cf38 --- /dev/null +++ b/.github/workflows/fuzz.yml @@ -0,0 +1,26 @@ +name: Fuzz + +on: + push: + branches: [master] + paths: + - src/schema.core.c + - src/scanner.c + pull_request: + paths: + - src/schema.core.c + - src/scanner.c + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +jobs: + fuzz: + name: Fuzz scanner + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Run fuzzer + uses: tree-sitter/fuzz-action@v4 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..84b7752 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,21 @@ +name: Publish package + +on: + push: + tags: ["*"] + +jobs: + npm: + uses: tree-sitter/workflows/.github/workflows/package-npm.yml@main + with: + package-name: "@tree-sitter-grammars/tree-sitter-yaml" + secrets: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + crates: + uses: tree-sitter/workflows/.github/workflows/package-crates.yml@main + secrets: + CARGO_REGISTRY_TOKEN: ${{secrets.CARGO_TOKEN}} + pypi: + uses: tree-sitter/workflows/.github/workflows/package-pypi.yml@main + secrets: + PYPI_API_TOKEN: ${{secrets.PYPI_TOKEN}} diff --git a/.gitignore b/.gitignore index a30bedf..16d336c 100644 --- a/.gitignore +++ b/.gitignore @@ -29,9 +29,6 @@ dist/ *.dll *.pc -# Example dirs -/examples/*/ - # Grammar volatiles dsl.d.ts *.wasm diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7804057 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,5 @@ +[submodule "yaml-test-suite"] + path = examples/yaml-test-suite + url = https://github.com/yaml/yaml-test-suite + branch = data + shallow = true diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a192fe5..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: rust - -rust: - - stable - -script: - - if [ ! -d "./tree-sitter/target/release" ]; then bash ./scripts/setup-tree-sitter.sh; fi - - ./tree-sitter/target/release/tree-sitter test - -cache: - cargo: true - directories: - - ./tree-sitter diff --git a/examples/yaml-test-suite b/examples/yaml-test-suite new file mode 160000 index 0000000..6ad3d2c --- /dev/null +++ b/examples/yaml-test-suite @@ -0,0 +1 @@ +Subproject commit 6ad3d2c62885d82fc349026c136ef560838fdf3d