[PATCH 4/4] add a test for push options

2016-07-14 Thread Stefan Beller
The functions `mk_repo_pair` as well as `test_refs` are borrowed from
t5543-atomic-push, with additional hooks installed.

Signed-off-by: Stefan Beller 
---
 t/t5545-push-options.sh | 103 
 1 file changed, 103 insertions(+)
 create mode 100755 t/t5545-push-options.sh

diff --git a/t/t5545-push-options.sh b/t/t5545-push-options.sh
new file mode 100755
index 000..ea813b9
--- /dev/null
+++ b/t/t5545-push-options.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+test_description='pushing to a repository using push options'
+
+. ./test-lib.sh
+
+mk_repo_pair () {
+   rm -rf workbench upstream &&
+   test_create_repo upstream &&
+   test_create_repo workbench &&
+   (
+   cd upstream &&
+   git config receive.denyCurrentBranch warn &&
+   mkdir -p .git/hooks &&
+   cat >.git/hooks/pre-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/pre-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/pre-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/pre-receive
+
+   cat >.git/hooks/post-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/post-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/post-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/post-receive
+   ) &&
+   (
+   cd workbench &&
+   git remote add up ../upstream
+   )
+}
+
+# Compare the ref ($1) in upstream with a ref value from workbench ($2)
+# i.e. test_refs second HEAD@{2}
+test_refs () {
+   test $# = 2 &&
+   git -C upstream rev-parse --verify "$1" >expect &&
+   git -C workbench rev-parse --verify "$2" >actual &&
+   test_cmp expect actual
+}
+
+test_expect_success 'one push option works for a single branch' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions true &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf up master
+   ) &&
+   test_refs master master &&
+   echo "asdf" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_expect_success 'push option denied by remote' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions false &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   test_must_fail git push --push-option=asdf up master
+   ) &&
+   test_refs master HEAD@{1}
+'
+
+test_expect_success 'two push options work' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions true &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf --push-option="more structured 
text" up master
+   ) &&
+   test_refs master master &&
+   printf "asdf\nmore structured text\n" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_done
-- 
2.9.0.247.gf748855.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/4] add a test for push options

2016-07-14 Thread Stefan Beller
The functions `mk_repo_pair` as well as `test_refs` are borrowed from
t5543-atomic-push, with additional hooks installed.

Signed-off-by: Stefan Beller 
---
 t/t5545-push-options.sh | 103 
 1 file changed, 103 insertions(+)
 create mode 100755 t/t5545-push-options.sh

diff --git a/t/t5545-push-options.sh b/t/t5545-push-options.sh
new file mode 100755
index 000..ea813b9
--- /dev/null
+++ b/t/t5545-push-options.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+test_description='pushing to a repository using push options'
+
+. ./test-lib.sh
+
+mk_repo_pair () {
+   rm -rf workbench upstream &&
+   test_create_repo upstream &&
+   test_create_repo workbench &&
+   (
+   cd upstream &&
+   git config receive.denyCurrentBranch warn &&
+   mkdir -p .git/hooks &&
+   cat >.git/hooks/pre-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/pre-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/pre-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/pre-receive
+
+   cat >.git/hooks/post-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/post-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/post-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/post-receive
+   ) &&
+   (
+   cd workbench &&
+   git remote add up ../upstream
+   )
+}
+
+# Compare the ref ($1) in upstream with a ref value from workbench ($2)
+# i.e. test_refs second HEAD@{2}
+test_refs () {
+   test $# = 2 &&
+   git -C upstream rev-parse --verify "$1" >expect &&
+   git -C workbench rev-parse --verify "$2" >actual &&
+   test_cmp expect actual
+}
+
+test_expect_success 'one push option works for a single branch' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions true &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf up master
+   ) &&
+   test_refs master master &&
+   echo "asdf" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_expect_success 'push option denied by remote' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions false &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   test_must_fail git push --push-option=asdf up master
+   ) &&
+   test_refs master HEAD@{1}
+'
+
+test_expect_success 'two push options work' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions true &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf --push-option="more structured 
text" up master
+   ) &&
+   test_refs master master &&
+   printf "asdf\nmore structured text\n" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_done
-- 
2.9.0.247.gf748855.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/4] add a test for push options

2016-07-08 Thread Stefan Beller
The functions `mk_repo_pair` as well as `test_refs` are borrowed from
t5543-atomic-push, with additional hooks installed.

Signed-off-by: Stefan Beller 
---
 t/t5545-push-options.sh | 101 
 1 file changed, 101 insertions(+)
 create mode 100755 t/t5545-push-options.sh

