From 9102f6a2f79cdc3427f0c4882a692dc3aba5a2c1 Mon Sep 17 00:00:00 2001 From: Florian Angeletti Date: Wed, 3 Jul 2019 18:41:13 +0200 Subject: [PATCH] manual: test case-insensitive collisions --- manual/tests/Makefile | 26 +++++++++++++++++++++++++- tools/ci/travis/travis-ci.sh | 7 ++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/manual/tests/Makefile b/manual/tests/Makefile index 80f0c5065..d3315fff2 100644 --- a/manual/tests/Makefile +++ b/manual/tests/Makefile @@ -1,9 +1,11 @@ TOPDIR=$(abspath ../..) +SRC=$(TOPDIR) include $(TOPDIR)/Makefile.tools +include $(TOPDIR)/ocamldoc/Makefile.docfiles MANUAL=$(TOPDIR)/manual/manual .PHONY: all -all: check-cross-references check-stdlib +all: check-cross-references check-stdlib check-case-collision .PHONY: tools tools: cross-reference-checker @@ -13,6 +15,7 @@ cross-reference-checker: cross_reference_checker.ml -I $(TOPDIR)/parsing -I $(TOPDIR)/driver \ $< -o $@ +# check cross-references between the manual and error messages .PHONY: check-cross-references check-cross-references: cross-reference-checker $(SET_LD_PATH) \ @@ -22,11 +25,32 @@ check-cross-references: cross-reference-checker $(TOPDIR)/driver/main_args.ml \ $(TOPDIR)/lambda/translmod.ml +# check that all standard library modules are referenced by the +# standard library chapter of the manual .PHONY: check-stdlib check-stdlib: ./check-stdlib-modules $(TOPDIR) +# check name collision between latex source file and module documentation +# on case-insensitive file systems +normalize = $(shell echo $(basename $(notdir $(1) )) | tr A-Z a-z) +LOWER_MLIS= $(call normalize,$(DOC_ALL_MLIS)) +LOWER_ETEX= $(call normalize,$(wildcard $(MANUAL)/*/*.etex) $(wildcard *.etex)) +INTER = $(filter $(LOWER_ETEX), $(LOWER_MLIS)) + +.PHONY: check-case-collision +check-case-collision: +ifeq ($(INTER),) +else + @echo "The following names" + @echo " $(INTER)" + @echo "are used by both an OCaml module and a latex source file." + @echo "This creates a conflict on case-insensitive file systems." + @false +endif + + .PHONY: clean clean: rm -f *.cm? *.cmx? cross-reference-checker diff --git a/tools/ci/travis/travis-ci.sh b/tools/ci/travis/travis-ci.sh index 172329dc8..632d943b6 100755 --- a/tools/ci/travis/travis-ci.sh +++ b/tools/ci/travis/travis-ci.sh @@ -164,13 +164,14 @@ CheckNoChangesMessage () { CheckManual () { cat<