forked from aantron/bisect_ppx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
122 lines (103 loc) · 3.25 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
.PHONY : build
build :
dune build -p bisect_ppx
.PHONY : watch
watch :
dune build -p bisect_ppx -w
TEST := @runtest
.PHONY : test
test : build
dune build -p bisect_ppx $(TEST)
.PHONY : promote
promote :
dune promote
SELF_COVERAGE := _self
.PHONY : clean
clean :
dune clean
make clean-usage
make -C test/js clean
rm -rf $(SELF_COVERAGE)
INSTALLED_ENVIRONMENT := \
OCAMLPATH=`pwd`/_build/install/default/lib \
PATH=`pwd`/_build/install/default/bin:$$PATH
.PHONY : usage
usage : build
for TEST in `ls -d test/usage/*` ; \
do \
echo ; \
echo ; \
$(INSTALLED_ENVIRONMENT) make -wC $$TEST || exit 2 ; \
done
.PHONY : clean-usage
clean-usage :
for TEST in `ls -d test/usage/*` ; \
do \
make -wC $$TEST clean ; \
done
GH_PAGES := gh-pages
.PHONY : gh-pages
gh-pages:
cat doc/header.html > $(GH_PAGES)/index.html
cat README.md | node doc/convert-readme.js >> $(GH_PAGES)/index.html
cat doc/footer.html >> $(GH_PAGES)/index.html
.PHONY : self-coverage
self-coverage : self-coverage-workspace self-coverage-rename self-coverage-test
SOURCES := bisect_ppx.opam dune-project src/
.PHONY : self-coverage-workspace
self-coverage-workspace :
rm -rf $(SELF_COVERAGE)/bisect_ppx
rm -rf $(SELF_COVERAGE)/meta_bisect_ppx
mkdir -p $(SELF_COVERAGE)
touch $(SELF_COVERAGE)/dune-workspace
mkdir -p $(SELF_COVERAGE)/meta_bisect_ppx
mkdir -p $(SELF_COVERAGE)/bisect_ppx
cp -r $(SOURCES) $(SELF_COVERAGE)/meta_bisect_ppx/
cp -r $(SOURCES) $(SELF_COVERAGE)/bisect_ppx/
mkdir -p $(SELF_COVERAGE)/bisect_ppx/test
cp -r test $(SELF_COVERAGE)/bisect_ppx/test/
cd $(SELF_COVERAGE)/meta_bisect_ppx && \
patch --no-backup-if-mismatch -p2 < ../../test/self/meta_bisect_ppx.diff
cd $(SELF_COVERAGE)/bisect_ppx && \
patch --no-backup-if-mismatch -p2 < ../../test/self/bisect_ppx.diff
.PHONY : self-coverage-rename
self-coverage-rename :
mv \
$(SELF_COVERAGE)/meta_bisect_ppx/bisect_ppx.opam \
$(SELF_COVERAGE)/meta_bisect_ppx/meta_bisect_ppx.opam
mv \
$(SELF_COVERAGE)/meta_bisect_ppx/src/common/bisect_common.ml \
$(SELF_COVERAGE)/meta_bisect_ppx/src/common/meta_bisect_common.ml
mv \
$(SELF_COVERAGE)/meta_bisect_ppx/src/common/bisect_common.mli \
$(SELF_COVERAGE)/meta_bisect_ppx/src/common/meta_bisect_common.mli
FILTER := 's/^\(\(---\|+++\) [^ \t]*\).*$$/\1/g'
.PHONY : self-coverage-diff
self-coverage-diff :
find . -name .merlin | xargs rm -f
diff -ru src _self/meta_bisect_ppx/src | \
sed $(FILTER) > \
test/self/meta_bisect_ppx.diff || \
true
diff -ru src _self/bisect_ppx/src | \
sed $(FILTER) > \
test/self/bisect_ppx.diff || \
true
EXPECTED_FILES := \
--expect bisect_ppx/src/ \
--do-not-expect bisect_ppx/src/ppx/js/ \
--do-not-expect bisect_ppx/src/runtime/js/
.PHONY : self-coverage-test
self-coverage-test :
cd $(SELF_COVERAGE) && rm -f bisect*.meta
cd $(SELF_COVERAGE) && dune build @install --instrument-with meta_bisect_ppx
cd $(SELF_COVERAGE) && \
dune build --force --instrument-with meta_bisect_ppx $(TEST)
rm -rf _coverage
cd $(SELF_COVERAGE) && \
_build/install/default/bin/meta-bisect-ppx-report \
html -o ../_coverage bisect*.meta $(EXPECTED_FILES) --verbose
cd $(SELF_COVERAGE) && \
_build/install/default/bin/meta-bisect-ppx-report \
summary bisect*.meta --verbose
@echo See _coverage/index.html