threads / discuss / 42146

[PATCHv2 1/3] git-p4 tests: cd to / before running python

Subject: [PATCHv2 1/3] git-p4 tests: cd to / before running python

## tl;dr

6 messages between Apr 26, 2016 and Apr 26, 2016.

replies: 5people: 2as markdown or json

Luke Diamand· Apr 26, 2016, 07:50 UTC · lore

[PATCHv2 0/3] git-p4: support python3 in the tests

Updates to my patches to allow the git-p4 tests to work with python3.

Incorporates suggestions from Junio to just switch to "/" and to use $PYTHON_PATH.

Luke Diamand (3):
  git-p4 tests: cd to / before running python
  git-p4 tests: work with python3 as well as python2
  git-p4 tests: time_in_seconds should use $PYTHON_PATH
 t/lib-git-p4.sh            | 7 ++++---
 t/t9802-git-p4-filetype.sh | 6 +++---
 2 files changed, 7 insertions(+), 6 deletions(-)
-- 
2.8.1.218.gd2cea43.dirty
Luke Diamand· Apr 26, 2016, 07:50 UTC · re: Luke Diamand · lore

The python one-liner for getting the current time prints out error messages if the current directory is deleted while it is running if using python3.

Avoid these messages by switching to "/" before running it.
This problem does not arise if using python2.
Signed-off-by: Luke Diamand <luke@diamand.org>
---
 t/lib-git-p4.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index f9ae1d7..724bc43 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -50,7 +50,7 @@ native_path() {
 # at runtime (e.g. via NTP). The 'clock_gettime(CLOCK_MONOTONIC)'
 # function could fix that but it is not in Python until 3.3.
 time_in_seconds() {
-	python -c 'import time; print int(time.time())'
+	(cd / && python -c 'import time; print(int(time.time()))')
 }
 
 # Try to pick a unique port: guess a large number, then hope
-- 
2.8.1.218.gd2cea43.dirty
Luke Diamand· Apr 26, 2016, 07:51 UTC · re: Luke Diamand · lore

[PATCHv2 2/3] git-p4 tests: work with python3 as well as python2

Update the git-p4 tests so that they work with both Python2 and Python3.

We have to be explicit about the difference between Unicode text strings (Python3 default) and raw binary strings which will be exchanged with Perforce.

Additionally, print always takes braces in Python3.
Signed-off-by: Luke Diamand <luke@diamand.org>
---
 t/lib-git-p4.sh            | 5 +++--
 t/t9802-git-p4-filetype.sh | 6 +++---
 2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 724bc43..7393ee2 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -198,9 +198,10 @@ marshal_dump() {
 	cat >"$TRASH_DIRECTORY/marshal-dump.py" <<-EOF &&
 	import marshal
 	import sys
+	instream = getattr(sys.stdin, 'buffer', sys.stdin)
 	for i in range($line):
-	    d = marshal.load(sys.stdin)
-	print d['$what']
+	    d = marshal.load(instream)
+	print(d[b'$what'].decode('utf-8'))
 	EOF
 	"$PYTHON_PATH" "$TRASH_DIRECTORY/marshal-dump.py"
 }
diff --git a/t/t9802-git-p4-filetype.sh b/t/t9802-git-p4-filetype.sh
index 66d3fc9..eb9a8ed 100755
--- a/t/t9802-git-p4-filetype.sh
+++ b/t/t9802-git-p4-filetype.sh
@@ -223,12 +223,12 @@ build_gendouble() {
 	import sys
 	import struct
 
-	s = struct.pack(">LL18s",
+	s = struct.pack(b">LL18s",
 			0x00051607,  # AppleDouble
 			0x00020000,  # version 2
-			""           # pad to 26 bytes
+			b""          # pad to 26 bytes
 	)
-	sys.stdout.write(s)
+	getattr(sys.stdout, 'buffer', sys.stdout).write(s)
 	EOF
 }
 
-- 
2.8.1.218.gd2cea43.dirty
Junio C Hamano· Apr 26, 2016, 17:48 UTC · re: Luke Diamand · lore

Re: [PATCHv2 2/3] git-p4 tests: work with python3 as well as python2

Luke Diamand <luke@diamand.org> writes:
Show 8 quoted lines
> Update the git-p4 tests so that they work with both
> Python2 and Python3.
>
> We have to be explicit about the difference between
> Unicode text strings (Python3 default) and raw binary
> strings which will be exchanged with Perforce.
>
> Additionally, print always takes braces in Python3.

s/braces/parentheses/, I think (can locally tweak if you say so--in which case no need to resend).

Show 43 quoted lines
>
> Signed-off-by: Luke Diamand <luke@diamand.org>
> ---
>  t/lib-git-p4.sh            | 5 +++--
>  t/t9802-git-p4-filetype.sh | 6 +++---
>  2 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
> index 724bc43..7393ee2 100644
> --- a/t/lib-git-p4.sh
> +++ b/t/lib-git-p4.sh
> @@ -198,9 +198,10 @@ marshal_dump() {
>  	cat >"$TRASH_DIRECTORY/marshal-dump.py" <<-EOF &&
>  	import marshal
>  	import sys
> +	instream = getattr(sys.stdin, 'buffer', sys.stdin)
>  	for i in range($line):
> -	    d = marshal.load(sys.stdin)
> -	print d['$what']
> +	    d = marshal.load(instream)
> +	print(d[b'$what'].decode('utf-8'))
>  	EOF
>  	"$PYTHON_PATH" "$TRASH_DIRECTORY/marshal-dump.py"
>  }
> diff --git a/t/t9802-git-p4-filetype.sh b/t/t9802-git-p4-filetype.sh
> index 66d3fc9..eb9a8ed 100755
> --- a/t/t9802-git-p4-filetype.sh
> +++ b/t/t9802-git-p4-filetype.sh
> @@ -223,12 +223,12 @@ build_gendouble() {
>  	import sys
>  	import struct
>  
> -	s = struct.pack(">LL18s",
> +	s = struct.pack(b">LL18s",
>  			0x00051607,  # AppleDouble
>  			0x00020000,  # version 2
> -			""           # pad to 26 bytes
> +			b""          # pad to 26 bytes
>  	)
> -	sys.stdout.write(s)
> +	getattr(sys.stdout, 'buffer', sys.stdout).write(s)
>  	EOF
>  }
Luke Diamand· Apr 26, 2016, 20:03 UTC · re: Junio C Hamano · lore

Re: [PATCHv2 2/3] git-p4 tests: work with python3 as well as python2

On 26 April 2016 at 18:48, Junio C Hamano <gitster@pobox.com> wrote:
Show 13 quoted lines
> Luke Diamand <luke@diamand.org> writes:
>
>> Update the git-p4 tests so that they work with both
>> Python2 and Python3.
>>
>> We have to be explicit about the difference between
>> Unicode text strings (Python3 default) and raw binary
>> strings which will be exchanged with Perforce.
>>
>> Additionally, print always takes braces in Python3.
>
> s/braces/parentheses/, I think (can locally tweak if you say so--in
> which case no need to resend).
Please do so, thanks!
Luke
Luke Diamand· Apr 26, 2016, 07:51 UTC · re: Luke Diamand · lore

[PATCHv2 3/3] git-p4 tests: time_in_seconds should use $PYTHON_PATH

The time_in_seconds script should use $PYTHON_PATH, rather than just hard-coded python, so that users can override which version gets used, as is done for other python invocations.

Signed-off-by: Luke Diamand <luke@diamand.org>
---
 t/lib-git-p4.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 7393ee2..012d40e 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -50,7 +50,7 @@ native_path() {
 # at runtime (e.g. via NTP). The 'clock_gettime(CLOCK_MONOTONIC)'
 # function could fix that but it is not in Python until 3.3.
 time_in_seconds() {
-	(cd / && python -c 'import time; print(int(time.time()))')
+	(cd / && "$PYTHON_PATH" -c 'import time; print(int(time.time()))')
 }
 
 # Try to pick a unique port: guess a large number, then hope
-- 
2.8.1.218.gd2cea43.dirty

← back to recent threads