saphyr-serde/Makefile
Ethiraric e303cbe543 Squashed 'parser/tests/yaml-test-suite/' content from commit ccfa74e5
git-subtree-dir: parser/tests/yaml-test-suite
git-subtree-split: ccfa74e56afb53da960847ff6e6976c0a0825709
2024-10-12 16:15:38 +02:00

124 lines
2.3 KiB
Makefile

SHELL := bash
export ROOT := $(shell pwd)
export PATH := $(ROOT)/bin:$(PATH)
CONFIG_MK := $(ROOT)/../yaml-test-runtimes/Config.mk
ifneq (,$(wildcard $(CONFIG_MK)))
include $(CONFIG_MK)
YAML_TEST_RUNTIMES_VERSION := $(TAG_MAIN)
endif
ifneq (,$(YAML_TEST_RUNTIMES_VERSION))
export YAML_TEST_RUNTIMES_VERSION
endif
BPAN := .bpan
COMMON := ../yaml-common
SRC ?= src/*.yaml
ifneq (,$(DOCKER))
export RUN_OR_DOCKER := $(DOCKER)
endif
default:
docker:
$(eval override export RUN_OR_DOCKER := force)
@true
docker-build:
RUN_OR_DOCKER=force-build suite-to-data
verbose:
$(eval override export RUN_OR_DOCKER_VERBOSE := true)
@true
test:
! $$(git rev-parse --is-shallow-repository) || \
git fetch --unshallow
make data
make clean
make data-update
GIT_PAGER=cat make data-diff
make data-status
make clean
make gh-pages
make clean
add-new:
for f in new/*; do cp "$$f" "src/$${f#*-}"; done
import: import.tsv
./bin/tsv-to-new $<
import.tsv:
$(error 'make import' requires a '$@' file)
export: export.tsv
run-tests:
ifndef YAML_TEST_RUNTIMES_VERSION
$(error Set YAML_TEST_RUNTIMES_VERSION)
endif
$(eval override export YTS_TEST_RUNNER := true)
@true
export.tsv:
time ./bin/suite-to-tsv $(SRC) > $@
new-test:
new-test-file
testml:
suite-to-testml $(SRC)
data:
git branch --track $@ origin/$@ 2>/dev/null || true
git worktree add -f $@ $@
data-update: data
rm -fr $</*
suite-to-data src/*.yaml
data-status: data
@git -C $< add -Af . && \
git -C $< status --short
data-diff: data
git -C $< add -Af . && \
git -C $< diff --cached
data-push: data data-update
[[ $$(git -C $< status --short) ]] && \
( \
git -C $< add -Af . && \
COMMIT=$$(git rev-parse --short HEAD) && \
git -C $< commit -m "Regenerated data from main $$COMMIT" && \
git -C $< push origin data \
)
common:
cp $(COMMON)/bpan/run-or-docker.bash $(BPAN)/
clean:
rm -f export.tsv
rm -fr data gh-pages new testml
git worktree prune
docker-push: docker-build
RUN_OR_DOCKER_PUSH=true suite-to-data
clean-docker:
-docker images | \
grep -E '(suite-to-data|new-test-file)' | \
awk '{print $3}' | \
xargs docker rmi 2>/dev/null
#------------------------------------------------------------------------------
gh-pages:
git branch --track $@ origin/$@ 2>/dev/null || true
git worktree add $@ $@