From patchwork Thu Jun 11 17:41:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Denton Liu X-Patchwork-Id: 11600507 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6967714E3 for ; Thu, 11 Jun 2020 17:42:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 505A620836 for ; Thu, 11 Jun 2020 17:42:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lR7DvJrt" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727095AbgFKRmF (ORCPT ); Thu, 11 Jun 2020 13:42:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726109AbgFKRmD (ORCPT ); Thu, 11 Jun 2020 13:42:03 -0400 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A109C08C5C1 for ; Thu, 11 Jun 2020 10:42:03 -0700 (PDT) Received: by mail-qt1-x844.google.com with SMTP id y1so5166577qtv.12 for ; Thu, 11 Jun 2020 10:42:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=03T/1SBccsrL8MxzlNoP+D0VvWFvUBc8YCfO8LcdObA=; b=lR7DvJrtbmJHQidCDyXz/9f8DxwSzU8a7YDf0MqnQ01V2SuDIbl/fmwp5yfXKnhnC2 yzElKKPpLSQr5rm+rFoNS6ZGv3NomhL1BKev/3FP4Vh9xBHumZApR1La6bgNO8E3e0qT cGAm/y7tEDtYBwfpzGT8daAQOe7XtqGj//7E/CMcPOuRKxcgexxZiPHQ5vYWKLDFHKVu Pvh7Lfeqgs8r4/Rqcy8pXonpTEEKrMiqhZuu42IBdpRovbbjk4EZxG096eyUwuZiTmYc OvcfUm0MFZWkmyt7cKRMipsUnoMiSCDyTsm2t6yh2dlIAvJOsVypt29Au6JTkXJ90fAZ 2R6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=03T/1SBccsrL8MxzlNoP+D0VvWFvUBc8YCfO8LcdObA=; b=s6PAb0V1fsbBsb72F228Z2908VNFBdoMF06k14GYthmfhegRlzqL9jTz5fsih+2/b6 Bkp8y0R2L3urbuLA+CSahxOYSkYvugYWPwxlYj8ymfSrR4pBbRPVMv62OqMym/98Qgpf Vx3g+ga0ItclPAdQ/oO46mqAFd0ZvjkYD3ACyA44AzXZOSuXoONcTy64NhW1c9n8b+z4 x2NgkMOcZKFYKOg9peRejKnAzFRH2r6gf5z68KsxoQdaTrquT4G5ikmsS750dEYlQqql q7Yv4v/k/sRLFZ4mTz5VH2v6Llh+SNkRWmQzJttXkiYFGulLBIjVuV3YZgyF3xT3vGZL vPnw== X-Gm-Message-State: AOAM533oYT6UDdvYDIslMxIze5uBMsyf5HHaj2mvcJyBMGTMS0CdKVIh kI2uvtFgJ735baORLGBvvK2mUWJJiZ0= X-Google-Smtp-Source: ABdhPJw3D9Cea3oQdNZXqolgpCQxBYEZJux8udrg8S2MCBoCtHSdn1bEZYiaGOvQ46wk6cS0PMnXcQ== X-Received: by 2002:ac8:4c9b:: with SMTP id j27mr9695197qtv.132.1591897322351; Thu, 11 Jun 2020 10:42:02 -0700 (PDT) Received: from archbookpro.localdomain (CPE18593399858a-CM185933998587.cpe.net.cable.rogers.com. [174.112.65.113]) by smtp.gmail.com with ESMTPSA id f9sm3050703qtk.68.2020.06.11.10.42.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2020 10:42:01 -0700 (PDT) From: Denton Liu To: Git Mailing List Cc: Junio C Hamano , Taylor Blau , Johannes Sixt , Eric Sunshine , Jeff King Subject: [PATCH v3 1/4] lib-submodule-update: add space after function name Date: Thu, 11 Jun 2020 13:41:47 -0400 Message-Id: X-Mailer: git-send-email 2.27.0.132.g321788e831 In-Reply-To: References: MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In the shell scripts in this codebase, the usual style is to include a space between the function name and the (). Add these missing spaces to conform to the usual style of the code. Signed-off-by: Denton Liu --- t/lib-submodule-update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 1dd17fc03e..122554acd6 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -183,7 +183,7 @@ test_git_directory_is_unchanged () { ) } -test_git_directory_exists() { +test_git_directory_exists () { test -e ".git/modules/$1" && if test -f sub1/.git then @@ -309,7 +309,7 @@ test_submodule_content () { # Internal function; use test_submodule_switch() or # test_submodule_forced_switch() instead. -test_submodule_switch_common() { +test_submodule_switch_common () { command="$1" ######################### Appearing submodule ######################### # Switching to a commit letting a submodule appear creates empty dir ... @@ -629,7 +629,7 @@ test_submodule_forced_switch () { # Internal function; use test_submodule_switch_recursing_with_args() or # test_submodule_forced_switch_recursing_with_args() instead. -test_submodule_recursing_with_args_common() { +test_submodule_recursing_with_args_common () { command="$1" ######################### Appearing submodule ######################### From patchwork Thu Jun 11 17:41:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Denton Liu X-Patchwork-Id: 11600509 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1F77C1392 for ; Thu, 11 Jun 2020 17:42:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 06DE020836 for ; Thu, 11 Jun 2020 17:42:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S3gyNcj6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727105AbgFKRmH (ORCPT ); Thu, 11 Jun 2020 13:42:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727088AbgFKRmE (ORCPT ); Thu, 11 Jun 2020 13:42:04 -0400 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77234C03E96F for ; Thu, 11 Jun 2020 10:42:04 -0700 (PDT) Received: by mail-qk1-x744.google.com with SMTP id w3so6392538qkb.6 for ; Thu, 11 Jun 2020 10:42:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=y2y7mFB0gE9guERvhw+Ck90cqDpvNTnrJ078+V80sl4=; b=S3gyNcj6T9Cm8KLDzjorIrANRsrZqddo563QBE6+OBhkqDae9iX3x9a3fWvljGCvfj +dJwb1FGKPpwgFUXZVnrdQq+LWPkE2fBPh2UT5p+pkcMiGlrUurdpiNtBTN6fLlB2/P8 IO+SJWS5UI24P9TIADG9Z+WbWy2VzhfVD1YeCqB+yo78DJ06aZxUBq16rDzpjTFs5TZ8 43fJceM/4r2wp+yR42HB6l0tGt/3aril5n1tlV/btm8OaNIAISEHPnCxZ00r/qInJebR ZaBMmydu7L3idV9ROSWFs6AWQb2tC9Lsha3eq6uKuwUThkRJnpT6onqQFwPLs2iGnsET ja3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=y2y7mFB0gE9guERvhw+Ck90cqDpvNTnrJ078+V80sl4=; b=kVz9cmRe9NLox1zbZbT94QjTR+Z2LVN2+47QT1oHBFwy3ZhOc2rgjSsSWyy/PYWOcE oX+pxDlgl1YD3/JGL3J5r9KbEZPi0c34RW1RVp/T3j6vf8ICVKl2SyMvyquKE/dpqXp8 B/psCdfCNaBNQ60gZssBlcA6ZewCRr0C2eDAL4JQO5ijSGd8kpD4q4soEN491RwdJcKE adpPD5LAdW0elYRZOT1wiULhFLcTdA+LpLRQtUsMJi+9+hcclVR90xa3Bcy/bgk4SKMs ZVDz65rfjXmbI0EYMqJXpgaaEXm8j78dUQdp7D9jUqauB6xZ+cGcIYwdoSW0Mnf25wZO ujmA== X-Gm-Message-State: AOAM533D49ZynNzBWKptdbANW5JYg9XJUsk28dM9WKFCrP3jbNNrNJDH +CBq6D5YTBDRkh/ILh1EfOxW8XTMCD4= X-Google-Smtp-Source: ABdhPJzTP0Y3mSyxcf3VcTdwg8mJmi9VMJfuTggXDQodcGgNp7TLk1wqwvQ2VE20LI4m3WCFKttWkQ== X-Received: by 2002:a37:a8c1:: with SMTP id r184mr9176579qke.402.1591897323465; Thu, 11 Jun 2020 10:42:03 -0700 (PDT) Received: from archbookpro.localdomain (CPE18593399858a-CM185933998587.cpe.net.cable.rogers.com. [174.112.65.113]) by smtp.gmail.com with ESMTPSA id f9sm3050703qtk.68.2020.06.11.10.42.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2020 10:42:03 -0700 (PDT) From: Denton Liu To: Git Mailing List Cc: Junio C Hamano , Taylor Blau , Johannes Sixt , Eric Sunshine , Jeff King Subject: [PATCH v3 2/4] lib-submodule-update: consolidate --recurse-submodules Date: Thu, 11 Jun 2020 13:41:48 -0400 Message-Id: <16d0a3eb9ac8dcda701433a9e67cde5103949432.1591897173.git.liu.denton@gmail.com> X-Mailer: git-send-email 2.27.0.132.g321788e831 In-Reply-To: References: MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Both test_submodule_switch_recursing_with_args() and test_submodule_forced_switch_recursing_with_args() call the internal function test_submodule_recursing_with_args_common() with the final argument of `--recurse-submodules`. Consolidate this duplication by appending the argument in test_submodule_recursing_with_args_common(). Signed-off-by: Denton Liu --- t/lib-submodule-update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 122554acd6..bb36287803 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -630,7 +630,7 @@ test_submodule_forced_switch () { # Internal function; use test_submodule_switch_recursing_with_args() or # test_submodule_forced_switch_recursing_with_args() instead. test_submodule_recursing_with_args_common () { - command="$1" + command="$1 --recurse-submodules" ######################### Appearing submodule ######################### # Switching to a commit letting a submodule appear checks it out ... @@ -809,7 +809,7 @@ test_submodule_recursing_with_args_common () { # test_submodule_switch_recursing_with_args "$GIT_COMMAND" test_submodule_switch_recursing_with_args () { cmd_args="$1" - command="git $cmd_args --recurse-submodules" + command="git $cmd_args" test_submodule_recursing_with_args_common "$command" RESULTDS=success @@ -927,7 +927,7 @@ test_submodule_switch_recursing_with_args () { # away local changes in the superproject is allowed. test_submodule_forced_switch_recursing_with_args () { cmd_args="$1" - command="git $cmd_args --recurse-submodules" + command="git $cmd_args" test_submodule_recursing_with_args_common "$command" RESULT=success From patchwork Thu Jun 11 17:41:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Denton Liu X-Patchwork-Id: 11600513 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 04C0A90 for ; Thu, 11 Jun 2020 17:42:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CF2022084D for ; Thu, 11 Jun 2020 17:42:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b5Se4o8Z" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727775AbgFKRmJ (ORCPT ); Thu, 11 Jun 2020 13:42:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726109AbgFKRmG (ORCPT ); Thu, 11 Jun 2020 13:42:06 -0400 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F40D8C03E96F for ; Thu, 11 Jun 2020 10:42:05 -0700 (PDT) Received: by mail-qt1-x841.google.com with SMTP id y1so5166700qtv.12 for ; Thu, 11 Jun 2020 10:42:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=igzrfi3WnJfvDZtO6KqpeiQtuUtzj80ciMuQ43kGxlw=; b=b5Se4o8ZqbV5DblrRFf7OILcsTKNneuwCrPaxPjv0tA1kwuY11NTqThCqYLykkDp61 C1GFRj28KeSeD4sIgTCoRaXsHtBBNWr8MkH7TGGjqJrLfM/uaGaCDwwX2SphtBArqYW+ FOEY6zMNnsDMgaRoAl8pNyVaMKytV9DT1QLf5ooN6KfP2pbp5ry6uOZ7xs7loYuYGNQV MVln5be1wkidIZi5C1rq+lAsvwteLD8ZDWJWnN/lYQ1ceZ6n1m8WwR0jpwKnozsXQizJ CwcO1Thoe02F58ceKsvsgZrafxJtGid+uM0OMKea7hmaO75HhsE+4jZFumiiQ4bavPdZ BFZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=igzrfi3WnJfvDZtO6KqpeiQtuUtzj80ciMuQ43kGxlw=; b=uE4y46IrvVYR2UX5+7G98hZmg1ygE0F9uav0Lg+4wT+PmM1/MYAK+bOU6cLhRpaaOu li9Pio5vKXjbBgUbhAQ2tjaTB18gHoyoosW9YuAbhzWPGZWHqLsek2/IHLBPv25j6joG uOhX+PNs8tq4qVO5yaii4nIU0Bc5lJykUksyeszBwGtYxIKbcxW8qtqtmyU9oZ//7WxD Mn1OD/VkypLWk454AkJtxUXcsNBZ4zQ5BPKUijxCLCYku9qLIQ+j83KP4Oo9ue8AbABX 68uhWs+QKj9ax+CiXvqCyqe/KrqIEMiKNSv3skiSfk0hSJc7czoLev7oT/kEQZos5Dsd 7Hgg== X-Gm-Message-State: AOAM532D2CpraKqqmasMn1b1GZtZ0gM8az4AH52JtcBmNFv/MLcMS7uH n59GbAr49WBsa2xtYnHe6zFqS93TL10= X-Google-Smtp-Source: ABdhPJxoCGY6obWjrgZWBIP0GKE7Wan4ytb2S36DIDNGNdV+S5Of+CsxWscOHFdx+FwXpfQD1+rYFQ== X-Received: by 2002:aed:3123:: with SMTP id 32mr9995476qtg.366.1591897324776; Thu, 11 Jun 2020 10:42:04 -0700 (PDT) Received: from archbookpro.localdomain (CPE18593399858a-CM185933998587.cpe.net.cable.rogers.com. [174.112.65.113]) by smtp.gmail.com with ESMTPSA id f9sm3050703qtk.68.2020.06.11.10.42.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2020 10:42:04 -0700 (PDT) From: Denton Liu To: Git Mailing List Cc: Junio C Hamano , Taylor Blau , Johannes Sixt , Eric Sunshine , Jeff King Subject: [PATCH v3 3/4] lib-submodule-update: prepend "git" to $command Date: Thu, 11 Jun 2020 13:41:49 -0400 Message-Id: <09446be5b9e9d6291dae3531a93b588e0b7a1c3f.1591897173.git.liu.denton@gmail.com> X-Mailer: git-send-email 2.27.0.132.g321788e831 In-Reply-To: References: MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Since all invocations of test_submodule_forced_switch() are git commands, automatically prepend "git" before invoking test_submodule_switch_common(). Similarly, many invocations of test_submodule_switch() are also git commands so automatically prepend "git" before invoking test_submodule_switch_common() as well. Finally, for invocations of test_submodule_switch() that invoke a custom function, rename the old function to test_submodule_switch_func(). This is necessary because in a future commit, we will be adding some logic that needs to distinguish between an invocation of a plain git comamnd and an invocation of a test helper function. Signed-off-by: Denton Liu --- t/lib-submodule-update.sh | 14 +++++++++----- t/t1013-read-tree-submodule.sh | 4 ++-- t/t2013-checkout-submodule.sh | 4 ++-- t/t3426-rebase-submodule.sh | 4 ++-- t/t3512-cherry-pick-submodule.sh | 2 +- t/t3513-revert-submodule.sh | 2 +- t/t3906-stash-submodule.sh | 2 +- t/t4137-apply-submodule.sh | 4 ++-- t/t4255-am-submodule.sh | 4 ++-- t/t5572-pull-submodule.sh | 8 ++++---- t/t6041-bisect-submodule.sh | 2 +- t/t7112-reset-submodule.sh | 6 +++--- t/t7613-merge-submodule.sh | 8 ++++---- 13 files changed, 34 insertions(+), 30 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index bb36287803..7c3ba1be00 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -307,8 +307,8 @@ test_submodule_content () { # to protect the history! # -# Internal function; use test_submodule_switch() or -# test_submodule_forced_switch() instead. +# Internal function; use test_submodule_switch_func(), test_submodule_switch(), +# or test_submodule_forced_switch() instead. test_submodule_switch_common () { command="$1" ######################### Appearing submodule ######################### @@ -566,8 +566,8 @@ test_submodule_switch_common () { # # Do something here that updates the worktree and index to match target, # # but not any submodule directories. # } -# test_submodule_switch "my_func" -test_submodule_switch () { +# test_submodule_switch_func "my_func" +test_submodule_switch_func () { command="$1" test_submodule_switch_common "$command" @@ -587,12 +587,16 @@ test_submodule_switch () { ' } +test_submodule_switch () { + test_submodule_switch_func "git $1" +} + # Same as test_submodule_switch(), except that throwing away local changes in # the superproject is allowed. test_submodule_forced_switch () { command="$1" KNOWN_FAILURE_FORCED_SWITCH_TESTS=1 - test_submodule_switch_common "$command" + test_submodule_switch_common "git $command" # When forced, a file in the superproject does not prevent creating a # submodule of the same name. diff --git a/t/t1013-read-tree-submodule.sh b/t/t1013-read-tree-submodule.sh index 91a6fafcb4..b6df7444c0 100755 --- a/t/t1013-read-tree-submodule.sh +++ b/t/t1013-read-tree-submodule.sh @@ -12,8 +12,8 @@ test_submodule_switch_recursing_with_args "read-tree -u -m" test_submodule_forced_switch_recursing_with_args "read-tree -u --reset" -test_submodule_switch "git read-tree -u -m" +test_submodule_switch "read-tree -u -m" -test_submodule_forced_switch "git read-tree -u --reset" +test_submodule_forced_switch "read-tree -u --reset" test_done diff --git a/t/t2013-checkout-submodule.sh b/t/t2013-checkout-submodule.sh index 8f86b5f4b2..b2bdd1fcb4 100755 --- a/t/t2013-checkout-submodule.sh +++ b/t/t2013-checkout-submodule.sh @@ -68,8 +68,8 @@ test_submodule_switch_recursing_with_args "checkout" test_submodule_forced_switch_recursing_with_args "checkout -f" -test_submodule_switch "git checkout" +test_submodule_switch "checkout" -test_submodule_forced_switch "git checkout -f" +test_submodule_forced_switch "checkout -f" test_done diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh index a2bba04ba9..788605ccc0 100755 --- a/t/t3426-rebase-submodule.sh +++ b/t/t3426-rebase-submodule.sh @@ -20,7 +20,7 @@ git_rebase () { git rebase "$1" } -test_submodule_switch "git_rebase" +test_submodule_switch_func "git_rebase" git_rebase_interactive () { git status -su >expect && @@ -38,7 +38,7 @@ git_rebase_interactive () { git rebase -i "$1" } -test_submodule_switch "git_rebase_interactive" +test_submodule_switch_func "git_rebase_interactive" test_expect_success 'rebase interactive ignores modified submodules' ' test_when_finished "rm -rf super sub" && diff --git a/t/t3512-cherry-pick-submodule.sh b/t/t3512-cherry-pick-submodule.sh index bd78287841..6ece1d8573 100755 --- a/t/t3512-cherry-pick-submodule.sh +++ b/t/t3512-cherry-pick-submodule.sh @@ -7,7 +7,7 @@ test_description='cherry-pick can handle submodules' KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "git cherry-pick" +test_submodule_switch "cherry-pick" test_expect_success 'unrelated submodule/file conflict is ignored' ' test_create_repo sub && diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh index 5e39fcdb66..95a7f64471 100755 --- a/t/t3513-revert-submodule.sh +++ b/t/t3513-revert-submodule.sh @@ -26,6 +26,6 @@ git_revert () { } KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -test_submodule_switch "git_revert" +test_submodule_switch_func "git_revert" test_done diff --git a/t/t3906-stash-submodule.sh b/t/t3906-stash-submodule.sh index b93d1d74da..6a7e801ca0 100755 --- a/t/t3906-stash-submodule.sh +++ b/t/t3906-stash-submodule.sh @@ -19,7 +19,7 @@ git_stash () { KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES=1 KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -test_submodule_switch "git_stash" +test_submodule_switch_func "git_stash" setup_basic () { test_when_finished "rm -rf main sub" && diff --git a/t/t4137-apply-submodule.sh b/t/t4137-apply-submodule.sh index a9bd40a6d0..b645e303a0 100755 --- a/t/t4137-apply-submodule.sh +++ b/t/t4137-apply-submodule.sh @@ -9,12 +9,12 @@ apply_index () { git diff --ignore-submodules=dirty "..$1" | git apply --index - } -test_submodule_switch "apply_index" +test_submodule_switch_func "apply_index" apply_3way () { git diff --ignore-submodules=dirty "..$1" | git apply --3way - } -test_submodule_switch "apply_3way" +test_submodule_switch_func "apply_3way" test_done diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh index 0ba8194403..1b179d5f45 100755 --- a/t/t4255-am-submodule.sh +++ b/t/t4255-am-submodule.sh @@ -9,14 +9,14 @@ am () { git format-patch --stdout --ignore-submodules=dirty "..$1" | git am - } -test_submodule_switch "am" +test_submodule_switch_func "am" am_3way () { git format-patch --stdout --ignore-submodules=dirty "..$1" | git am --3way - } KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "am_3way" +test_submodule_switch_func "am_3way" test_expect_success 'setup diff.submodule' ' test_commit one && diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh index f916729a12..f911bf631e 100755 --- a/t/t5572-pull-submodule.sh +++ b/t/t5572-pull-submodule.sh @@ -17,21 +17,21 @@ git_pull () { } # pulls without conflicts -test_submodule_switch "git_pull" +test_submodule_switch_func "git_pull" git_pull_ff () { reset_branch_to_HEAD "$1" && git pull --ff } -test_submodule_switch "git_pull_ff" +test_submodule_switch_func "git_pull_ff" git_pull_ff_only () { reset_branch_to_HEAD "$1" && git pull --ff-only } -test_submodule_switch "git_pull_ff_only" +test_submodule_switch_func "git_pull_ff_only" git_pull_noff () { reset_branch_to_HEAD "$1" && @@ -40,7 +40,7 @@ git_pull_noff () { KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "git_pull_noff" +test_submodule_switch_func "git_pull_noff" test_expect_success 'pull --recurse-submodule setup' ' test_create_repo child && diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh index 62b8a2e7bb..0e0cdf638d 100755 --- a/t/t6041-bisect-submodule.sh +++ b/t/t6041-bisect-submodule.sh @@ -27,6 +27,6 @@ git_bisect () { git bisect bad $BAD } -test_submodule_switch "git_bisect" +test_submodule_switch_func "git_bisect" test_done diff --git a/t/t7112-reset-submodule.sh b/t/t7112-reset-submodule.sh index a1cb9ff858..8741b665c9 100755 --- a/t/t7112-reset-submodule.sh +++ b/t/t7112-reset-submodule.sh @@ -13,10 +13,10 @@ test_submodule_switch_recursing_with_args "reset --keep" test_submodule_forced_switch_recursing_with_args "reset --hard" -test_submodule_switch "git reset --keep" +test_submodule_switch "reset --keep" -test_submodule_switch "git reset --merge" +test_submodule_switch "reset --merge" -test_submodule_forced_switch "git reset --hard" +test_submodule_forced_switch "reset --hard" test_done diff --git a/t/t7613-merge-submodule.sh b/t/t7613-merge-submodule.sh index d1e9fcc781..04bf4be7d7 100755 --- a/t/t7613-merge-submodule.sh +++ b/t/t7613-merge-submodule.sh @@ -6,14 +6,14 @@ test_description='merge can handle submodules' . "$TEST_DIRECTORY"/lib-submodule-update.sh # merges without conflicts -test_submodule_switch "git merge" +test_submodule_switch "merge" -test_submodule_switch "git merge --ff" +test_submodule_switch "merge --ff" -test_submodule_switch "git merge --ff-only" +test_submodule_switch "merge --ff-only" KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "git merge --no-ff" +test_submodule_switch "merge --no-ff" test_done From patchwork Thu Jun 11 17:41:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Denton Liu X-Patchwork-Id: 11600517 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 42374618 for ; Thu, 11 Jun 2020 17:42:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1E56D20836 for ; Thu, 11 Jun 2020 17:42:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G2QWuHU/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727812AbgFKRmK (ORCPT ); Thu, 11 Jun 2020 13:42:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727088AbgFKRmI (ORCPT ); Thu, 11 Jun 2020 13:42:08 -0400 Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B100C08C5C1 for ; Thu, 11 Jun 2020 10:42:08 -0700 (PDT) Received: by mail-qv1-xf32.google.com with SMTP id cv17so2984438qvb.13 for ; Thu, 11 Jun 2020 10:42:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3Rx4fbE1WJbONSTNGOLpLssvATQ97wiKhEbnVywPxfc=; b=G2QWuHU/ngSlMlZg3xYb1AfWwTP5MuPbE1LXaqm8XNWhFlYTJdgJ0isuOL2Jc27l/s LgZYqx9KOWc/8H/mUy/N9gA/GNKaJ8egGa73mKIE0KT8PDVOj2bMNHGiMB76uGmhhuZj pq7hB5+s6SFx8Y3r6LPgvAnokLJ42Pk3BVCadRRP/pKpNR0NpkZl1zI0PImpKf5Ub2pc bHkfv+bA5Jc7bTAEQ3GuiQQqNWwZq+2cUvSZsRj/Cl88LvcEH3Tlsh3QofAXHK9zw/Mf BzjuH+MqZFa4Jr6XZNl4/Z/QY0GnRWUOqU7OeWST48d4mqi4N/5hMDjw+miuInXWTn+0 OXBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3Rx4fbE1WJbONSTNGOLpLssvATQ97wiKhEbnVywPxfc=; b=syzTWXHqOPZvNX6mIR2L3OxurTcir/vbEAlaG98s+VLsYr7alYgi5EbuzRIb8oALbz EONcJgjruZCX0buAkIyzSKKvsz9YVNHshcFHqJhjnqJaKh1sGcul6T5jgVk7KqfLV6n3 9RjNdyuxr4B2cBvBMx/OfC+Q0JMTixwQfbg6IPgMcujKqfu1RQDhFKALqRoY1XwRxXTD mX2l3ZJKkeWhI7wTkEVOYi2Ny2uPZ7AfZBvrhSgH+UzguYfW+8Apf+BL6Q3vEZ205CSM omNSA5De9xq2E0dr2U6gkwcSsmXHMa/B45eYuCxznDujj/dRF6NT4Uime0No4pSYxCTH 7LDg== X-Gm-Message-State: AOAM533QiizNt456gERn3tfVfWv1xOncm+aQtgOmf14Cmv3aLA8kLqUE 4/1znqsK1Yg4d9i/IH5iOQl8DrTYPkM= X-Google-Smtp-Source: ABdhPJwFuDmUnckqrrtQWXkYydhDgQAywEa74KXWVDvjWGoAQKjU6GKFmjoFp+ambK98b/lh0TV8lQ== X-Received: by 2002:ad4:5485:: with SMTP id q5mr8968329qvy.62.1591897326193; Thu, 11 Jun 2020 10:42:06 -0700 (PDT) Received: from archbookpro.localdomain (CPE18593399858a-CM185933998587.cpe.net.cable.rogers.com. [174.112.65.113]) by smtp.gmail.com with ESMTPSA id f9sm3050703qtk.68.2020.06.11.10.42.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2020 10:42:05 -0700 (PDT) From: Denton Liu To: Git Mailing List Cc: Junio C Hamano , Taylor Blau , Johannes Sixt , Eric Sunshine , Jeff King Subject: [PATCH v3 4/4] lib-submodule-update: use callbacks in test_submodule_switch_common() Date: Thu, 11 Jun 2020 13:41:50 -0400 Message-Id: <74e6086da451a4ce2ac52b04a2399ef332d61047.1591897173.git.liu.denton@gmail.com> X-Mailer: git-send-email 2.27.0.132.g321788e831 In-Reply-To: References: MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org When we run a test helper function in test_submodule_switch_common(), we sometimes specify a whole helper function as the $command. When we do this, in some test cases, we just mark the whole function with `test_must_fail`. However, it's possible that the helper function might fail earlier or later than expected due to an introduced bug. If this happens, then the test case will still report as passing but it should really be marked as failing since it didn't actually display the intended behaviour. Instead of invoking $command as one monolithic helper function, break it up into three parts: 1. $command which is always a git command. 2. $before which is a callback function that runs just prior to $command. 3. $after which is a callback function that runs just after $command. If the command requires a filename argument, specify it as `\$arg` since that variable will be set and the whole $command string will be eval'd. Unfortunately, there is no way to get rid of the eval as some of the commands are passed (such as the `git pull` tests) require that no additional arguments are passed so we must have some mechanism for the caller to specify whether or not it wants the filename argument. The $before and $after callback functions will be passed the filename as the first arg. These callback functions are optional and, if missing, will be replaced with `true`. Also, in the case where we have a `test_must_fail` test, $after will not be executed, similar to how the helper functions currently behave when the git command fails and exits the &&-chain. Finally, as an added bonus, `test_must_fail` will only run on $command which is guaranteed to be a git command. An alternate design was considered where the $OVERWRITING_FAIL is set from the test_submodule_switch_common() function and passed to the helper function. This approach was considered too difficult to understand due to the fact that using a signalling magic environment variable might be too indirect. Signed-off-by: Denton Liu --- t/lib-submodule-update.sh | 95 +++++++++++++++++++++++++++++-------- t/t3426-rebase-submodule.sh | 10 ++-- t/t3513-revert-submodule.sh | 10 ++-- t/t3906-stash-submodule.sh | 10 ++-- t/t4137-apply-submodule.sh | 12 ++--- t/t4255-am-submodule.sh | 12 ++--- t/t5572-pull-submodule.sh | 28 ++--------- t/t6041-bisect-submodule.sh | 10 ++-- 8 files changed, 108 insertions(+), 79 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 7c3ba1be00..988d85bd7d 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -310,7 +310,20 @@ test_submodule_content () { # Internal function; use test_submodule_switch_func(), test_submodule_switch(), # or test_submodule_forced_switch() instead. test_submodule_switch_common () { - command="$1" + command="$1" # should be a git command + before="$2" + after="$3" + + if test -z "$before" + then + before=true + fi + + if test -z "$after" + then + after=true + fi + ######################### Appearing submodule ######################### # Switching to a commit letting a submodule appear creates empty dir ... if test "$KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES" = 1 @@ -326,7 +339,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t add_sub1 origin/add_sub1 && - $command add_sub1 && + arg=add_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/add_sub1 && test_dir_is_empty sub1 && git submodule update --init --recursive && @@ -341,7 +357,10 @@ test_submodule_switch_common () { cd submodule_update && mkdir sub1 && git branch -t add_sub1 origin/add_sub1 && - $command add_sub1 && + arg=add_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/add_sub1 && test_dir_is_empty sub1 && git submodule update --init --recursive && @@ -356,7 +375,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 && - $command replace_file_with_sub1 && + arg=replace_file_with_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/replace_file_with_sub1 && test_dir_is_empty sub1 && git submodule update --init --recursive && @@ -380,7 +402,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 && - $command replace_directory_with_sub1 && + arg=replace_directory_with_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/replace_directory_with_sub1 && test_dir_is_empty sub1 && git submodule update --init --recursive && @@ -402,7 +427,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t remove_sub1 origin/remove_sub1 && - $command remove_sub1 && + arg=remove_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/remove_sub1 && test_submodule_content sub1 origin/add_sub1 ) @@ -415,7 +443,10 @@ test_submodule_switch_common () { cd submodule_update && git branch -t remove_sub1 origin/remove_sub1 && replace_gitfile_with_git_dir sub1 && - $command remove_sub1 && + arg=remove_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/remove_sub1 && test_git_directory_is_unchanged sub1 && test_submodule_content sub1 origin/add_sub1 @@ -443,7 +474,9 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory && - test_must_fail $command replace_sub1_with_directory && + arg=replace_sub1_with_directory && + $before "$arg" && + eval test_must_fail $command && test_superproject_content origin/add_sub1 && test_submodule_content sub1 origin/add_sub1 ) @@ -456,7 +489,9 @@ test_submodule_switch_common () { cd submodule_update && git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory && replace_gitfile_with_git_dir sub1 && - test_must_fail $command replace_sub1_with_directory && + arg=replace_sub1_with_directory && + $before "$arg" && + eval test_must_fail $command && test_superproject_content origin/add_sub1 && test_git_directory_is_unchanged sub1 && test_submodule_content sub1 origin/add_sub1 @@ -470,7 +505,9 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t replace_sub1_with_file origin/replace_sub1_with_file && - test_must_fail $command replace_sub1_with_file && + arg=replace_sub1_with_file && + $before "$arg" && + eval test_must_fail $command && test_superproject_content origin/add_sub1 && test_submodule_content sub1 origin/add_sub1 ) @@ -484,7 +521,9 @@ test_submodule_switch_common () { cd submodule_update && git branch -t replace_sub1_with_file origin/replace_sub1_with_file && replace_gitfile_with_git_dir sub1 && - test_must_fail $command replace_sub1_with_file && + arg=replace_sub1_with_file && + $before "$arg" && + eval test_must_fail $command && test_superproject_content origin/add_sub1 && test_git_directory_is_unchanged sub1 && test_submodule_content sub1 origin/add_sub1 @@ -508,7 +547,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t modify_sub1 origin/modify_sub1 && - $command modify_sub1 && + arg=modify_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/modify_sub1 && test_submodule_content sub1 origin/add_sub1 && git submodule update && @@ -523,7 +565,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t invalid_sub1 origin/invalid_sub1 && - $command invalid_sub1 && + arg=invalid_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/invalid_sub1 && test_submodule_content sub1 origin/add_sub1 && test_must_fail git submodule update && @@ -538,7 +583,10 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t valid_sub1 origin/valid_sub1 && - $command valid_sub1 && + arg=valid_sub1 && + $before "$arg" && + eval $command && + $after "$arg" && test_superproject_content origin/valid_sub1 && test_dir_is_empty sub1 && git submodule update --init --recursive && @@ -568,8 +616,10 @@ test_submodule_switch_common () { # } # test_submodule_switch_func "my_func" test_submodule_switch_func () { - command="$1" - test_submodule_switch_common "$command" + command="git $1" + before="$2" + after="$3" + test_submodule_switch_common "$command" "$before" "$after" # An empty directory does not prevent the creation of a submodule of # the same name, but a file does. @@ -580,7 +630,9 @@ test_submodule_switch_func () { cd submodule_update && git branch -t add_sub1 origin/add_sub1 && >sub1 && - test_must_fail $command add_sub1 && + arg=add_sub1 && + $before "$arg" && + eval test_must_fail $command && test_superproject_content origin/no_submodule && test_must_be_empty sub1 ) @@ -588,15 +640,15 @@ test_submodule_switch_func () { } test_submodule_switch () { - test_submodule_switch_func "git $1" + test_submodule_switch_func "$1 \$arg" } # Same as test_submodule_switch(), except that throwing away local changes in # the superproject is allowed. test_submodule_forced_switch () { - command="$1" + command="git $1 \$arg" KNOWN_FAILURE_FORCED_SWITCH_TESTS=1 - test_submodule_switch_common "git $command" + test_submodule_switch_common "$command" # When forced, a file in the superproject does not prevent creating a # submodule of the same name. @@ -607,7 +659,8 @@ test_submodule_forced_switch () { cd submodule_update && git branch -t add_sub1 origin/add_sub1 && >sub1 && - $command add_sub1 && + arg=add_sub1 && + eval $command && test_superproject_content origin/add_sub1 && test_dir_is_empty sub1 ) diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh index 788605ccc0..d31e6487bd 100755 --- a/t/t3426-rebase-submodule.sh +++ b/t/t3426-rebase-submodule.sh @@ -16,11 +16,10 @@ git_rebase () { git revert HEAD && git status -su >actual && ls -1pR * >>actual && - test_cmp expect actual && - git rebase "$1" + test_cmp expect actual } -test_submodule_switch_func "git_rebase" +test_submodule_switch_func "rebase \$arg" "git_rebase" git_rebase_interactive () { git status -su >expect && @@ -34,11 +33,10 @@ git_rebase_interactive () { ls -1pR * >>actual && test_cmp expect actual && set_fake_editor && - echo "fake-editor.sh" >.git/info/exclude && - git rebase -i "$1" + echo "fake-editor.sh" >.git/info/exclude } -test_submodule_switch_func "git_rebase_interactive" +test_submodule_switch_func "rebase -i \$arg" "git_rebase_interactive" test_expect_success 'rebase interactive ignores modified submodules' ' test_when_finished "rm -rf super sub" && diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh index 95a7f64471..994cdc40f0 100755 --- a/t/t3513-revert-submodule.sh +++ b/t/t3513-revert-submodule.sh @@ -11,11 +11,13 @@ test_description='revert can handle submodules' # first so we can restore the work tree test setup after doing the checkout # and revert. We test here that the restored work tree content is identical # to that at the beginning. The last revert is then tested by the framework. -git_revert () { +git_revert_before () { git status -su >expect && ls -1pR * >>expect && - tar cf "$TRASH_DIRECTORY/tmp.tar" * && - git checkout "$1" && + tar cf "$TRASH_DIRECTORY/tmp.tar" * +} + +git_revert_after () { git revert HEAD && rm -rf * && tar xf "$TRASH_DIRECTORY/tmp.tar" && @@ -26,6 +28,6 @@ git_revert () { } KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -test_submodule_switch_func "git_revert" +test_submodule_switch_func "checkout \$arg" "git_revert_before" "git_revert_after" test_done diff --git a/t/t3906-stash-submodule.sh b/t/t3906-stash-submodule.sh index 6a7e801ca0..358a625124 100755 --- a/t/t3906-stash-submodule.sh +++ b/t/t3906-stash-submodule.sh @@ -5,10 +5,12 @@ test_description='stash can handle submodules' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-submodule-update.sh -git_stash () { +git_stash_before () { git status -su >expect && - ls -1pR * >>expect && - git read-tree -u -m "$1" && + ls -1pR * >>expect +} + +git_stash_after () { git stash && git status -su >actual && ls -1pR * >>actual && @@ -19,7 +21,7 @@ git_stash () { KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES=1 KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -test_submodule_switch_func "git_stash" +test_submodule_switch_func "read-tree -u -m \$arg" "git_stash_before" "git_stash_after" setup_basic () { test_when_finished "rm -rf main sub" && diff --git a/t/t4137-apply-submodule.sh b/t/t4137-apply-submodule.sh index b645e303a0..fe5ebeaa41 100755 --- a/t/t4137-apply-submodule.sh +++ b/t/t4137-apply-submodule.sh @@ -5,16 +5,12 @@ test_description='git apply handling submodules' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-submodule-update.sh -apply_index () { - git diff --ignore-submodules=dirty "..$1" | git apply --index - +create_diff () { + git diff --ignore-submodules=dirty "..$1" >diff } -test_submodule_switch_func "apply_index" +test_submodule_switch_func "apply --index diff" "create_diff" -apply_3way () { - git diff --ignore-submodules=dirty "..$1" | git apply --3way - -} - -test_submodule_switch_func "apply_3way" +test_submodule_switch_func "apply --3way diff" "create_diff" test_done diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh index 1b179d5f45..5305280dfd 100755 --- a/t/t4255-am-submodule.sh +++ b/t/t4255-am-submodule.sh @@ -5,18 +5,14 @@ test_description='git am handling submodules' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-submodule-update.sh -am () { - git format-patch --stdout --ignore-submodules=dirty "..$1" | git am - +create_patch () { + git format-patch --stdout --ignore-submodules=dirty "..$1" >patch } -test_submodule_switch_func "am" - -am_3way () { - git format-patch --stdout --ignore-submodules=dirty "..$1" | git am --3way - -} +test_submodule_switch_func "am patch" "create_patch" KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch_func "am_3way" +test_submodule_switch_func "am --3way patch" "create_patch" test_expect_success 'setup diff.submodule' ' test_commit one && diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh index f911bf631e..3b37853537 100755 --- a/t/t5572-pull-submodule.sh +++ b/t/t5572-pull-submodule.sh @@ -11,36 +11,16 @@ reset_branch_to_HEAD () { git branch --set-upstream-to="origin/$1" "$1" } -git_pull () { - reset_branch_to_HEAD "$1" && - git pull -} - # pulls without conflicts -test_submodule_switch_func "git_pull" +test_submodule_switch_func "pull" "reset_branch_to_HEAD" -git_pull_ff () { - reset_branch_to_HEAD "$1" && - git pull --ff -} +test_submodule_switch_func "pull --ff" "reset_branch_to_HEAD" -test_submodule_switch_func "git_pull_ff" - -git_pull_ff_only () { - reset_branch_to_HEAD "$1" && - git pull --ff-only -} - -test_submodule_switch_func "git_pull_ff_only" - -git_pull_noff () { - reset_branch_to_HEAD "$1" && - git pull --no-ff -} +test_submodule_switch_func "pull --ff-only" "reset_branch_to_HEAD" KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch_func "git_pull_noff" +test_submodule_switch_func "pull --no-ff" "reset_branch_to_HEAD" test_expect_success 'pull --recurse-submodule setup' ' test_create_repo child && diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh index 0e0cdf638d..b99e81d55d 100755 --- a/t/t6041-bisect-submodule.sh +++ b/t/t6041-bisect-submodule.sh @@ -5,12 +5,14 @@ test_description='bisect can handle submodules' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-submodule-update.sh -git_bisect () { +git_bisect_before () { git status -su >expect && ls -1pR * >>expect && tar cf "$TRASH_DIRECTORY/tmp.tar" * && - GOOD=$(git rev-parse --verify HEAD) && - git checkout "$1" && + GOOD=$(git rev-parse --verify HEAD) +} + +git_bisect_after () { echo "foo" >bar && git add bar && git commit -m "bisect bad" && @@ -27,6 +29,6 @@ git_bisect () { git bisect bad $BAD } -test_submodule_switch_func "git_bisect" +test_submodule_switch_func "checkout \$arg" "git_bisect_before" "git_bisect_after" test_done