From ac78eb535435d97d7148b35d2b26d1201e962de2 Mon Sep 17 00:00:00 2001 From: Justin Frydman Date: Mon, 9 Sep 2024 11:17:31 -0600 Subject: [PATCH] Add tests --- tests/_data/test-workflow-script.sh | 30 +++++++++++++++++++ ..._tbd_check_when_tbds_exist__0.snapshot.txt | 6 ++-- tests/cli/Commands/WorkflowCest.php | 23 ++++++++++++++ ...options_to_workflow_script__0.snapshot.txt | 11 +++++++ 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100755 tests/_data/test-workflow-script.sh create mode 100644 tests/cli/Commands/__snapshots__/WorkflowCest__it_should_pass_additional_arguments_and_options_to_workflow_script__0.snapshot.txt diff --git a/tests/_data/test-workflow-script.sh b/tests/_data/test-workflow-script.sh new file mode 100755 index 0000000..20d75dd --- /dev/null +++ b/tests/_data/test-workflow-script.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# A test workflow run via the test suite + +# Loop through all the arguments +while [[ "$#" -gt 0 ]]; do + case $1 in + --*=*) # Option in --option=value format + option="${1%%=*}" # Extract the option + value="${1#*=}" # Extract the value + echo "Option: $option, Value: $value" + shift + ;; + --*) # Option in --option format (expecting a separate value) + option=$1 + shift + if [[ "$1" && ! "$1" =~ ^-- ]]; then + value=$1 + echo "Option: $option, Value: $value" + shift + else + echo "Option: $option, No value provided" + fi + ;; + *) # Regular argument + echo "Argument: $1" + shift + ;; + esac +done diff --git a/tests/cli/Commands/Checks/__snapshots__/TbdCest__it_should_run_fail_tbd_check_when_tbds_exist__0.snapshot.txt b/tests/cli/Commands/Checks/__snapshots__/TbdCest__it_should_run_fail_tbd_check_when_tbds_exist__0.snapshot.txt index 6dfa347..695f409 100644 --- a/tests/cli/Commands/Checks/__snapshots__/TbdCest__it_should_run_fail_tbd_check_when_tbds_exist__0.snapshot.txt +++ b/tests/cli/Commands/Checks/__snapshots__/TbdCest__it_should_run_fail_tbd_check_when_tbds_exist__0.snapshot.txt @@ -2,9 +2,6 @@ Checking for TBDs... -------------------- -./src/Plugin.php -9: * @since TBD - ./src/Thing/AnotherFile.php 5: _deprecated_file( __FILE__, 'TBD' ); 9: * @since TBD @@ -14,5 +11,8 @@ Checking for TBDs... 28: * @deprecated TBD 32: _deprecated_function( __METHOD__, 'TBD' ); +./src/Plugin.php +9: * @since TBD + TBDs have been found! \ No newline at end of file diff --git a/tests/cli/Commands/WorkflowCest.php b/tests/cli/Commands/WorkflowCest.php index 729f2ac..8a7124c 100644 --- a/tests/cli/Commands/WorkflowCest.php +++ b/tests/cli/Commands/WorkflowCest.php @@ -170,4 +170,27 @@ public function it_should_run_build_with_custom_env_vars( CliTester $I ) { $output = $I->grabShellOutput(); $this->assertMatchesStringSnapshot( $output ); } + + /** + * @test + */ + public function it_should_pass_additional_arguments_and_options_to_workflow_script( CliTester $I ) { + $puprc = $this->get_puprc(); + $puprc['workflows'] = []; + $puprc['workflows']['test-workflow'] = []; + $puprc['workflows']['test-workflow'][] = codecept_data_dir( 'test-workflow-script.sh' ); + $this->write_puprc( $puprc ); + + chdir( $this->tests_root . '/_data/fake-project' ); + + $I->runShellCommand( "php {$this->pup} do test-workflow -- arg1 arg2 --option-one=one --option-two=two" ); + $I->seeResultCodeIs( 0 ); + $I->seeInShellOutput( 'Argument: arg1' ); + $I->seeInShellOutput( 'Argument: arg2' ); + $I->seeInShellOutput( 'Option: --option-one, Value: one' ); + $I->seeInShellOutput( 'Option: --option-two, Value: two' ); + + $output = $I->grabShellOutput(); + $this->assertMatchesStringSnapshot( $output ); + } } diff --git a/tests/cli/Commands/__snapshots__/WorkflowCest__it_should_pass_additional_arguments_and_options_to_workflow_script__0.snapshot.txt b/tests/cli/Commands/__snapshots__/WorkflowCest__it_should_pass_additional_arguments_and_options_to_workflow_script__0.snapshot.txt new file mode 100644 index 0000000..6a023a0 --- /dev/null +++ b/tests/cli/Commands/__snapshots__/WorkflowCest__it_should_pass_additional_arguments_and_options_to_workflow_script__0.snapshot.txt @@ -0,0 +1,11 @@ +Running test-workflow workflow steps... + +> /var/www/html/wp-content/plugins/pup/tests/_data/test-workflow-script.sh 'arg1' 'arg2' '--option-one=one' '--option-two=two' +------------------------------------------------------------------------------------------------------------------------------ + +Argument: arg1 +Argument: arg2 +Option: --option-one, Value: one +Option: --option-two, Value: two + +Workflow complete.