/ Hex Artifact Content
Login

Artifact 58a56653795d1787f4ed661f9da7da153b0dc3f9:


0000: 23 20 32 30 31 31 20 4d 61 79 20 31 39 0a 23 0a  # 2011 May 19.#.
0010: 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73  # The author dis
0020: 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74  claims copyright
0030: 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20   to this source 
0040: 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20  code.  In place 
0050: 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f 74  of.# a legal not
0060: 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62  ice, here is a b
0070: 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20 20  lessing:.#.#    
0080: 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20  May you do good 
0090: 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23 20  and not evil..# 
00a0: 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20     May you find 
00b0: 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20  forgiveness for 
00c0: 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72  yourself and for
00d0: 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20 20  give others..#  
00e0: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
00f0: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
0100: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
0110: 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a 2a  ou give..#.#****
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69 6c 65 20  ***.# This file 
0170: 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65 67 72 65  implements regre
0180: 73 73 69 6f 6e 20 74 65 73 74 73 20 66 6f 72 20  ssion tests for 
0190: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20  SQLite library. 
01a0: 53 70 65 63 69 66 69 63 61 6c 6c 79 2c 0a 23 20  Specifically,.# 
01b0: 69 74 20 74 65 73 74 73 20 74 68 61 74 20 74 69  it tests that ti
01c0: 63 6b 65 74 20 5b 32 64 31 61 35 63 36 37 64 66  cket [2d1a5c67df
01d0: 63 32 33 36 33 65 34 34 66 32 39 64 39 62 62 64  c2363e44f29d9bbd
01e0: 35 37 66 37 33 33 31 38 35 31 33 39 30 61 5d 20  57f7331851390a] 
01f0: 68 61 73 0a 23 20 62 65 65 6e 20 72 65 73 6f 6c  has.# been resol
0200: 76 65 64 2e 0a 23 0a 23 20 0a 23 0a 0a 73 65 74  ved..#.# .#..set
0210: 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64   testdir [file d
0220: 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73  irname $argv0].s
0230: 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74  ource $testdir/t
0240: 65 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 74 65  ester.tcl.set te
0250: 73 74 70 72 65 66 69 78 20 74 6b 74 2d 32 64 31  stprefix tkt-2d1
0260: 61 35 63 36 37 64 0a 0a 69 66 63 61 70 61 62 6c  a5c67d..ifcapabl
0270: 65 20 7b 21 76 74 61 62 7d 20 7b 66 69 6e 69 73  e {!vtab} {finis
0280: 68 5f 74 65 73 74 3b 20 72 65 74 75 72 6e 7d 0a  h_test; return}.
0290: 69 66 20 7b 5b 77 61 6c 5f 69 73 5f 63 61 70 61  if {[wal_is_capa
02a0: 62 6c 65 5d 3d 3d 30 7d 20 7b 66 69 6e 69 73 68  ble]==0} {finish
02b0: 5f 74 65 73 74 3b 20 72 65 74 75 72 6e 7d 0a 69  _test; return}.i
02c0: 66 20 7b 21 5b 77 61 6c 5f 69 73 5f 6f 6b 5d 7d  f {![wal_is_ok]}
02d0: 20 7b 66 69 6e 69 73 68 5f 74 65 73 74 3b 20 72   {finish_test; r
02e0: 65 74 75 72 6e 7d 0a 0a 66 6f 72 20 7b 73 65 74  eturn}..for {set
02f0: 20 69 69 20 31 7d 20 7b 24 69 69 3c 3d 31 30 7d   ii 1} {$ii<=10}
0300: 20 7b 69 6e 63 72 20 69 69 7d 20 7b 0a 20 20 64   {incr ii} {.  d
0310: 6f 5f 74 65 73 74 20 74 6b 74 2d 32 64 31 61 35  o_test tkt-2d1a5
0320: 63 36 37 64 2e 31 2e 24 69 69 20 7b 0a 20 20 20  c67d.1.$ii {.   
0330: 20 64 62 20 63 6c 6f 73 65 0a 20 20 20 20 66 6f   db close.    fo
0340: 72 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e 64  rcedelete test.d
0350: 62 20 74 65 73 74 2e 64 62 2d 77 61 6c 0a 20 20  b test.db-wal.  
0360: 20 20 73 71 6c 69 74 65 33 20 64 62 20 74 65 73    sqlite3 db tes
0370: 74 2e 64 62 0a 20 20 20 20 64 62 20 65 76 61 6c  t.db.    db eval
0380: 20 22 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73   "PRAGMA cache_s
0390: 69 7a 65 3d 24 3a 3a 69 69 22 0a 20 20 20 20 64  ize=$::ii".    d
03a0: 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 20 20 50  b eval {.      P
03b0: 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  RAGMA journal_mo
03c0: 64 65 3d 57 41 4c 3b 0a 20 20 20 20 20 20 43 52  de=WAL;.      CR
03d0: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c  EATE TABLE t1(a,
03e0: 62 29 3b 0a 20 20 20 20 20 20 43 52 45 41 54 45  b);.      CREATE
03f0: 20 49 4e 44 45 58 20 74 31 62 20 4f 4e 20 74 31   INDEX t1b ON t1
0400: 28 62 29 3b 0a 20 20 20 20 20 20 43 52 45 41 54  (b);.      CREAT
0410: 45 20 54 41 42 4c 45 20 74 32 28 78 2c 79 20 55  E TABLE t2(x,y U
0420: 4e 49 51 55 45 29 3b 0a 20 20 20 20 20 20 49 4e  NIQUE);.      IN
0430: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c  SERT INTO t2 VAL
0440: 55 45 53 28 33 2c 34 29 3b 0a 20 20 20 20 20 20  UES(3,4);.      
0450: 42 45 47 49 4e 3b 0a 20 20 20 20 20 20 49 4e 53  BEGIN;.      INS
0460: 45 52 54 20 49 4e 54 4f 20 74 31 28 61 2c 62 29  ERT INTO t1(a,b)
0470: 20 56 41 4c 55 45 53 28 31 2c 32 29 3b 0a 20 20   VALUES(1,2);.  
0480: 20 20 20 20 53 45 4c 45 43 54 20 27 41 27 2c 20      SELECT 'A', 
0490: 2a 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20  * FROM t2 WHERE 
04a0: 79 3d 34 3b 0a 20 20 20 20 20 20 53 45 4c 45 43  y=4;.      SELEC
04b0: 54 20 27 42 27 2c 20 2a 20 46 52 4f 4d 20 74 31  T 'B', * FROM t1
04c0: 3b 0a 20 20 20 20 20 20 43 4f 4d 4d 49 54 3b 0a  ;.      COMMIT;.
04d0: 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 43 27        SELECT 'C'
04e0: 2c 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  , * FROM t1;.   
04f0: 20 7d 0a 20 20 7d 20 7b 77 61 6c 20 41 20 33 20   }.  } {wal A 3 
0500: 34 20 42 20 31 20 32 20 43 20 31 20 32 7d 0a 7d  4 B 1 2 C 1 2}.}
0510: 0a 0a 64 62 20 63 6c 6f 73 65 0a 66 6f 72 63 65  ..db close.force
0520: 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62 20 74  delete test.db t
0530: 65 73 74 2e 64 62 2d 77 61 6c 0a 73 71 6c 69 74  est.db-wal.sqlit
0540: 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 6c 6f  e3 db test.db.lo
0550: 61 64 5f 73 74 61 74 69 63 5f 65 78 74 65 6e 73  ad_static_extens
0560: 69 6f 6e 20 64 62 20 77 68 6f 6c 65 6e 75 6d 62  ion db wholenumb
0570: 65 72 0a 64 62 20 65 76 61 6c 20 7b 0a 20 20 50  er.db eval {.  P
0580: 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  RAGMA journal_mo
0590: 64 65 3d 57 41 4c 3b 0a 20 20 43 52 45 41 54 45  de=WAL;.  CREATE
05a0: 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29 3b 0a   TABLE t1(a,b);.
05b0: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 74    CREATE INDEX t
05c0: 31 62 20 4f 4e 20 74 31 28 62 29 3b 0a 20 20 43  1b ON t1(b);.  C
05d0: 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28 78  REATE TABLE t2(x
05e0: 2c 79 29 3b 0a 20 20 43 52 45 41 54 45 20 56 49  ,y);.  CREATE VI
05f0: 52 54 55 41 4c 20 54 41 42 4c 45 20 6e 75 6d 73  RTUAL TABLE nums
0600: 20 55 53 49 4e 47 20 77 68 6f 6c 65 6e 75 6d 62   USING wholenumb
0610: 65 72 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  er;.  INSERT INT
0620: 4f 20 74 32 20 53 45 4c 45 43 54 20 76 61 6c 75  O t2 SELECT valu
0630: 65 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 30  e, randomblob(10
0640: 30 30 29 20 46 52 4f 4d 20 6e 75 6d 73 0a 20 20  00) FROM nums.  
0650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57                 W
0660: 48 45 52 45 20 76 61 6c 75 65 20 42 45 54 57 45  HERE value BETWE
0670: 45 4e 20 31 20 41 4e 44 20 31 30 30 30 3b 0a 7d  EN 1 AND 1000;.}
0680: 0a 0a 66 6f 72 20 7b 73 65 74 20 69 69 20 31 7d  ..for {set ii 1}
0690: 20 7b 24 69 69 3c 3d 31 30 7d 20 7b 69 6e 63 72   {$ii<=10} {incr
06a0: 20 69 69 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74   ii} {.  do_test
06b0: 20 74 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 32   tkt-2d1a5c67d.2
06c0: 2e 24 69 69 20 7b 0a 20 20 20 20 64 62 20 65 76  .$ii {.    db ev
06d0: 61 6c 20 22 50 52 41 47 4d 41 20 63 61 63 68 65  al "PRAGMA cache
06e0: 5f 73 69 7a 65 3d 24 3a 3a 69 69 22 0a 20 20 20  _size=$::ii".   
06f0: 20 64 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 20   db eval {.     
0700: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 3b   DELETE FROM t1;
0710: 0a 20 20 20 20 20 20 42 45 47 49 4e 3b 0a 20 20  .      BEGIN;.  
0720: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0730: 74 31 28 61 2c 62 29 20 56 41 4c 55 45 53 28 31  t1(a,b) VALUES(1
0740: 2c 32 29 3b 0a 20 20 20 20 20 20 53 45 4c 45 43  ,2);.      SELEC
0750: 54 20 73 75 6d 28 6c 65 6e 67 74 68 28 79 29 29  T sum(length(y))
0760: 20 46 52 4f 4d 20 74 32 3b 0a 20 20 20 20 20 20   FROM t2;.      
0770: 43 4f 4d 4d 49 54 3b 0a 20 20 20 20 20 20 53 45  COMMIT;.      SE
0780: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a  LECT * FROM t1;.
0790: 20 20 20 20 7d 0a 20 20 7d 20 7b 31 30 30 30 30      }.  } {10000
07a0: 30 30 20 31 20 32 7d 0a 7d 0a 0a 64 62 20 63 6c  00 1 2}.}..db cl
07b0: 6f 73 65 0a 73 71 6c 69 74 65 33 20 64 62 20 74  ose.sqlite3 db t
07c0: 65 73 74 2e 64 62 0a 0a 0a 64 6f 5f 65 78 65 63  est.db...do_exec
07d0: 73 71 6c 5f 74 65 73 74 20 33 2e 31 20 7b 0a 20  sql_test 3.1 {. 
07e0: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
07f0: 7a 65 20 3d 20 31 30 3b 0a 20 20 43 52 45 41 54  ze = 10;.  CREAT
0800: 45 20 54 41 42 4c 45 20 74 33 28 61 20 49 4e 54  E TABLE t3(a INT
0810: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
0820: 2c 20 62 29 3b 0a 20 20 43 52 45 41 54 45 20 54  , b);.  CREATE T
0830: 41 42 4c 45 20 74 34 28 61 29 3b 0a 7d 0a 0a 64  ABLE t4(a);.}..d
0840: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33  o_execsql_test 3
0850: 2e 32 20 7b 0a 20 20 49 4e 53 45 52 54 20 49 4e  .2 {.  INSERT IN
0860: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 4e 55 4c  TO t3 VALUES(NUL
0870: 4c 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 35 30  L, randomblob(50
0880: 30 29 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e  0));.  INSERT IN
0890: 54 4f 20 74 33 20 53 45 4c 45 43 54 20 4e 55 4c  TO t3 SELECT NUL
08a0: 4c 2c 20 62 7c 7c 62 20 46 52 4f 4d 20 74 33 3b  L, b||b FROM t3;
08b0: 20 20 20 20 20 2d 2d 20 32 0a 20 20 49 4e 53 45       -- 2.  INSE
08c0: 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45 43  RT INTO t3 SELEC
08d0: 54 20 4e 55 4c 4c 2c 20 62 7c 7c 62 20 46 52 4f  T NULL, b||b FRO
08e0: 4d 20 74 33 3b 20 20 20 20 20 2d 2d 20 34 0a 20  M t3;     -- 4. 
08f0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20   INSERT INTO t3 
0900: 53 45 4c 45 43 54 20 4e 55 4c 4c 2c 20 62 7c 7c  SELECT NULL, b||
0910: 62 20 46 52 4f 4d 20 74 33 3b 20 20 20 20 20 2d  b FROM t3;     -
0920: 2d 20 38 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  - 8.  INSERT INT
0930: 4f 20 74 33 20 53 45 4c 45 43 54 20 4e 55 4c 4c  O t3 SELECT NULL
0940: 2c 20 62 7c 7c 62 20 46 52 4f 4d 20 74 33 3b 20  , b||b FROM t3; 
0950: 20 20 20 20 2d 2d 20 31 36 0a 20 20 49 4e 53 45      -- 16.  INSE
0960: 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45 43  RT INTO t3 SELEC
0970: 54 20 4e 55 4c 4c 2c 20 62 7c 7c 62 20 46 52 4f  T NULL, b||b FRO
0980: 4d 20 74 33 3b 20 20 20 20 20 2d 2d 20 33 32 0a  M t3;     -- 32.
0990: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33    INSERT INTO t3
09a0: 20 53 45 4c 45 43 54 20 4e 55 4c 4c 2c 20 62 7c   SELECT NULL, b|
09b0: 7c 62 20 46 52 4f 4d 20 74 33 3b 20 20 20 20 20  |b FROM t3;     
09c0: 2d 2d 20 36 34 0a 20 20 49 4e 53 45 52 54 20 49  -- 64.  INSERT I
09d0: 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20 4e 55  NTO t3 SELECT NU
09e0: 4c 4c 2c 20 62 7c 7c 62 20 46 52 4f 4d 20 74 33  LL, b||b FROM t3
09f0: 3b 20 20 20 20 20 2d 2d 20 31 32 38 0a 7d 0a 0a  ;     -- 128.}..
0a00: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0a10: 33 2e 33 20 7b 0a 20 20 42 45 47 49 4e 3b 0a 20  3.3 {.  BEGIN;. 
0a20: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0a30: 34 20 56 41 4c 55 45 53 28 27 78 79 7a 27 29 3b  4 VALUES('xyz');
0a40: 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 33 2e 34 20  .}..do_test 3.4 
0a50: 7b 0a 20 20 73 65 74 20 62 6c 6f 62 73 20 5b 6c  {.  set blobs [l
0a60: 69 73 74 5d 0a 20 20 66 6f 72 20 7b 73 65 74 20  ist].  for {set 
0a70: 69 20 31 7d 20 7b 24 69 3c 31 30 30 7d 20 7b 69  i 1} {$i<100} {i
0a80: 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 73 65 74  ncr i} {.    set
0a90: 20 62 20 5b 64 62 20 69 6e 63 72 62 6c 6f 62 20   b [db incrblob 
0aa0: 2d 72 65 61 64 6f 6e 6c 79 20 74 33 20 62 20 24  -readonly t3 b $
0ab0: 69 5d 0a 20 20 20 20 72 65 61 64 20 24 62 0a 20  i].    read $b. 
0ac0: 20 20 20 6c 61 70 70 65 6e 64 20 62 6c 6f 62 73     lappend blobs
0ad0: 20 24 62 0a 20 20 7d 0a 0a 20 20 65 78 65 63 73   $b.  }..  execs
0ae0: 71 6c 20 43 4f 4d 4d 49 54 0a 20 20 65 78 65 63  ql COMMIT.  exec
0af0: 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 2a 20 46  sql { SELECT * F
0b00: 52 4f 4d 20 74 34 20 57 48 45 52 45 20 61 20 3d  ROM t4 WHERE a =
0b10: 20 27 78 79 7a 27 20 7d 0a 7d 20 7b 78 79 7a 7d   'xyz' }.} {xyz}
0b20: 0a 0a 64 6f 5f 74 65 73 74 20 33 2e 35 20 7b 0a  ..do_test 3.5 {.
0b30: 20 20 66 6f 72 65 61 63 68 20 62 20 24 62 6c 6f    foreach b $blo
0b40: 62 73 20 7b 20 63 6c 6f 73 65 20 24 62 20 7d 0a  bs { close $b }.
0b50: 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c 45    execsql { SELE
0b60: 43 54 20 2a 20 46 52 4f 4d 20 74 34 20 57 48 45  CT * FROM t4 WHE
0b70: 52 45 20 61 20 3d 20 27 78 79 7a 27 20 7d 0a 7d  RE a = 'xyz' }.}
0b80: 20 7b 78 79 7a 7d 0a 0a 23 20 43 68 65 63 6b 20   {xyz}..# Check 
0b90: 74 68 61 74 20 72 65 63 6f 76 65 72 79 20 77 6f  that recovery wo
0ba0: 72 6b 73 20 6f 6e 20 74 68 65 20 57 41 4c 20 66  rks on the WAL f
0bb0: 69 6c 65 2e 0a 23 0a 66 6f 72 63 65 64 65 6c 65  ile..#.forcedele
0bc0: 74 65 20 74 65 73 74 2e 64 62 32 2d 77 61 6c 20  te test.db2-wal 
0bd0: 74 65 73 74 2e 64 62 32 0a 64 6f 5f 74 65 73 74  test.db2.do_test
0be0: 20 33 2e 36 20 7b 0a 20 20 63 6f 70 79 5f 66 69   3.6 {.  copy_fi
0bf0: 6c 65 20 74 65 73 74 2e 64 62 2d 77 61 6c 20 74  le test.db-wal t
0c00: 65 73 74 2e 64 62 32 2d 77 61 6c 0a 20 20 63 6f  est.db2-wal.  co
0c10: 70 79 5f 66 69 6c 65 20 74 65 73 74 2e 64 62 20  py_file test.db 
0c20: 74 65 73 74 2e 64 62 32 0a 20 20 73 71 6c 69 74  test.db2.  sqlit
0c30: 65 33 20 64 62 32 20 74 65 73 74 2e 64 62 32 0a  e3 db2 test.db2.
0c40: 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c 45    execsql { SELE
0c50: 43 54 20 2a 20 46 52 4f 4d 20 74 34 20 57 48 45  CT * FROM t4 WHE
0c60: 52 45 20 61 20 3d 20 27 78 79 7a 27 20 7d 20 64  RE a = 'xyz' } d
0c70: 62 32 0a 7d 20 7b 78 79 7a 7d 0a 0a 66 69 6e 69  b2.} {xyz}..fini
0c80: 73 68 5f 74 65 73 74 0a                          sh_test.