From: Stefan Beller <sbeller@google.com>
To: jrnieder@gmail.com, gitster@pobox.com, Jens.Lehmann@web.de
Cc: git@vger.kernel.org, pclouds@gmail.com,
Stefan Beller <sbeller@google.com>
Subject: [PATCH 1/7] submodule--helper: add valid-label-name
Date: Tue, 10 May 2016 17:59:51 -0700 [thread overview]
Message-ID: <1462928397-1708-2-git-send-email-sbeller@google.com> (raw)
In-Reply-To: <1462928397-1708-1-git-send-email-sbeller@google.com>
We could allow more than just alphanumeric and dash characters
for submodule labels. As a precaution we'll first allow only this
subset and later on we can extend it once we have more experience
with them.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
builtin/submodule--helper.c | 30 ++++++++++++++++++++++++++-
t/t7412-submodule--helper.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 78 insertions(+), 1 deletion(-)
create mode 100755 t/t7412-submodule--helper.sh
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 7f0941d..d3f4684 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -831,6 +831,33 @@ static int update_clone(int argc, const char **argv, const char *prefix)
return 0;
}
+static int submodule_valid_label_name(const char *label)
+{
+ if (!label || !strlen(label))
+ return 0;
+
+ if (!isalnum(*label))
+ return 0;
+
+ while (*label) {
+ if (!(isalnum(*label) ||
+ *label == '-'))
+ return 0;
+ label++;
+ }
+
+ return 1;
+}
+
+static int valid_label_name(int argc, const char **argv, const char *prefix)
+{
+ if (argc == 2 && submodule_valid_label_name(argv[1]))
+ return 0;
+
+ die(_("submodule label must start with an alphanumeric character"
+ "and must contain alphanumeric characters or dashes only."));
+}
+
struct cmd_struct {
const char *cmd;
int (*fn)(int, const char **, const char *);
@@ -843,7 +870,8 @@ static struct cmd_struct commands[] = {
{"update-clone", update_clone},
{"resolve-relative-url", resolve_relative_url},
{"resolve-relative-url-test", resolve_relative_url_test},
- {"init", module_init}
+ {"init", module_init},
+ {"valid-label-name", valid_label_name}
};
int cmd_submodule__helper(int argc, const char **argv, const char *prefix)
diff --git a/t/t7412-submodule--helper.sh b/t/t7412-submodule--helper.sh
new file mode 100755
index 0000000..3af315c
--- /dev/null
+++ b/t/t7412-submodule--helper.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+test_description='Basic plumbing support of submodule--helper
+
+This test verifies the submodule--helper plumbing command used to implement
+git-submodule.
+'
+
+. ./test-lib.sh
+
+
+test_expect_success 'valid-label-name tests empty label' '
+ test_must_fail git submodule--helper valid-label-name 2>actual &&
+ test_i18ngrep alphanumeric actual &&
+ test_must_fail git submodule--helper valid-label-name "" 2>actual &&
+ test_i18ngrep alphanumeric actual
+'
+
+test_expect_success 'valid-label-name tests correct label asdf' '
+ git submodule--helper valid-label-name asdf 2>actual &&
+ test_must_be_empty actual
+'
+
+test_expect_success 'valid-label-name tests correct label a' '
+ git submodule--helper valid-label-name a 2>actual &&
+ test_must_be_empty actual
+'
+
+test_expect_success 'valid-label-name tests correct label a-b' '
+ git submodule--helper valid-label-name a-b 2>actual &&
+ test_must_be_empty actual
+'
+
+test_expect_success 'valid-label-name fails with multiple arguments' '
+ test_must_fail git submodule--helper valid-label-name a b 2>actual &&
+ test_i18ngrep alphanumeric actual
+'
+
+test_expect_success 'valid-label-name fails with white spaced arguments' '
+ test_must_fail git submodule--helper valid-label-name "a b" 2>actual &&
+ test_i18ngrep alphanumeric actual
+'
+
+test_expect_success 'valid-label-name fails with utf8 characters' '
+ test_must_fail git submodule--helper valid-label-name ☺ 2>actual &&
+ test_i18ngrep alphanumeric actual
+'
+
+test_done
--
2.8.0.35.g58985d9.dirty
next prev parent reply other threads:[~2016-05-11 1:00 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-11 0:59 [PATCH 0/7] submodule groups Stefan Beller
2016-05-11 0:59 ` Stefan Beller [this message]
2016-05-11 1:11 ` [PATCH 1/7] submodule--helper: add valid-label-name Junio C Hamano
2016-05-11 0:59 ` [PATCH 2/7] submodule add: label submodules if asked to Stefan Beller
2016-05-11 1:13 ` Junio C Hamano
2016-05-11 17:26 ` Stefan Beller
2016-05-11 0:59 ` [PATCH 3/7] submodule-config: keep labels around Stefan Beller
2016-05-11 1:15 ` Junio C Hamano
2016-05-11 17:41 ` Stefan Beller
2016-05-11 21:28 ` Junio C Hamano
2016-05-11 21:39 ` Stefan Beller
2016-05-11 0:59 ` [PATCH 4/7] submodule-config: check if a submodule is in a group Stefan Beller
2016-05-11 1:19 ` Junio C Hamano
2016-05-11 0:59 ` [PATCH 5/7] submodule--helper module_list_compute: allow label or name arguments Stefan Beller
2016-05-11 1:29 ` Junio C Hamano
2016-05-11 2:24 ` Junio C Hamano
2016-05-11 0:59 ` [PATCH 6/7] submodule update: learn partial initialization Stefan Beller
2016-05-11 0:59 ` [PATCH 7/7] clone: allow specification of submodules to be cloned Stefan Beller
2016-05-11 2:08 ` [PATCH 0/7] submodule groups Junio C Hamano
2016-05-11 23:07 ` Stefan Beller
2016-05-11 23:39 ` Junio C Hamano
2016-05-11 23:48 ` Junio C Hamano
2016-05-11 23:57 ` Stefan Beller
2016-05-12 0:00 ` Junio C Hamano
2016-05-12 4:33 ` Junio C Hamano
2016-05-12 5:50 ` Junio C Hamano
2016-05-12 15:32 ` Stefan Beller
2016-05-12 15:58 ` Junio C Hamano
2016-05-12 16:35 ` Stefan Beller
2016-05-12 16:53 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1462928397-1708-2-git-send-email-sbeller@google.com \
--to=sbeller@google.com \
--cc=Jens.Lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.