diff --git a/t/t5545-push-options.sh b/t/t5545-push-options.sh
new file mode 100755
index 000..8dd3c8e
--- /dev/null
+++ b/t/t5545-push-options.sh
@@ -0,0 +1,101 @@
+#!/bin/sh
+
+test_description='pushing to a repository using push options'
+
+. ./test-lib.sh
+
+mk_repo_pair () {
+   rm -rf workbench upstream &&
+   test_create_repo upstream &&
+   test_create_repo workbench &&
+   (
+   cd upstream &&
+   git config receive.denyCurrentBranch warn &&
+   mkdir -p .git/hooks &&
+   cat >.git/hooks/pre-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/pre-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/pre-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/pre-receive
+
+   cat >.git/hooks/post-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/post-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/post-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/post-receive
+   ) &&
+   (
+   cd workbench &&
+   git remote add up ../upstream
+   )
+}
+
+# Compare the ref ($1) in upstream with a ref value from workbench ($2)
+# i.e. test_refs second HEAD@{2}
+test_refs () {
+   test $# = 2 &&
+   git -C upstream rev-parse --verify "$1" >expect &&
+   git -C workbench rev-parse --verify "$2" >actual &&
+   test_cmp expect actual
+}
+
+test_expect_success 'one push option works for a single branch' '
+   mk_repo_pair &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf up master
+   ) &&
+   test_refs master master &&
+   echo "asdf" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_expect_success 'push option denied by remote' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions false &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   test_must_fail git push --push-option=asdf up master
+   ) &&
+   test_refs master HEAD@{1}
+'
+
+test_expect_success 'two push options work' '
+   mk_repo_pair &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf --push-option="more structured 
text" up master
+   ) &&
+   test_refs master master &&
+   printf "asdf\nmore structured text\n" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_done
-- 
2.9.0.247.g176c4f7

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] add a test for push options

2016-07-07 Thread Stefan Beller
On Thu, Jul 7, 2016 at 1:01 PM, Junio C Hamano  wrote:
> On Thu, Jul 7, 2016 at 12:51 PM, Junio C Hamano  wrote:
>> Stefan Beller  writes:
>>
>>> The functions `mk_repo_pair` as well as `test_refs` are borrowed from
>>> t5543-atomic-push, with additional hooks installed.
>>>
>>> Signed-off-by: Stefan Beller 
>>> ---
>>>  t/t5544-push-options.sh | 101 
>>> 
>>>  1 file changed, 101 insertions(+)
>>>  create mode 100755 t/t5544-push-options.sh
>>
>> FYI:
>>
>> Applying: add a test for push options
>> Test number t5544 already taken
>>
>
> I'll just move it over to t5545; no need to resend.

I'd resend because of the the first three patches anyway,
so I can include a renamed version of tests, too.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] add a test for push options

2016-07-07 Thread Junio C Hamano
On Thu, Jul 7, 2016 at 12:51 PM, Junio C Hamano  wrote:
> Stefan Beller  writes:
>
>> The functions `mk_repo_pair` as well as `test_refs` are borrowed from
>> t5543-atomic-push, with additional hooks installed.
>>
>> Signed-off-by: Stefan Beller 
>> ---
>>  t/t5544-push-options.sh | 101 
>> 
>>  1 file changed, 101 insertions(+)
>>  create mode 100755 t/t5544-push-options.sh
>
> FYI:
>
> Applying: add a test for push options
> Test number t5544 already taken
>

I'll just move it over to t5545; no need to resend.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] add a test for push options

2016-07-07 Thread Junio C Hamano
Stefan Beller  writes:

> The functions `mk_repo_pair` as well as `test_refs` are borrowed from
> t5543-atomic-push, with additional hooks installed.
>
> Signed-off-by: Stefan Beller 
> ---
>  t/t5544-push-options.sh | 101 
> 
>  1 file changed, 101 insertions(+)
>  create mode 100755 t/t5544-push-options.sh

FYI:

Applying: add a test for push options
Test number t5544 already taken

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/4] add a test for push options

2016-07-06 Thread Stefan Beller
The functions `mk_repo_pair` as well as `test_refs` are borrowed from
t5543-atomic-push, with additional hooks installed.

Signed-off-by: Stefan Beller 
---
 t/t5544-push-options.sh | 101 
 1 file changed, 101 insertions(+)
 create mode 100755 t/t5544-push-options.sh

