-
Notifications
You must be signed in to change notification settings - Fork 266
/
Copy pathtest_rcmerge.sh
executable file
·141 lines (124 loc) · 3.59 KB
/
test_rcmerge.sh
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
#!/bin/sh
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
. ../test_common.sh
# Test that all available .rc files are merged and overrides are handled.
# The internal .rc is constructed as follows:
#
# 1. Use NCRCENV_RC environment variable exclusively if defined
# 2. If NCRCENV_RC is not defined then merge the set of rc files in this order:
# 1. $RCHOME/.ncrc
# 2. $RCHOME/.daprc
# 3. $RCHOME/.docsrc
# 4. $CWD/.ncrc
# 5. $CWD/.daprc
# 6. $CWD/.docsrc
# Entries in later files override any of the >earlier >files
# RCHOME overrides HOME when searching for .rc files.
# Since this involves a shared resource: the .rc files in current working directory,
# we need to isolate from any other test.
# Make sure execdir and srcdir absolute paths are available
WD=`pwd`
cd $srcdir ; abs_srcdir=`pwd` ; cd $WD
cd $execdir ; abs_execdir=`pwd` ; cd $WD
#DEBUG=1
#TRUEHOME=1
# Create RCHOME
if test "x$TRUEHOME" = x1 ; then
RCHOME="$HOME"
else
rm -fr rchome
mkdir rchome
cd rchome
RCHOME=`pwd`
cd ..
export NCRCENV_HOME="$RCHOME"
fi
# Now create a special directory
# And enter it to execute tests
rm -fr rcmergedir
mkdir rcmergedir
cd rcmergedir
WD=`pwd`
HOMERCFILES="$RCHOME/.ncrc $RCHOME/.daprc $RCHOME/.dodsrc"
LOCALRCFILES="$WD/.ncrc $WD/.daprc $WD/.dodsrc"
resetrc() {
rm -fr $HOMERCFILES
rm -f $LOCALRCFILES
unset NCRCENV_RC
rm -f tmp_rcmerge.txt
rm -f tmp_rcapi.txt
rm -f allfiles1 allfiles2 allfiles3
}
union() {
if test "x$DEBUG" = x1 ; then
rm -f ../allfiles$1
for f in $HOMERCFILES $LOCALRCFILES; do
if test -f $f ; then cat $f >> ../allfiles$1 ; fi
done
fi
}
mergecase1() {
# create everything with different keys to test merge
resetrc
rm -f tmp_rcmerge.txt tmp_rcmerge.txt
echo "for r=ncrc daprc dodsrc"
for r in "ncrc" "daprc" "dodsrc"; do
echo "${r}_home=${r}" >> $RCHOME/".${r}";
echo "${r}_local=${r}" >> $WD/".${r}"
done;
union 1
${abs_execdir}/tst_rcmerge |sort > tmp_rcmerge.txt
# echo ">>merge1"; cat ${abs_srcdir}/ref_rcmerge1.txt;
# echo "====="; cat tmp_rcmerge.txt
diff -b ${abs_srcdir}/ref_rcmerge1.txt tmp_rcmerge.txt
}
mergecase2() {
# create with some same keys to test override
resetrc
rm -f tmp_rcmerge.txt tmp_rcmerge.txt
echo "Create in $RCHOME"
for r in "ncrc" "daprc" "dodsrc" ; do
echo "${r}=${r}" >> $RCHOME/".${r}";
done;
echo "Create in $WD"
for r in "ncrc" "daprc" "dodsrc" ; do
echo "${r}=${r}" >> $WD/".${r}"
done;
union 2
${abs_execdir}/tst_rcmerge |sort > tmp_rcmerge.txt
diff -b ${abs_srcdir}/ref_rcmerge2.txt tmp_rcmerge.txt
}
mergecase3() {
# Test cross file overrides
resetrc
rm -f tmp_rcmerge.txt tmp_rcmerge.txt
echo "ncrc=ncrc1" >> $RCHOME/.ncrc
echo "ncrcx=ncrcx" >> $RCHOME/.ncrc
echo "ncrc=ncrc2" >> $RCHOME/.dodsrc
echo "daprc=daprc" >> $RCHOME/.daprc
echo "ncrc=ncrc1" >> $WD/.ncrc
echo "ncrcx=ncrcx" >> $WD/.ncrc
echo "ncrc=ncrc2" >> $WD/.dodsrc
echo "daprc=daprc" >> $WD/.daprc
echo "daprc=daprc" >> $WD/.dodsrc
echo "ncrcx=ncrcy" >> $WD/.dodsrc
union 3
${abs_execdir}/tst_rcmerge |sort -d > tmp_rcmerge.txt
diff -b ${abs_srcdir}/ref_rcmerge3.txt tmp_rcmerge.txt
}
rcapi1() {
resetrc
echo "[http://github.com/a/b/c]ncrc=ncrc1" >> $WD/.ncrc
echo "ncrc=ncrc2" >> $WD/.ncrc
echo "[http://github.com:8080/a/b/c]key0=v0" >> $WD/.ncrc
echo "[http://github.com]key0=v1" >> $WD/.ncrc
${abs_execdir}/tst_rcapi > tmp_rcapi.txt
diff -b ${abs_srcdir}/ref_rcapi.txt ./tmp_rcapi.txt
}
resetrc
mergecase1
mergecase2
mergecase3
# Test the .rc api
rcapi1
resetrc