test-lib: extend test_decode_color to handle more color codes
Enhance the test_decode_color function to handle all common color codes, including background colors and escapes that contain multiple codes. This change necessitates changing <WHITE> to <BOLD>, so update t4034 as well. This change is necessary for the next commit in order to test background colors properly. Signed-off-by: Kevin Ballard <kevin@sb.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Kevin Ballard
					Kevin Ballard
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							5b57413cb3
						
					
				
				
					commit
					a471833d51
				
			| @ -35,10 +35,10 @@ aeff = aeff * ( aaa ) | ||||
| EOF | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1,3 +1,7 @@<RESET> | ||||
| <RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET> | ||||
|  | ||||
| @ -122,10 +122,10 @@ test_expect_success '--word-diff=plain --no-color' ' | ||||
| ' | ||||
|  | ||||
| cat > expect <<EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1,3 +1,7 @@<RESET> | ||||
| <RED>[-h(4)-]<RESET><GREEN>{+h(4),hh[44]+}<RESET> | ||||
|  | ||||
| @ -143,10 +143,10 @@ test_expect_success '--word-diff=plain --color' ' | ||||
| ' | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1 +1 @@<RESET> | ||||
| <RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET> | ||||
| <CYAN>@@ -3,0 +4,4 @@<RESET> <RESET><MAGENTA>a = b + c<RESET> | ||||
| @ -163,10 +163,10 @@ test_expect_success 'word diff without context' ' | ||||
| ' | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1,3 +1,7 @@<RESET> | ||||
| h(4),<GREEN>hh<RESET>[44] | ||||
|  | ||||
| @ -199,10 +199,10 @@ test_expect_success 'option overrides .gitattributes' ' | ||||
| ' | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1,3 +1,7 @@<RESET> | ||||
| h(4)<GREEN>,hh[44]<RESET> | ||||
|  | ||||
| @ -231,10 +231,10 @@ test_expect_success 'command-line overrides config' ' | ||||
| ' | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1,3 +1,7 @@<RESET> | ||||
| h(4),<GREEN>{+hh+}<RESET>[44] | ||||
|  | ||||
| @ -260,10 +260,10 @@ test_expect_success 'remove diff driver regex' ' | ||||
| ' | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 330b04f..5ed8eff 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 330b04f..5ed8eff 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1,3 +1,7 @@<RESET> | ||||
| h(4),<GREEN>hh[44<RESET>] | ||||
|  | ||||
| @ -282,10 +282,10 @@ echo 'aaa (aaa)' > pre | ||||
| echo 'aaa (aaa) aaa' > post | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index c29453b..be22f37 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index c29453b..be22f37 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1 +1 @@<RESET> | ||||
| aaa (aaa) <GREEN>aaa<RESET> | ||||
| EOF | ||||
| @ -301,10 +301,10 @@ echo '(:' > pre | ||||
| echo '(' > post | ||||
|  | ||||
| cat > expect <<\EOF | ||||
| <WHITE>diff --git a/pre b/post<RESET> | ||||
| <WHITE>index 289cb9d..2d06f37 100644<RESET> | ||||
| <WHITE>--- a/pre<RESET> | ||||
| <WHITE>+++ b/post<RESET> | ||||
| <BOLD>diff --git a/pre b/post<RESET> | ||||
| <BOLD>index 289cb9d..2d06f37 100644<RESET> | ||||
| <BOLD>--- a/pre<RESET> | ||||
| <BOLD>+++ b/post<RESET> | ||||
| <CYAN>@@ -1 +1 @@<RESET> | ||||
| (<RED>:<RESET> | ||||
| EOF | ||||
|  | ||||
| @ -238,14 +238,47 @@ test_set_editor () { | ||||
| } | ||||
|  | ||||
| test_decode_color () { | ||||
| 	sed	-e 's/.\[1m/<WHITE>/g' \ | ||||
| 		-e 's/.\[31m/<RED>/g' \ | ||||
| 		-e 's/.\[32m/<GREEN>/g' \ | ||||
| 		-e 's/.\[33m/<YELLOW>/g' \ | ||||
| 		-e 's/.\[34m/<BLUE>/g' \ | ||||
| 		-e 's/.\[35m/<MAGENTA>/g' \ | ||||
| 		-e 's/.\[36m/<CYAN>/g' \ | ||||
| 		-e 's/.\[m/<RESET>/g' | ||||
| 	awk ' | ||||
| 		function name(n) { | ||||
| 			if (n == 0) return "RESET"; | ||||
| 			if (n == 1) return "BOLD"; | ||||
| 			if (n == 30) return "BLACK"; | ||||
| 			if (n == 31) return "RED"; | ||||
| 			if (n == 32) return "GREEN"; | ||||
| 			if (n == 33) return "YELLOW"; | ||||
| 			if (n == 34) return "BLUE"; | ||||
| 			if (n == 35) return "MAGENTA"; | ||||
| 			if (n == 36) return "CYAN"; | ||||
| 			if (n == 37) return "WHITE"; | ||||
| 			if (n == 40) return "BLACK"; | ||||
| 			if (n == 41) return "BRED"; | ||||
| 			if (n == 42) return "BGREEN"; | ||||
| 			if (n == 43) return "BYELLOW"; | ||||
| 			if (n == 44) return "BBLUE"; | ||||
| 			if (n == 45) return "BMAGENTA"; | ||||
| 			if (n == 46) return "BCYAN"; | ||||
| 			if (n == 47) return "BWHITE"; | ||||
| 		} | ||||
| 		{ | ||||
| 			while (match($0, /\x1b\[[0-9;]*m/) != 0) { | ||||
| 				printf "%s<", substr($0, 1, RSTART-1); | ||||
| 				codes = substr($0, RSTART+2, RLENGTH-3); | ||||
| 				if (length(codes) == 0) | ||||
| 					printf "%s", name(0) | ||||
| 				else { | ||||
| 					n = split(codes, ary, ";"); | ||||
| 					sep = ""; | ||||
| 					for (i = 1; i <= n; i++) { | ||||
| 						printf "%s%s", sep, name(ary[i]); | ||||
| 						sep = ";" | ||||
| 					} | ||||
| 				} | ||||
| 				printf ">"; | ||||
| 				$0 = substr($0, RSTART + RLENGTH, length($0) - RSTART - RLENGTH + 1); | ||||
| 			} | ||||
| 			print | ||||
| 		} | ||||
| 	' | ||||
| } | ||||
|  | ||||
| q_to_nul () { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user