Skip to content

Commit

Permalink
ci: 💚 Initial CI setup for tests (#27)
Browse files Browse the repository at this point in the history
related to
- nushell/nupm#30
- #24

wait for these to land 
- nushell/nupm#30

## description
this PR
- adds an empty `tests/mod.nu` module so that `nupm test` can work
- adds a CI greatly inspired by nushell/nupm#30
  - does not need the `CWD` trick for Windows (:pray:)
  - pulls down Nushell from nightly builds
  - clones Nupm
  - shows the version of Nushell
  - runs the tests
  • Loading branch information
amtoine authored Oct 19, 2023
1 parent 237b5f2 commit 4147388
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
on:
pull_request:
push:
branches:
- main
workflow_dispatch:

name: continuous-integration

defaults:
run:
shell: bash

jobs:
tests:
strategy:
fail-fast: true
matrix:
platform: [windows-latest, macos-latest, ubuntu-20.04]

runs-on: ${{ matrix.platform }}

steps:
- uses: actions/checkout@v3

- name: Set platform-specific variables
run: |
if [ "${{ runner.os }}" = "Linux" ]; then
echo "ARCH=x86_64-linux-gnu-full" >> $GITHUB_ENV
echo "EXT=tar.gz" >> $GITHUB_ENV
echo "NU_BIN=nu" >> $GITHUB_ENV
echo "NUPM=$HOME/nupm" >> $GITHUB_ENV
elif [ "${{ runner.os }}" = "Windows" ]; then
echo "ARCH=x86_64-pc-windows-msvc" >> $GITHUB_ENV
echo "EXT=zip" >> $GITHUB_ENV
echo "NU_BIN=nu.exe" >> $GITHUB_ENV
# NOTE: for some reason, `$HOME` gives an incorrect path on Windows, e.g. it looks like
# `/c/Users/runneradmin` where it should really be `c:\Users\runneradmin`: this commands
# changes the `/` into `\` and replaces the first part of the path with "x:\"
echo "NUPM=$(echo $HOME | tr '/' '\\' | sed 's/^\\\(.\)\\/\1:\\/')/nupm" >> $GITHUB_ENV
elif [ "${{ runner.os }}" = "macOS" ]; then
echo "ARCH=x86_64-apple-darwin" >> $GITHUB_ENV
echo "EXT=tar.gz" >> $GITHUB_ENV
echo "NU_BIN=nu" >> $GITHUB_ENV
echo "NUPM=$HOME/nupm" >> $GITHUB_ENV
fi
- name: Install Nushell from Nightly
run: |
tarball=$(\
curl -L https://api.github.com/repos/nushell/nightly/releases \
| jq 'sort_by(.published_at) | reverse | .[0].assets'\
| jq '.[] | select(.name | test("${{ env.ARCH }}.${{ env.EXT }}")) | {name, browser_download_url}'\
)
name=$(echo $tarball | jq '.name' | tr -d '"' | sed 's/.${{ env.EXT }}$//')
url=$(echo $tarball | jq '.browser_download_url' | tr -d '"')
curl -fLo $name $url
if [ "${{ env.EXT }}" = "tar.gz" ]; then
tar xvf $name --directory /tmp
elif [ "${{ env.EXT }}" = "zip" ]; then
unzip $name -d "/tmp/$name"
fi
cp "/tmp/$name/${{ env.NU_BIN }}" "$HOME/${{ env.NU_BIN }}"
- name: Install Nupm from Source
run: git clone https://github.com/nushell/nupm "${{ env.NUPM }}"

- name: Show Nushell Version
run: |
"$HOME/${{ env.NU_BIN }}" --commands "version"
- name: Run the tests
run: |
"$HOME/${{ env.NU_BIN }}" --commands "use ${{ env.NUPM }}/nupm/; nupm test"
Empty file added tests/mod.nu
Empty file.

0 comments on commit 4147388

Please sign in to comment.