chiark / gitweb /
0e408d07888f12f309b5635b388b18333e9b1590
[stgit] / t / t1200-push-modified.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2006 Yann Dirson
4 #
5
6 test_description='Exercise pushing patches applied upstream.
7
8 Especially, consider the case of a patch that adds a file, while a
9 subsequent one modifies it, so we have to use --merged for push to
10 detect the merge.  Reproduce the common workflow where one does not
11 specify --merged, then rollback and retry with the correct flag.'
12
13 . ./test-lib.sh
14
15 # don't need this repo, but better not drop it, see t1100
16 #rm -rf .git
17
18 # Need a repo to clone
19 test_create_repo foo
20
21 test_expect_success \
22     'Clone tree and setup changes' '
23     stg clone foo bar &&
24     (
25         cd bar && stg new p1 -m p1 &&
26         printf "a\nc\n" > file && stg add file && stg refresh &&
27         stg new p2 -m p2 &&
28         printf "a\nb\nc\n" > file && stg refresh &&
29         [ "$(echo $(stg applied))" = "p1 p2" ] &&
30         [ "$(echo $(stg unapplied))" = "" ]
31     )
32 '
33
34 test_expect_success \
35     'Port those patches to orig tree' '
36     (
37         cd foo &&
38         GIT_DIR=../bar/.git git-format-patch --stdout \
39           $(cd ../bar && stg id base@master)..HEAD | git-am -3 -k
40     )
41 '
42
43 test_expect_success \
44     'Pull to sync with parent, preparing for the problem' \
45     "(cd bar && stg pop --all &&
46       stg pull
47      )
48 "
49
50 test_expect_failure \
51     'Attempt to push the first of those patches without --merged' \
52     "(cd bar && stg push
53      )
54 "
55
56 test_expect_success \
57     'Rollback the push' '
58     (
59         cd bar && stg push --undo &&
60         [ "$(echo $(stg applied))" = "" ] &&
61         [ "$(echo $(stg unapplied))" = "p1 p2" ]
62     )
63 '
64
65 test_expect_success \
66     'Push those patches while checking they were merged upstream' '
67     (
68         cd bar && stg push --merged --all
69         [ "$(echo $(stg applied))" = "p1 p2" ] &&
70         [ "$(echo $(stg unapplied))" = "" ]
71     )
72 '
73
74 test_done