diff --git a/t/t5544-push-options.sh b/t/t5544-push-options.sh
new file mode 100755
index 000..8dd3c8e
--- /dev/null
+++ b/t/t5544-push-options.sh
@@ -0,0 +1,101 @@
+#!/bin/sh
+
+test_description='pushing to a repository using push options'
+
+. ./test-lib.sh
+
+mk_repo_pair () {
+   rm -rf workbench upstream &&
+   test_create_repo upstream &&
+   test_create_repo workbench &&
+   (
+   cd upstream &&
+   git config receive.denyCurrentBranch warn &&
+   mkdir -p .git/hooks &&
+   cat >.git/hooks/pre-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/pre-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/pre-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/pre-receive
+
+   cat >.git/hooks/post-receive <<-'EOF' &&
+   #!/bin/sh
+   if test -n "$GIT_PUSH_OPTION_COUNT"; then
+   i=0
+   >hooks/post-receive.push_options
+   while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"; do
+   eval "value=\$GIT_PUSH_OPTION_$i"
+   echo $value >>hooks/post-receive.push_options
+   i=$((i + 1))
+   done
+   fi
+   EOF
+   chmod u+x .git/hooks/post-receive
+   ) &&
+   (
+   cd workbench &&
+   git remote add up ../upstream
+   )
+}
+
+# Compare the ref ($1) in upstream with a ref value from workbench ($2)
+# i.e. test_refs second HEAD@{2}
+test_refs () {
+   test $# = 2 &&
+   git -C upstream rev-parse --verify "$1" >expect &&
+   git -C workbench rev-parse --verify "$2" >actual &&
+   test_cmp expect actual
+}
+
+test_expect_success 'one push option works for a single branch' '
+   mk_repo_pair &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf up master
+   ) &&
+   test_refs master master &&
+   echo "asdf" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_expect_success 'push option denied by remote' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions false &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   test_must_fail git push --push-option=asdf up master
+   ) &&
+   test_refs master HEAD@{1}
+'
+
+test_expect_success 'two push options work' '
+   mk_repo_pair &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf --push-option="more structured 
text" up master
+   ) &&
+   test_refs master master &&
+   printf "asdf\nmore structured text\n" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_done
-- 
2.9.0.141.gd59d3e9.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/4] add a test for push options

2016-06-29 Thread Stefan Beller
The functions `mk_repo_pair` as well as `test_refs` are borrowed from
t5543-atomic-push, with additional hooks installed.

Signed-off-by: Stefan Beller 
---
 t/t5544-push-options.sh | 85 +
 1 file changed, 85 insertions(+)
 create mode 100755 t/t5544-push-options.sh

diff --git a/t/t5544-push-options.sh b/t/t5544-push-options.sh
new file mode 100755
index 000..49d5f80
--- /dev/null
+++ b/t/t5544-push-options.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+test_description='pushing to a repository using push options'
+
+. ./test-lib.sh
+
+mk_repo_pair () {
+   rm -rf workbench upstream &&
+   test_create_repo upstream &&
+   test_create_repo workbench &&
+   (
+   cd upstream &&
+   git config receive.denyCurrentBranch warn &&
+   mkdir -p .git/hooks &&
+   cat >.git/hooks/pre-receive <<-'EOF' &&
+   #!/bin/sh
+   cat $GIT_PUSH_OPTION_FILE >hooks/pre-receive.push_options
+   EOF
+   chmod u+x .git/hooks/pre-receive
+
+   cat >.git/hooks/post-receive <<-'EOF' &&
+   #!/bin/sh
+   cat $GIT_PUSH_OPTION_FILE >hooks/post-receive.push_options
+   EOF
+   chmod u+x .git/hooks/post-receive
+   ) &&
+   (
+   cd workbench &&
+   git remote add up ../upstream
+   )
+}
+
+# Compare the ref ($1) in upstream with a ref value from workbench ($2)
+# i.e. test_refs second HEAD@{2}
+test_refs () {
+   test $# = 2 &&
+   git -C upstream rev-parse --verify "$1" >expect &&
+   git -C workbench rev-parse --verify "$2" >actual &&
+   test_cmp expect actual
+}
+
+test_expect_success 'one push option works for a single branch' '
+   mk_repo_pair &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf up master
+   ) &&
+   test_refs master master &&
+   echo "asdf" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_expect_success 'push option denied by remote' '
+   mk_repo_pair &&
+   git -C upstream config receive.advertisePushOptions false &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   test_must_fail git push --push-option=asdf up master
+   ) &&
+   test_refs master HEAD@{1}
+'
+
+test_expect_success 'two push options work' '
+   mk_repo_pair &&
+   (
+   cd workbench &&
+   test_commit one &&
+   git push --mirror up &&
+   test_commit two &&
+   git push --push-option=asdf --push-option="more structured 
text" up master
+   ) &&
+   test_refs master master &&
+   printf "asdf\nmore structured text\n" >expect &&
+   test_cmp expect upstream/.git/hooks/pre-receive.push_options &&
+   test_cmp expect upstream/.git/hooks/post-receive.push_options
+'
+
+test_done
-- 
2.9.0.141.gdd65b60

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html