1# $OpenBSD: history.t,v 1.1 2013/12/02 20:39:44 millert Exp $ 2 3# Not tested yet: 4# - commands in history file are not numbered negatively 5# (and a few hundred other things) 6 7name: history-basic 8description: 9 See if we can test history at all 10arguments: !-i! 11env-setup: !ENV=./Env!HISTFILE=hist.file! 12file-setup: file 644 "Env" 13 PS1=X 14stdin: 15 echo hi 16 fc -l 17expected-stdout: 18 hi 19 1 echo hi 20expected-stderr-pattern: 21 /^X*$/ 22--- 23 24name: history-e-minus-1 25description: 26 Check if more recent command is executed 27arguments: !-i! 28env-setup: !ENV=./Env!HISTFILE=hist.file! 29file-setup: file 644 "Env" 30 PS1=X 31stdin: 32 echo hi 33 echo there 34 fc -e - 35expected-stdout: 36 hi 37 there 38 there 39expected-stderr-pattern: 40 /^X*echo there\nX*$/ 41--- 42 43name: history-e-minus-2 44description: 45 Check that repeated command is printed before command 46 is re-executed. 47arguments: !-i! 48env-setup: !ENV=./Env!HISTFILE=hist.file! 49file-setup: file 644 "Env" 50 PS1=X 51stdin: 52 exec 2>&1 53 echo hi 54 echo there 55 fc -e - 56expected-stdout-pattern: 57 /X*hi\nX*there\nX*echo there\nthere\nX*/ 58expected-stderr-pattern: 59 /^X*$/ 60--- 61 62name: history-e-minus-3 63description: 64 fc -e - fails when there is no history 65 (ksh93 has a bug that causes this to fail) 66 (ksh88 loops on this) 67arguments: !-i! 68env-setup: !ENV=./Env!HISTFILE=hist.file! 69file-setup: file 644 "Env" 70 PS1=X 71stdin: 72 fc -e - 73 echo ok 74expected-stdout: 75 ok 76expected-stderr-pattern: 77 /^X*.*:.*history.*\nX*$/ 78--- 79 80name: history-e-minus-4 81description: 82 Check if "fc -e -" command output goes to stdout. 83arguments: !-i! 84env-setup: !ENV=./Env!HISTFILE=hist.file! 85file-setup: file 644 "Env" 86 PS1=X 87stdin: 88 echo abc 89 fc -e - | (read x; echo "A $x") 90 echo ok 91expected-stdout: 92 abc 93 A abc 94 ok 95expected-stderr-pattern: 96 /^X*echo abc\nX*/ 97--- 98 99name: history-e-minus-5 100description: 101 fc is replaced in history by new command. 102arguments: !-i! 103env-setup: !ENV=./Env!HISTFILE=hist.file! 104file-setup: file 644 "Env" 105 PS1=X 106stdin: 107 echo abc def 108 echo ghi jkl 109 fc -e - echo 110 fc -l 2 4 111expected-stdout: 112 abc def 113 ghi jkl 114 ghi jkl 115 2 echo ghi jkl 116 3 echo ghi jkl 117 4 fc -l 2 4 118expected-stderr-pattern: 119 /^X*echo ghi jkl\nX*$/ 120--- 121 122name: history-list-1 123description: 124 List lists correct range 125 (ksh88 fails 'cause it lists the fc command) 126arguments: !-i! 127env-setup: !ENV=./Env!HISTFILE=hist.file! 128file-setup: file 644 "Env" 129 PS1=X 130stdin: 131 echo line 1 132 echo line 2 133 echo line 3 134 fc -l -- -2 135expected-stdout: 136 line 1 137 line 2 138 line 3 139 2 echo line 2 140 3 echo line 3 141expected-stderr-pattern: 142 /^X*$/ 143--- 144 145name: history-list-2 146description: 147 Lists oldest history if given pre-historic number 148 (ksh93 has a bug that causes this to fail) 149 (ksh88 fails 'cause it lists the fc command) 150arguments: !-i! 151env-setup: !ENV=./Env!HISTFILE=hist.file! 152file-setup: file 644 "Env" 153 PS1=X 154stdin: 155 echo line 1 156 echo line 2 157 echo line 3 158 fc -l -- -40 159expected-stdout: 160 line 1 161 line 2 162 line 3 163 1 echo line 1 164 2 echo line 2 165 3 echo line 3 166expected-stderr-pattern: 167 /^X*$/ 168--- 169 170name: history-list-3 171description: 172 Can give number `options' to fc 173arguments: !-i! 174env-setup: !ENV=./Env!HISTFILE=hist.file! 175file-setup: file 644 "Env" 176 PS1=X 177stdin: 178 echo line 1 179 echo line 2 180 echo line 3 181 echo line 4 182 fc -l -3 -2 183expected-stdout: 184 line 1 185 line 2 186 line 3 187 line 4 188 2 echo line 2 189 3 echo line 3 190expected-stderr-pattern: 191 /^X*$/ 192--- 193 194name: history-list-4 195description: 196 -1 refers to previous command 197arguments: !-i! 198env-setup: !ENV=./Env!HISTFILE=hist.file! 199file-setup: file 644 "Env" 200 PS1=X 201stdin: 202 echo line 1 203 echo line 2 204 echo line 3 205 echo line 4 206 fc -l -1 -1 207expected-stdout: 208 line 1 209 line 2 210 line 3 211 line 4 212 4 echo line 4 213expected-stderr-pattern: 214 /^X*$/ 215--- 216 217name: history-list-5 218description: 219 List command stays in history 220arguments: !-i! 221env-setup: !ENV=./Env!HISTFILE=hist.file! 222file-setup: file 644 "Env" 223 PS1=X 224stdin: 225 echo line 1 226 echo line 2 227 echo line 3 228 echo line 4 229 fc -l -1 -1 230 fc -l -2 -1 231expected-stdout: 232 line 1 233 line 2 234 line 3 235 line 4 236 4 echo line 4 237 4 echo line 4 238 5 fc -l -1 -1 239expected-stderr-pattern: 240 /^X*$/ 241--- 242 243name: history-list-6 244description: 245 HISTSIZE limits about of history kept. 246 (ksh88 fails 'cause it lists the fc command) 247arguments: !-i! 248env-setup: !ENV=./Env!HISTFILE=hist.file!HISTSIZE=3! 249file-setup: file 644 "Env" 250 PS1=X 251stdin: 252 echo line 1 253 echo line 2 254 echo line 3 255 echo line 4 256 echo line 5 257 fc -l 258expected-stdout: 259 line 1 260 line 2 261 line 3 262 line 4 263 line 5 264 4 echo line 4 265 5 echo line 5 266expected-stderr-pattern: 267 /^X*$/ 268--- 269 270name: history-list-7 271description: 272 fc allows too old/new errors in range specification 273arguments: !-i! 274env-setup: !ENV=./Env!HISTFILE=hist.file!HISTSIZE=3! 275file-setup: file 644 "Env" 276 PS1=X 277stdin: 278 echo line 1 279 echo line 2 280 echo line 3 281 echo line 4 282 echo line 5 283 fc -l 1 30 284expected-stdout: 285 line 1 286 line 2 287 line 3 288 line 4 289 line 5 290 4 echo line 4 291 5 echo line 5 292 6 fc -l 1 30 293expected-stderr-pattern: 294 /^X*$/ 295--- 296 297name: history-list-r-1 298description: 299 test -r flag in history 300arguments: !-i! 301env-setup: !ENV=./Env!HISTFILE=hist.file! 302file-setup: file 644 "Env" 303 PS1=X 304stdin: 305 echo line 1 306 echo line 2 307 echo line 3 308 echo line 4 309 echo line 5 310 fc -l -r 2 4 311expected-stdout: 312 line 1 313 line 2 314 line 3 315 line 4 316 line 5 317 4 echo line 4 318 3 echo line 3 319 2 echo line 2 320expected-stderr-pattern: 321 /^X*$/ 322--- 323 324name: history-list-r-2 325description: 326 If first is newer than last, -r is implied. 327arguments: !-i! 328env-setup: !ENV=./Env!HISTFILE=hist.file! 329file-setup: file 644 "Env" 330 PS1=X 331stdin: 332 echo line 1 333 echo line 2 334 echo line 3 335 echo line 4 336 echo line 5 337 fc -l 4 2 338expected-stdout: 339 line 1 340 line 2 341 line 3 342 line 4 343 line 5 344 4 echo line 4 345 3 echo line 3 346 2 echo line 2 347expected-stderr-pattern: 348 /^X*$/ 349--- 350 351name: history-list-r-3 352description: 353 If first is newer than last, -r is cancelled. 354arguments: !-i! 355env-setup: !ENV=./Env!HISTFILE=hist.file! 356file-setup: file 644 "Env" 357 PS1=X 358stdin: 359 echo line 1 360 echo line 2 361 echo line 3 362 echo line 4 363 echo line 5 364 fc -l -r 4 2 365expected-stdout: 366 line 1 367 line 2 368 line 3 369 line 4 370 line 5 371 2 echo line 2 372 3 echo line 3 373 4 echo line 4 374expected-stderr-pattern: 375 /^X*$/ 376--- 377 378name: history-subst-1 379description: 380 Basic substitution 381arguments: !-i! 382env-setup: !ENV=./Env!HISTFILE=hist.file! 383file-setup: file 644 "Env" 384 PS1=X 385stdin: 386 echo abc def 387 echo ghi jkl 388 fc -e - abc=AB 'echo a' 389expected-stdout: 390 abc def 391 ghi jkl 392 AB def 393expected-stderr-pattern: 394 /^X*echo AB def\nX*$/ 395--- 396 397name: history-subst-2 398description: 399 Does subst find previous command? 400arguments: !-i! 401env-setup: !ENV=./Env!HISTFILE=hist.file! 402file-setup: file 644 "Env" 403 PS1=X 404stdin: 405 echo abc def 406 echo ghi jkl 407 fc -e - jkl=XYZQRT 'echo g' 408expected-stdout: 409 abc def 410 ghi jkl 411 ghi XYZQRT 412expected-stderr-pattern: 413 /^X*echo ghi XYZQRT\nX*$/ 414--- 415 416name: history-subst-3 417description: 418 Does subst find previous command when no arguments given 419arguments: !-i! 420env-setup: !ENV=./Env!HISTFILE=hist.file! 421file-setup: file 644 "Env" 422 PS1=X 423stdin: 424 echo abc def 425 echo ghi jkl 426 fc -e - jkl=XYZQRT 427expected-stdout: 428 abc def 429 ghi jkl 430 ghi XYZQRT 431expected-stderr-pattern: 432 /^X*echo ghi XYZQRT\nX*$/ 433--- 434 435name: history-subst-4 436description: 437 Global substitutions work 438 (ksh88 and ksh93 do not have -g option) 439arguments: !-i! 440env-setup: !ENV=./Env!HISTFILE=hist.file! 441file-setup: file 644 "Env" 442 PS1=X 443stdin: 444 echo abc def asjj sadjhasdjh asdjhasd 445 fc -e - -g a=FooBAR 446expected-stdout: 447 abc def asjj sadjhasdjh asdjhasd 448 FooBARbc def FooBARsjj sFooBARdjhFooBARsdjh FooBARsdjhFooBARsd 449expected-stderr-pattern: 450 /^X*echo FooBARbc def FooBARsjj sFooBARdjhFooBARsdjh FooBARsdjhFooBARsd\nX*$/ 451--- 452 453name: history-subst-5 454description: 455 Make sure searches don't find current (fc) command 456 (ksh88/ksh93 don't have the ? prefix thing so they fail this test) 457arguments: !-i! 458env-setup: !ENV=./Env!HISTFILE=hist.file! 459file-setup: file 644 "Env" 460 PS1=X 461stdin: 462 echo abc def 463 echo ghi jkl 464 fc -e - abc=AB \?abc 465expected-stdout: 466 abc def 467 ghi jkl 468 AB def 469expected-stderr-pattern: 470 /^X*echo AB def\nX*$/ 471--- 472 473name: history-ed-1 474description: 475 Basic (ed) editing works (assumes you have generic ed editor 476 that prints no prompts). 477# No ed on os/2 (yet?). 478category: !os:os2 479arguments: !-i! 480env-setup: !ENV=./Env!HISTFILE=hist.file! 481file-setup: file 644 "Env" 482 PS1=X 483stdin: 484 echo abc def 485 fc echo 486 s/abc/FOOBAR/ 487 w 488 q 489expected-stdout: 490 abc def 491 13 492 16 493 FOOBAR def 494expected-stderr-pattern: 495 /^X*echo FOOBAR def\nX*$/ 496--- 497 498name: history-ed-2 499description: 500 Correct command is edited when number given 501category: !os:os2 502arguments: !-i! 503env-setup: !ENV=./Env!HISTFILE=hist.file! 504file-setup: file 644 "Env" 505 PS1=X 506stdin: 507 echo line 1 508 echo line 2 is here 509 echo line 3 510 echo line 4 511 fc 2 512 s/is here/is changed/ 513 w 514 q 515expected-stdout: 516 line 1 517 line 2 is here 518 line 3 519 line 4 520 20 521 23 522 line 2 is changed 523expected-stderr-pattern: 524 /^X*echo line 2 is changed\nX*$/ 525--- 526 527name: history-ed-3 528description: 529 Newly created multi line commands show up as single command 530 in history. 531 (NOTE: will fail if using COMPLEX HISTORY compile time option) 532 (ksh88 fails 'cause it lists the fc command) 533category: !os:os2 534arguments: !-i! 535env-setup: !ENV=./Env!HISTFILE=hist.file! 536file-setup: file 644 "Env" 537 PS1=X 538stdin: 539 echo abc def 540 fc echo 541 s/abc/FOOBAR/ 542 $a 543 echo a new line 544 . 545 w 546 q 547 fc -l 548expected-stdout: 549 abc def 550 13 551 32 552 FOOBAR def 553 a new line 554 1 echo abc def 555 2 echo FOOBAR def 556 echo a new line 557expected-stderr-pattern: 558 /^X*echo FOOBAR def\necho a new line\nX*$/ 559--- 560