Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions jenner-check/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# runner scratch — never commit
*_response.json
response.json
59 changes: 59 additions & 0 deletions jenner-check/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Jenner compatibility bundles

This directory was added by a pull request from
[Jenner](https://jenneranalytics.com). It contains a SAS bundle generated
from code already in this repository, so you can run `test/marks.sas`
against the Jenner SAS engine and see the results for yourself.

## What's in here

```
jenner-check/
├── README.md # this file
├── run_jenner.sh # runner (curl; Linux/macOS/WSL)
├── run_jenner.bat # runner (Windows)
├── run_jenner.sas # runner you can call from base SAS (PROC HTTP)
└── t001_marks_elementary_tests/
├── script.sas # test/marks.sas, self-contained
├── autoexec.sas # options set before the run
├── input/report.dat # the repo's own data
├── expected.json # pinned fields from a passing run
├── expected/ # human-readable snapshot (log, output, file URLs)
└── meta.json # provenance + notes on what was adapted
```

`script.sas` is your `test/marks.sas`. The only change is that the
external `infile 'statclass1.dat'` was replaced by inline `datalines`
carrying this repo's own `test/report.dat`, so the bundle is
self-contained. Every PROC, option, and statement is exactly as written
in the original.

## How to run it

From inside `jenner-check/`:

```bash
./run_jenner.sh --all # run every bundle
./run_jenner.sh t001_marks_elementary_tests # run just this one
```

On Windows use `run_jenner.bat`. From base SAS (9.4 M5+):

```sas
%include 'run_jenner.sas';
%jenner_check_all();
```

Each run prints `status`, `exit_code`, and the captured log; the full
listing and all generated graphics come back as downloadable URLs.

## Optional: Jenner Compatible badge

```markdown
[![Jenner Compatible](https://jenneranalytics.com/badges/jenner-compatible.svg)](https://jenneranalytics.com)
```

## Don't want future PRs from us?

Reply with `no-more-prs` anywhere in a comment, or open an issue titled
`jenner-check: opt out`, and we'll stop automated PRs to this repo.
43 changes: 43 additions & 0 deletions jenner-check/run_jenner.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
@echo off
rem run_jenner.bat - Windows runner for Jenner compatibility checks.
rem
rem Usage: run_jenner.bat <script.sas> [response.json]
rem
rem Submits a single .sas file to api.jenneranalytics.com. For
rem bundle-aware mode (autoexec.sas + script.sas concatenation) on
rem Windows, use WSL and invoke run_jenner.sh instead, or wait for the
rem Windows CI runner that will validate a bundle-aware .bat.
rem
rem Output: response.json contains the API response. Read it back in SAS:
rem filename resp 'response.json';
rem libname resp JSON fileref=resp;
rem proc print data=resp.root; run;
rem
rem Requires: curl.exe (ships with Windows 10+ at C:\Windows\System32).

setlocal

if "%~1"=="" (
echo Usage: %~nx0 ^<script.sas^> [response.json]
exit /b 2
)

set SCRIPT=%~1
set OUT=%~2
if "%OUT%"=="" set OUT=response.json

set HOST=api.jenneranalytics.com

curl.exe -sS -X POST "https://%HOST%/v1/run" ^
-F "script=@%SCRIPT%;type=application/x-sas" ^
-F "deterministic=1" ^
-F "timeout=60" ^
-o "%OUT%"

if errorlevel 1 (
echo curl failed with errorlevel %errorlevel%
exit /b 1
)

echo Response written to %OUT%
exit /b 0
Loading