-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
233 lines (213 loc) · 11.5 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
MAKEFLAGS += --warn-undefined-variables
.DEFAULT_GOAL := test
.DELETE_ON_ERROR:
.SUFFIXES:
INSTALL_DIR := ~/bin
command_tests := viewcal_test remind_test addappointments_test findappointment_test
commands_to_test = $(command_tests:_test=)
calfile := test/test_calendar.txt
admin_email := mike
$(INSTALL_DIR):
mkdir $@
.PHONY: install careful_install careless_install
install: careful_install
careful_install: | $(INSTALL_DIR)
diff -q addappointments $(INSTALL_DIR) || cp -i addappointments $(INSTALL_DIR)
diff -q findappointment $(INSTALL_DIR) || cp -i findappointment $(INSTALL_DIR)
diff -q remind $(INSTALL_DIR) || cp -i remind $(INSTALL_DIR)
diff -q viewcal $(INSTALL_DIR) || cp -i viewcal $(INSTALL_DIR)
diff -q getmins $(INSTALL_DIR) || cp -i getmins $(INSTALL_DIR)
diff -q pause_mccal $(INSTALL_DIR) || cp -i pause_mccal $(INSTALL_DIR)
diff -q unpause_mccal $(INSTALL_DIR) || cp -i unpause_mccal $(INSTALL_DIR)
diff -q run_findapps.sh $(INSTALL_DIR) || cp -i run_findapps.sh $(INSTALL_DIR)
careless_install: | $(INSTALL_DIR)
cp -f addappointments $(INSTALL_DIR)
cp -f findappointment $(INSTALL_DIR)
cp -f remind $(INSTALL_DIR)
cp -f viewcal $(INSTALL_DIR)
cp -f getmins $(INSTALL_DIR)
cp -f pause_mccal $(INSTALL_DIR)
cp -f unpause_mccal $(INSTALL_DIR)
cp -f run_findapps.sh $(INSTALL_DIR)
test/output:
mkdir -p $@
.PHONY: test
test: test_code $(command_tests)
.PHONY: test_code
test_code:
@echo "Cheking code for style and lint ..."
pycodestyle --max-line-length=100 --indent-size=2 $(commands_to_test)
flake8 --max-line-length=100 --indent-size=2 $(commands_to_test)
@echo "Test succeeded!"
.PHONY: findappointment_test findapp_test_ui findapp_test_text \
findapp_addapp
findappointment_test: findapp_test_text
findapp_test_text: | test/output
@echo "Testing findappointment in text mode ..."
faketime '2023-12-31 8:00' \
./findappointment --adm $(admin_email) --once --dev --text_mode --calendar $(calfile) \
> test/output/findapp_output.txt
diff -q test/expected/findapp_expected_output.txt test/output/findapp_output.txt
@echo "Test of findappointment succeeded!"
# TODO: test the UI somehow, possibly using selenium. In the meantime use this recipe to
# pop up the UI and test it manually.
findapp_test_ui: | test/output
./findappointment --adm $(admin_email) --dev --calendar $(calfile) --sleep 10
findapp_addapp:
echo "$$(date +"%H:%M") Event"| ./addappointments --calendar $(calfile)
.PHONY: addappointments_test
addappointments_test: | test/output
@echo "Testing addappointments ..."
cp -f $(calfile) $|/
echo "8:00 Event" | faketime '2024-08-01' ./addappointments --id 1711146094.6305861 \
--calendar $|/test_calendar.txt
echo "2024-08-02 10:00 Event" | ./addappointments --id 1711146094.6305862 \
--calendar $|/test_calendar.txt
echo "remind `getmins 1d` 2024-05-01 10:00 Event" | ./addappointments --id 1711146094.6305863 \
--calendar $|/test_calendar.txt
echo "weekly 3 2024-08-04 10:00 Event" | ./addappointments --id 1711146094.6305864 \
--calendar $|/test_calendar.txt
echo "weekly 3 remind 65 2024-08-05 11:00 Event" | ./addappointments --id 1711146094.6305865 \
--calendar $|/test_calendar.txt
echo "biweekly 3 remind 65 2024-08-06 11:00 Event" | ./addappointments --id 1711146094.6305866 \
--calendar $|/test_calendar.txt
echo "monthly 3 remind 65 2024-08-07 11:00 Event" | ./addappointments --id 1711146094.6305867 \
--calendar $|/test_calendar.txt
echo "yearly 3 remind 65 2024-08-08 11:00 Event" | ./addappointments --id 1711146094.6305868 \
--calendar $|/test_calendar.txt
echo "yearly 3 remind 65 2024-08-38 11:00 Event" | ./addappointments --id 1711146094.6305868 \
--calendar $|/test_calendar.txt
echo "yearly 3 remind 65 2024-08-08 11:99 Event" | ./addappointments --id 1711146094.6305868 \
--calendar $|/test_calendar.txt
echo "hogwash" | ./addappointments --id 1711146094.6305868 \
--calendar $|/test_calendar.txt
diff -q test/expected/addapointments_expected_calendar.txt test/output/test_calendar.txt
@echo "Test of addappointments succeeded!"
.PHONY: remind_test
remind_test: | test/output
@echo "Testing remind ..."
faketime '2024-03-19 8:00' ./remind -t $(calfile) 1710614701.06092 \
"2024-3-19 8:0 Event" > test/output/remind_output.txt
diff -q test/expected/remind_expected_output.txt test/output/remind_output.txt
@echo "Test of remind succeeded!"
# TODO: test the UI somehow, possibly using selenium. In the meantime use this recipe to
# pop up the UI and test it manually.
.PHONY: remind_ui_test
remind_ui_test: | test/output
faketime '2024-03-19 8:00' ./remind $(calfile) 1710614701.06092 \
"2024-3-19 8:0 Event"
.PHONY: viewcal_test
viewcal_test: | test/output
@echo "Testing viewcal ..."
faketime '2024-12-31' ./viewcal --calendar $(calfile) 2024-01-01 > $|/result.txt
echo "---TC01 Completed---" >> $|/result.txt
faketime '2024-12-31' ./viewcal --calendar $(calfile) today >> $|/result.txt
echo "---TC02 Completed---" >> $|/result.txt
faketime '2024-12-31' ./viewcal --calendar $(calfile) this today >> $|/result.txt
echo "---TC03 Completed---" >> $|/result.txt
faketime '2023-12-31' ./viewcal --calendar $(calfile) last today >> $|/result.txt
echo "---TC04 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) last today >> $|/result.txt
echo "---TC05 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) next today >> $|/result.txt
echo "---TC06 Completed---" >> $|/result.txt
faketime '2024-01-02' ./viewcal --calendar $(calfile) yesterday >> $|/result.txt
echo "---TC07 Completed---" >> $|/result.txt
faketime '2024-01-02' ./viewcal --calendar $(calfile) this yesterday >> $|/result.txt
echo "---TC08 Completed---" >> $|/result.txt
faketime '2024-01-02' ./viewcal --calendar $(calfile) last yesterday >> $|/result.txt
echo "---TC09 Completed---" >> $|/result.txt
faketime '2024-01-02' ./viewcal --calendar $(calfile) next yesterday >> $|/result.txt
echo "---TC10 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) tomorrow >> $|/result.txt
echo "---TC11 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) this tomorrow >> $|/result.txt
echo "---TC12 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) last tomorrow >> $|/result.txt
echo "---TC13 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) next tomorrow >> $|/result.txt
echo "---TC14 Completed---" >> $|/result.txt
faketime '2024-01-28' ./viewcal --calendar $(calfile) week >> $|/result.txt
echo "---TC15 Completed---" >> $|/result.txt
faketime '2024-01-28' ./viewcal --calendar $(calfile) this week >> $|/result.txt
echo "---TC16 Completed---" >> $|/result.txt
faketime '2024-01-28' ./viewcal --calendar $(calfile) next week >> $|/result.txt
echo "---TC17 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) last week >> $|/result.txt
echo "---TC18 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) month >> $|/result.txt
echo "---TC19 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) this month >> $|/result.txt
echo "---TC20 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) next month >> $|/result.txt
echo "---TC21 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) last month >> $|/result.txt
echo "---TC22 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) year >> $|/result.txt
echo "---TC23 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) this year >> $|/result.txt
echo "---TC24 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) next year >> $|/result.txt
echo "---TC25 Completed---" >> $|/result.txt
faketime '2024-01-10' ./viewcal --calendar $(calfile) last year >> $|/result.txt
echo "---TC26 Completed---" >> $|/result.txt
faketime '2024-05-31' ./viewcal --calendar $(calfile) -a week >> $|/result.txt
echo "---TC27 Completed---" >> $|/result.txt
faketime '2024-06-01' ./viewcal --calendar $(calfile) -a month >> $|/result.txt
echo "---TC28 Completed---" >> $|/result.txt
faketime '2024-06-01' ./viewcal --calendar $(calfile) -a year >> $|/result.txt
echo "---TC29 Completed---" >> $|/result.txt
faketime '2024-06-01' ./viewcal --calendar $(calfile) -a next year >> $|/result.txt
echo "---TC30 Completed---" >> $|/result.txt
faketime '2024-06-01' ./viewcal --calendar $(calfile) -a -r year >> $|/result.txt
echo "---TC31 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) monday >> $|/result.txt
echo "---TC32 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) tuesday >> $|/result.txt
echo "---TC33 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) wednesday >> $|/result.txt
echo "---TC34 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) thursday >> $|/result.txt
echo "---TC35 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) friday >> $|/result.txt
echo "---TC36 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) saturday >> $|/result.txt
echo "---TC37 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) sunday >> $|/result.txt
echo "---TC38 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) next tuesday >> $|/result.txt
echo "---TC39 Completed---" >> $|/result.txt
faketime '2024-03-04' ./viewcal --calendar $(calfile) last thursday >> $|/result.txt
echo "---TC40 Completed---" >> $|/result.txt
faketime '2024-03-18' ./viewcal --calendar $(calfile) march >> $|/result.txt
echo "---TC41 Completed---" >> $|/result.txt
faketime '2024-03-18' ./viewcal --calendar $(calfile) january >> $|/result.txt
echo "---TC42 Completed---" >> $|/result.txt
faketime '2024-03-18' ./viewcal --calendar $(calfile) february >> $|/result.txt
echo "---TC43 Completed---" >> $|/result.txt
faketime '2024-03-18' ./viewcal --calendar $(calfile) next january >> $|/result.txt
echo "---TC44 Completed---" >> $|/result.txt
faketime '2024-12-01' ./viewcal --calendar $(calfile) last december >> $|/result.txt
echo "---TC45 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) 2024-02 >> $|/result.txt
echo "---TC46 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) 2024 >> $|/result.txt
echo "---TC47 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) 2025 >> $|/result.txt
echo "---TC48 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) 2023 >> $|/result.txt
echo "---TC49 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal --calendar $(calfile) 2023-12 >> $|/result.txt
echo "---TC50 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal -v --calendar $(calfile) today >> $|/result.txt
echo "---TC51 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal -v --calendar $(calfile) this week >> $|/result.txt
echo "---TC52 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal -v --calendar $(calfile) this month >> $|/result.txt
echo "---TC53 Completed---" >> $|/result.txt
faketime '2024-01-01' ./viewcal -v --calendar $(calfile) this year >> $|/result.txt
echo "---TC54 Completed---" >> $|/result.txt
diff -q test/expected/viewcal_expected.txt $|/result.txt
@echo "Test of viewcal succeeded!"
clean:
rm -Rf test/output