Consider keys may be overridden in a map #10579
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
paths-ignore: | |
- "lib/**/*.md" | |
pull_request: | |
paths-ignore: | |
- "lib/**/*.md" | |
env: | |
ELIXIR_ASSERT_TIMEOUT: 2000 | |
ELIXIRC_OPTS: "--warnings-as-errors" | |
LANG: C.UTF-8 | |
permissions: | |
contents: read | |
jobs: | |
test_linux: | |
name: Ubuntu 20.04, Erlang/OTP ${{ matrix.otp_version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- otp_version: "27.0" | |
otp_latest: true | |
erlc_opts: "warnings_as_errors" | |
- otp_version: "26.0" | |
- otp_version: "25.3" | |
- otp_version: "25.0" | |
- otp_version: master | |
development: true | |
- otp_version: maint | |
development: true | |
runs-on: ubuntu-20.04 | |
# Earlier Erlang/OTP versions ignored compiler directives | |
# when using warnings_as_errors. So we only set ERLC_OPTS | |
# from Erlang/OTP 27+. | |
env: | |
ERLC_OPTS: ${{ matrix.erlc_opts || '' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 50 | |
- uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{ matrix.otp_version }} | |
- name: Compile Elixir | |
run: | | |
make compile | |
echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Build info | |
run: bin/elixir --version | |
- name: Check format | |
run: make test_formatted && echo "All Elixir source code files are properly formatted." | |
- name: Erlang test suite | |
run: make test_erlang | |
continue-on-error: ${{ matrix.development }} | |
- name: Elixir test suite | |
run: make test_elixir | |
continue-on-error: ${{ matrix.development }} | |
- name: Build docs (ExDoc main) | |
if: ${{ matrix.otp_latest }} | |
run: | | |
cd .. | |
git clone https://github.com/elixir-lang/ex_doc.git --depth 1 | |
cd ex_doc | |
../elixir/bin/mix do local.rebar --force + local.hex --force + deps.get + compile | |
cd ../elixir/ | |
make docs | |
- name: Check reproducible builds | |
run: | | |
rm -rf .git | |
# Recompile System without .git | |
cd lib/elixir && ../../bin/elixirc -o ebin lib/system.ex && cd - | |
taskset 1 make check_reproducible | |
if: ${{ matrix.otp_latest }} | |
test_windows: | |
name: Windows Server 2019, Erlang/OTP ${{ matrix.otp_version }} | |
strategy: | |
matrix: | |
otp_version: ["25.3", "26.0"] | |
runs-on: windows-2019 | |
steps: | |
- name: Configure Git | |
run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 50 | |
- uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{ matrix.otp_version }} | |
- name: Compile Elixir | |
run: | | |
Remove-Item -Recurse -Force '.git' | |
make compile | |
- name: Build info | |
run: bin/elixir --version | |
- name: Check format | |
run: make test_formatted && echo "All Elixir source code files are properly formatted." | |
- name: Erlang test suite | |
run: make --keep-going test_erlang | |
- name: Elixir test suite | |
run: | | |
Remove-Item 'c:/Windows/System32/drivers/etc/hosts' | |
make --keep-going test_elixir | |
check_posix_compliant: | |
name: Check POSIX-compliant | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 50 | |
- name: Install Shellcheck | |
run: | | |
sudo apt update | |
sudo apt install -y shellcheck | |
- name: Check POSIX-compliant | |
run: | | |
shellcheck -e SC2039,2086 bin/elixir && echo "bin/elixir is POSIX compliant" | |
shellcheck bin/elixirc && echo "bin/elixirc is POSIX compliant" | |
shellcheck bin/iex && echo "bin/iex is POSIX compliant" |