mirror of
https://github.com/dwinkler1/np.git
synced 2026-05-23 13:43:31 -04:00
new automated tests
This commit is contained in:
parent
d90f82b2bb
commit
2a521eeabd
7 changed files with 162 additions and 23 deletions
14
.github/workflows/check.yml
vendored
14
.github/workflows/check.yml
vendored
|
|
@ -1,20 +1,6 @@
|
|||
name: "Test RDE template"
|
||||
on:
|
||||
workflow_dispatch: # allows manual triggering
|
||||
push:
|
||||
paths:
|
||||
- 'templates/rde/flake.lock'
|
||||
- 'templates/rde/**/*.nix'
|
||||
- 'templates/rde/**/*.sh'
|
||||
- 'templates/rde/**/*.lua'
|
||||
- '.github/workflows/check.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'templates/rde/flake.lock'
|
||||
- 'templates/rde/**/*.nix'
|
||||
- 'templates/rde/**/*.sh'
|
||||
- 'templates/rde/**/*.lua'
|
||||
- '.github/workflows/check.yml'
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
|
|
|||
101
.github/workflows/check_ed.yml
vendored
101
.github/workflows/check_ed.yml
vendored
|
|
@ -1,9 +1,16 @@
|
|||
name: "Test ed template MacOS"
|
||||
name: "Test ed template"
|
||||
on:
|
||||
workflow_dispatch: # allows manual triggering
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- 'update_rde'
|
||||
paths:
|
||||
- 'templates/ed/**'
|
||||
- 'tests/ed/**'
|
||||
- '.github/workflows/check_ed.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'templates/ed/**'
|
||||
- 'tests/ed/**'
|
||||
- '.github/workflows/check_ed.yml'
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
|
@ -12,7 +19,7 @@ jobs:
|
|||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-latest]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
|
|
@ -23,4 +30,86 @@ jobs:
|
|||
name: rde
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
extraPullNames: rstats-on-nix, nix-community
|
||||
- run: nix build ./templates/ed
|
||||
|
||||
- name: Build template
|
||||
run: nix build ./templates/ed
|
||||
|
||||
- name: Test R script
|
||||
run: |
|
||||
cd templates/ed
|
||||
nix develop --command nu -c "Rscript ${{ github.workspace }}/tests/ed/test.R"
|
||||
|
||||
- name: Test Python script (disabled by default)
|
||||
run: |
|
||||
cd templates/ed
|
||||
nix develop --command nu -c "python3 ${{ github.workspace }}/tests/ed/test.py" || echo "SKIP: Python packages not enabled"
|
||||
|
||||
test-with-python:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
with:
|
||||
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: cachix/cachix-action@v17
|
||||
with:
|
||||
name: rde
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
extraPullNames: rstats-on-nix, nix-community
|
||||
|
||||
- name: Setup test directory with Python enabled
|
||||
run: |
|
||||
TEST_DIR=$(mktemp -d)
|
||||
cp -r templates/ed/. "$TEST_DIR/"
|
||||
cd "$TEST_DIR"
|
||||
sed -i 's/python[[:space:]]*=[[:space:]]*false;/python = true;/' flake.nix
|
||||
grep -q "python[[:space:]]*=[[:space:]]*true;" flake.nix || {
|
||||
echo "Error: Failed to enable Python in flake.nix"
|
||||
exit 1
|
||||
}
|
||||
echo "TEST_DIR=$TEST_DIR" >> $GITHUB_ENV
|
||||
|
||||
- name: Build with Python enabled
|
||||
run: |
|
||||
cd "$TEST_DIR"
|
||||
nix build
|
||||
|
||||
- name: Test Python packages
|
||||
run: |
|
||||
cd "$TEST_DIR"
|
||||
nix develop --command nu -c "python3 ${{ github.workspace }}/tests/ed/test.py"
|
||||
|
||||
test-with-julia:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
with:
|
||||
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: cachix/cachix-action@v17
|
||||
with:
|
||||
name: rde
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
extraPullNames: rstats-on-nix, nix-community
|
||||
|
||||
- name: Setup test directory with Julia enabled
|
||||
run: |
|
||||
TEST_DIR=$(mktemp -d)
|
||||
cp -r templates/ed/. "$TEST_DIR/"
|
||||
cd "$TEST_DIR"
|
||||
sed -i 's/julia[[:space:]]*=[[:space:]]*false;/julia = true;/' flake.nix
|
||||
grep -q "julia[[:space:]]*=[[:space:]]*true;" flake.nix || {
|
||||
echo "Error: Failed to enable Julia in flake.nix"
|
||||
exit 1
|
||||
}
|
||||
echo "TEST_DIR=$TEST_DIR" >> $GITHUB_ENV
|
||||
|
||||
- name: Build with Julia enabled
|
||||
run: |
|
||||
cd "$TEST_DIR"
|
||||
nix build
|
||||
|
||||
- name: Test Julia packages
|
||||
run: |
|
||||
cd "$TEST_DIR"
|
||||
nix develop --command nu -c "julia ${{ github.workspace }}/tests/ed/test.jl"
|
||||
|
|
|
|||
3
.github/workflows/check_macos.yml
vendored
3
.github/workflows/check_macos.yml
vendored
|
|
@ -3,7 +3,7 @@ on:
|
|||
workflow_dispatch: # allows manual triggering
|
||||
push:
|
||||
branches:
|
||||
- 'update_rde'
|
||||
- 'update_ed'
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
|
@ -23,5 +23,4 @@ jobs:
|
|||
name: rde
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
extraPullNames: rstats-on-nix, nix-community
|
||||
- run: nix build ./templates/rde
|
||||
- run: nix build ./templates/ed
|
||||
|
|
|
|||
2
.github/workflows/update.yml
vendored
2
.github/workflows/update.yml
vendored
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
uses: DeterminateSystems/update-flake-lock@v28
|
||||
with:
|
||||
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
|
||||
branch: update_rde
|
||||
branch: update_ed
|
||||
path-to-flake-dir: "templates/ed"
|
||||
pr-title: "Update RDE flake.lock" # Title of PR to be created
|
||||
pr-labels: | # Labels to be set on the PR
|
||||
|
|
|
|||
29
tests/ed/test.R
Executable file
29
tests/ed/test.R
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env Rscript
|
||||
|
||||
packages <- c("arrow", "data.table", "fixest", "nvimcom")
|
||||
failed <- character(0)
|
||||
|
||||
for (pkg in packages) {
|
||||
ok <- tryCatch(
|
||||
{
|
||||
# nvimcom requires Neovim; skip loading but check it's installed
|
||||
if (pkg == "nvimcom") {
|
||||
requireNamespace(pkg, quietly = TRUE)
|
||||
} else {
|
||||
library(pkg, character.only = TRUE, quietly = TRUE)
|
||||
}
|
||||
TRUE
|
||||
},
|
||||
error = function(e) FALSE
|
||||
)
|
||||
if (!ok) {
|
||||
failed <- c(failed, pkg)
|
||||
}
|
||||
}
|
||||
|
||||
if (length(failed) > 0) {
|
||||
cat(sprintf("FAIL: %s\n", paste(failed, collapse = ", ")))
|
||||
quit(status = 1)
|
||||
}
|
||||
|
||||
cat("PASS: all packages loaded\n")
|
||||
19
tests/ed/test.jl
Executable file
19
tests/ed/test.jl
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env julia
|
||||
|
||||
packages = ["StatsBase"]
|
||||
failed = String[]
|
||||
|
||||
for pkg in packages
|
||||
try
|
||||
@eval using $pkg
|
||||
catch
|
||||
push!(failed, pkg)
|
||||
end
|
||||
end
|
||||
|
||||
if !isempty(failed)
|
||||
@error "FAIL: $(join(failed, ", "))"
|
||||
exit(1)
|
||||
end
|
||||
|
||||
println("PASS: all packages loaded")
|
||||
17
tests/ed/test.py
Executable file
17
tests/ed/test.py
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
packages = ["requests"]
|
||||
failed = []
|
||||
|
||||
for pkg in packages:
|
||||
try:
|
||||
__import__(pkg)
|
||||
except ImportError:
|
||||
failed.append(pkg)
|
||||
|
||||
if failed:
|
||||
sys.stderr.write(f"FAIL: {', '.join(failed)}\n")
|
||||
sys.exit(1)
|
||||
|
||||
print("PASS: all packages loaded")
|
||||
Loading…
Add table
Add a link
Reference in a new issue