The unpac monorepo manager self-hosting as a monorepo using unpac
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add test for contextual completion

+177
+177
vendor/opam/cmdliner/test/test_completion.ml
··· 450 450 restart\n"; 451 451 () 452 452 453 + let test_context = 454 + Test.test "Context sensitive completion from optional argument" @@ fun () -> 455 + let ctx = 456 + Arg.(value & opt (some bool) None & info ["ctx"]) 457 + in 458 + let dep = 459 + let complete ctx ~token:_ = match ctx with 460 + | None -> Ok [Arg.Completion.string "ctx-parse-error"] 461 + | Some None -> Ok [Arg.Completion.string "no-context"] 462 + | Some (Some ctx) -> Ok [Arg.Completion.string (Bool.to_string ctx)] 463 + in 464 + let completion = Arg.Completion.make ~context:ctx complete in 465 + Arg.Conv.of_conv Arg.string ~docv:"SPECIAL" ~completion 466 + in 467 + let () = (* test [dep] converter on an option *) 468 + let cmd = 469 + Cmd.make (Cmd.info "test_context") @@ 470 + let+ lookup = Arg.(value & opt dep "nothing" & info ["dep"]) 471 + and+ ctx in 472 + () 473 + in 474 + let complete = Testing_cmdliner.snap_completion cmd in 475 + complete ["--dep"; "--__complete="] @@ __POS_OF__ 476 + "1\n\ 477 + group\n\ 478 + Values\n\ 479 + item\n\ 480 + no-context\n\ 481 + \n\ 482 + item-end\n"; 483 + complete ["--ctx=hey"; "--dep"; "--__complete="] @@ __POS_OF__ 484 + "1\n\ 485 + group\n\ 486 + Values\n\ 487 + item\n\ 488 + ctx-parse-error\n\ 489 + \n\ 490 + item-end\n"; 491 + complete ["--ctx=true"; "--dep"; "--__complete="] @@ __POS_OF__ 492 + "1\n\ 493 + group\n\ 494 + Values\n\ 495 + item\n\ 496 + true\n\ 497 + \n\ 498 + item-end\n"; 499 + complete ["--dep"; "--__complete="; "--ctx=true"] @@ __POS_OF__ 500 + "1\n\ 501 + group\n\ 502 + Values\n\ 503 + item\n\ 504 + no-context\n\ 505 + \n\ 506 + item-end\n"; 507 + in 508 + let () = 509 + let cmd = 510 + Cmd.make (Cmd.info "test_context") @@ 511 + let+ lookup = Arg.(value & pos 0 dep "nothing" & info []) 512 + and+ ctx in 513 + () 514 + in 515 + let complete = Testing_cmdliner.snap_completion cmd in 516 + complete ["--__complete=a"] @@ __POS_OF__ 517 + "1\n\ 518 + group\n\ 519 + Values\n\ 520 + item\n\ 521 + no-context\n\ 522 + \n\ 523 + item-end\n"; 524 + complete ["--ctx=hey"; "--__complete=a"] @@ __POS_OF__ 525 + "1\n\ 526 + group\n\ 527 + Values\n\ 528 + item\n\ 529 + ctx-parse-error\n\ 530 + \n\ 531 + item-end\n"; 532 + complete ["--ctx=true"; "--__complete=a"] @@ __POS_OF__ 533 + "1\n\ 534 + group\n\ 535 + Values\n\ 536 + item\n\ 537 + true\n\ 538 + \n\ 539 + item-end\n"; 540 + complete ["--__complete=a"; "--ctx=true"] @@ __POS_OF__ 541 + "1\n\ 542 + group\n\ 543 + Values\n\ 544 + item\n\ 545 + true\n\ 546 + \n\ 547 + item-end\n"; 548 + in 549 + () 550 + 551 + let test_context = 552 + Test.test "Context sensitive completion from positional argument" @@ fun () -> 553 + let ctx0 = Arg.(value & pos 0 (some bool) None & info []) in 554 + let dep = 555 + let complete ctx ~token:_ = match ctx with 556 + | None -> Ok [Arg.Completion.string "ctx-parse-error"] 557 + | Some None -> Ok [Arg.Completion.string "no-context"] 558 + | Some (Some ctx) -> Ok [Arg.Completion.string (Bool.to_string ctx)] 559 + in 560 + let completion = Arg.Completion.make ~context:ctx0 complete in 561 + Arg.Conv.of_conv Arg.string ~docv:"SPECIAL" ~completion 562 + in 563 + let () = (* test [dep] converter on an option *) 564 + let cmd = 565 + Cmd.make (Cmd.info "test_context") @@ 566 + let+ lookup = Arg.(value & opt dep "nothing" & info ["dep"]) 567 + and+ ctx0 in 568 + () 569 + in 570 + let complete = Testing_cmdliner.snap_completion cmd in 571 + complete ["--dep"; "--__complete="] @@ __POS_OF__ 572 + "1\n\ 573 + group\n\ 574 + Values\n\ 575 + item\n\ 576 + no-context\n\ 577 + \n\ 578 + item-end\n"; 579 + complete ["bla"; "--dep"; "--__complete="] @@ __POS_OF__ 580 + "1\n\ 581 + group\n\ 582 + Values\n\ 583 + item\n\ 584 + no-context\n\ 585 + \n\ 586 + item-end\n"; 587 + complete ["true"; "--dep"; "--__complete="] @@ __POS_OF__ 588 + "1\n\ 589 + group\n\ 590 + Values\n\ 591 + item\n\ 592 + no-context\n\ 593 + \n\ 594 + item-end\n"; 595 + complete ["--dep"; "--__complete="; "true"] @@ __POS_OF__ 596 + "1\n\ 597 + group\n\ 598 + Values\n\ 599 + item\n\ 600 + no-context\n\ 601 + \n\ 602 + item-end\n"; 603 + in 604 + let () = 605 + let cmd = 606 + Cmd.make (Cmd.info "test_context") @@ 607 + let+ lookup = Arg.(value & pos 1 dep "nothing" & info []) 608 + and+ ctx0 in 609 + () 610 + in 611 + let complete = Testing_cmdliner.snap_completion cmd in 612 + complete ["hey"; "--__complete=a"] @@ __POS_OF__ 613 + "1\n\ 614 + group\n\ 615 + Values\n\ 616 + item\n\ 617 + no-context\n\ 618 + \n\ 619 + item-end\n"; 620 + complete ["true"; "--__complete=a"] @@ __POS_OF__ 621 + "1\n\ 622 + group\n\ 623 + Values\n\ 624 + item\n\ 625 + no-context\n\ 626 + \n\ 627 + item-end\n"; 628 + in 629 + () 453 630 454 631 let main () = 455 632 let doc = "Test completion" in