blob: b63bb9b08ca53f01d0234ed1bf7e771310fe3e5b [file] [log] [blame]
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +09001#!/bin/sh
2#
3# Copyright 2015 Google Inc. All rights reserved
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http:#www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17set -e
18
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090019log=/tmp/log
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090020mk="$@"
21
Shinichiro Hamajidaf492c2015-07-31 15:31:19 +090022sleep_if_necessary() {
Shinichiro Hamajibb287302015-12-08 15:48:26 +090023 if [ x$(uname) != x"Linux" -o x"${TRAVIS}" != x"" ]; then
Shinichiro Hamajidaf492c2015-07-31 15:31:19 +090024 sleep "$@"
25 fi
26}
27
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090028export VAR=hoge
29
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090030cat <<EOF > Makefile
31all:
32 echo foo
33EOF
34
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090035${mk} 2> ${log}
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090036if [ -e ninja.sh ]; then
37 ./ninja.sh
38fi
39
Shinichiro Hamajidaf492c2015-07-31 15:31:19 +090040sleep_if_necessary 1
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090041cat <<EOF > Makefile
Dan Willemsen74197412017-12-27 16:50:09 -080042\$(KATI_deprecated_var VAR4)
43\$(KATI_obsolete_var VAR5)
Dan Willemsenff90ea32017-11-21 13:22:26 -080044VAR3 := unused
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090045all:
46 echo bar
Shinichiro Hamaji7e708012015-07-31 13:07:34 +090047 echo VAR=\$(VAR)
48 echo VAR2=\$(VAR2)
Dan Willemsenff90ea32017-11-21 13:22:26 -080049 echo VAR3=\$(VAR3)
Shinichiro Hamaji7e708012015-07-31 13:07:34 +090050 echo wildcard=\$(wildcard *.mk)
Dan Willemsen87417412015-08-24 17:57:12 -070051other:
52 echo foo
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090053EOF
54
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090055${mk} 2> ${log}
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +090056if [ -e ninja.sh ]; then
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090057 if ! grep regenerating ${log} > /dev/null; then
Shinichiro Hamajib25f8ab2015-12-07 17:47:56 +090058 echo 'Should be regenerated (Makefile)'
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090059 fi
60 ./ninja.sh
61fi
62
63export VAR=fuga
64${mk} 2> ${log}
65if [ -e ninja.sh ]; then
66 if ! grep regenerating ${log} > /dev/null; then
Shinichiro Hamajib25f8ab2015-12-07 17:47:56 +090067 echo 'Should be regenerated (env changed)'
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +090068 fi
69 ./ninja.sh
70fi
71
Shinichiro Hamaji7e708012015-07-31 13:07:34 +090072export VAR2=OK
73${mk} 2> ${log}
74if [ -e ninja.sh ]; then
75 if ! grep regenerating ${log} > /dev/null; then
Shinichiro Hamajib25f8ab2015-12-07 17:47:56 +090076 echo 'Should be regenerated (env added)'
Shinichiro Hamaji7e708012015-07-31 13:07:34 +090077 fi
78 ./ninja.sh
79fi
80
Dan Willemsenff90ea32017-11-21 13:22:26 -080081export VAR3=testing
82${mk} 2> ${log}
83if [ -e ninja.sh ]; then
84 if grep regenerating ${log} >/dev/null; then
85 echo 'Should not regenerate (unused env added)'
86 fi
87 ./ninja.sh
88fi
89
90export VAR3=test2
91${mk} 2> ${log}
92if [ -e ninja.sh ]; then
93 if grep regenerating ${log} >/dev/null; then
94 echo 'Should not regenerate (unused env changed)'
95 fi
96 ./ninja.sh
97fi
98
Dan Willemsen74197412017-12-27 16:50:09 -080099export VAR4=foo
100${mk} 2> ${log}
101if [ -e ninja.sh ]; then
102 if grep regenerating ${log} >/dev/null; then
103 echo 'Should not regenerate (deprecated env added)'
104 fi
105 ./ninja.sh
106fi
107
108export VAR5=foo
109${mk} 2> ${log}
110if [ -e ninja.sh ]; then
111 if grep regenerating ${log} >/dev/null; then
112 echo 'Should not regenerate (obsolete env added)'
113 fi
114 ./ninja.sh
115fi
116
Shinichiro Hamaji29e45702015-12-09 15:44:51 +0900117export PATH=/random_path:$PATH
118${mk} 2> ${log}
119if [ -e ninja.sh ]; then
120 if ! grep regenerating ${log} > /dev/null; then
121 echo 'Should be regenerated (PATH changed)'
122 fi
123 ./ninja.sh
124fi
125
Shinichiro Hamajidaf492c2015-07-31 15:31:19 +0900126sleep_if_necessary 1
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +0900127touch PASS.mk
128${mk} 2> ${log}
129if [ -e ninja.sh ]; then
130 if ! grep regenerating ${log} > /dev/null; then
Shinichiro Hamajib25f8ab2015-12-07 17:47:56 +0900131 echo 'Should be regenerated (wildcard)'
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +0900132 fi
133 ./ninja.sh
134fi
135
Shinichiro Hamajidaf492c2015-07-31 15:31:19 +0900136sleep_if_necessary 1
Shinichiro Hamajib2f96ed2015-07-31 12:45:45 +0900137touch XXX
138${mk} 2> ${log}
139if [ -e ninja.sh ]; then
140 if grep regenerating ${log}; then
141 echo 'Should not be regenerated'
142 fi
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +0900143 ./ninja.sh
Shinichiro Hamaji09796ef2015-07-30 17:08:29 +0900144fi
Dan Willemsen87417412015-08-24 17:57:12 -0700145
146${mk} other 2> ${log}
147if [ -e ninja.sh ]; then
148 if ! grep regenerating ${log} >/dev/null; then
Shinichiro Hamajib25f8ab2015-12-07 17:47:56 +0900149 echo 'Should be regenerated (argument)'
Dan Willemsen87417412015-08-24 17:57:12 -0700150 fi
151 ./ninja.sh other
152fi