1TMPDIR ?= /tmp
2TESTS = $(wildcard *.load)
3OUT   = $(TESTS:.load=.out)
4
5REMOTE = archive.load bossa-all.load bossa.load census-places.load dbf-zip.load
6LOCAL  = $(filter-out $(REMOTE:.load=.out),$(OUT))
7REGRESS= allcols.load 		    \
8         csv-before-after.load 	    \
9         csv-districts.load 	    \
10         csv-parse-date.load 	    \
11         csv-error.load 	    \
12         csv-escape-mode.load 	    \
13         csv-filename-pattern.load  \
14         csv-guess.load             \
15         csv-header.load            \
16         csv-json.load              \
17         csv-keep-extra-blanks.load \
18         csv-missing-col.load       \
19         csv-non-printable.load     \
20         csv-nulls.load             \
21         csv-temp.load              \
22         csv-trim-extra-blanks.load \
23         csv-using-sexp.load        \
24         csv.load 		    \
25	 copy.load                  \
26	 copy-hex.load              \
27         dbf.load 		    \
28         errors.load 		    \
29         fixed.load 		    \
30         fields-with-periods.load   \
31         ixf.load 		    \
32         overflow.load 		    \
33         partial.load 		    \
34         serial.load 		    \
35         udc.load 		    \
36         xzero.load
37
38# Those are not included in the tests because CCL doesn't have the cp866
39# encoding, and then PostgreSQL 9.6 lacks "create schema if not exists".
40#
41# dbf-memo.load
42# dbf-31.load
43# dbf-8b.load
44
45PGLOADER ?= ../build/bin/pgloader
46PGSUPERUSER ?= postgres
47
48EXTRA_OPTS =
49ifneq (,$(findstring ccl,$(CL)))
50EXTRA_OPTS = --batch --heap-reserve 150g
51endif
52
53regress: clean-out $(addprefix regress/out/, $(REGRESS:.load=.out)) ;
54
55clean-out:
56	rm -f regress/out/*
57
58local: prepare $(LOCAL)
59
60remote: prepare $(REMOTE:.load=.out)
61
62all: prepare $(OUT)
63
64prepare: bossa.sql sakila
65	-dropdb -U $(PGSUPERUSER) pgloader
66	-dropdb -U $(PGSUPERUSER) stocks
67	-dropdb -U $(PGSUPERUSER) ip4r
68	createdb -U $(PGSUPERUSER) -O `whoami` pgloader
69	createdb -U $(PGSUPERUSER) -O `whoami` stocks
70	createdb -U $(PGSUPERUSER) -O `whoami` ip4r
71	psql -d pgloader -c 'create schema expected'
72	psql -U $(PGSUPERUSER) -d pgloader -c 'create extension ip4r'
73	psql -U $(PGSUPERUSER) -d ip4r -c 'create extension ip4r'
74	psql -d stocks -f bossa.sql
75
76errors.out: errors.load
77	-$(PGLOADER) $<
78	@echo
79
80nofile.out: nofile.load
81	-$(PGLOADER) $<
82	@echo
83
84csv-hstore.out: csv-hstore.load
85	@echo skipping $@
86
87# sakila needs preparing a MySQL database too
88$(TMPDIR)/sakila-db/sakila-schema.sql: data/sakila-db.zip
89	rm -rf $(TMPDIR)/sakila-db
90	unzip $< -d $(TMPDIR)
91
92sakila: $(TMPDIR)/sakila-db/sakila-schema.sql
93	-dropdb -U $(PGSUPERUSER) sakila
94	-createdb -U $(PGSUPERUSER) -O `whoami` sakila
95	-echo "DROP DATABASE sakila" | mysql -u root
96	echo "SOURCE $(TMPDIR)/sakila-db/sakila-schema.sql" | mysql -u root
97	echo "SOURCE $(TMPDIR)/sakila-db/sakila-data.sql"   | mysql -u root
98
99sakila.out: sakila sakila.load
100	-$(PGLOADER) sakila.load
101	@echo
102
103csv-districts-stdin.out: csv-districts-stdin.load
104	cat  data/2013_Gaz_113CDs_national.txt | $(PGLOADER) $^
105
106ifneq (,$(findstring ccl,$(CL)))
107regress/out/dbf.out: dbf.load
108	@echo "Skipping $@, CCL doesn't have CP850 encoding"
109	touch $@
110else
111	$(PGLOADER) $(EXTRA_OPTS) --regress $<
112	touch $@
113endif
114
115# General case where we do NOT expect any error
116%.out: %.load
117	$(PGLOADER) $<
118	@echo
119
120# Regression tests
121regress/out/%.out: %.load
122	$(PGLOADER) $(EXTRA_OPTS) --regress $<
123	touch $@
124