755
test_cmp expect actual
756
'
757
758
+
759
+test_expect_success 'prepare for rebase -i --exec' '
760
+ git checkout master &&
761
+ git checkout -b execute &&
762
+ test_commit one_exec main.txt one_exec &&
763
+ test_commit two_exec main.txt two_exec &&
764
+ test_commit three_exec main.txt three_exec
765
+'
766
+
767
+
768
+test_expect_success 'running "git rebase -i --exec git show HEAD"' '
769
+ git rebase -i --exec "git show HEAD" HEAD~2 >actual &&
770
+ (
771
+ FAKE_LINES="1 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
772
+ export FAKE_LINES &&
773
+ git rebase -i HEAD~2 >expect
774
+ ) &&
775
+ sed -e "1,9d" expect >expected &&
776
+ test_cmp expected actual
777
+'
778
+
779
+
780
+test_expect_success 'running "git rebase --exec git show HEAD -i"' '
781
+ git reset --hard execute &&
782
+ git rebase --exec "git show HEAD" -i HEAD~2 >actual &&
783
+ (
784
+ FAKE_LINES="1 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
785
+ export FAKE_LINES &&
786
+ git rebase -i HEAD~2 >expect
787
+ ) &&
788
+ sed -e "1,9d" expect >expected &&
789
+ test_cmp expected actual
790
+'
791
+
792
+
793
+test_expect_success 'running "git rebase -ix git show HEAD"' '
794
+ git reset --hard execute &&
795
+ git rebase -ix "git show HEAD" HEAD~2 >actual &&
796
+ (
797
+ FAKE_LINES="1 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
798
+ export FAKE_LINES &&
799
+ git rebase -i HEAD~2 >expect
800
+ ) &&
801
+ sed -e "1,9d" expect >expected &&
802
+ test_cmp expected actual
803
+'
804
+
805
+
806
+test_expect_success 'rebase -ix with several <CMD>' '
807
+ git reset --hard execute &&
808
+ git rebase -ix "git show HEAD; pwd" HEAD~2 >actual &&
809
+ (
810
+ FAKE_LINES="1 exec_git_show_HEAD;_pwd 2 exec_git_show_HEAD;_pwd" &&
811
+ export FAKE_LINES &&
812
+ git rebase -i HEAD~2 >expect
813
+ ) &&
814
+ sed -e "1,9d" expect >expected &&
815
+ test_cmp expected actual
816
+'
817
+
818
+
819
+test_expect_success 'rebase -ix with several instances of --exec' '
820
+ git reset --hard execute &&
821
+ git rebase -i --exec "git show HEAD" --exec "pwd" HEAD~2 >actual &&
822
+ (
823
+ FAKE_LINES="1 exec_git_show_HEAD exec_pwd 2
824
+ exec_git_show_HEAD exec_pwd" &&
825
+ export FAKE_LINES &&
826
+ git rebase -i HEAD~2 >expect
827
+ ) &&
828
+ sed -e "1,11d" expect >expected &&
829
+ test_cmp expected actual
830
+'
831
+
832
+
833
+test_expect_success 'rebase -ix with --autosquash' '
834
+ git reset --hard execute &&
835
+ git checkout -b autosquash &&
836
+ echo second >second.txt &&
837
+ git add second.txt &&
838
+ git commit -m "fixup! two_exec" &&
839
+ echo bis >bis.txt &&
840
+ git add bis.txt &&
841
+ git commit -m "fixup! two_exec" &&
842
+ (
843
+ git checkout -b autosquash_actual &&
844
+ git rebase -i --exec "git show HEAD" --autosquash HEAD~4 >actual
845
+ ) &&
846
+ git checkout autosquash &&
847
+ (
848
+ git checkout -b autosquash_expected &&
849
+ FAKE_LINES="1 fixup 3 fixup 4 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
850
+ export FAKE_LINES &&
851
+ git rebase -i HEAD~4 >expect
852
+ ) &&
853
+ sed -e "1,13d" expect >expected &&
854
+ test_cmp expected actual
855
+'
856
+
857
+
858
+test_expect_success 'rebase --exec without -i shows error message' '
859
+ git reset --hard execute &&
860
+ test_must_fail git rebase --exec "git show HEAD" HEAD~2 2>actual &&
861
+ echo "--exec option must be used with --interactive option" >expected &&
862
+ test_i18ncmp expected actual
863
+'
864
+
865
+
866
+test_expect_success 'rebase -i --exec without <CMD>' '
867
+ git reset --hard execute &&
868
+ test_must_fail git rebase -i --exec 2>tmp &&
869
+ sed -e "1d" tmp >actual &&
870
+ test_must_fail git rebase -h >expected &&
871
+ test_cmp expected actual &&
872
+ git checkout master
873
+'
874
+
875
test_done