File: test_rcmerge.sh

package info (click to toggle)
netcdf-parallel 1%3A4.9.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 116,192 kB
  • sloc: ansic: 279,265; sh: 14,143; cpp: 5,971; yacc: 2,612; makefile: 2,075; lex: 1,218; javascript: 280; xml: 173; awk: 2
file content (141 lines) | stat: -rwxr-xr-x 3,674 bytes parent folder | download | duplicates (2)
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