New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
41-ctx-name.t in vendors/t/fcm-make – NEMO

source: vendors/t/fcm-make/41-ctx-name.t @ 10669

Last change on this file since 10669 was 10669, checked in by nicolasmartin, 5 years ago

Import latest FCM release from Github into the repository for testing

File size: 5.5 KB
Line 
1#!/bin/bash
2#-------------------------------------------------------------------------------
3# (C) British Crown Copyright 2006-17 Met Office.
4#
5# This file is part of FCM, tools for managing and building source code.
6#
7# FCM is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
11#
12# FCM is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with FCM. If not, see <http://www.gnu.org/licenses/>.
19#-------------------------------------------------------------------------------
20# Tests "fcm make", context name.
21#-------------------------------------------------------------------------------
22. "$(dirname "$0")/test_header"
23
24file_cmp_sorted() {
25    sort - >"${1}.expected"
26    file_cmp "$1" "${2}" "${1}.expected"
27}
28
29find_fcm_make_files() {
30    find . "$@" -type f \
31        '(' -path '*/build/*' -o \
32            -path '*/extract/*' -o \
33            -path '*/.fcm-make*/c*' ')' \
34        | sort
35}
36
37tests 17
38
39mkdir -p 'src/a' 'src/b'
40cat >'src/a/a.f90' <<'__FORTRAN__'
41program a
42write(*, '(a)') 'I am program A.'
43end program a
44__FORTRAN__
45cat >'src/b/b.f90' <<'__FORTRAN__'
46program b
47write(*, '(a)') 'I am program B.'
48end program b
49__FORTRAN__
50
51cat >'fcm-make.cfg' <<'__CFG__'
52steps=extract
53extract.ns = a
54extract.location[a]=$HERE/src/a
55__CFG__
56
57cat >'fcm-make2.cfg' <<'__CFG__'
58name=2
59steps=build
60build.source=extract src/b
61build.target{task}=link
62__CFG__
63#-------------------------------------------------------------------------------
64run_pass "${TEST_KEY_BASE}-1" fcm make
65find_fcm_make_files >"${TEST_KEY_BASE}-1.find.new"
66file_cmp_sorted \
67    "${TEST_KEY_BASE}-1.find.new" "${TEST_KEY_BASE}-1.find.new" <<'__FIND__'
68./.fcm-make/config-as-parsed.cfg
69./.fcm-make/config-on-success.cfg
70./.fcm-make/ctx.gz
71./extract/a/a.f90
72__FIND__
73
74touch 'marker'
75sleep 1
76run_pass "${TEST_KEY_BASE}-2" fcm make --name=2
77find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2.find.old"
78file_cmp "${TEST_KEY_BASE}-2.find.old" \
79    "${TEST_KEY_BASE}-2.find.old" "${TEST_KEY_BASE}-1.find.new"
80find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2.find.new"
81file_cmp_sorted \
82    "${TEST_KEY_BASE}-2.find.new" "${TEST_KEY_BASE}-2.find.new" <<'__FIND__'
83./.fcm-make2/config-as-parsed.cfg
84./.fcm-make2/config-on-success.cfg
85./.fcm-make2/ctx.gz
86./build/bin/a.exe
87./build/bin/b.exe
88./build/o/a.o
89./build/o/b.o
90__FIND__
91
92touch 'marker'
93sleep 1
94run_pass "${TEST_KEY_BASE}-1-incr" fcm make
95find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-1-incr.find.old"
96file_cmp_sorted "${TEST_KEY_BASE}-1-incr.find.old" \
97    "${TEST_KEY_BASE}-1-incr.find.old" <<'__FIND__'
98./.fcm-make2/config-as-parsed.cfg
99./.fcm-make2/config-on-success.cfg
100./.fcm-make2/ctx.gz
101./build/bin/a.exe
102./build/bin/b.exe
103./build/o/a.o
104./build/o/b.o
105./extract/a/a.f90
106__FIND__
107find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-1-incr.find.new"
108file_cmp_sorted "${TEST_KEY_BASE}-1-incr.find.new" \
109    "${TEST_KEY_BASE}-1-incr.find.new" <<'__FIND__'
110./.fcm-make/config-as-parsed.cfg
111./.fcm-make/config-on-success.cfg
112./.fcm-make/ctx.gz
113__FIND__
114
115touch 'marker'
116sleep 1
117run_pass "${TEST_KEY_BASE}-2-incr" fcm make --name=2
118find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2-incr.find.old"
119file_cmp_sorted "${TEST_KEY_BASE}-2-incr.find.old" \
120    "${TEST_KEY_BASE}-2-incr.find.old" <<'__FIND__'
121./.fcm-make/config-as-parsed.cfg
122./.fcm-make/config-on-success.cfg
123./.fcm-make/ctx.gz
124./build/bin/a.exe
125./build/bin/b.exe
126./build/o/a.o
127./build/o/b.o
128./extract/a/a.f90
129__FIND__
130find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2-incr.find.new"
131file_cmp_sorted "${TEST_KEY_BASE}-2-incr.find.new" \
132    "${TEST_KEY_BASE}-2-incr.find.new" <<'__FIND__'
133./.fcm-make2/config-as-parsed.cfg
134./.fcm-make2/config-on-success.cfg
135./.fcm-make2/ctx.gz
136__FIND__
137
138touch 'marker'
139sleep 1
140run_pass "${TEST_KEY_BASE}-1-new" fcm make --new
141find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-1-new.find.old"
142file_cmp_sorted "${TEST_KEY_BASE}-1-new.find.old" \
143    "${TEST_KEY_BASE}-1-new.find.old" <<'__FIND__'
144./.fcm-make2/config-as-parsed.cfg
145./.fcm-make2/config-on-success.cfg
146./.fcm-make2/ctx.gz
147./build/bin/a.exe
148./build/bin/b.exe
149./build/o/a.o
150./build/o/b.o
151__FIND__
152find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-1-new.find.new"
153file_cmp_sorted "${TEST_KEY_BASE}-1-new.find.new" \
154    "${TEST_KEY_BASE}-1-new.find.new" <<'__FIND__'
155./.fcm-make/config-as-parsed.cfg
156./.fcm-make/config-on-success.cfg
157./.fcm-make/ctx.gz
158./extract/a/a.f90
159__FIND__
160
161touch 'marker'
162sleep 1
163run_pass "${TEST_KEY_BASE}-2-new" fcm make --name=2 --new
164find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2-new.find.old"
165file_cmp_sorted "${TEST_KEY_BASE}-2-new.find.old" \
166    "${TEST_KEY_BASE}-2-new.find.old" <<'__FIND__'
167./.fcm-make/config-as-parsed.cfg
168./.fcm-make/config-on-success.cfg
169./.fcm-make/ctx.gz
170./extract/a/a.f90
171__FIND__
172find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2-new.find.new"
173file_cmp_sorted "${TEST_KEY_BASE}-2-new.find.new" \
174    "${TEST_KEY_BASE}-2-new.find.new" <<'__FIND__'
175./.fcm-make2/config-as-parsed.cfg
176./.fcm-make2/config-on-success.cfg
177./.fcm-make2/ctx.gz
178./build/bin/a.exe
179./build/bin/b.exe
180./build/o/a.o
181./build/o/b.o
182__FIND__
183#-------------------------------------------------------------------------------
184exit
Note: See TracBrowser for help on using the repository browser.