[fcm] 01/01: Upstream 2016.10.0
Alastair McKinstry
mckinstry at moszumanska.debian.org
Tue Nov 1 12:28:30 UTC 2016
This is an automated email from the git hooks/post-receive script.
mckinstry pushed a commit to tag upstream/2016.10.0
in repository fcm.
commit 5a2ea963654121f09cfd228261cdea3631a1770b
Author: Alastair McKinstry <mckinstry at debian.org>
Date: Tue Nov 1 00:13:42 2016 +0000
Upstream 2016.10.0
---
CHANGES.md | 27 ++
CONTRIBUTING.md | 3 +-
README.md | 2 +
doc/etc/fcm-version.js | 2 +-
doc/installation/index.html | 12 +-
doc/user_guide/annex_quick_ref_tree_conflicts.html | 21 +-
lib/FCM/Admin/System.pm | 24 +-
lib/FCM/System/CM/Prompt.pm | 4 +-
lib/FCM/System/CM/ResolveConflicts.pm | 26 +-
lib/FCM/System/Make/Share/Dest.pm | 14 +-
t/fcm-add-trac-env/00-basic.t | 16 +-
t/fcm-add/test_header | 233 +-----------------
t/fcm-branch-create/00-simple.t | 4 +-
t/fcm-branch-create/test_header | 233 +-----------------
t/fcm-branch-delete/test_header | 233 +-----------------
t/fcm-branch-diff/00-simple.t | 166 +++++++++----
t/fcm-branch-diff/test_header | 37 +--
t/fcm-branch-info/00-simple.t | 5 +-
t/fcm-branch-info/test_header | 37 +--
t/fcm-branch-list/00-simple.t | 4 +-
t/fcm-branch-list/test_header | 37 +--
t/fcm-commit/00-simple.t | 11 +-
t/fcm-commit/01-subtree.t | 11 +-
t/fcm-commit/test_header | 37 +--
t/fcm-conflicts/11-tree-edit-replace.t | 79 ++++++
t/fcm-conflicts/test_header | 39 +--
t/fcm-diff/00-simple.t | 7 +-
t/fcm-diff/test_header | 37 +--
t/fcm-loc-layout/test_header | 37 +--
t/fcm-make/00-build-basic.t | 3 +-
t/fcm-make/05-build-c-cxx-basic.t | 3 +-
t/fcm-make/12-build-class-prop.t | 3 +-
t/fcm-make/23-build-omp.t | 6 +-
t/fcm-make/41-ctx-name.t | 27 +-
t/fcm-make/42-make-mirror-make2.t | 19 +-
t/fcm-make/43-ctx-name-inherit.t | 8 +-
t/fcm-make/44-ctx-name-inherit-compat.t | 7 +-
t/fcm-make/46-archive-mode.t | 20 +-
t/fcm-merge/00-simple.t | 22 +-
t/fcm-merge/01-complex.t | 168 +++++++------
t/fcm-merge/test_header | 271 +--------------------
t/fcm-status/test_header | 37 +--
t/fcm-switch/test_header | 233 +-----------------
t/fcm-update/00-simple.t | 2 +-
t/fcm-update/01-subtree.t | 2 +-
t/fcm-update/test_header | 233 +-----------------
.../test_header => lib/bash/svn_test_header} | 63 +++--
t/lib/bash/test_header | 39 ++-
t/svn-hooks/03-post-commit-bg.t | 2 +
49 files changed, 769 insertions(+), 1797 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 481556a..c5de0c8 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,6 +5,33 @@ for a full listing of issues for each release.
--------------------------------------------------------------------------------
+## 2016.10.07 (2016-10-07)
+
+FCM release 35.
+
+### Noteworthy Changes
+
+[#239](https://github.com/metomi/fcm/pull/239):
+fcm conflicts: handle tree conflict:
+*local file edit, incoming file replace upon merge*.
+
+[#238](https://github.com/metomi/fcm/pull/238):
+fcm make: use `TMPDIR` (if defined in the environment) for temporary files on
+load/dump of `ctx.gz`, instead of `/tmp/`.
+
+--------------------------------------------------------------------------------
+
+## 2016.09.0 (2016-09-19)
+
+FCM release 34. Minor bug fix, and minor update to admin utilities.
+
+### Noteworthy Changes
+
+[#235](https://github.com/metomi/fcm/pull/235):
+fcm make: build: fix `sprintf` redundant argument warning on Perl 5.22+.
+
+--------------------------------------------------------------------------------
+
## 2016.05.1 (2016-05-19)
FCM release 34. Minor update to admin utilities, nothing noteworthy for users.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 12e7758..d81b344 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -25,13 +25,14 @@ below:
* Jim Bolton (Met Office, UK)
* Andrew Clark (Met Office, UK)
+* Paul Cresswell (Met Office, UK)
* Martin Dix (CSIRO, Australia)
* Ben Fitzpatrick (Met Office, UK)
* Dave Matthews (Met Office, UK)
* Stephen Oxley (Met Office, UK)
-* Matt Shin (Met Office, UK)
* Matt Pryor (Met Office, UK)
* Roddy Sharp (Met Office, UK)
+* Matt Shin (Met Office, UK)
* Stuart Whitehouse (Met Office, UK)
(All contributors are identifiable with email addresses in the version
diff --git a/README.md b/README.md
index 0c66920..5086c8c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# FCM
+[](https://travis-ci.org/metomi/fcm)
+
FCM: a modern Fortran build system,
and wrappers to Subversion for scientific software development
diff --git a/doc/etc/fcm-version.js b/doc/etc/fcm-version.js
index f15894a..36a4c69 100644
--- a/doc/etc/fcm-version.js
+++ b/doc/etc/fcm-version.js
@@ -1 +1 @@
-FCM.VERSION="2016.05.1";
+FCM.VERSION="2016.10.0";
diff --git a/doc/installation/index.html b/doc/installation/index.html
index d0454cd..35f652a 100644
--- a/doc/installation/index.html
+++ b/doc/installation/index.html
@@ -37,7 +37,9 @@
<h2 id="requirements">System Requirements</h2>
<p>FCM is intended to run on a Unix/Linux system. It is known to work on
- RHEL-6 and some part of it on AIX-7.</p>
+ recent popular Linux distributions such as RHEL-6. See
+ <a href="https://github.com/metomi/metomi-vms">metomi-vms @ Github</a> for
+ information.</p>
<p>FCM releases can be downloaded from <a href=
"https://github.com/metomi/fcm/releases">Github</a>. Download the tar.gz file
@@ -54,7 +56,7 @@
<dd>
<p><dfn>used by:</dfn> <code>fcm</code>.</p>
- <p><dfn>versions known to work:</dfn> 5.10.1.</p>
+ <p><dfn>versions known to work:</dfn> RHEL-6: 5.10.1</p>
<p><dfn>remark:</dfn> We assume that all <em>core</em> Perl modules (as
documented by <a href="http://perldoc.perl.org/">perldoc.perl.org</a>) of
@@ -132,7 +134,7 @@
<p><dfn>used by:</dfn> (optional, but highly recommended as a companion
to Subversion)</p>
- <p><dfn>versions known to work:</dfn> 0.11.7.</p>
+ <p><dfn>versions known to work:</dfn> RHEL-6: 1.0.5.</p>
</dd>
<dt><a href="http://furius.ca/xxdiff/">xxdiff</a></dt>
@@ -167,7 +169,7 @@
<p><dfn>used by:</dfn> the mirror system of <code>fcm make</code>, the
deprecated <code>fcm extract</code>.</p>
- <p><dfn>versions known to work:</dfn> AIX-7: 3.0.9, RHEL-6: 3.0.6.</p>
+ <p><dfn>versions known to work:</dfn> RHEL-6: 3.0.6.</p>
<p><dfn>remark:</dfn> used to mirror source file to another
<var>USER at HOST</var>.</p>
@@ -178,7 +180,7 @@
<dd>
<p><dfn>used by:</dfn> the deprecated <code>fcm build</code>.</p>
- <p><dfn>versions known to work:</dfn> AIX-7: 3.80, RHEL-6: 3.81.</p>
+ <p><dfn>versions known to work:</dfn> RHEL-6: 3.81.</p>
</dd>
</dl>
</div>
diff --git a/doc/user_guide/annex_quick_ref_tree_conflicts.html b/doc/user_guide/annex_quick_ref_tree_conflicts.html
index 8c0808e..f9baaf0 100644
--- a/doc/user_guide/annex_quick_ref_tree_conflicts.html
+++ b/doc/user_guide/annex_quick_ref_tree_conflicts.html
@@ -126,7 +126,7 @@ A + FILENAME
<dt id="add:add"><samp>local add, incoming add upon merge</samp></dt>
<dd>
- <p><dfn>what it means:</dfn>: files or directories added with the same
+ <p><dfn>what it means</dfn>: files or directories added with the same
name independently</p>
<p><dfn>what keep local does</dfn>: uses rename to shuffle the old file
@@ -148,10 +148,10 @@ A + FILENAME
<p><dfn>meaning</dfn>: file or directory modified on the branch locally,
but deleted on the merge branch</p>
- <p><dfn>what keep local does</dfn>:just runs <code>fcm
+ <p><dfn>what keep local does</dfn>: just runs <code>fcm
resolve</code>.</p>
- <p><dfn>what discarding local does</dfn>:deletes the file or directory
+ <p><dfn>what discarding local does</dfn>: deletes the file or directory
and runs <code>fcm resolve</code>.</p>
</dd>
@@ -173,6 +173,21 @@ A + FILENAME
old file and runs <code>fcm resolve</code>.</p>
</dd>
+ <dt id="edit:replace"><samp>local edit, incoming replace upon
+ merge</samp></dt>
+
+ <dd>
+ <p><dfn>meaning</dfn>: file modified on branch locally, but replaced
+ (deleted, and new file added) on merge branch</p>
+
+ <p><dfn>what keep local does</dfn>: just runs <code>fcm
+ resolve</code>.</p>
+
+ <p><dfn>what discarding local does</dfn>: <code>svn delete</code> local
+ file, and <code>svn copy</code> the incoming file into it. It then runs
+ <code>fcm resolve</code>.</p>
+ </dd>
+
<dt id="delete:delete:no_rename"><samp>local delete, incoming delete upon
merge (no renaming)</samp></dt>
diff --git a/lib/FCM/Admin/System.pm b/lib/FCM/Admin/System.pm
index d8738bd..70709dd 100644
--- a/lib/FCM/Admin/System.pm
+++ b/lib/FCM/Admin/System.pm
@@ -140,6 +140,11 @@ sub add_trac_environment {
my @command = (q{trac-admin}, $project->get_trac_live_path(), @args);
$RUN->($log, sub {!system(@command)});
};
+ my $TRAC_ADMIN_CONT = sub {
+ my ($log, @args) = @_;
+ my @command = (q{trac-admin}, $project->get_trac_live_path(), @args);
+ $RUNNER->run_continue($log, sub {!system(@command)});
+ };
$TRAC_ADMIN->(
"initialising Trac environment",
q{initenv},
@@ -152,18 +157,22 @@ sub add_trac_environment {
if ($group) {
_chgrp_and_chmod($project->get_trac_live_path(), $group);
}
+ # Note: For some reason, the commands to remove example components,
+ # versions, milestones, priorities fail using the "pip install trac" version
+ # on Travis CI. It is safe to allow the logic to continue after a failure
+ # here as they are really unimportant and can easily be configured later.
for my $item (qw{component1 component2}) {
- $TRAC_ADMIN->(
+ $TRAC_ADMIN_CONT->(
"removing example component $item", q{component remove}, $item,
);
}
for my $item (qw{1.0 2.0}) {
- $TRAC_ADMIN->(
+ $TRAC_ADMIN_CONT->(
"removing example version $item", q{version remove}, $item,
);
}
for my $item (qw{milestone1 milestone2 milestone3 milestone4}) {
- $TRAC_ADMIN->(
+ $TRAC_ADMIN_CONT->(
"removing example milestone $item", q{milestone remove}, $item,
);
}
@@ -173,13 +182,16 @@ sub add_trac_environment {
['blocker' => 'critical'],
) {
my ($old, $new) = @{$item};
- $TRAC_ADMIN->(
+ $TRAC_ADMIN_CONT->(
"changing priority $old to $new", qw{priority change}, $old, $new,
);
}
$TRAC_ADMIN->(
"adding admin permission", qw{permission add admin TRAC_ADMIN},
);
+ $TRAC_ADMIN->(
+ "adding admin permission", qw{permission add owner TRAC_ADMIN},
+ );
my @admin_users = shellwords($CONFIG->get_trac_admin_users());
for my $item (@admin_users) {
$TRAC_ADMIN->(
@@ -275,7 +287,7 @@ sub backup_svn_repository {
}
my $base_name = $project->get_svn_base_name();
run_mkpath($CONFIG->get_svn_backup_dir());
- my $work_dir = tempdir("$base_name.backup.XXXXXX", CLEANUP => 1);
+ my $work_dir = tempdir("$base_name.backup.XXXXXX", CLEANUP => 1, TMPDIR => 1);
my $work_path = catfile($work_dir, $base_name);
$RUN->(
sprintf(
@@ -353,7 +365,7 @@ sub backup_trac_environment {
my $trac_live_path = $project->get_trac_live_path();
my $base_name = $project->get_name();
run_mkpath($CONFIG->get_trac_backup_dir());
- my $work_dir = tempdir("$base_name.backup.XXXXXX", CLEANUP => 1);
+ my $work_dir = tempdir("$base_name.backup.XXXXXX", CLEANUP => 1, TMPDIR => 1);
my $work_path = catfile($work_dir, $base_name);
$RUNNER->run_with_retries(
sprintf(
diff --git a/lib/FCM/System/CM/Prompt.pm b/lib/FCM/System/CM/Prompt.pm
index 749c477..0e981a6 100644
--- a/lib/FCM/System/CM/Prompt.pm
+++ b/lib/FCM/System/CM/Prompt.pm
@@ -48,6 +48,7 @@ my %S = (
'TC_ST_ADD' => 'added',
'TC_ST_DELETE' => 'deleted',
'TC_ST_EDIT' => 'edited',
+ 'TC_ST_REPLACE' => 'replaced',
'TC_ST_RENAME' => 'renamed to %s',
);
@@ -64,9 +65,10 @@ my %Q_CONF = (
# D => delete,
# E => edit,
# M => missing,
+ # P => replace,
# R => rename
( map {('TC_' . $_ => {'format' => \&_q_tree_conflict, 'type' => $TYPE_YN})}
- qw(LAIA LDID LDIE LDIR LEID LEIR LRID LRIE LRIR)
+ qw(LAIA LDID LDIE LDIR LEID LEIP LEIR LRID LRIE LRIR)
),
);
diff --git a/lib/FCM/System/CM/ResolveConflicts.pm b/lib/FCM/System/CM/ResolveConflicts.pm
index 9b92d59..7b9761e 100644
--- a/lib/FCM/System/CM/ResolveConflicts.pm
+++ b/lib/FCM/System/CM/ResolveConflicts.pm
@@ -38,6 +38,7 @@ use File::Temp;
# D => delete,
# E => edit,
# M => missing,
+# P => replace,
# R => rename,
# although the 'rename' has to be detected by our code below.
@@ -55,6 +56,7 @@ our %TREE_CONFLICT_GET_FINAL_ACTIONS_FUNC_FOR = (
LDIR => \&_cm_tree_conflict_get_actions_for_ldir,
LEID => \&_cm_tree_conflict_get_actions_for_leid,
LEIR => \&_cm_tree_conflict_get_actions_for_leir,
+ LEIP => \&_cm_tree_conflict_get_actions_for_leip,
LRID => \&_cm_tree_conflict_get_actions_for_lrid,
LRIE => \&_cm_tree_conflict_get_actions_for_lrie,
LRIR => \&_cm_tree_conflict_get_actions_for_lrir,
@@ -577,6 +579,20 @@ sub _cm_tree_conflict_get_actions_for_leid {
};
}
+# Return the actions needed to resolve 'local edit, incoming replace'
+sub _cm_tree_conflict_get_actions_for_leip {
+ my ($attrib_ref, $keep_local, $files_ref) = @_;
+ my ($cfile) = @{$files_ref};
+ my ($url, $url_peg) = _cm_tree_conflict_source($attrib_ref, 'right', $cfile);
+ my $cdir = dirname($cfile);
+ sub {
+ if (!$keep_local) {
+ $attrib_ref->{svn}->call('delete', $cfile);
+ $attrib_ref->{svn}->call('copy', $url, "$cdir/");
+ }
+ };
+}
+
# Return the actions needed to resolve 'local edit, incoming rename'
sub _cm_tree_conflict_get_actions_for_leir {
my ($attrib_ref, $keep_local, $files_ref) = @_;
@@ -644,11 +660,11 @@ __PACKAGE__->class({'local' => '$', 'incoming' => '$', 'type' => '$'});
# incoming delete.
sub as_string {
my ($self) = shift();
- sprintf(
- 'L%sI%s',
- uc(substr($self->get_local(), 0, 1)),
- uc(substr($self->get_incoming(), 0, 1)),
- );
+ my $local = $self->get_local() eq 'replace'
+ ? 'P' : uc(substr($self->get_local(), 0, 1));
+ my $incoming = $self->get_incoming() eq 'replace'
+ ? 'P' : uc(substr($self->get_incoming(), 0, 1));
+ sprintf('L%sI%s', $local, $incoming);
}
1;
diff --git a/lib/FCM/System/Make/Share/Dest.pm b/lib/FCM/System/Make/Share/Dest.pm
index 517785d..b292895 100644
--- a/lib/FCM/System/Make/Share/Dest.pm
+++ b/lib/FCM/System/Make/Share/Dest.pm
@@ -29,7 +29,7 @@ use FCM::System::Exception;
use File::Basename qw{dirname};
use File::Path qw{mkpath rmtree};
use File::Spec::Functions qw{catfile rel2abs};
-use IO::File;
+use File::Temp;
use IO::Uncompress::Gunzip qw{gunzip};
use IO::Compress::Gzip qw{gzip};
use Scalar::Util qw{blessed reftype};
@@ -101,9 +101,9 @@ sub _ctx_load {
$dest = $m_ctx->get_dest();
}
my $old_m_ctx = eval {
- my $handle = IO::File->new_tmpfile();
+ my $handle = File::Temp->new('TMPDIR' => 1);
# Open the file here to work around permission problems with file ACLs
- my $path_handle = new IO::File $path || die("Cannot open cache file $path\n");
+ open(my $path_handle, '<', $path) || die($!);
gunzip($path_handle, $handle) || die($!);
$handle->seek(0, 0);
fd_retrieve($handle);
@@ -161,7 +161,7 @@ sub _dest_done {
$m_ctx->set_dest_lock(undef);
if (-d $dest_parent) {
eval {
- my $handle = IO::File->new_tmpfile();
+ my $handle = File::Temp->new('TMPDIR' => 1);
nstore_fd($m_ctx, $handle) || die($!);
$handle->seek(0, 0) || die($!);
gzip($handle, _path($attrib_ref, $m_ctx, 'sys-ctx')) || die($!);
@@ -268,9 +268,13 @@ sub _path {
? %{$m_ctx} : ('dest' => $m_ctx, 'name' => q{});
$ctx{'dest'} ||= q{};
$ctx{'name'} ||= q{};
+ my $path_of_key = $attrib_ref->{path_of}{$key};
catfile(
($ctx{'dest'} ? $ctx{'dest'} : ()),
- split(q{/}, sprintf($attrib_ref->{path_of}{$key}, $ctx{'name'})),
+ split(
+ q{/},
+ ($path_of_key ? sprintf($path_of_key, $ctx{'name'}) : $path_of_key),
+ ),
@paths,
);
}
diff --git a/t/fcm-add-trac-env/00-basic.t b/t/fcm-add-trac-env/00-basic.t
index c6b0a94..ab3febe 100755
--- a/t/fcm-add-trac-env/00-basic.t
+++ b/t/fcm-add-trac-env/00-basic.t
@@ -24,14 +24,14 @@
if ! which trac-admin 1>/dev/null 2>/dev/null; then
skip_all 'trac-admin not available'
fi
-tests 20
+tests 28
#-------------------------------------------------------------------------------
set -e
mkdir -p etc srv/{svn,trac}
# Configuration
export FCM_CONF_PATH="$PWD/etc"
ADMIN_USERS='holly ivy'
-cat >etc/admin.cfg <<__CONF__
+cat >'etc/admin.cfg' <<__CONF__
svn_live_dir=$PWD/srv/svn
trac_admin_users=$ADMIN_USERS
trac_live_dir=$PWD/srv/trac
@@ -49,12 +49,16 @@ for NAME in bus car lorry taxi; do
# Trac environment directory exists
run_pass "$TEST_KEY-d" test -d "$PWD/srv/trac/$NAME"
# Admin users are set
+ trac-admin "$PWD/srv/trac/$NAME" 'permission' 'export' "$TEST_KEY-d-perms"
+ # For some reason, the "echo" for the next test is lost in the ether unless
+ # we have an "echo" here.
+ echo
for ADMIN_USER in $ADMIN_USERS; do
- trac-admin "$PWD/srv/trac/$NAME" permission list "$ADMIN_USER" \
- >"$TEST_KEY.perm.out"
- file_grep "$TEST_KEY.perm.out" \
- "$ADMIN_USER *TRAC_ADMIN" "$TEST_KEY.perm.out"
+ file_grep "$TEST_KEY-d-perms-$ADMIN_USER" \
+ "$ADMIN_USER,admin" "$TEST_KEY-d-perms"
done
+ file_grep "$TEST_KEY-d-perms-owner" "owner,TRAC_ADMIN" "$TEST_KEY-d-perms"
+ file_grep "$TEST_KEY-d-perms-admin" "admin,TRAC_ADMIN" "$TEST_KEY-d-perms"
# Subversion repository paths in place
if [[ -d "srv/svn/$NAME" ]]; then
file_grep "$TEST_KEY-repository_dir" \
diff --git a/t/fcm-add/test_header b/t/fcm-add/test_header
deleted file mode 100644
index ecde158..0000000
--- a/t/fcm-add/test_header
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/bash
-# ------------------------------------------------------------------------------
-# (C) British Crown Copyright 2006-16 Met Office.
-#
-# This file is part of FCM, tools for managing and building source code.
-#
-# FCM is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# FCM is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with FCM. If not, see <http://www.gnu.org/licenses/>.
-# ------------------------------------------------------------------------------
-# Optional enviroment variables:
-# TEST_PROJECT (tests using given project name)
-# TEST_REMOTE_HOST (tests using svn+ssh repositories located on given host)
-# ------------------------------------------------------------------------------
-
-. $(dirname $0)/../lib/bash/test_header
-
-function file_cmp() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if cmp $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_grep() {
- local TEST_KEY=$1
- local PATTERN=$2
- local FILE=$3
- if grep -q -e "$PATTERN" $TEST_DIR/$FILE; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_test() {
- local TEST_KEY=$1
- local FILE=$2
- local OPTION=${3:--e}
- if test $OPTION $TEST_DIR/$FILE; then
- pass $TEST_KEY
- else
- fail $TEST_KEY
- fi
-}
-
-function file_xxdiff() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if xxdiff -D $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function init_repos() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- ROOT_URL=$REPOS_URL
- PROJECT=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- PROJECT=$TEST_PROJECT"/"
- fi
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/$PROJECT/trunk -m "initial trunk import"
- svn mkdir -q $REPOS_URL/$PROJECT/tags -m "make tags"
- svn mkdir -q --parents $REPOS_URL/$PROJECT/branches/dev/Share -m " "
-}
-
-function init_repos_layout_roses() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- svn mkdir -q --parents $REPOS_URL/a/a/0/0/0/trunk
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/a/a/0/0/0/trunk -m "initial trunk import"
- TMPFILE=$(mktemp)
- cat >$TMPFILE <<__LAYOUT__
-depth-project = 5
-depth-branch = 1
-depth-tag = 1
-dir-trunk = trunk
-dir-branch =
-dir-tag =
-level-owner-branch =
-level-owner-tag =
-template-branch =
-template-tag =
-__LAYOUT__
- TMPDIR=$(mktemp -d)
- svn checkout -q $REPOS_URL $TMPDIR
- svn propset -q --file=$TMPFILE fcm:layout $TMPDIR
- svn commit -q -m " " $TMPDIR
- rm -f $TMPFILE
- rm -rf $TMPDIR
- ROOT_URL=$REPOS_URL
-}
-
-function init_branch() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- local ROOT_PATH=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- ROOT_PATH=$ROOT_PATH/$TEST_PROJECT
- fi
- MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/Share/$BRANCH_NAME from /trunk at 1.")
- svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/Share/$BRANCH_NAME \
- -m "Made a branch $MESSAGE"
-}
-
-function init_branch_wc() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch $BRANCH_NAME $REPOS_URL
- svn checkout -q $ROOT_URL/branches/dev/Share/$BRANCH_NAME $TEST_DIR/wc
-}
-
-function init_merge_branches() {
- local BRANCH_NAME=$1
- local OTHER_BRANCH_NAME=$2
- local REPOS_URL=$3
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch_wc $BRANCH_NAME $REPOS_URL
- cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
- done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
- svn commit -q -m "Made changes for future merge of this branch"
- svn update -q
- init_branch $OTHER_BRANCH_NAME $REPOS_URL
- svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
- echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
- svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
- svn commit -q -m "Made changes for future merge"
- svn update -q
- svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made trunk change"
- svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made another trunk change"
- svn update -q
-}
-
-function run_pass() {
- local TEST_KEY=$1
- shift 1
- if ! "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function run_fail() {
- local TEST_KEY=$1
- shift 1
- if "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function setup() {
- mkdir -p $TEST_DIR/.subversion
- mkdir -p $TEST_DIR/run
- cd $TEST_DIR/run
-}
-
-function teardown() {
- cd $TEST_DIR
- rm -rf $TEST_DIR/test_repos
- rm -rf $TEST_DIR/wc
- rm -rf $TEST_DIR/run
- rm -rf $TEST_DIR/.subversion
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- ssh $TEST_REMOTE_HOST "rm -rf $TEST_REMOTE_DIR"
- fi
-}
-
-REPOS_URL=
-ROOT_URL=
-PROJECT=
diff --git a/t/fcm-add/test_header b/t/fcm-add/test_header
new file mode 120000
index 0000000..9a2064b
--- /dev/null
+++ b/t/fcm-add/test_header
@@ -0,0 +1 @@
+../lib/bash/svn_test_header
\ No newline at end of file
diff --git a/t/fcm-branch-create/00-simple.t b/t/fcm-branch-create/00-simple.t
index 0aaea8d..981326a 100644
--- a/t/fcm-branch-create/00-simple.t
+++ b/t/fcm-branch-create/00-simple.t
@@ -34,6 +34,7 @@ TEST_KEY=$TEST_KEY_BASE-fcm-bc
run_pass "$TEST_KEY" fcm branch-create -t SHARE --rev-flag=NONE \
--non-interactive \
my_branch_test
+branch_tidy "$TEST_KEY.out"
file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<__OUT__
[info] Source: $ROOT_URL/trunk at 1 (4)
Change summary:
@@ -44,7 +45,6 @@ Commit message is as follows:
--------------------------------------------------------------------------------
Created /${PROJECT}branches/dev/Share/my_branch_test from /${PROJECT}trunk at 1.
--------------------------------------------------------------------------------
-
Committed revision 5.
[info] Created: $ROOT_URL/branches/dev/Share/my_branch_test
__OUT__
@@ -69,6 +69,7 @@ TEST_KEY=$TEST_KEY_BASE-fcm-bc-branch-of-branch
run_pass "$TEST_KEY" fcm branch-create -t SHARE --rev-flag=NONE \
--non-interactive \
--branch-of-branch my_branch_test
+branch_tidy "$TEST_KEY.out"
file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<__OUT__
[info] Source: $ROOT_URL/branches/dev/Share/branch_test at 4 (4)
Change summary:
@@ -79,7 +80,6 @@ Commit message is as follows:
--------------------------------------------------------------------------------
Created /${PROJECT}branches/dev/Share/my_branch_test from /${PROJECT}branches/dev/Share/branch_test at 4.
--------------------------------------------------------------------------------
-
Committed revision 5.
[info] Created: $ROOT_URL/branches/dev/Share/my_branch_test
__OUT__
diff --git a/t/fcm-branch-create/test_header b/t/fcm-branch-create/test_header
deleted file mode 100644
index ecde158..0000000
--- a/t/fcm-branch-create/test_header
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/bash
-# ------------------------------------------------------------------------------
-# (C) British Crown Copyright 2006-16 Met Office.
-#
-# This file is part of FCM, tools for managing and building source code.
-#
-# FCM is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# FCM is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with FCM. If not, see <http://www.gnu.org/licenses/>.
-# ------------------------------------------------------------------------------
-# Optional enviroment variables:
-# TEST_PROJECT (tests using given project name)
-# TEST_REMOTE_HOST (tests using svn+ssh repositories located on given host)
-# ------------------------------------------------------------------------------
-
-. $(dirname $0)/../lib/bash/test_header
-
-function file_cmp() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if cmp $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_grep() {
- local TEST_KEY=$1
- local PATTERN=$2
- local FILE=$3
- if grep -q -e "$PATTERN" $TEST_DIR/$FILE; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_test() {
- local TEST_KEY=$1
- local FILE=$2
- local OPTION=${3:--e}
- if test $OPTION $TEST_DIR/$FILE; then
- pass $TEST_KEY
- else
- fail $TEST_KEY
- fi
-}
-
-function file_xxdiff() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if xxdiff -D $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function init_repos() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- ROOT_URL=$REPOS_URL
- PROJECT=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- PROJECT=$TEST_PROJECT"/"
- fi
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/$PROJECT/trunk -m "initial trunk import"
- svn mkdir -q $REPOS_URL/$PROJECT/tags -m "make tags"
- svn mkdir -q --parents $REPOS_URL/$PROJECT/branches/dev/Share -m " "
-}
-
-function init_repos_layout_roses() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- svn mkdir -q --parents $REPOS_URL/a/a/0/0/0/trunk
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/a/a/0/0/0/trunk -m "initial trunk import"
- TMPFILE=$(mktemp)
- cat >$TMPFILE <<__LAYOUT__
-depth-project = 5
-depth-branch = 1
-depth-tag = 1
-dir-trunk = trunk
-dir-branch =
-dir-tag =
-level-owner-branch =
-level-owner-tag =
-template-branch =
-template-tag =
-__LAYOUT__
- TMPDIR=$(mktemp -d)
- svn checkout -q $REPOS_URL $TMPDIR
- svn propset -q --file=$TMPFILE fcm:layout $TMPDIR
- svn commit -q -m " " $TMPDIR
- rm -f $TMPFILE
- rm -rf $TMPDIR
- ROOT_URL=$REPOS_URL
-}
-
-function init_branch() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- local ROOT_PATH=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- ROOT_PATH=$ROOT_PATH/$TEST_PROJECT
- fi
- MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/Share/$BRANCH_NAME from /trunk at 1.")
- svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/Share/$BRANCH_NAME \
- -m "Made a branch $MESSAGE"
-}
-
-function init_branch_wc() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch $BRANCH_NAME $REPOS_URL
- svn checkout -q $ROOT_URL/branches/dev/Share/$BRANCH_NAME $TEST_DIR/wc
-}
-
-function init_merge_branches() {
- local BRANCH_NAME=$1
- local OTHER_BRANCH_NAME=$2
- local REPOS_URL=$3
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch_wc $BRANCH_NAME $REPOS_URL
- cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
- done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
- svn commit -q -m "Made changes for future merge of this branch"
- svn update -q
- init_branch $OTHER_BRANCH_NAME $REPOS_URL
- svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
- echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
- svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
- svn commit -q -m "Made changes for future merge"
- svn update -q
- svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made trunk change"
- svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made another trunk change"
- svn update -q
-}
-
-function run_pass() {
- local TEST_KEY=$1
- shift 1
- if ! "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function run_fail() {
- local TEST_KEY=$1
- shift 1
- if "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function setup() {
- mkdir -p $TEST_DIR/.subversion
- mkdir -p $TEST_DIR/run
- cd $TEST_DIR/run
-}
-
-function teardown() {
- cd $TEST_DIR
- rm -rf $TEST_DIR/test_repos
- rm -rf $TEST_DIR/wc
- rm -rf $TEST_DIR/run
- rm -rf $TEST_DIR/.subversion
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- ssh $TEST_REMOTE_HOST "rm -rf $TEST_REMOTE_DIR"
- fi
-}
-
-REPOS_URL=
-ROOT_URL=
-PROJECT=
diff --git a/t/fcm-branch-create/test_header b/t/fcm-branch-create/test_header
new file mode 120000
index 0000000..9a2064b
--- /dev/null
+++ b/t/fcm-branch-create/test_header
@@ -0,0 +1 @@
+../lib/bash/svn_test_header
\ No newline at end of file
diff --git a/t/fcm-branch-delete/test_header b/t/fcm-branch-delete/test_header
deleted file mode 100644
index ecde158..0000000
--- a/t/fcm-branch-delete/test_header
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/bash
-# ------------------------------------------------------------------------------
-# (C) British Crown Copyright 2006-16 Met Office.
-#
-# This file is part of FCM, tools for managing and building source code.
-#
-# FCM is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# FCM is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with FCM. If not, see <http://www.gnu.org/licenses/>.
-# ------------------------------------------------------------------------------
-# Optional enviroment variables:
-# TEST_PROJECT (tests using given project name)
-# TEST_REMOTE_HOST (tests using svn+ssh repositories located on given host)
-# ------------------------------------------------------------------------------
-
-. $(dirname $0)/../lib/bash/test_header
-
-function file_cmp() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if cmp $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_grep() {
- local TEST_KEY=$1
- local PATTERN=$2
- local FILE=$3
- if grep -q -e "$PATTERN" $TEST_DIR/$FILE; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_test() {
- local TEST_KEY=$1
- local FILE=$2
- local OPTION=${3:--e}
- if test $OPTION $TEST_DIR/$FILE; then
- pass $TEST_KEY
- else
- fail $TEST_KEY
- fi
-}
-
-function file_xxdiff() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if xxdiff -D $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function init_repos() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- ROOT_URL=$REPOS_URL
- PROJECT=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- PROJECT=$TEST_PROJECT"/"
- fi
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/$PROJECT/trunk -m "initial trunk import"
- svn mkdir -q $REPOS_URL/$PROJECT/tags -m "make tags"
- svn mkdir -q --parents $REPOS_URL/$PROJECT/branches/dev/Share -m " "
-}
-
-function init_repos_layout_roses() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- svn mkdir -q --parents $REPOS_URL/a/a/0/0/0/trunk
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/a/a/0/0/0/trunk -m "initial trunk import"
- TMPFILE=$(mktemp)
- cat >$TMPFILE <<__LAYOUT__
-depth-project = 5
-depth-branch = 1
-depth-tag = 1
-dir-trunk = trunk
-dir-branch =
-dir-tag =
-level-owner-branch =
-level-owner-tag =
-template-branch =
-template-tag =
-__LAYOUT__
- TMPDIR=$(mktemp -d)
- svn checkout -q $REPOS_URL $TMPDIR
- svn propset -q --file=$TMPFILE fcm:layout $TMPDIR
- svn commit -q -m " " $TMPDIR
- rm -f $TMPFILE
- rm -rf $TMPDIR
- ROOT_URL=$REPOS_URL
-}
-
-function init_branch() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- local ROOT_PATH=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- ROOT_PATH=$ROOT_PATH/$TEST_PROJECT
- fi
- MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/Share/$BRANCH_NAME from /trunk at 1.")
- svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/Share/$BRANCH_NAME \
- -m "Made a branch $MESSAGE"
-}
-
-function init_branch_wc() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch $BRANCH_NAME $REPOS_URL
- svn checkout -q $ROOT_URL/branches/dev/Share/$BRANCH_NAME $TEST_DIR/wc
-}
-
-function init_merge_branches() {
- local BRANCH_NAME=$1
- local OTHER_BRANCH_NAME=$2
- local REPOS_URL=$3
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch_wc $BRANCH_NAME $REPOS_URL
- cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
- done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
- svn commit -q -m "Made changes for future merge of this branch"
- svn update -q
- init_branch $OTHER_BRANCH_NAME $REPOS_URL
- svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
- echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
- svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
- svn commit -q -m "Made changes for future merge"
- svn update -q
- svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made trunk change"
- svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made another trunk change"
- svn update -q
-}
-
-function run_pass() {
- local TEST_KEY=$1
- shift 1
- if ! "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function run_fail() {
- local TEST_KEY=$1
- shift 1
- if "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function setup() {
- mkdir -p $TEST_DIR/.subversion
- mkdir -p $TEST_DIR/run
- cd $TEST_DIR/run
-}
-
-function teardown() {
- cd $TEST_DIR
- rm -rf $TEST_DIR/test_repos
- rm -rf $TEST_DIR/wc
- rm -rf $TEST_DIR/run
- rm -rf $TEST_DIR/.subversion
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- ssh $TEST_REMOTE_HOST "rm -rf $TEST_REMOTE_DIR"
- fi
-}
-
-REPOS_URL=
-ROOT_URL=
-PROJECT=
diff --git a/t/fcm-branch-delete/test_header b/t/fcm-branch-delete/test_header
new file mode 120000
index 0000000..9a2064b
--- /dev/null
+++ b/t/fcm-branch-delete/test_header
@@ -0,0 +1 @@
+../lib/bash/svn_test_header
\ No newline at end of file
diff --git a/t/fcm-branch-diff/00-simple.t b/t/fcm-branch-diff/00-simple.t
index f658c89..509efc3 100644
--- a/t/fcm-branch-diff/00-simple.t
+++ b/t/fcm-branch-diff/00-simple.t
@@ -28,7 +28,9 @@ setup
init_repos
init_branch_wc branch_test $REPOS_URL
cd $TEST_DIR/wc
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
+FILE_LIST="lib/python/info/__init__.py lib/python/info/poems.py \
+module/hello_constants.f90 module/hello_constants.inc \
+module/hello_constants_dummy.inc"
for FILE in $FILE_LIST; do
sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $FILE
sed -i "/#/d; /^ *!/d" $FILE
@@ -54,12 +56,14 @@ svn switch -q $ROOT_URL/branches/dev/Share/branch_test
TEST_KEY=$TEST_KEY_BASE-fcm-branch-diff
run_pass "$TEST_KEY" fcm branch-diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: added_directory/hello_constants.f90
===================================================================
---- added_directory/hello_constants.f90 ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants.f90 (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants.f90 ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants.f90 (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants.f90 (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants.f90 (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1,5 @@
+MODULE Hello_Constants
+
@@ -68,27 +72,35 @@ Index: added_directory/hello_constants.f90
+END MODULE Hello_Constants
Index: added_directory/hello_constants.inc
===================================================================
---- added_directory/hello_constants.inc ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants.inc (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants.inc ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants.inc (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants.inc (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants.inc (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1,2 @@
+CHARACTER (
+LEN=80), PARAMETER :: hello_strINg = 'Hello Earth!!'
Index: added_directory/hello_constants_dummy.inc
===================================================================
---- added_directory/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants_dummy.inc (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants_dummy.inc (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants_dummy.inc (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants_dummy.inc (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1 @@
+INCLUDE 'hello_constants.INc'
Index: added_file
===================================================================
---- added_file ($ROOT_URL/trunk) (revision 0)
-+++ added_file (revision 6)
+#IF SVN1.8 --- added_file ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_file (revision 6)
+#IF SVN1.9 --- added_file (.../trunk) (working copy)
+#IF SVN1.9 +++ added_file (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1 @@
+INCLUDE 'hello_constants.INc'
Index: lib/python/info/poems.py
===================================================================
---- lib/python/info/poems.py ($ROOT_URL/trunk) (revision 1)
-+++ lib/python/info/poems.py (working copy)
+#IF SVN1.8 --- lib/python/info/poems.py ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ lib/python/info/poems.py (working copy)
+#IF SVN1.9 --- lib/python/info/poems.py (.../trunk) (revision 1)
+#IF SVN1.9 +++ lib/python/info/poems.py (.../branches/dev/Share/branch_test) (working copy)
@@ -1,24 +1,23 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
@@ -125,8 +137,10 @@ Index: lib/python/info/poems.py
+prINt "\n", __doc__
Index: module/hello_constants.f90
===================================================================
---- module/hello_constants.f90 ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants.f90 (working copy)
+#IF SVN1.8 --- module/hello_constants.f90 ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants.f90 (working copy)
+#IF SVN1.9 --- module/hello_constants.f90 (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants.f90 (.../branches/dev/Share/branch_test) (working copy)
@@ -1,5 +0,0 @@
-MODULE Hello_Constants
-
@@ -135,29 +149,37 @@ Index: module/hello_constants.f90
-END MODULE Hello_Constants
Index: module/hello_constants.inc
===================================================================
---- module/hello_constants.inc ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants.inc (working copy)
+#IF SVN1.8 --- module/hello_constants.inc ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants.inc (working copy)
+#IF SVN1.9 --- module/hello_constants.inc (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants.inc (.../branches/dev/Share/branch_test) (working copy)
@@ -1 +0,0 @@
-CHARACTER (LEN=80), PARAMETER :: hello_string = 'Hello Earth!'
Index: module/hello_constants_dummy.inc
===================================================================
---- module/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants_dummy.inc (working copy)
+#IF SVN1.8 --- module/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants_dummy.inc (working copy)
+#IF SVN1.9 --- module/hello_constants_dummy.inc (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants_dummy.inc (.../branches/dev/Share/branch_test) (working copy)
@@ -1 +0,0 @@
-INCLUDE 'hello_constants.inc'
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm bdi
TEST_KEY=$TEST_KEY_BASE-bdi
run_pass "$TEST_KEY" fcm bdi
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: added_directory/hello_constants.f90
===================================================================
---- added_directory/hello_constants.f90 ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants.f90 (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants.f90 ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants.f90 (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants.f90 (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants.f90 (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1,5 @@
+MODULE Hello_Constants
+
@@ -166,27 +188,35 @@ Index: added_directory/hello_constants.f90
+END MODULE Hello_Constants
Index: added_directory/hello_constants.inc
===================================================================
---- added_directory/hello_constants.inc ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants.inc (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants.inc ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants.inc (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants.inc (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants.inc (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1,2 @@
+CHARACTER (
+LEN=80), PARAMETER :: hello_strINg = 'Hello Earth!!'
Index: added_directory/hello_constants_dummy.inc
===================================================================
---- added_directory/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants_dummy.inc (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants_dummy.inc (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants_dummy.inc (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants_dummy.inc (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1 @@
+INCLUDE 'hello_constants.INc'
Index: added_file
===================================================================
---- added_file ($ROOT_URL/trunk) (revision 0)
-+++ added_file (revision 6)
+#IF SVN1.8 --- added_file ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_file (revision 6)
+#IF SVN1.9 --- added_file (.../trunk) (working copy)
+#IF SVN1.9 +++ added_file (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1 @@
+INCLUDE 'hello_constants.INc'
Index: lib/python/info/poems.py
===================================================================
---- lib/python/info/poems.py ($ROOT_URL/trunk) (revision 1)
-+++ lib/python/info/poems.py (working copy)
+#IF SVN1.8 --- lib/python/info/poems.py ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ lib/python/info/poems.py (working copy)
+#IF SVN1.9 --- lib/python/info/poems.py (.../trunk) (revision 1)
+#IF SVN1.9 +++ lib/python/info/poems.py (.../branches/dev/Share/branch_test) (working copy)
@@ -1,24 +1,23 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
@@ -223,8 +253,10 @@ Index: lib/python/info/poems.py
+prINt "\n", __doc__
Index: module/hello_constants.f90
===================================================================
---- module/hello_constants.f90 ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants.f90 (working copy)
+#IF SVN1.8 --- module/hello_constants.f90 ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants.f90 (working copy)
+#IF SVN1.9 --- module/hello_constants.f90 (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants.f90 (.../branches/dev/Share/branch_test) (working copy)
@@ -1,5 +0,0 @@
-MODULE Hello_Constants
-
@@ -233,17 +265,23 @@ Index: module/hello_constants.f90
-END MODULE Hello_Constants
Index: module/hello_constants.inc
===================================================================
---- module/hello_constants.inc ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants.inc (working copy)
+#IF SVN1.8 --- module/hello_constants.inc ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants.inc (working copy)
+#IF SVN1.9 --- module/hello_constants.inc (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants.inc (.../branches/dev/Share/branch_test) (working copy)
@@ -1 +0,0 @@
-CHARACTER (LEN=80), PARAMETER :: hello_string = 'Hello Earth!'
Index: module/hello_constants_dummy.inc
===================================================================
---- module/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants_dummy.inc (working copy)
+#IF SVN1.8 --- module/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants_dummy.inc (working copy)
+#IF SVN1.9 --- module/hello_constants_dummy.inc (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants_dummy.inc (.../branches/dev/Share/branch_test) (working copy)
@@ -1 +0,0 @@
-INCLUDE 'hello_constants.inc'
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm branch-diff --wiki
@@ -280,18 +318,22 @@ svn add -q added_directory/foo$TEST_KEY
echo "bar" > added_directory/bar$TEST_KEY
run_pass "$TEST_KEY" fcm bdi
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: added_directory/foo00-simple-bdi-wc-changes
===================================================================
---- added_directory/foo00-simple-bdi-wc-changes ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/foo00-simple-bdi-wc-changes (working copy)
+#IF SVN1.8 --- added_directory/foo00-simple-bdi-wc-changes ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/foo00-simple-bdi-wc-changes (working copy)
+#IF SVN1.9 --- added_directory/foo00-simple-bdi-wc-changes (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/foo00-simple-bdi-wc-changes (.../branches/dev/Share/branch_test) (working copy)
@@ -0,0 +1 @@
+foo
Index: added_directory/hello_constants.f90
===================================================================
---- added_directory/hello_constants.f90 ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants.f90 (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants.f90 ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants.f90 (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants.f90 (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants.f90 (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1,5 @@
+MODULE Hello_Constants
+
@@ -300,27 +342,35 @@ Index: added_directory/hello_constants.f90
+END MODULE Hello_Constants
Index: added_directory/hello_constants.inc
===================================================================
---- added_directory/hello_constants.inc ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants.inc (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants.inc ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants.inc (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants.inc (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants.inc (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1,2 @@
+CHARACTER (
+LEN=80), PARAMETER :: hello_strINg = 'Hello Earth!!'
Index: added_directory/hello_constants_dummy.inc
===================================================================
---- added_directory/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 0)
-+++ added_directory/hello_constants_dummy.inc (revision 6)
+#IF SVN1.8 --- added_directory/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_directory/hello_constants_dummy.inc (revision 6)
+#IF SVN1.9 --- added_directory/hello_constants_dummy.inc (.../trunk) (working copy)
+#IF SVN1.9 +++ added_directory/hello_constants_dummy.inc (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1 @@
+INCLUDE 'hello_constants.INc'
Index: added_file
===================================================================
---- added_file ($ROOT_URL/trunk) (revision 0)
-+++ added_file (revision 6)
+#IF SVN1.8 --- added_file ($ROOT_URL/trunk) (revision 0)
+#IF SVN1.8 +++ added_file (revision 6)
+#IF SVN1.9 --- added_file (.../trunk) (working copy)
+#IF SVN1.9 +++ added_file (.../branches/dev/Share/branch_test) (revision 6)
@@ -0,0 +1 @@
+INCLUDE 'hello_constants.INc'
Index: lib/python/info/poems.py
===================================================================
---- lib/python/info/poems.py ($ROOT_URL/trunk) (revision 1)
-+++ lib/python/info/poems.py (working copy)
+#IF SVN1.8 --- lib/python/info/poems.py ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ lib/python/info/poems.py (working copy)
+#IF SVN1.9 --- lib/python/info/poems.py (.../trunk) (revision 1)
+#IF SVN1.9 +++ lib/python/info/poems.py (.../branches/dev/Share/branch_test) (working copy)
@@ -1,24 +1,23 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
@@ -357,8 +407,10 @@ Index: lib/python/info/poems.py
+prINt "\n", __doc__
Index: module/hello_constants.f90
===================================================================
---- module/hello_constants.f90 ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants.f90 (working copy)
+#IF SVN1.8 --- module/hello_constants.f90 ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants.f90 (working copy)
+#IF SVN1.9 --- module/hello_constants.f90 (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants.f90 (.../branches/dev/Share/branch_test) (working copy)
@@ -1,5 +0,0 @@
-MODULE Hello_Constants
-
@@ -367,17 +419,23 @@ Index: module/hello_constants.f90
-END MODULE Hello_Constants
Index: module/hello_constants.inc
===================================================================
---- module/hello_constants.inc ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants.inc (working copy)
+#IF SVN1.8 --- module/hello_constants.inc ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants.inc (working copy)
+#IF SVN1.9 --- module/hello_constants.inc (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants.inc (.../branches/dev/Share/branch_test) (working copy)
@@ -1 +0,0 @@
-CHARACTER (LEN=80), PARAMETER :: hello_string = 'Hello Earth!'
Index: module/hello_constants_dummy.inc
===================================================================
---- module/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 1)
-+++ module/hello_constants_dummy.inc (working copy)
+#IF SVN1.8 --- module/hello_constants_dummy.inc ($ROOT_URL/trunk) (revision 1)
+#IF SVN1.8 +++ module/hello_constants_dummy.inc (working copy)
+#IF SVN1.9 --- module/hello_constants_dummy.inc (.../trunk) (revision 1)
+#IF SVN1.9 +++ module/hello_constants_dummy.inc (.../branches/dev/Share/branch_test) (working copy)
@@ -1 +0,0 @@
-INCLUDE 'hello_constants.inc'
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
teardown
#-------------------------------------------------------------------------------
diff --git a/t/fcm-branch-diff/test_header b/t/fcm-branch-diff/test_header
index ecde158..dec7938 100644
--- a/t/fcm-branch-diff/test_header
+++ b/t/fcm-branch-diff/test_header
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-branch-info/00-simple.t b/t/fcm-branch-info/00-simple.t
index 0904833..4484f06 100644
--- a/t/fcm-branch-info/00-simple.t
+++ b/t/fcm-branch-info/00-simple.t
@@ -33,7 +33,9 @@ fcm branch-create -t SHARE --rev-flag=NONE \
--non-interactive \
--branch-of-branch my_branch_test >/dev/null
svn switch -q $ROOT_URL/trunk
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
+FILE_LIST="lib/python/info/__init__.py lib/python/info/poems.py \
+module/hello_constants.f90 module/hello_constants.inc \
+module/hello_constants_dummy.inc"
for FILE in $FILE_LIST; do
sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $FILE
sed -i "/#/d; /^ *!/d" $FILE
@@ -123,7 +125,6 @@ svn switch -q $ROOT_URL/branches/dev/Share/branch_test
svn merge -q $ROOT_URL/branches/dev/Share/sibling_branch_test
svn commit -q -m "Merged sibling into test branch"
svn switch -q $ROOT_URL/branches/dev/Share/sibling_branch_test
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
TMPFILE=$(mktemp)
for FILE in $FILE_LIST; do
cut -f 1 $FILE > $TMPFILE
diff --git a/t/fcm-branch-info/test_header b/t/fcm-branch-info/test_header
index ecde158..dec7938 100644
--- a/t/fcm-branch-info/test_header
+++ b/t/fcm-branch-info/test_header
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-branch-list/00-simple.t b/t/fcm-branch-list/00-simple.t
index 0124d3c..92c1c31 100644
--- a/t/fcm-branch-list/00-simple.t
+++ b/t/fcm-branch-list/00-simple.t
@@ -41,7 +41,9 @@ MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/fred/donuts from /trunk at 1.")
svn mkdir -q -m "Dr Fooeybar branch" $ROOT_URL/branches/dev/drfooeybar/
svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/drfooeybar/donuts \
-m "Made a branch $MESSAGE" --non-interactive
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
+FILE_LIST="lib/python/info/__init__.py lib/python/info/poems.py \
+module/hello_constants.f90 module/hello_constants.inc \
+module/hello_constants_dummy.inc"
for FILE in $FILE_LIST; do
sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $FILE
sed -i "/#/d; /^ *!/d" $FILE
diff --git a/t/fcm-branch-list/test_header b/t/fcm-branch-list/test_header
index ecde158..dec7938 100644
--- a/t/fcm-branch-list/test_header
+++ b/t/fcm-branch-list/test_header
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-commit/00-simple.t b/t/fcm-commit/00-simple.t
index b04ab8a..1b94e80 100644
--- a/t/fcm-commit/00-simple.t
+++ b/t/fcm-commit/00-simple.t
@@ -29,7 +29,12 @@ init_repos
init_branch sibling_branch_test $REPOS_URL
init_branch_wc branch_test $REPOS_URL
cd $TEST_DIR/wc
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
+FILE_LIST="./lib/python/info/__init__.py
+./lib/python/info/poems.py
+./module/hello_constants.f90
+./module/hello_constants.inc
+./module/hello_constants_dummy.inc
+"
for FILE in $FILE_LIST; do
sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $FILE
sed -i "/#/d; /^ *!/d" $FILE
@@ -55,7 +60,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : branches/dev/Share/branch_test]
[Sub-dir: ]
-
A + added_directory
A + added_file
D module
@@ -71,10 +75,8 @@ Commit message is as follows:
--------------------------------------------------------------------------------
foo
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO A Share BRANCH.
*** Please ensure that you have the owner's permission.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Adding added_directory
Adding added_file
@@ -83,7 +85,6 @@ Sending added_directory/hello_constants.f90
Sending added_directory/hello_constants.inc
Sending added_directory/hello_constants_dummy.inc
Sending lib/python/info/poems.py
-Transmitting file data .....
Committed revision 6.
Updating '.':
At revision 6.
diff --git a/t/fcm-commit/01-subtree.t b/t/fcm-commit/01-subtree.t
index 7dffbc1..9325ff7 100644
--- a/t/fcm-commit/01-subtree.t
+++ b/t/fcm-commit/01-subtree.t
@@ -29,7 +29,12 @@ init_repos
init_branch sibling_branch_test $REPOS_URL
init_branch_wc branch_test $REPOS_URL
cd $TEST_DIR/wc
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
+FILE_LIST="./lib/python/info/__init__.py
+./lib/python/info/poems.py
+./module/hello_constants.f90
+./module/hello_constants.inc
+./module/hello_constants_dummy.inc
+"
for FILE in $FILE_LIST; do
sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $FILE
sed -i "/#/d; /^ *!/d" $FILE
@@ -57,7 +62,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : branches/dev/Share/branch_test]
[Sub-dir: ]
-
A + added_directory
A + added_file
D module
@@ -73,10 +77,8 @@ Commit message is as follows:
--------------------------------------------------------------------------------
foo
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO A Share BRANCH.
*** Please ensure that you have the owner's permission.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Adding added_directory
Adding added_file
@@ -85,7 +87,6 @@ Sending added_directory/hello_constants.f90
Sending added_directory/hello_constants.inc
Sending added_directory/hello_constants_dummy.inc
Sending lib/python/info/poems.py
-Transmitting file data .....
Committed revision 6.
Updating '.':
At revision 6.
diff --git a/t/fcm-commit/test_header b/t/fcm-commit/test_header
index ecde158..dec7938 100644
--- a/t/fcm-commit/test_header
+++ b/t/fcm-commit/test_header
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-conflicts/11-tree-edit-replace.t b/t/fcm-conflicts/11-tree-edit-replace.t
new file mode 100644
index 0000000..141a6cb
--- /dev/null
+++ b/t/fcm-conflicts/11-tree-edit-replace.t
@@ -0,0 +1,79 @@
+#!/bin/bash
+# ------------------------------------------------------------------------------
+# (C) British Crown Copyright 2006-16 Met Office.
+#
+# This file is part of FCM, tools for managing and building source code.
+#
+# FCM is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# FCM is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with FCM. If not, see <http://www.gnu.org/licenses/>.
+# ------------------------------------------------------------------------------
+# Tree conflict: local file edit, incoming file replace upon merge
+#-------------------------------------------------------------------------------
+. "$(dirname "$0")/test_header"
+#-------------------------------------------------------------------------------
+check_svn_version
+tests 6
+#-------------------------------------------------------------------------------
+setup
+init_repos
+init_branch replace "${REPOS_URL}"
+init_branch_wc edit "${REPOS_URL}"
+cd "${TEST_DIR}/wc"
+svn switch -q "${ROOT_URL}/branches/dev/Share/replace"
+HELLO="$(<'pro/hello.pro')"
+svn delete -q 'pro/hello.pro'
+svn commit -q -m 'Remove local copy of conflict file'
+echo 'Replace contents (1)' >'pro/hello.pro'
+svn add 'pro/hello.pro'
+svn commit -q -m 'Replace local copy of conflict file'
+svn switch -q "${ROOT_URL}/branches/dev/Share/edit"
+echo 'Merge contents (1)' >>'pro/hello.pro'
+svn commit -q -m 'Modified and renamed merge copy of conflict file'
+svn update -q
+#-------------------------------------------------------------------------------
+TEST_KEY="${TEST_KEY_BASE}-leip-y"
+fcm merge --non-interactive "${ROOT_URL}/branches/dev/Share/replace" >'/dev/null'
+run_pass "${TEST_KEY}" fcm conflicts <<<'y'
+sed -i "/^Resolved conflicted state of 'pro\/hello.pro'$/d" \
+ ${TEST_DIR}/"${TEST_KEY}.out"
+file_cmp "${TEST_KEY}.out" "${TEST_KEY}.out" <<'__OUT__'
+[info] pro/hello.pro: in tree conflict.
+Locally: edited.
+Externally: replaced.
+Answer (y) to keep the file.
+Answer (n) to accept the external replace.
+Keep the local version?
+Enter "y" or "n" (or just press <return> for "n") Resolved conflicted state of 'pro/hello.pro'
+__OUT__
+file_cmp "${TEST_KEY}.err" "${TEST_KEY}.err" <'/dev/null'
+#-------------------------------------------------------------------------------
+TEST_KEY="${TEST_KEY_BASE}-leip-n"
+svn revert -R -q .
+rm '#commit_message#'
+fcm merge --non-interactive "${ROOT_URL}/branches/dev/Share/replace" >'/dev/null'
+run_pass "${TEST_KEY}" fcm conflicts <<<'n'
+sed -i "/^Resolved conflicted state of 'pro\/hello.pro'$/d" \
+ ${TEST_DIR}/"${TEST_KEY}.out"
+file_cmp "${TEST_KEY}.out" "${TEST_KEY}.out" <<'__OUT__'
+[info] pro/hello.pro: in tree conflict.
+Locally: edited.
+Externally: replaced.
+Answer (y) to keep the file.
+Answer (n) to accept the external replace.
+Keep the local version?
+Enter "y" or "n" (or just press <return> for "n") D pro/hello.pro
+A pro/hello.pro
+__OUT__
+file_cmp "${TEST_KEY}.err" "${TEST_KEY}.err" <'/dev/null'
+#-------------------------------------------------------------------------------
+exit
diff --git a/t/fcm-conflicts/test_header b/t/fcm-conflicts/test_header
index ecde158..7456ae2 100644
--- a/t/fcm-conflicts/test_header
+++ b/t/fcm-conflicts/test_header
@@ -28,7 +28,7 @@ function file_cmp() {
local TEST_KEY=$1
local FILE_ACTUAL=$2
local FILE_EXPECT=${3:--}
- if cmp $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
+ if diff -u $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT >&2; then
pass $TEST_KEY
return
fi
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-diff/00-simple.t b/t/fcm-diff/00-simple.t
index 1730d6d..46caf4f 100644
--- a/t/fcm-diff/00-simple.t
+++ b/t/fcm-diff/00-simple.t
@@ -28,7 +28,12 @@ setup
init_repos
init_branch_wc branch_test $REPOS_URL
cd $TEST_DIR/wc
-FILE_LIST=$(find . -type f | sed "/\.svn/d" | sort | head -5)
+FILE_LIST="./lib/python/info/__init__.py
+./lib/python/info/poems.py
+./module/hello_constants.f90
+./module/hello_constants.inc
+./module/hello_constants_dummy.inc
+"
for FILE in $FILE_LIST; do
sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $FILE
sed -i "/#/d; /^ *!/d" $FILE
diff --git a/t/fcm-diff/test_header b/t/fcm-diff/test_header
index ecde158..dec7938 100644
--- a/t/fcm-diff/test_header
+++ b/t/fcm-diff/test_header
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-loc-layout/test_header b/t/fcm-loc-layout/test_header
index 260f1c1..5cc0317 100644
--- a/t/fcm-loc-layout/test_header
+++ b/t/fcm-loc-layout/test_header
@@ -157,34 +157,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-make/00-build-basic.t b/t/fcm-make/00-build-basic.t
index 901e76d..edb3b4d 100755
--- a/t/fcm-make/00-build-basic.t
+++ b/t/fcm-make/00-build-basic.t
@@ -28,7 +28,7 @@ TEST_KEY="$TEST_KEY_BASE"
run_pass "$TEST_KEY" fcm make
find .fcm-make build -type f | sed 's/^\(\.fcm-make\/log\).*$/\1/' \
| sort >"$TEST_KEY.find"
-file_cmp "$TEST_KEY.find" "$TEST_KEY.find" <<'__OUT__'
+sort >"${TEST_KEY}.find.expected" <<'__OUT__'
.fcm-make/config-as-parsed.cfg
.fcm-make/config-on-success.cfg
.fcm-make/ctx.gz
@@ -38,6 +38,7 @@ build/include/world.mod
build/o/hello.o
build/o/world.o
__OUT__
+file_cmp "$TEST_KEY.find" "$TEST_KEY.find" "${TEST_KEY}.find.expected"
file_test "$TEST_KEY.log" fcm-make.log
file_test "$TEST_KEY.fcm-make-as-parsed.cfg" fcm-make-as-parsed.cfg
file_test "$TEST_KEY.fcm-make-on-success.cfg" fcm-make-on-success.cfg
diff --git a/t/fcm-make/05-build-c-cxx-basic.t b/t/fcm-make/05-build-c-cxx-basic.t
index d012d35..5c535cd 100755
--- a/t/fcm-make/05-build-c-cxx-basic.t
+++ b/t/fcm-make/05-build-c-cxx-basic.t
@@ -33,7 +33,7 @@ TEST_KEY="$TEST_KEY_BASE"
run_pass "$TEST_KEY" fcm make
find .fcm-make build -type f | sed 's/^\(\.fcm-make\/log\).*$/\1/' \
| sort >"$TEST_KEY.find"
-file_cmp "$TEST_KEY.find" "$TEST_KEY.find" <<'__OUT__'
+sort >"${TEST_KEY}.find.expected" <<'__OUT__'
.fcm-make/config-as-parsed.cfg
.fcm-make/config-on-success.cfg
.fcm-make/ctx.gz
@@ -43,6 +43,7 @@ build/bin/cxxhello
build/o/chello.o
build/o/cxxhello.o
__OUT__
+file_cmp "$TEST_KEY.find" "$TEST_KEY.find" "${TEST_KEY}.find.expected"
run_pass "$TEST_KEY.chello" $PWD/build/bin/chello
file_cmp "$TEST_KEY.chello.out" "$TEST_KEY.chello.out" <<<'Hello C'
run_pass "$TEST_KEY.cxxhello" $PWD/build/bin/cxxhello
diff --git a/t/fcm-make/12-build-class-prop.t b/t/fcm-make/12-build-class-prop.t
index 7cdc425..2d48deb 100755
--- a/t/fcm-make/12-build-class-prop.t
+++ b/t/fcm-make/12-build-class-prop.t
@@ -28,7 +28,7 @@ PATH=$PWD/bin:$PATH
TEST_KEY="$TEST_KEY_BASE"
run_pass "$TEST_KEY" fcm make
find build* -type f | sort >"$TEST_KEY.find"
-file_cmp "$TEST_KEY.find" "$TEST_KEY.find" <<'__FIND__'
+sort >"${TEST_KEY}.find.expected" <<'__FIND__'
build/bin/hello.bin
build/o/hello.o
build_house/bin/hello_house
@@ -38,6 +38,7 @@ build_office/o/hello_office.o
build_road/bin/hello_road
build_road/o/hello_road.o
__FIND__
+file_cmp "$TEST_KEY.find" "$TEST_KEY.find" "${TEST_KEY}.find.expected"
sed '/^\[info\] shell(0.*) \(my-fc\|gfortran\)/!d; s/^\[info\] shell(0.*) //' \
.fcm-make/log >"$TEST_KEY.log"
file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
diff --git a/t/fcm-make/23-build-omp.t b/t/fcm-make/23-build-omp.t
index 3cb1579..945f955 100755
--- a/t/fcm-make/23-build-omp.t
+++ b/t/fcm-make/23-build-omp.t
@@ -28,13 +28,15 @@ yes 1.0 | head -n 100 >"$TEST_KEY_BASE.exe.off.out"
#-------------------------------------------------------------------------------
TEST_KEY=$TEST_KEY_BASE-on # fc.flag-omp on in new mode
run_pass "$TEST_KEY" fcm make
-grep ' !\$' fcm-make.log | sort >"$TEST_KEY.log.deps.expected"
-file_cmp "$TEST_KEY.log.deps" "$TEST_KEY.log.deps.expected" <<'__LOG__'
+grep ' !\$' fcm-make.log | sort >"$TEST_KEY.log.deps"
+sort >"${TEST_KEY}.log.deps.expected" <<'__LOG__'
[info] -> ( include) !$i1.f90
[info] -> ( include) !$i2.f90
[info] -> ( f.module) !$m1
[info] -> ( f.module) !$m2
__LOG__
+file_cmp "${TEST_KEY}.log.deps" \
+ "${TEST_KEY}.log.deps" "${TEST_KEY}.log.deps.expected"
run_pass "$TEST_KEY.exe" $PWD/build/bin/p1.exe
file_cmp "$TEST_KEY.exe.out" "$TEST_KEY_BASE.exe.on.out" "$TEST_KEY.exe.out"
#-------------------------------------------------------------------------------
diff --git a/t/fcm-make/41-ctx-name.t b/t/fcm-make/41-ctx-name.t
index e893fa7..c51aaf5 100755
--- a/t/fcm-make/41-ctx-name.t
+++ b/t/fcm-make/41-ctx-name.t
@@ -21,6 +21,11 @@
#-------------------------------------------------------------------------------
. "$(dirname "$0")/test_header"
+file_cmp_sorted() {
+ sort - >"${1}.expected"
+ file_cmp "$1" "${2}" "${1}.expected"
+}
+
find_fcm_make_files() {
find . "$@" -type f \
'(' -path '*/build/*' -o \
@@ -58,7 +63,8 @@ __CFG__
#-------------------------------------------------------------------------------
run_pass "${TEST_KEY_BASE}-1" fcm make
find_fcm_make_files >"${TEST_KEY_BASE}-1.find.new"
-file_cmp "${TEST_KEY_BASE}-1.find.new" "${TEST_KEY_BASE}-1.find.new" <<'__FIND__'
+file_cmp_sorted \
+ "${TEST_KEY_BASE}-1.find.new" "${TEST_KEY_BASE}-1.find.new" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
./.fcm-make/ctx.gz
@@ -72,7 +78,8 @@ find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2.find.old"
file_cmp "${TEST_KEY_BASE}-2.find.old" \
"${TEST_KEY_BASE}-2.find.old" "${TEST_KEY_BASE}-1.find.new"
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2.find.new"
-file_cmp "${TEST_KEY_BASE}-2.find.new" "${TEST_KEY_BASE}-2.find.new" <<'__FIND__'
+file_cmp_sorted \
+ "${TEST_KEY_BASE}-2.find.new" "${TEST_KEY_BASE}-2.find.new" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
./.fcm-make2/ctx.gz
@@ -86,7 +93,7 @@ touch 'marker'
sleep 1
run_pass "${TEST_KEY_BASE}-1-incr" fcm make
find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-1-incr.find.old"
-file_cmp "${TEST_KEY_BASE}-1-incr.find.old" \
+file_cmp_sorted "${TEST_KEY_BASE}-1-incr.find.old" \
"${TEST_KEY_BASE}-1-incr.find.old" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
@@ -98,7 +105,7 @@ file_cmp "${TEST_KEY_BASE}-1-incr.find.old" \
./extract/a/a.f90
__FIND__
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-1-incr.find.new"
-file_cmp "${TEST_KEY_BASE}-1-incr.find.new" \
+file_cmp_sorted "${TEST_KEY_BASE}-1-incr.find.new" \
"${TEST_KEY_BASE}-1-incr.find.new" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
@@ -109,7 +116,7 @@ touch 'marker'
sleep 1
run_pass "${TEST_KEY_BASE}-2-incr" fcm make --name=2
find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2-incr.find.old"
-file_cmp "${TEST_KEY_BASE}-2-incr.find.old" \
+file_cmp_sorted "${TEST_KEY_BASE}-2-incr.find.old" \
"${TEST_KEY_BASE}-2-incr.find.old" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
@@ -121,7 +128,7 @@ file_cmp "${TEST_KEY_BASE}-2-incr.find.old" \
./extract/a/a.f90
__FIND__
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2-incr.find.new"
-file_cmp "${TEST_KEY_BASE}-2-incr.find.new" \
+file_cmp_sorted "${TEST_KEY_BASE}-2-incr.find.new" \
"${TEST_KEY_BASE}-2-incr.find.new" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
@@ -132,7 +139,7 @@ touch 'marker'
sleep 1
run_pass "${TEST_KEY_BASE}-1-new" fcm make --new
find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-1-new.find.old"
-file_cmp "${TEST_KEY_BASE}-1-new.find.old" \
+file_cmp_sorted "${TEST_KEY_BASE}-1-new.find.old" \
"${TEST_KEY_BASE}-1-new.find.old" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
@@ -143,7 +150,7 @@ file_cmp "${TEST_KEY_BASE}-1-new.find.old" \
./build/o/b.o
__FIND__
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-1-new.find.new"
-file_cmp "${TEST_KEY_BASE}-1-new.find.new" \
+file_cmp_sorted "${TEST_KEY_BASE}-1-new.find.new" \
"${TEST_KEY_BASE}-1-new.find.new" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
@@ -155,7 +162,7 @@ touch 'marker'
sleep 1
run_pass "${TEST_KEY_BASE}-2-new" fcm make --name=2 --new
find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2-new.find.old"
-file_cmp "${TEST_KEY_BASE}-2-new.find.old" \
+file_cmp_sorted "${TEST_KEY_BASE}-2-new.find.old" \
"${TEST_KEY_BASE}-2-new.find.old" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
@@ -163,7 +170,7 @@ file_cmp "${TEST_KEY_BASE}-2-new.find.old" \
./extract/a/a.f90
__FIND__
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2-new.find.new"
-file_cmp "${TEST_KEY_BASE}-2-new.find.new" \
+file_cmp_sorted "${TEST_KEY_BASE}-2-new.find.new" \
"${TEST_KEY_BASE}-2-new.find.new" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
diff --git a/t/fcm-make/42-make-mirror-make2.t b/t/fcm-make/42-make-mirror-make2.t
index 278c3ce..57a0a04 100755
--- a/t/fcm-make/42-make-mirror-make2.t
+++ b/t/fcm-make/42-make-mirror-make2.t
@@ -21,6 +21,11 @@
#-------------------------------------------------------------------------------
. "$(dirname "$0")/test_header"
+file_cmp_sorted() {
+ sort - >"${1}.expected"
+ file_cmp "$1" "${2}" "${1}.expected"
+}
+
find_fcm_make_files() {
find . "$@" -type f \
'(' -path '*/build/*' -o \
@@ -52,7 +57,8 @@ __CFG__
#-------------------------------------------------------------------------------
run_pass "${TEST_KEY_BASE}-1" fcm make
find_fcm_make_files >"${TEST_KEY_BASE}-1.find.new"
-file_cmp "${TEST_KEY_BASE}-1.find.new" "${TEST_KEY_BASE}-1.find.new" <<'__FIND__'
+file_cmp_sorted \
+ "${TEST_KEY_BASE}-1.find.new" "${TEST_KEY_BASE}-1.find.new" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
./.fcm-make/ctx.gz
@@ -68,7 +74,8 @@ find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2.find.old"
file_cmp "${TEST_KEY_BASE}-2.find.old" \
"${TEST_KEY_BASE}-2.find.old" "${TEST_KEY_BASE}-1.find.new"
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2.find.new"
-file_cmp "${TEST_KEY_BASE}-2.find.new" "${TEST_KEY_BASE}-2.find.new" <<'__FIND__'
+file_cmp_sorted \
+ "${TEST_KEY_BASE}-2.find.new" "${TEST_KEY_BASE}-2.find.new" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
./.fcm-make2/ctx.gz
@@ -80,7 +87,7 @@ touch 'marker'
sleep 1
run_pass "${TEST_KEY_BASE}-1-incr" fcm make
find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-1-incr.find.old"
-file_cmp "${TEST_KEY_BASE}-1-incr.find.old" \
+file_cmp_sorted "${TEST_KEY_BASE}-1-incr.find.old" \
"${TEST_KEY_BASE}-1-incr.find.old" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
@@ -90,7 +97,7 @@ file_cmp "${TEST_KEY_BASE}-1-incr.find.old" \
./extract/hello/hello.f90
__FIND__
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-1-incr.find.new"
-file_cmp "${TEST_KEY_BASE}-1-incr.find.new" \
+file_cmp_sorted "${TEST_KEY_BASE}-1-incr.find.new" \
"${TEST_KEY_BASE}-1-incr.find.new" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
@@ -103,7 +110,7 @@ touch 'marker'
sleep 1
run_pass "${TEST_KEY_BASE}-2-incr" fcm make -f fcm-make2.cfg
find_fcm_make_files '!' -newer 'marker' >"${TEST_KEY_BASE}-2-incr.find.old"
-file_cmp "${TEST_KEY_BASE}-2-incr.find.old" \
+file_cmp_sorted "${TEST_KEY_BASE}-2-incr.find.old" \
"${TEST_KEY_BASE}-2-incr.find.old" <<'__FIND__'
./.fcm-make/config-as-parsed.cfg
./.fcm-make/config-on-success.cfg
@@ -115,7 +122,7 @@ file_cmp "${TEST_KEY_BASE}-2-incr.find.old" \
./mirror/fcm-make2.cfg.orig
__FIND__
find_fcm_make_files -newer 'marker' >"${TEST_KEY_BASE}-2-incr.find.new"
-file_cmp "${TEST_KEY_BASE}-2-incr.find.new" \
+file_cmp_sorted "${TEST_KEY_BASE}-2-incr.find.new" \
"${TEST_KEY_BASE}-2-incr.find.new" <<'__FIND__'
./.fcm-make2/config-as-parsed.cfg
./.fcm-make2/config-on-success.cfg
diff --git a/t/fcm-make/43-ctx-name-inherit.t b/t/fcm-make/43-ctx-name-inherit.t
index e63663b..63e3979 100755
--- a/t/fcm-make/43-ctx-name-inherit.t
+++ b/t/fcm-make/43-ctx-name-inherit.t
@@ -21,6 +21,11 @@
#-------------------------------------------------------------------------------
. "$(dirname "$0")/test_header"
+file_cmp_sorted() {
+ sort - >"${1}.expected"
+ file_cmp "$1" "${2}" "${1}.expected"
+}
+
find_fcm_make_files() {
find . "$@" -type f \
'(' -path '*/build/*' -o \
@@ -70,7 +75,8 @@ __FORTRAN__
run_pass "${TEST_KEY_BASE}-greet" fcm make -C "${PWD}/greet" -n '-friend'
(cd 'greet' && find_fcm_make_files) >"${TEST_KEY_BASE}-greet.find"
-file_cmp "${TEST_KEY_BASE}-greet.find" "${TEST_KEY_BASE}-greet.find" <<'__FIND__'
+file_cmp_sorted \
+ "${TEST_KEY_BASE}-greet.find" "${TEST_KEY_BASE}-greet.find" <<'__FIND__'
./.fcm-make-friend/config-as-parsed.cfg
./.fcm-make-friend/config-on-success.cfg
./.fcm-make-friend/ctx.gz
diff --git a/t/fcm-make/44-ctx-name-inherit-compat.t b/t/fcm-make/44-ctx-name-inherit-compat.t
index cc59acd..807c2fa 100755
--- a/t/fcm-make/44-ctx-name-inherit-compat.t
+++ b/t/fcm-make/44-ctx-name-inherit-compat.t
@@ -21,6 +21,11 @@
#-------------------------------------------------------------------------------
. "$(dirname "$0")/test_header"
+file_cmp_sorted() {
+ sort - >"${1}.expected"
+ file_cmp "$1" "${2}" "${1}.expected"
+}
+
find_fcm_make_files() {
find . "$@" -type f \
'(' -path '*/build/*' -o \
@@ -80,7 +85,7 @@ __FORTRAN__
run_pass "${TEST_KEY_BASE}" fcm make -C "${PWD}/greet" -n '-friend'
(cd 'greet' && find_fcm_make_files) >"${TEST_KEY_BASE}.find"
-file_cmp "${TEST_KEY_BASE}.find" "${TEST_KEY_BASE}.find" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY_BASE}.find" "${TEST_KEY_BASE}.find" <<'__FIND__'
./.fcm-make-friend/config-as-parsed.cfg
./.fcm-make-friend/config-on-success.cfg
./.fcm-make-friend/ctx.gz
diff --git a/t/fcm-make/46-archive-mode.t b/t/fcm-make/46-archive-mode.t
index f85fa08..77ce467 100755
--- a/t/fcm-make/46-archive-mode.t
+++ b/t/fcm-make/46-archive-mode.t
@@ -20,6 +20,12 @@
# Tests for "fcm make --archive"
#-------------------------------------------------------------------------------
. "$(dirname "$0")/test_header"
+
+file_cmp_sorted() {
+ sort - >"${1}.expected"
+ file_cmp "$1" "${2}" "${1}.expected"
+}
+
tests 11
#-------------------------------------------------------------------------------
# Create a repository to extract
@@ -52,7 +58,7 @@ __CFG__
TEST_KEY="${TEST_KEY_BASE}-on-new"
run_pass "${TEST_KEY}" fcm make -a
find '.fcm-make/cache' 'build' -type f | sort >"${TEST_KEY}.find"
-file_cmp "${TEST_KEY}.find" "${TEST_KEY}.find" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY}.find" "${TEST_KEY}.find" <<'__FIND__'
.fcm-make/cache/extract.tar.gz
build/bin/hello
build/include.tar.gz
@@ -66,14 +72,14 @@ TEST_KEY="${TEST_KEY_BASE}-on-incr"
run_pass "${TEST_KEY}" fcm make -a
find '.fcm-make/cache' 'build' -type f -newer 'new' \
| sort >"${TEST_KEY}.find.new"
-file_cmp "${TEST_KEY}.find.new" "${TEST_KEY}.find.new" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY}.find.new" "${TEST_KEY}.find.new" <<'__FIND__'
.fcm-make/cache/extract.tar.gz
build/include.tar.gz
build/o.tar.gz
__FIND__
find '.fcm-make/cache' 'build' -type f '!' -newer 'new' \
| sort >"${TEST_KEY}.find.old"
-file_cmp "${TEST_KEY}.find.old" "${TEST_KEY}.find.old" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY}.find.old" "${TEST_KEY}.find.old" <<'__FIND__'
build/bin/hello
__FIND__
@@ -82,13 +88,13 @@ run_pass "${TEST_KEY}" \
fcm make -a 'build.prop{archive-ok-target-category}=o'
find '.fcm-make/cache' 'build' -type f -newer 'new' \
| sort >"${TEST_KEY}.find.new"
-file_cmp "${TEST_KEY}.find.new" "${TEST_KEY}.find.new" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY}.find.new" "${TEST_KEY}.find.new" <<'__FIND__'
.fcm-make/cache/extract.tar.gz
build/o.tar.gz
__FIND__
find '.fcm-make/cache' 'build' -type f '!' -newer 'new' \
| sort >"${TEST_KEY}.find.old"
-file_cmp "${TEST_KEY}.find.old" "${TEST_KEY}.find.old" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY}.find.old" "${TEST_KEY}.find.old" <<'__FIND__'
build/bin/hello
build/include/world_mod.mod
__FIND__
@@ -96,10 +102,10 @@ __FIND__
run_pass "${TEST_KEY_BASE}-off" fcm make
find '.fcm-make/cache' 'build' -type f -newer 'new' \
| sort >"${TEST_KEY}.find.new"
-file_cmp "${TEST_KEY}.find.new" "${TEST_KEY}.find.new" <'/dev/null'
+file_cmp_sorted "${TEST_KEY}.find.new" "${TEST_KEY}.find.new" <'/dev/null'
find '.fcm-make/cache' 'build' -type f '!' -newer 'new' \
| sort >"${TEST_KEY}.find.old"
-file_cmp "${TEST_KEY}.find.old" "${TEST_KEY}.find.old" <<'__FIND__'
+file_cmp_sorted "${TEST_KEY}.find.old" "${TEST_KEY}.find.old" <<'__FIND__'
.fcm-make/cache/extract/hello/0/hello.f90
.fcm-make/cache/extract/hello/0/world_mod.f90
build/bin/hello
diff --git a/t/fcm-merge/00-simple.t b/t/fcm-merge/00-simple.t
index da9ac84..650cabe 100644
--- a/t/fcm-merge/00-simple.t
+++ b/t/fcm-merge/00-simple.t
@@ -31,7 +31,7 @@ cd $TEST_DIR/wc
#-------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-pre" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 9 <<__RESULTS__
begin-prop
end-prop
begin-info
@@ -47,7 +47,7 @@ begin-info
/
-------| |------------ trunk
|
- 9
+ WC
end-info
begin-eligible
r5
@@ -150,7 +150,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-non-interactive-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: .
===================================================================
@@ -160,7 +160,16 @@ Index: .
Property changes on: .
___________________________________________________________________
Added: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,1 ##
Merged /branches/dev/Share/merge1:r4-5
+#IF SVN1.9 Index: added_directory/hello_constants.f90
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_directory/hello_constants.inc
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_directory/hello_constants_dummy.inc
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_file
+#IF SVN1.9 ===================================================================
Index: lib/python/info/poems.py
===================================================================
--- lib/python/info/poems.py (revision 9)
@@ -225,6 +234,8 @@ Index: module/hello_constants_dummy.inc
@@ -1 +1 @@
-INCLUDE 'hello_constants.inc'
+INCLUDE 'hello_constants.INc'
+#IF SVN1.9 Index: module/tree_conflict_file
+#IF SVN1.9 ===================================================================
Index: subroutine/hello_sub_dummy.h
===================================================================
--- subroutine/hello_sub_dummy.h (revision 9)
@@ -233,11 +244,12 @@ Index: subroutine/hello_sub_dummy.h
#include "hello_sub.h"
+Modified a line
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-post" \
- $ROOT_URL/branches/dev/Share/merge1 - <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 9 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-5
end-prop
@@ -254,7 +266,7 @@ begin-info
/
-------| |------------ trunk
|
- 9
+ WC
end-info
begin-eligible
end-eligible
diff --git a/t/fcm-merge/01-complex.t b/t/fcm-merge/01-complex.t
index e2ab894..4c6e426 100644
--- a/t/fcm-merge/01-complex.t
+++ b/t/fcm-merge/01-complex.t
@@ -33,7 +33,7 @@ svn switch -q $ROOT_URL/branches/dev/Share/merge1
#-------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-trunk-into-branch-1-pre" \
- $ROOT_URL/trunk <<__RESULTS__
+ $ROOT_URL/trunk - 9 <<__RESULTS__
begin-prop
end-prop
begin-info
@@ -49,7 +49,7 @@ begin-info
\
--| |------------ branches/dev/Share/merge1
|
- 9
+ WC
end-info
begin-eligible
r8
@@ -95,14 +95,8 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-trunk-into-branch-1-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<__OUT__
-Index: lib/python/info/__init__.py
-===================================================================
---- lib/python/info/__init__.py (revision 9)
-+++ lib/python/info/__init__.py (working copy)
-@@ -0,0 +1,2 @@
-+trunk change
-+another trunk change
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
+
Index: .
===================================================================
--- . (revision 9)
@@ -111,8 +105,18 @@ Index: .
Property changes on: .
___________________________________________________________________
Added: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,1 ##
Merged /${PROJECT}trunk:r2-9
+Index: lib/python/info/__init__.py
+===================================================================
+--- lib/python/info/__init__.py (revision 9)
++++ lib/python/info/__init__.py (working copy)
+@@ -0,0 +1,2 @@
++trunk change
++another trunk change
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm commit of fcm merge (1)
@@ -120,7 +124,8 @@ TEST_KEY=$TEST_KEY_BASE-trunk-into-branch-1-commit
run_pass "$TEST_KEY" fcm commit <<__IN__
y
__IN__
-file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<__OUT__
+commit_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
[info] sed -i 1i\foo: starting commit message editor...
Change summary:
--------------------------------------------------------------------------------
@@ -128,7 +133,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : branches/dev/Share/merge1]
[Sub-dir: ]
-
M .
M lib/python/info/__init__.py
--------------------------------------------------------------------------------
@@ -137,14 +141,11 @@ Commit message is as follows:
foo
Merged into /${PROJECT}branches/dev/Share/merge1: /${PROJECT}trunk at 9 cf. /${PROJECT}trunk at 1
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO A Share BRANCH.
*** Please ensure that you have the owner's permission.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Sending .
Sending lib/python/info/__init__.py
-Transmitting file data .
Committed revision 10.
Updating '.':
At revision 10.
@@ -180,7 +181,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-trunk-into-branch-1-post" \
- $ROOT_URL/trunk <<__RESULTS__
+ $ROOT_URL/trunk - 10 <<__RESULTS__
begin-prop
/trunk:2-9
end-prop
@@ -197,7 +198,7 @@ begin-info
\ \
--| |------------ branches/dev/Share/merge1
|
- 10
+ WC
end-info
begin-eligible
end-eligible
@@ -209,7 +210,7 @@ __RESULTS__
#-------------------------------------------------------------------------------
# Tests fcm merge of branch-into-trunk (1)
TEST_KEY=$TEST_KEY_BASE-branch-into-trunk-1
-BRANCH_MOD_FILE=$(find . -type f | sed "/\.svn/d" | sort | head -3| tail -1)
+BRANCH_MOD_FILE="added_directory/hello_constants_dummy.inc"
echo "# added this line for simple repeat testing" >>$BRANCH_MOD_FILE
svn commit -q -m "edit on branch for merge repeat test"
svn update -q
@@ -221,7 +222,7 @@ cd $TEST_DIR/wc
#-------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-trunk-1-pre" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 11 <<__RESULTS__
begin-prop
end-prop
begin-info
@@ -237,7 +238,7 @@ begin-info
/ /
-------| |------------ trunk
| |
- 9 11
+ 9 WC
end-info
begin-eligible
r5
@@ -297,7 +298,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-branch-into-trunk-1-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: .
===================================================================
@@ -307,7 +308,16 @@ Index: .
Property changes on: .
___________________________________________________________________
Added: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,1 ##
Merged /${PROJECT}branches/dev/Share/merge1:r4-11
+#IF SVN1.9 Index: added_directory/hello_constants.f90
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_directory/hello_constants.inc
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_directory/hello_constants_dummy.inc
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_file
+#IF SVN1.9 ===================================================================
Index: lib/python/info/poems.py
===================================================================
--- lib/python/info/poems.py (revision 11)
@@ -372,6 +382,8 @@ Index: module/hello_constants_dummy.inc
@@ -1 +1 @@
-INCLUDE 'hello_constants.inc'
+INCLUDE 'hello_constants.INc'
+#IF SVN1.9 Index: module/tree_conflict_file
+#IF SVN1.9 ===================================================================
Index: subroutine/hello_sub_dummy.h
===================================================================
--- subroutine/hello_sub_dummy.h (revision 11)
@@ -380,6 +392,8 @@ Index: subroutine/hello_sub_dummy.h
#include "hello_sub.h"
+Modified a line
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm commit of fcm merge (1)
@@ -396,7 +410,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : trunk]
[Sub-dir: ]
-
M .
A + added_directory
A + added_file
@@ -412,10 +425,8 @@ Commit message is as follows:
foo
Merged into /${PROJECT}trunk: /${PROJECT}branches/dev/Share/merge1 at 11 cf. /${PROJECT}trunk at 9
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO THE TRUNK.
*** Please ensure that your change conforms to your project's working practices.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Sending .
Adding added_directory
@@ -426,7 +437,6 @@ Sending module/hello_constants.f90
Sending module/hello_constants.inc
Sending module/hello_constants_dummy.inc
Sending subroutine/hello_sub_dummy.h
-Transmitting file data .....
Committed revision 12.
Updating '.':
At revision 12.
@@ -462,7 +472,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-trunk-1-post" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 12 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-11
end-prop
@@ -479,7 +489,7 @@ begin-info
/ \
-------| |------------ trunk
|
- 12
+ WC
end-info
begin-eligible
end-eligible
@@ -493,7 +503,7 @@ __RESULTS__
#-------------------------------------------------------------------------------
# Tests fcm merge of branch-into-trunk (2)
svn switch -q $ROOT_URL/branches/dev/Share/merge1
-MOD_FILE=$(find . -type f | sed "/\.svn/d" | sort | head -4 | tail -1)
+MOD_FILE="added_file"
echo "call_extra_feature()" >>$MOD_FILE
svn commit -q -m "Made branch change to add extra feature"
svn update -q
@@ -504,7 +514,7 @@ svn switch -q $ROOT_URL/trunk
#-------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-trunk-2-pre" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 14 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-11
end-prop
@@ -521,7 +531,7 @@ begin-info
/ \
-------| |------------ trunk
|
- 14
+ WC
end-info
begin-eligible
r13
@@ -564,7 +574,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-branch-into-trunk-2-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: .
===================================================================
@@ -574,6 +584,7 @@ Index: .
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,1 ##
Merged /${PROJECT}branches/dev/Share/merge1:r12-13
Index: added_file
===================================================================
@@ -583,6 +594,8 @@ Index: added_file
INCLUDE 'hello_constants.INc'
+call_extra_feature()
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm commit of fcm merge branch-into-trunk (2)
@@ -590,8 +603,9 @@ TEST_KEY=$TEST_KEY_BASE-branch-into-trunk-2-commit
run_pass "$TEST_KEY" fcm commit <<__IN__
y
__IN__
-sed -i "/^Updating '.':$/d" $TEST_DIR/"$TEST_KEY.out"
-file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<__OUT__
+sed -i "/^Updating '.':$/d" "$TEST_DIR/$TEST_KEY.out"
+commit_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
[info] sed -i 1i\foo: starting commit message editor...
Change summary:
--------------------------------------------------------------------------------
@@ -599,7 +613,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : trunk]
[Sub-dir: ]
-
M .
M added_file
--------------------------------------------------------------------------------
@@ -608,14 +621,11 @@ Commit message is as follows:
foo
Merged into /${PROJECT}trunk: /${PROJECT}branches/dev/Share/merge1 at 13 cf. /${PROJECT}branches/dev/Share/merge1 at 11
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO THE TRUNK.
*** Please ensure that your change conforms to your project's working practices.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Sending .
Sending added_file
-Transmitting file data .
Committed revision 15.
At revision 15.
__OUT__
@@ -656,7 +666,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-trunk-2-post" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 15 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-13
end-prop
@@ -673,7 +683,7 @@ begin-info
/ \
-------| |------------ trunk
|
- 15
+ WC
end-info
begin-eligible
end-eligible
@@ -698,7 +708,7 @@ svn update -q
#------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-trunk-into-branch-2-pre" \
- $ROOT_URL/trunk <<__RESULTS__
+ $ROOT_URL/trunk - 17 <<__RESULTS__
begin-prop
/trunk:2-9
end-prop
@@ -715,7 +725,7 @@ begin-info
\ /
--| |------------ branches/dev/Share/merge1
| |
- 13 17
+ 13 WC
end-info
begin-eligible
r12
@@ -758,7 +768,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-trunk-into-branch-2-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: .
===================================================================
@@ -768,6 +778,7 @@ Index: .
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,1 ##
Merged /${PROJECT}trunk:r10-16
Index: added_file
===================================================================
@@ -778,6 +789,8 @@ Index: added_file
call_extra_feature()
+# trunk modification
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm commit of fcm merge trunk-into-branch (2)
@@ -785,8 +798,9 @@ TEST_KEY=$TEST_KEY_BASE-trunk-into-branch-2-commit
run_pass "$TEST_KEY" fcm commit <<__IN__
y
__IN__
-sed -i "/^Updating '.':$/d" $TEST_DIR/"$TEST_KEY.out"
-file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<__OUT__
+sed -i "/^Updating '.':$/d" "$TEST_DIR/$TEST_KEY.out"
+commit_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
[info] sed -i 1i\foo: starting commit message editor...
Change summary:
--------------------------------------------------------------------------------
@@ -794,7 +808,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : branches/dev/Share/merge1]
[Sub-dir: ]
-
M .
M added_file
--------------------------------------------------------------------------------
@@ -803,14 +816,11 @@ Commit message is as follows:
foo
Merged into /${PROJECT}branches/dev/Share/merge1: /${PROJECT}trunk at 16 cf. /${PROJECT}branches/dev/Share/merge1 at 13
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO A Share BRANCH.
*** Please ensure that you have the owner's permission.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Sending .
Sending added_file
-Transmitting file data .
Committed revision 18.
At revision 18.
__OUT__
@@ -863,7 +873,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-trunk-into-branch-2-post" \
- $ROOT_URL/trunk <<__RESULTS__
+ $ROOT_URL/trunk - 18 <<__RESULTS__
begin-prop
/trunk:2-16
end-prop
@@ -880,7 +890,7 @@ begin-info
\ \
--| |------------ branches/dev/Share/merge1
|
- 18
+ WC
end-info
begin-eligible
end-eligible
@@ -902,7 +912,7 @@ svn switch -q $ROOT_URL/trunk
#-------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-trunk-3-pre" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 19 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-13
end-prop
@@ -919,7 +929,7 @@ begin-info
/ /
-------| |------------ trunk
| |
- 16 19
+ 16 WC
end-info
begin-eligible
r17
@@ -967,7 +977,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-branch-into-trunk-3-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: .
===================================================================
@@ -977,6 +987,7 @@ Index: .
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,1 ##
Merged /${PROJECT}branches/dev/Share/merge1:r14-19
Index: added_directory/hello_constants_dummy.inc
===================================================================
@@ -985,7 +996,11 @@ Index: added_directory/hello_constants_dummy.inc
@@ -1,2 +0,0 @@
-INCLUDE 'hello_constants.INc'
-# added this line for simple repeat testing
+#IF SVN1.9 Index: added_file.add
+#IF SVN1.9 ===================================================================
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm commit of fcm merge branch-into-trunk (3)
@@ -1003,7 +1018,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : trunk]
[Sub-dir: ]
-
M .
A + added_file.add
D added_directory/hello_constants_dummy.inc
@@ -1013,15 +1027,12 @@ Commit message is as follows:
foo
Merged into /${PROJECT}trunk: /${PROJECT}branches/dev/Share/merge1 at 19 cf. /${PROJECT}trunk at 16
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO THE TRUNK.
*** Please ensure that your change conforms to your project's working practices.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Sending .
Adding added_file.add
Deleting added_directory/hello_constants_dummy.inc
-
Committed revision 20.
At revision 20.
__OUT__
@@ -1041,7 +1052,7 @@ Merged into /${PROJECT}trunk: /${PROJECT}branches/dev/Share/merge1 at 19 cf. /${PRO
------------------------------------------------------------------------
r19 | $LOGNAME | date | 1 line
-Made branch change - deleted ./added_directory/hello_constants_dummy.inc, copied ./added_file
+Made branch change - deleted added_directory/hello_constants_dummy.inc, copied added_file
------------------------------------------------------------------------
r18 | $LOGNAME | date | 3 lines
@@ -1055,7 +1066,7 @@ Made branch change for merge repeat test
------------------------------------------------------------------------
r16 | $LOGNAME | date | 1 line
-Made trunk change - a simple edit of ./added_file
+Made trunk change - a simple edit of added_file
------------------------------------------------------------------------
r15 | $LOGNAME | date | 3 lines
@@ -1128,7 +1139,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-trunk-3-post" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 20 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-19
end-prop
@@ -1145,7 +1156,7 @@ begin-info
/ \
-------| |------------ trunk
|
- 20
+ WC
end-info
begin-eligible
end-eligible
@@ -1167,14 +1178,14 @@ rm -rf $TEST_DIR/wc
mkdir $TEST_DIR/wc
svn checkout -q $ROOT_URL/branches/dev/Share/merge2 $TEST_DIR/wc
cd $TEST_DIR/wc
-BRANCH_2_MOD_FILE=$(find . -type f | sed "/\.svn/d" | sort | head -3| tail -1)
+BRANCH_2_MOD_FILE="module/hello_constants.f90"
echo "Second branch change" >>$BRANCH_2_MOD_FILE
svn commit -q -m "Made branch change - added to $BRANCH_2_MOD_FILE"
svn update -q
#------------------------------------------------------------------------------
# Test the various mergeinfo output before merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-branch-1-pre" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 21 <<__RESULTS__
begin-prop
end-prop
begin-info
@@ -1190,7 +1201,7 @@ begin-info
\
--| |------------ branches/dev/Share/merge2
|
- 21
+ WC
end-info
begin-eligible
r5
@@ -1278,7 +1289,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
TEST_KEY=$TEST_KEY_BASE-branch-into-branch-1-diff
run_pass "$TEST_KEY" svn diff
diff_sort "$TEST_DIR/$TEST_KEY.out" "$TEST_DIR/$TEST_KEY.sorted.out"
-file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" <<__OUT__
+diff_svn_version_filter >"$TEST_DIR/$TEST_KEY.sorted.ctrl" <<__OUT__
Index: .
===================================================================
@@ -1288,8 +1299,17 @@ Index: .
Property changes on: .
___________________________________________________________________
Added: svn:mergeinfo
+#IF SVN1.9 ## -0,0 +0,2 ##
Merged /${PROJECT}trunk:r2-9
Merged /${PROJECT}branches/dev/Share/merge1:r4-13
+#IF SVN1.9 Index: added_directory/hello_constants.f90
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_directory/hello_constants.inc
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_directory/hello_constants_dummy.inc
+#IF SVN1.9 ===================================================================
+#IF SVN1.9 Index: added_file
+#IF SVN1.9 ===================================================================
Index: lib/python/info/__init__.py
===================================================================
--- lib/python/info/__init__.py (revision 21)
@@ -1362,6 +1382,8 @@ Index: module/hello_constants_dummy.inc
@@ -1 +1 @@
-INCLUDE 'hello_constants.inc'
+INCLUDE 'hello_constants.INc'
+#IF SVN1.9 Index: module/tree_conflict_file
+#IF SVN1.9 ===================================================================
Index: subroutine/hello_sub_dummy.h
===================================================================
--- subroutine/hello_sub_dummy.h (revision 21)
@@ -1370,6 +1392,8 @@ Index: subroutine/hello_sub_dummy.h
#include "hello_sub.h"
+Modified a line
__OUT__
+file_cmp "$TEST_KEY.sorted.out" "$TEST_KEY.sorted.out" \
+ "$TEST_DIR/$TEST_KEY.sorted.ctrl"
file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#-------------------------------------------------------------------------------
# Tests fcm commit of fcm merge branch-into-branch (1)
@@ -1386,7 +1410,6 @@ Change summary:
[Project: ${TEST_PROJECT:-}]
[Branch : branches/dev/Share/merge2]
[Sub-dir: ]
-
M .
A + added_directory
A + added_file
@@ -1403,10 +1426,8 @@ Commit message is as follows:
foo
Merged into /${PROJECT}branches/dev/Share/merge2: /${PROJECT}branches/dev/Share/merge1 at 13 cf. /${PROJECT}trunk at 1
--------------------------------------------------------------------------------
-
*** WARNING: YOU ARE COMMITTING TO A Share BRANCH.
*** Please ensure that you have the owner's permission.
-
Would you like to commit this change?
Enter "y" or "n" (or just press <return> for "n"): Sending .
Adding added_directory
@@ -1418,7 +1439,6 @@ Sending module/hello_constants.f90
Sending module/hello_constants.inc
Sending module/hello_constants_dummy.inc
Sending subroutine/hello_sub_dummy.h
-Transmitting file data ......
Committed revision 22.
Updating '.':
At revision 22.
@@ -1439,7 +1459,7 @@ Merged into /${PROJECT}branches/dev/Share/merge2: /${PROJECT}branches/dev/Share/
------------------------------------------------------------------------
r21 | $LOGNAME | date | 1 line
-Made branch change - added to ./module/hello_constants.f90
+Made branch change - added to module/hello_constants.f90
------------------------------------------------------------------------
r20 | $LOGNAME | date | 3 lines
@@ -1449,7 +1469,7 @@ Merged into /${PROJECT}trunk: /${PROJECT}branches/dev/Share/merge1 at 19 cf. /${PRO
------------------------------------------------------------------------
r19 | $LOGNAME | date | 1 line
-Made branch change - deleted ./added_directory/hello_constants_dummy.inc, copied ./added_file
+Made branch change - deleted added_directory/hello_constants_dummy.inc, copied added_file
------------------------------------------------------------------------
r18 | $LOGNAME | date | 3 lines
@@ -1463,7 +1483,7 @@ Made branch change for merge repeat test
------------------------------------------------------------------------
r16 | $LOGNAME | date | 1 line
-Made trunk change - a simple edit of ./added_file
+Made trunk change - a simple edit of added_file
------------------------------------------------------------------------
r15 | $LOGNAME | date | 3 lines
@@ -1536,7 +1556,7 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
#------------------------------------------------------------------------------
# Test the various mergeinfo output after merging.
test_mergeinfo "$TEST_KEY_BASE-branch-into-branch-1-post" \
- $ROOT_URL/branches/dev/Share/merge1 <<__RESULTS__
+ $ROOT_URL/branches/dev/Share/merge1 - 22 <<__RESULTS__
begin-prop
/branches/dev/Share/merge1:4-13
/trunk:2-9
@@ -1554,7 +1574,7 @@ begin-info
\ \
--| |------------ branches/dev/Share/merge2
|
- 22
+ WC
end-info
begin-eligible
r17
diff --git a/t/fcm-merge/test_header b/t/fcm-merge/test_header
deleted file mode 100644
index bd4c036..0000000
--- a/t/fcm-merge/test_header
+++ /dev/null
@@ -1,270 +0,0 @@
-#!/bin/bash
-# ------------------------------------------------------------------------------
-# (C) British Crown Copyright 2006-16 Met Office.
-#
-# This file is part of FCM, tools for managing and building source code.
-#
-# FCM is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# FCM is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with FCM. If not, see <http://www.gnu.org/licenses/>.
-# ------------------------------------------------------------------------------
-# Optional enviroment variables:
-# TEST_PROJECT (tests using given project name)
-# TEST_REMOTE_HOST (tests using svn+ssh repositories located on given host)
-# ------------------------------------------------------------------------------
-
-. $(dirname $0)/../lib/bash/test_header
-
-function file_cmp() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if cmp $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_grep() {
- local TEST_KEY=$1
- local PATTERN=$2
- local FILE=$3
- if grep -q -e "$PATTERN" $TEST_DIR/$FILE; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_test() {
- local TEST_KEY=$1
- local FILE=$2
- local OPTION=${3:--e}
- if test $OPTION $TEST_DIR/$FILE; then
- pass $TEST_KEY
- else
- fail $TEST_KEY
- fi
-}
-
-function file_xxdiff() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if xxdiff -D $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function init_repos() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- ROOT_URL=$REPOS_URL
- PROJECT=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- PROJECT=$TEST_PROJECT"/"
- fi
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/$PROJECT/trunk -m "initial trunk import"
- svn mkdir -q $REPOS_URL/$PROJECT/tags -m "make tags"
- svn mkdir -q --parents $REPOS_URL/$PROJECT/branches/dev/Share -m " "
-}
-
-function init_repos_layout_roses() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- svn mkdir -q --parents $REPOS_URL/a/a/0/0/0/trunk
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/a/a/0/0/0/trunk -m "initial trunk import"
- TMPFILE=$(mktemp)
- cat >$TMPFILE <<__LAYOUT__
-depth-project = 5
-depth-branch = 1
-depth-tag = 1
-dir-trunk = trunk
-dir-branch =
-dir-tag =
-level-owner-branch =
-level-owner-tag =
-template-branch =
-template-tag =
-__LAYOUT__
- TMPDIR=$(mktemp -d)
- svn checkout -q $REPOS_URL $TMPDIR
- svn propset -q --file=$TMPFILE fcm:layout $TMPDIR
- svn commit -q -m " " $TMPDIR
- rm -f $TMPFILE
- rm -rf $TMPDIR
- ROOT_URL=$REPOS_URL
-}
-
-function init_branch() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- local ROOT_PATH=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- ROOT_PATH=$ROOT_PATH/$TEST_PROJECT
- fi
- MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/Share/$BRANCH_NAME from /trunk at 1.")
- svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/Share/$BRANCH_NAME \
- -m "Made a branch $MESSAGE"
-}
-
-function init_branch_wc() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch $BRANCH_NAME $REPOS_URL
- svn checkout -q $ROOT_URL/branches/dev/Share/$BRANCH_NAME $TEST_DIR/wc
-}
-
-function init_merge_branches() {
- local BRANCH_NAME=$1
- local OTHER_BRANCH_NAME=$2
- local REPOS_URL=$3
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch_wc $BRANCH_NAME $REPOS_URL
- cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
- done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
- svn commit -q -m "Made changes for future merge of this branch"
- svn update -q
- init_branch $OTHER_BRANCH_NAME $REPOS_URL
- svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
- echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
- svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
- svn commit -q -m "Made changes for future merge"
- svn update -q
- svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made trunk change"
- svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made another trunk change"
- svn update -q
-}
-
-function run_pass() {
- local TEST_KEY=$1
- shift 1
- if ! "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function run_fail() {
- local TEST_KEY=$1
- shift 1
- if "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function get_results() {
- local RESULT_KEY=$1
- local RESULTS_FILE=$2
- local BEGIN="^begin-$RESULT_KEY$"
- local END="^end-$RESULT_KEY$"
- local RESULTS_TEMP=$(mktemp)
- sed -n "/$BEGIN/,/$END/{/$BEGIN\|$END/d; p;}" $RESULTS_FILE >$RESULTS_TEMP
- echo $RESULTS_TEMP
-}
-
-function test_mergeinfo() {
- local TEST_INFO_NAME="$1-svn-mergeinfo"
- local DIFF_BRANCH=$2
- local INPUT_RESULTS_FILE=${3:--}
- local RESULTS_FILE=$(mktemp)
- cat "$INPUT_RESULTS_FILE" > "$RESULTS_FILE"
- # Test svn:mergeinfo property.
- TEST_KEY=$TEST_INFO_NAME-prop
- run_pass "$TEST_KEY" svn propget svn:mergeinfo .
- file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <$(get_results prop $RESULTS_FILE)
- file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
- # Test svn mergeinfo output.
- TEST_KEY=$TEST_INFO_NAME-info
- run_pass "$TEST_KEY" svn mergeinfo $DIFF_BRANCH
- file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <$(get_results info $RESULTS_FILE)
- file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
- # Test svn mergeinfo show-revs eligible before merge.
- TEST_KEY=$TEST_INFO_NAME-show-revs-eligible
- run_pass "$TEST_KEY" svn mergeinfo --show-revs eligible $DIFF_BRANCH
- file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <$(get_results eligible $RESULTS_FILE)
- file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
- # Test svn mergeinfo show-revs merged before merge.
- TEST_KEY=$TEST_INFO_NAME-show-revs-merged
- run_pass "$TEST_KEY" svn mergeinfo --show-revs merged $DIFF_BRANCH
- file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <$(get_results merged $RESULTS_FILE)
- file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
-}
-
-function setup() {
- mkdir -p $TEST_DIR/.subversion
- mkdir -p $TEST_DIR/run
- cd $TEST_DIR/run
-}
-
-function teardown() {
- cd $TEST_DIR
- rm -rf $TEST_DIR/test_repos
- rm -rf $TEST_DIR/wc
- rm -rf $TEST_DIR/run
- rm -rf $TEST_DIR/.subversion
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- ssh $TEST_REMOTE_HOST "rm -rf $TEST_REMOTE_DIR"
- fi
-}
-
-REPOS_URL=
-ROOT_URL=
-PROJECT=
diff --git a/t/fcm-merge/test_header b/t/fcm-merge/test_header
new file mode 120000
index 0000000..9a2064b
--- /dev/null
+++ b/t/fcm-merge/test_header
@@ -0,0 +1 @@
+../lib/bash/svn_test_header
\ No newline at end of file
diff --git a/t/fcm-status/test_header b/t/fcm-status/test_header
index ecde158..dec7938 100644
--- a/t/fcm-status/test_header
+++ b/t/fcm-status/test_header
@@ -158,34 +158,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
diff --git a/t/fcm-switch/test_header b/t/fcm-switch/test_header
deleted file mode 100644
index f8104be..0000000
--- a/t/fcm-switch/test_header
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/bash
-# ------------------------------------------------------------------------------
-# (C) British Crown Copyright 2006-16 Met Office.
-#
-# This file is part of FCM, tools for managing and building source code.
-#
-# FCM is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# FCM is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with FCM. If not, see <http://www.gnu.org/licenses/>.
-# ------------------------------------------------------------------------------
-# Optional enviroment variables:
-# TEST_PROJECT (tests using given project name)
-# TEST_REMOTE_HOST (tests using svn+ssh repositories located on given host)
-# ------------------------------------------------------------------------------
-
-. $(dirname $0)/../lib/bash/test_header
-
-function file_cmp() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if diff -u $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT >&2; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_grep() {
- local TEST_KEY=$1
- local PATTERN=$2
- local FILE=$3
- if grep -q -e "$PATTERN" $TEST_DIR/$FILE; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_test() {
- local TEST_KEY=$1
- local FILE=$2
- local OPTION=${3:--e}
- if test $OPTION $TEST_DIR/$FILE; then
- pass $TEST_KEY
- else
- fail $TEST_KEY
- fi
-}
-
-function file_xxdiff() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if xxdiff -D $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function init_repos() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- ROOT_URL=$REPOS_URL
- PROJECT=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- PROJECT=$TEST_PROJECT"/"
- fi
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/$PROJECT/trunk -m "initial trunk import"
- svn mkdir -q $REPOS_URL/$PROJECT/tags -m "make tags"
- svn mkdir -q --parents $REPOS_URL/$PROJECT/branches/dev/Share -m " "
-}
-
-function init_repos_layout_roses() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- svn mkdir -q --parents $REPOS_URL/a/a/0/0/0/trunk
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/a/a/0/0/0/trunk -m "initial trunk import"
- TMPFILE=$(mktemp)
- cat >$TMPFILE <<__LAYOUT__
-depth-project = 5
-depth-branch = 1
-depth-tag = 1
-dir-trunk = trunk
-dir-branch =
-dir-tag =
-level-owner-branch =
-level-owner-tag =
-template-branch =
-template-tag =
-__LAYOUT__
- TMPDIR=$(mktemp -d)
- svn checkout -q $REPOS_URL $TMPDIR
- svn propset -q --file=$TMPFILE fcm:layout $TMPDIR
- svn commit -q -m " " $TMPDIR
- rm -f $TMPFILE
- rm -rf $TMPDIR
- ROOT_URL=$REPOS_URL
-}
-
-function init_branch() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- local ROOT_PATH=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- ROOT_PATH=$ROOT_PATH/$TEST_PROJECT
- fi
- MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/Share/$BRANCH_NAME from /trunk at 1.")
- svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/Share/$BRANCH_NAME \
- -m "Made a branch $MESSAGE"
-}
-
-function init_branch_wc() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch $BRANCH_NAME $REPOS_URL
- svn checkout -q $ROOT_URL/branches/dev/Share/$BRANCH_NAME $TEST_DIR/wc
-}
-
-function init_merge_branches() {
- local BRANCH_NAME=$1
- local OTHER_BRANCH_NAME=$2
- local REPOS_URL=$3
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch_wc $BRANCH_NAME $REPOS_URL
- cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
- done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
- svn commit -q -m "Made changes for future merge of this branch"
- svn update -q
- init_branch $OTHER_BRANCH_NAME $REPOS_URL
- svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
- echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
- svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
- svn commit -q -m "Made changes for future merge"
- svn update -q
- svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made trunk change"
- svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made another trunk change"
- svn update -q
-}
-
-function run_pass() {
- local TEST_KEY=$1
- shift 1
- if ! "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function run_fail() {
- local TEST_KEY=$1
- shift 1
- if "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function setup() {
- mkdir -p $TEST_DIR/.subversion
- mkdir -p $TEST_DIR/run
- cd $TEST_DIR/run
-}
-
-function teardown() {
- cd $TEST_DIR
- rm -rf $TEST_DIR/test_repos
- rm -rf $TEST_DIR/wc
- rm -rf $TEST_DIR/run
- rm -rf $TEST_DIR/.subversion
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- ssh $TEST_REMOTE_HOST "rm -rf $TEST_REMOTE_DIR"
- fi
-}
-
-REPOS_URL=
-ROOT_URL=
-PROJECT=
diff --git a/t/fcm-switch/test_header b/t/fcm-switch/test_header
new file mode 120000
index 0000000..9a2064b
--- /dev/null
+++ b/t/fcm-switch/test_header
@@ -0,0 +1 @@
+../lib/bash/svn_test_header
\ No newline at end of file
diff --git a/t/fcm-update/00-simple.t b/t/fcm-update/00-simple.t
index d806358..a825b2c 100644
--- a/t/fcm-update/00-simple.t
+++ b/t/fcm-update/00-simple.t
@@ -61,7 +61,7 @@ TEST_KEY=$TEST_KEY_BASE-normal
run_pass "$TEST_KEY" fcm update <<__IN__
y
__IN__
-sed -n "/^ *\*/p" "$TEST_DIR/$TEST_KEY.out" | LANG=C sort -o \
+sed -n "/^ *\*/p" "$TEST_DIR/$TEST_KEY.out" | sort -o \
"$TEST_DIR/$TEST_KEY.update-status.sorted.out"
file_cmp "$TEST_KEY.update-status.sorted.out" \
"$TEST_KEY.update-status.sorted.out" <<__OUT__
diff --git a/t/fcm-update/01-subtree.t b/t/fcm-update/01-subtree.t
index 106d10c..3c0e6fd 100644
--- a/t/fcm-update/01-subtree.t
+++ b/t/fcm-update/01-subtree.t
@@ -62,7 +62,7 @@ TEST_KEY=$TEST_KEY_BASE-normal
run_pass "$TEST_KEY" fcm update <<__IN__
y
__IN__
-sed -n "/^ *\*/p" "$TEST_DIR/$TEST_KEY.out" | LANG=C sort -o \
+sed -n "/^ *\*/p" "$TEST_DIR/$TEST_KEY.out" | sort -k 3 -o \
"$TEST_DIR/$TEST_KEY.update-status.sorted.out"
file_cmp "$TEST_KEY.update-status.sorted.out" \
"$TEST_KEY.update-status.sorted.out" <<__OUT__
diff --git a/t/fcm-update/test_header b/t/fcm-update/test_header
deleted file mode 100644
index f8104be..0000000
--- a/t/fcm-update/test_header
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/bash
-# ------------------------------------------------------------------------------
-# (C) British Crown Copyright 2006-16 Met Office.
-#
-# This file is part of FCM, tools for managing and building source code.
-#
-# FCM is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# FCM is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with FCM. If not, see <http://www.gnu.org/licenses/>.
-# ------------------------------------------------------------------------------
-# Optional enviroment variables:
-# TEST_PROJECT (tests using given project name)
-# TEST_REMOTE_HOST (tests using svn+ssh repositories located on given host)
-# ------------------------------------------------------------------------------
-
-. $(dirname $0)/../lib/bash/test_header
-
-function file_cmp() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if diff -u $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT >&2; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_grep() {
- local TEST_KEY=$1
- local PATTERN=$2
- local FILE=$3
- if grep -q -e "$PATTERN" $TEST_DIR/$FILE; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function file_test() {
- local TEST_KEY=$1
- local FILE=$2
- local OPTION=${3:--e}
- if test $OPTION $TEST_DIR/$FILE; then
- pass $TEST_KEY
- else
- fail $TEST_KEY
- fi
-}
-
-function file_xxdiff() {
- local TEST_KEY=$1
- local FILE_ACTUAL=$2
- local FILE_EXPECT=${3:--}
- if xxdiff -D $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
- pass $TEST_KEY
- return
- fi
- fail $TEST_KEY
-}
-
-function init_repos() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- ROOT_URL=$REPOS_URL
- PROJECT=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- PROJECT=$TEST_PROJECT"/"
- fi
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/$PROJECT/trunk -m "initial trunk import"
- svn mkdir -q $REPOS_URL/$PROJECT/tags -m "make tags"
- svn mkdir -q --parents $REPOS_URL/$PROJECT/branches/dev/Share -m " "
-}
-
-function init_repos_layout_roses() {
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
- REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
- else
- svnadmin create --fs-type fsfs $TEST_DIR/test_repos
- REPOS_URL="file://$TEST_DIR/test_repos"
- fi
- svn mkdir -q --parents $REPOS_URL/a/a/0/0/0/trunk
- svn import -q $TEST_SOURCE_DIR/../etc/repo_files \
- $REPOS_URL/a/a/0/0/0/trunk -m "initial trunk import"
- TMPFILE=$(mktemp)
- cat >$TMPFILE <<__LAYOUT__
-depth-project = 5
-depth-branch = 1
-depth-tag = 1
-dir-trunk = trunk
-dir-branch =
-dir-tag =
-level-owner-branch =
-level-owner-tag =
-template-branch =
-template-tag =
-__LAYOUT__
- TMPDIR=$(mktemp -d)
- svn checkout -q $REPOS_URL $TMPDIR
- svn propset -q --file=$TMPFILE fcm:layout $TMPDIR
- svn commit -q -m " " $TMPDIR
- rm -f $TMPFILE
- rm -rf $TMPDIR
- ROOT_URL=$REPOS_URL
-}
-
-function init_branch() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- local ROOT_PATH=
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- ROOT_PATH=$ROOT_PATH/$TEST_PROJECT
- fi
- MESSAGE=$(echo -e "Created $ROOT_PATH/branches/dev/Share/$BRANCH_NAME from /trunk at 1.")
- svn copy -q -r1 $ROOT_URL/trunk $ROOT_URL/branches/dev/Share/$BRANCH_NAME \
- -m "Made a branch $MESSAGE"
-}
-
-function init_branch_wc() {
- local BRANCH_NAME=$1
- local REPOS_URL=$2
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch $BRANCH_NAME $REPOS_URL
- svn checkout -q $ROOT_URL/branches/dev/Share/$BRANCH_NAME $TEST_DIR/wc
-}
-
-function init_merge_branches() {
- local BRANCH_NAME=$1
- local OTHER_BRANCH_NAME=$2
- local REPOS_URL=$3
- local ROOT_URL=$REPOS_URL
- if [[ -n ${TEST_PROJECT:-} ]]; then
- ROOT_URL=$REPOS_URL/$TEST_PROJECT
- fi
- init_branch_wc $BRANCH_NAME $REPOS_URL
- cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
- done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
- svn commit -q -m "Made changes for future merge of this branch"
- svn update -q
- init_branch $OTHER_BRANCH_NAME $REPOS_URL
- svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
- echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
- svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
- svn commit -q -m "Made changes for future merge"
- svn update -q
- svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made trunk change"
- svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
- svn commit -q -m "Made another trunk change"
- svn update -q
-}
-
-function run_pass() {
- local TEST_KEY=$1
- shift 1
- if ! "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function run_fail() {
- local TEST_KEY=$1
- shift 1
- if "$@" 1>$TEST_DIR/$TEST_KEY.out 2>$TEST_DIR/$TEST_KEY.err; then
- fail $TEST_KEY
- return
- fi
- pass $TEST_KEY
-}
-
-function setup() {
- mkdir -p $TEST_DIR/.subversion
- mkdir -p $TEST_DIR/run
- cd $TEST_DIR/run
-}
-
-function teardown() {
- cd $TEST_DIR
- rm -rf $TEST_DIR/test_repos
- rm -rf $TEST_DIR/wc
- rm -rf $TEST_DIR/run
- rm -rf $TEST_DIR/.subversion
- if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
- ssh $TEST_REMOTE_HOST "rm -rf $TEST_REMOTE_DIR"
- fi
-}
-
-REPOS_URL=
-ROOT_URL=
-PROJECT=
diff --git a/t/fcm-update/test_header b/t/fcm-update/test_header
new file mode 120000
index 0000000..9a2064b
--- /dev/null
+++ b/t/fcm-update/test_header
@@ -0,0 +1 @@
+../lib/bash/svn_test_header
\ No newline at end of file
diff --git a/t/fcm-merge/test_header b/t/lib/bash/svn_test_header
similarity index 79%
copy from t/fcm-merge/test_header
copy to t/lib/bash/svn_test_header
index bd4c036..4cfc7e9 100644
--- a/t/fcm-merge/test_header
+++ b/t/lib/bash/svn_test_header
@@ -28,7 +28,7 @@ function file_cmp() {
local TEST_KEY=$1
local FILE_ACTUAL=$2
local FILE_EXPECT=${3:--}
- if cmp $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT; then
+ if diff -u $TEST_DIR/$FILE_ACTUAL $FILE_EXPECT >&2; then
pass $TEST_KEY
return
fi
@@ -71,7 +71,8 @@ function file_xxdiff() {
function init_repos() {
if [[ -n ${TEST_REMOTE_HOST:-} ]]; then
TEST_REMOTE_DIR=$(ssh $TEST_REMOTE_HOST "mktemp -d")
- ssh $TEST_REMOTE_HOST "svnadmin create --fs-type fsfs $TEST_REMOTE_DIR"
+ ssh $TEST_REMOTE_HOST bash -l -c "svnadmin create --fs-type fsfs\
+ $TEST_REMOTE_DIR"
REPOS_URL="svn+ssh://${TEST_REMOTE_HOST}$TEST_REMOTE_DIR"
else
svnadmin create --fs-type fsfs $TEST_DIR/test_repos
@@ -158,34 +159,39 @@ function init_merge_branches() {
fi
init_branch_wc $BRANCH_NAME $REPOS_URL
cd $TEST_DIR/wc
- file_list=$(find . -type f | sed "/\.svn/d" | sort | head -5)
- other_file=$(find . -type f | sed "/\.svn/d" | sort | tail -1)
- for file in $file_list; do
- sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" $file
- sed -i "/#/d; /^ *!/d" $file
- sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" $file
+ modify_files="lib/python/info/__init__.py lib/python/info/poems.py \
+ module/hello_constants.f90 module/hello_constants.inc \
+ module/hello_constants_dummy.inc"
+ for file in $modify_files; do
+ sed -i "s/for/FOR/g; s/fi/end if/g; s/in/IN/g;" "$file"
+ sed -i "/#/d; /^ *!/d" "$file"
+ sed -i "s/!/!!/g; s/q/\nq/g; s/[(]/(\n/g" "$file"
done
- file_dir=$(dirname $file)
- svn copy -q $file ./added_file
- svn copy -q module added_directory
- touch module/tree_conflict_file
- svn add -q $file_dir/tree_conflict_file
- echo "Modified a line" >>$other_file
+ copy_file="module/hello_constants_dummy.inc"
+ copy_file_dir=$(dirname "$copy_file")
+ svn copy -q "$copy_file" "./added_file"
+ svn copy -q "$copy_file_dir" "added_directory"
+ touch "$copy_file_dir/tree_conflict_file"
+ append_line_file="subroutine/hello_sub_dummy.h"
+ svn add -q "$copy_file_dir/tree_conflict_file"
+ echo "Modified a line" >>$append_line_file
svn commit -q -m "Made changes for future merge of this branch"
svn update -q
init_branch $OTHER_BRANCH_NAME $REPOS_URL
svn switch -q $ROOT_URL/branches/dev/Share/$OTHER_BRANCH_NAME
echo " " > unversioned_file
- properties_file=$(find . -type f | sed " /\.svn/d" | sort | tail -3 | head -1)
+ properties_file="subroutine/hello_sub.h"
svn propset -q svn:executable "executable" $properties_file
- svn copy -q $file renamed_added_file
+ other_copy_file="module/hello_constants_dummy.inc"
+ svn copy -q "$other_copy_file" "renamed_added_file"
svn commit -q -m "Made changes for future merge"
svn update -q
svn switch -q $ROOT_URL/trunk
- echo "trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ trunk_change_file="lib/python/info/__init__.py"
+ echo "trunk change" >>"$trunk_change_file"
svn commit -q -m "Made trunk change"
svn update -q
- echo "another trunk change" >>$(find . -type f | sed "/\.svn/d" | sort | head -1)
+ echo "another trunk change" >>"$trunk_change_file"
svn commit -q -m "Made another trunk change"
svn update -q
}
@@ -224,13 +230,26 @@ function test_mergeinfo() {
local TEST_INFO_NAME="$1-svn-mergeinfo"
local DIFF_BRANCH=$2
local INPUT_RESULTS_FILE=${3:--}
+ local WC_REVISION=${4:-WC}
+ if "$SVN_VERSION_IS_19"; then
+ WC_REVISION=WC
+ elif (( WC_REVISION < 10 )); then
+ WC_REVISION="$WC_REVISION "
+ fi
local RESULTS_FILE=$(mktemp)
- cat "$INPUT_RESULTS_FILE" > "$RESULTS_FILE"
+ sed "s/^\(.\{23\}\)WC/\1$WC_REVISION/" "$INPUT_RESULTS_FILE" \
+ >"$RESULTS_FILE"
# Test svn:mergeinfo property.
TEST_KEY=$TEST_INFO_NAME-prop
- run_pass "$TEST_KEY" svn propget svn:mergeinfo .
- file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <$(get_results prop $RESULTS_FILE)
- file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
+ PROP_RESULT_TEXT=$(cat <$(get_results prop $RESULTS_FILE))
+ if [[ -n "$PROP_RESULT_TEXT" ]]; then
+ run_pass "$TEST_KEY" svn propget svn:mergeinfo .
+ file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <$(get_results prop $RESULTS_FILE)
+ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" </dev/null
+ else
+ # Subversion 1.9 won't set null mergeinfo.
+ skip 3
+ fi
# Test svn mergeinfo output.
TEST_KEY=$TEST_INFO_NAME-info
run_pass "$TEST_KEY" svn mergeinfo $DIFF_BRANCH
diff --git a/t/lib/bash/test_header b/t/lib/bash/test_header
index 2ceaed6..ad88e80 100644
--- a/t/lib/bash/test_header
+++ b/t/lib/bash/test_header
@@ -56,10 +56,14 @@
# -e if not specified.
# file_grep TEST_KEY PATTERN FILE
# Run "grep -q PATTERN FILE". pass/fail $TEST_KEY accordingly.
+# branch_tidy INPUT_FILE
+# Standardise branch-create output between Subversion 1.8 and 1.9.
# commit_sort INPUT_FILE OUTPUT_FILE
# Sort status and transmitting info within the commit output.
# diff_sort INPUT_FILE OUTPUT_FILE
# Sort Subversion diff output by filename.
+# diff_svn_version_filter
+# Preprocess stdin to stdout based on relevant '#IF SVN1.X' prefixes.
# status_sort INPUT_FILE OUTPUT_FILE
# Sort Subversion status lines.
# merge_sort INPUT_FILE OUTPUT_FILE
@@ -186,11 +190,18 @@ function file_grep() {
fail $TEST_KEY
}
+function branch_tidy() {
+ local INPUT_FILE=$TEST_DIR/$1
+ sed -i "/^Committing transaction/d; /^$/d" "$INPUT_FILE"
+}
+
function commit_sort() {
local INPUT_FILE=$1
local OUTPUT_FILE=$2
local TMP_OUTPUT_FILE=$(mktemp)
+ # Sort the svn status part of the message
status_sort $INPUT_FILE $TMP_OUTPUT_FILE
+ # Sort the 'Adding/Deleting', etc part of the message
python -c 'import re, sys
text = sys.stdin.read()
sending_lines = re.findall("^\w+ing +.*$", text, re.M)
@@ -200,16 +211,30 @@ sending_lines.sort()
print prefix + "\n".join(sending_lines) + suffix.rstrip()
' <"$TMP_OUTPUT_FILE" >"$OUTPUT_FILE"
rm "$TMP_OUTPUT_FILE"
+ # Remove 1.8 to 1.9 specific changes (transmitting, transaction lines).
+ sed -i "/^Transmitting file data/d; /^Committing transaction/d; /^$/d" \
+ "$OUTPUT_FILE"
}
function diff_sort() {
local INPUT_FILE=$1
local OUTPUT_FILE=$2
+ # Sort the diff file order.
python -c 'import re, sys
text = sys.stdin.read()
print "\nIndex: ".join(
[l.strip() for l in sorted(re.compile("^Index: ", re.M).split(text))])
' <"$INPUT_FILE" >"$OUTPUT_FILE"
+ # In 1.9, new files are (nonexistent) rather than (working copy).
+ sed -i "s/(nonexistent)/(working copy)/" "$OUTPUT_FILE"
+}
+
+function diff_svn_version_filter() {
+ if "$SVN_VERSION_IS_19"; then
+ sed "s/^#IF SVN1.9 //g; /^#IF SVN1.8 /d"
+ else
+ sed "s/^#IF SVN1.8 //g; /^#IF SVN1.9 /d"
+ fi
}
function status_sort() {
@@ -254,8 +279,8 @@ if status_lines:
}
function check_svn_version() {
- if ! svn --version | head -1 | grep -q "^svn, version 1.8"; then
- skip_all "Tests require Subversion 1.8"
+ if ! svn --version | head -1 | grep -q "^svn, version 1\.\(8\|9\)"; then
+ skip_all "Tests require Subversion 1.8 or 1.9"
exit 0
fi
}
@@ -283,9 +308,19 @@ FCM_HOME=${FCM_HOME:-$(cd $(dirname $(readlink -f $BASH_SOURCE))/../../.. && pwd
export FCM_HOME
PATH=$FCM_HOME/bin:$PATH
+SVN_VERSION_IS_19=false
+if svn --version 1>/dev/null 2>&1; then
+ SVN_VERSION=$(svn --version | \
+ sed -n "s/^svn, version \([0-9.]\+\) .*/\1/p")
+ if [[ $SVN_VERSION =~ "1.9." ]]; then
+ SVN_VERSION_IS_19=true
+ fi
+fi
+
TEST_KEY_BASE=$(basename $0 .t)
TEST_SOURCE_DIR=$(cd $(dirname $0) && pwd)
TEST_DIR=$(mktemp -d)
+export LC_ALL=C
export LANG=C
cd $TEST_DIR
diff --git a/t/svn-hooks/03-post-commit-bg.t b/t/svn-hooks/03-post-commit-bg.t
index ef1839f..424994b 100755
--- a/t/svn-hooks/03-post-commit-bg.t
+++ b/t/svn-hooks/03-post-commit-bg.t
@@ -228,6 +228,7 @@ perl -e 'map {print(rand())} 1..2097152' >'file3' # compress should be >10MB
svn import --no-auth-cache -q -m"${TEST_KEY}" 'file3' "${REPOS_URL}/file3"
REV="$(<'rev')"
poll 10 grep -q '^RET_CODE=' "${REPOS_PATH}/log/post-commit.log"
+poll 10 test -e 'mail.out'
date2datefmt "${REPOS_PATH}/log/post-commit.log" \
| sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
>"${TEST_KEY}.log"
@@ -427,6 +428,7 @@ svn co -q "${REPOS_URL}/hello/trunk" 'hello'
echo 'Hello' >'hello/file'
svn ci -q -m 'hello whatever' '--no-auth-cache' '--username=root' 'hello'
poll 10 grep -q '^RET_CODE=' "${REPOS_PATH}/log/post-commit.log"
+poll 10 test -e 'mail.out'
REV="$(<rev)"
file_grep "${TEST_KEY}.mail.out.1" \
"^-rnotifications at localhost -sfoo@${REV} by root" 'mail.out'
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/fcm.git
More information about the debian-science-commits
mailing list