Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(requirement-checker): Fix enable/disabling the requirement checker #874

Merged
merged 2 commits into from
Feb 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/requirement-checker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,8 @@ jobs:
docker-image: ghcr.io/box-project/box_php81
- command: _test_e2e_skip_min_composer_php
docker-image: ghcr.io/box-project/box_php725
- command: _test_e2e_pass_complete_requirement_checker_not_disabled
docker-image: ghcr.io/box-project/box_php725
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion requirement-checker/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ terminal_copy: $(ACTUAL_TERMINAL_DIFF)
include Makefile.e2e

.PHONY: test_e2e
test_e2e: docker_images _test_e2e_pass_no_config_min_composer_php _test_e2e_pass_no_config_min_box_php _test_e2e_pass_complete_min_composer_php _test_e2e_pass_complete_min_box_php _test_e2e_fail_complete_min_composer_php _test_e2e_fail_complete_min_box_php _test_e2e_skip_min_composer_php
test_e2e: docker_images _test_e2e_pass_no_config_min_composer_php _test_e2e_pass_no_config_min_box_php _test_e2e_pass_complete_min_composer_php _test_e2e_pass_complete_min_box_php _test_e2e_fail_complete_min_composer_php _test_e2e_fail_complete_min_box_php _test_e2e_skip_min_composer_php _test_e2e_pass_complete_requirement_checker_not_disabled


#
Expand Down
31 changes: 31 additions & 0 deletions requirement-checker/Makefile.e2e
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,33 @@ _test_e2e_pass_complete_min_box_php: $(E2E_TEST_PASS_COMPLETE_PHAR)
$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDOUT)



.PHONY: test_e2e_pass_complete_requirement_checker_not_disabled
test_e2e_pass_complete_requirement_checker_not_disabled: docker_images _test_e2e_pass_complete_requirement_checker_not_disabled

.PHONY: _test_e2e_pass_complete_requirement_checker_not_disabled
_test_e2e_pass_complete_requirement_checker_not_disabled: $(E2E_TEST_PASS_COMPLETE_PHAR)
@echo "$(YELLOW_COLOR)Test RequirementChecker with a project with satisfied requirements (min PHP version supported by Box).$(NO_COLOR)"
@rm \
$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDOUT) \
$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDERR) \
$(E2E_TEST_PASS_COMPLETE_MIN_BOX_EXPECTED_STDERR) || true
@$(MAKE) $(E2E_TEST_PASS_COMPLETE_MIN_BOX_EXPECTED_STDERR)

$(DOCKER_RUN) \
--env="BOX_REQUIREMENT_CHECKER=1" \
--volume="$$PWD/$(E2E_TEST_PASS_COMPLETE_OUTPUT_DIR)":/opt/box \
$(DOCKER_MIN_BOX_PHP_VERSION_RUN_COMMAND) 1>$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDOUT) 2>$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDERR) \
|| true

$(DIFF) \
$(E2E_TEST_PASS_COMPLETE_MIN_BOX_EXPECTED_STDERR) \
$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDERR)
$(DIFF) \
$(E2E_TEST_PASS_COMPLETE_MIN_BOX_EXPECTED_STDOUT) \
$(E2E_TEST_PASS_COMPLETE_ACTUAL_STDOUT)


#
# Fail Complete
#---------------------------------------------------------------------------
Expand Down Expand Up @@ -324,3 +351,7 @@ $(E2E_TEST_SKIP_OUTPUT_DIR):
$(E2E_TEST_SKIP_PHAR): $(E2E_TEST_SKIP_OUTPUT_DIR) $(E2E_TEST_FAIL_COMPLETE_PHAR)
cp -f $(E2E_TEST_FAIL_COMPLETE_PHAR) $(E2E_TEST_SKIP_PHAR)
touch -c $@


$(SCOPED_BOX_BIN):
cd ..; make --file Makefile compile
24 changes: 17 additions & 7 deletions requirement-checker/bin/check-requirements.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,22 @@

namespace KevinGH\RequirementChecker;

if (
isset($_SERVER['BOX_REQUIREMENT_CHECKER'])
|| false === (bool) $_SERVER['BOX_REQUIREMENT_CHECKER']
) {
// Do nothing.
return;
if (isset($_SERVER['BOX_REQUIREMENT_CHECKER'])) {
$enableRequirementChecker = $_SERVER['BOX_REQUIREMENT_CHECKER'];

if (is_bool($enableRequirementChecker) && !$enableRequirementChecker) {
return;
}

if (is_string($enableRequirementChecker) && in_array(strtolower($enableRequirementChecker), ['false', '0'], true)) {
return;
}

if (!is_bool($enableRequirementChecker) && !is_string($enableRequirementChecker)) {
echo PHP_EOL.'Unhandled value type for "BOX_REQUIREMENT_CHECKER". Got "'.gettype($enableRequirementChecker).'". Proceeding with the requirement checks.'.PHP_EOL;
}

// Continue
}

// Important: do this check _after_ the requirement checker flag. Indeed, if the requirement checker is disabled we do
Expand All @@ -32,6 +42,6 @@

require __DIR__.'/../vendor/autoload.php';

if (Checker::checkRequirements()) {
if (!Checker::checkRequirements()) {
exit(1);
}
16 changes: 14 additions & 2 deletions res/requirement-checker/bin/check-requirements.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,23 @@

namespace HumbugBox420\KevinGH\RequirementChecker;

require __DIR__ . '/../vendor/autoload.php';
if (isset($_SERVER['BOX_REQUIREMENT_CHECKER'])) {
$enableRequirementChecker = $_SERVER['BOX_REQUIREMENT_CHECKER'];
if (\is_bool($enableRequirementChecker) && !$enableRequirementChecker) {
return;
}
if (\is_string($enableRequirementChecker) && \in_array(\strtolower($enableRequirementChecker), ['false', '0'], \true)) {
return;
}
if (!\is_bool($enableRequirementChecker) && !\is_string($enableRequirementChecker)) {
echo \PHP_EOL . 'Unhandled value type for "BOX_REQUIREMENT_CHECKER". Got "' . \gettype($enableRequirementChecker) . '". Proceeding with the requirement checks.' . \PHP_EOL;
}
}
if (\false === \in_array(\PHP_SAPI, array('cli', 'phpdbg', 'embed', 'micro'), \true)) {
echo \PHP_EOL . 'The application may only be invoked from a command line, got "' . \PHP_SAPI . '"' . \PHP_EOL;
exit(1);
}
if ((\false === isset($_SERVER['BOX_REQUIREMENT_CHECKER']) || \true === (bool) $_SERVER['BOX_REQUIREMENT_CHECKER']) && \false === Checker::checkRequirements()) {
require __DIR__ . '/../vendor/autoload.php';
if (!Checker::checkRequirements()) {
exit(1);
}
2 changes: 1 addition & 1 deletion res/requirement-checker/vendor/composer/installed.php

Large diffs are not rendered by default.