summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-25 21:52:17 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-25 21:52:17 +0100
commit970f5d39f27717b1a529b7b250a8ed7c3f791949 (patch)
treeeeffdb5265801c039fb9597b5545d17adcff7aba
parente295609be20c1b065d6b489214d70e171ae49234 (diff)
downloadvim-git-970f5d39f27717b1a529b7b250a8ed7c3f791949.tar.gz
patch 8.1.0821: xxd "usage" output and other arguments not testedv8.1.0821
Problem: Xxd "usage" output and other arguments not tested. Solution: Add a test to trigger the usage output in various ways. Fix uncovered problem.
-rw-r--r--src/testdir/test_xxd.vim79
-rw-r--r--src/version.c2
-rw-r--r--src/xxd/xxd.c8
3 files changed, 66 insertions, 23 deletions
diff --git a/src/testdir/test_xxd.vim b/src/testdir/test_xxd.vim
index 4538790f3..b1a7b0888 100644
--- a/src/testdir/test_xxd.vim
+++ b/src/testdir/test_xxd.vim
@@ -20,7 +20,7 @@ endfunc
func Test_xxd()
call PrepareBuffer(range(1,30))
set ff=unix
- w XXDfile
+ w! XXDfile
" Test 1: simple, filter the result through xxd
let s:test = 1
@@ -39,15 +39,19 @@ func Test_xxd()
exe '%!' . s:xxd_cmd . ' -r'
call assert_equal(map(range(1,30), {v,c -> string(c)}), getline(1,'$'), s:Mess(s:test))
- " Test 3: Skip the first 30 bytes
+ " Test 3: Skip the first 0x30 bytes
let s:test += 1
- exe '%!' . s:xxd_cmd . ' -s 0x30 %'
- call assert_equal(expected[3:], getline(1,'$'), s:Mess(s:test))
+ for arg in ['-s 0x30', '-s0x30', '-s+0x30', '-skip 0x030', '-seek 0x30', '-seek +0x30 --']
+ exe '%!' . s:xxd_cmd . ' ' . arg . ' %'
+ call assert_equal(expected[3:], getline(1,'$'), s:Mess(s:test))
+ endfor
" Test 4: Skip the first 30 bytes
let s:test += 1
- exe '%!' . s:xxd_cmd . ' -s -0x31 %'
- call assert_equal(expected[2:], getline(1,'$'), s:Mess(s:test))
+ for arg in ['-s -0x31', '-s-0x31']
+ exe '%!' . s:xxd_cmd . ' ' . arg . ' %'
+ call assert_equal(expected[2:], getline(1,'$'), s:Mess(s:test))
+ endfor
" Test 5: Print 120 bytes as continuous hexdump with 20 octets per line
let s:test += 1
@@ -56,7 +60,7 @@ func Test_xxd()
if has('win32') && !filereadable(fname)
let fname = '../../doc/xxd.1'
endif
- exe '0r! ' . s:xxd_cmd . ' -l 120 -ps -c 20 ' . fname
+ exe '0r! ' . s:xxd_cmd . ' -l 120 -ps -c20 ' . fname
$d
let expected = [
\ '2e54482058584420312022417567757374203139',
@@ -69,10 +73,12 @@ func Test_xxd()
" Test 6: Print the date from xxd.1
let s:test += 1
- %d
- exe '0r! ' . s:xxd_cmd . ' -s 0x36 -l 13 -c 13 ' . fname
- $d
- call assert_equal('00000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996', getline(1), s:Mess(s:test))
+ for arg in ['-l 13', '-l13', '-len 13']
+ %d
+ exe '0r! ' . s:xxd_cmd . ' -s 0x36 -l 13 -cols 13 ' . fname
+ $d
+ call assert_equal('00000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996', getline(1), s:Mess(s:test))
+ endfor
" Test 7: Print C include
let s:test += 1
@@ -87,14 +93,16 @@ func Test_xxd()
" Test 8: Print C include capitalized
let s:test += 1
- call writefile(['TESTabcd09'], 'XXDfile')
- %d
- exe '0r! ' . s:xxd_cmd . ' -i -C XXDfile'
- $d
- let expected = ['unsigned char XXDFILE[] = {',
- \ ' 0x54, 0x45, 0x53, 0x54, 0x61, 0x62, 0x63, 0x64, 0x30, 0x39, 0x0a', '};',
- \ 'unsigned int XXDFILE_LEN = 11;']
- call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
+ for arg in ['-C', '-capitalize']
+ call writefile(['TESTabcd09'], 'XXDfile')
+ %d
+ exe '0r! ' . s:xxd_cmd . ' -i ' . arg . ' XXDfile'
+ $d
+ let expected = ['unsigned char XXDFILE[] = {',
+ \ ' 0x54, 0x45, 0x53, 0x54, 0x61, 0x62, 0x63, 0x64, 0x30, 0x39, 0x0a', '};',
+ \ 'unsigned int XXDFILE_LEN = 11;']
+ call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
+ endfor
" Test 9: Create a file with containing a single 'A'
let s:test += 1
@@ -110,6 +118,39 @@ func Test_xxd()
call PrepareBuffer(readfile('XXDfile')[0])
call assert_equal('A', getline(1), s:Mess(s:test))
call delete('XXDfile')
+
+ " Test 10: group with 4 octets
+ let s:test += 1
+ for arg in ['-g 4', '-group 4', '-g4']
+ call writefile(['TESTabcd09'], 'XXDfile')
+ %d
+ exe '0r! ' . s:xxd_cmd . ' ' . arg . ' XXDfile'
+ $d
+ let expected = ['00000000: 54455354 61626364 30390a TESTabcd09.']
+ call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
+ call delete('XXDfile')
+ endfor
+
+ " TODO:
+ " -o -offset
+
%d
bw!
endfunc
+
+" Various ways with wrong arguments that trigger the usage output.
+func Test_xxd_usage()
+ for arg in ['-c', '-g', '-o', '-s', '-l', '-X', 'one two three']
+ new
+ exe 'r! ' . s:xxd_cmd . ' ' . arg
+ call assert_match("Usage:", join(getline(1, 3)))
+ bwipe!
+ endfor
+endfunc
+
+func Test_xxd_version()
+ new
+ exe 'r! ' . s:xxd_cmd . ' -v'
+ call assert_match("xxd V1.10 .* by Juergen Weigert", join(getline(1, 3)))
+ bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index e999fd19f..ad2f5e7a7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -788,6 +788,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 821,
+/**/
820,
/**/
819,
diff --git a/src/xxd/xxd.c b/src/xxd/xxd.c
index d102db451..d7a556a31 100644
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -508,10 +508,10 @@ main(int argc, char *argv[])
}
else if (!STRNCMP(pp, "-c", 2))
{
- if (pp[2] && STRNCMP("ols", pp + 2, 3))
- cols = (int)strtol(pp + 2, NULL, 0);
- else if (pp[2] && STRNCMP("apitalize", pp + 2, 9))
+ if (pp[2] && !STRNCMP("apitalize", pp + 2, 9))
capitalize = 1;
+ else if (pp[2] && STRNCMP("ols", pp + 2, 3))
+ cols = (int)strtol(pp + 2, NULL, 0);
else
{
if (!argv[2])
@@ -523,7 +523,7 @@ main(int argc, char *argv[])
}
else if (!STRNCMP(pp, "-g", 2))
{
- if (pp[2] && STRNCMP("group", pp + 2, 5))
+ if (pp[2] && STRNCMP("roup", pp + 2, 4))
octspergrp = (int)strtol(pp + 2, NULL, 0);
else
{