App-GHGen

 view release on metacpan or  search on metacpan

lib/App/GHGen/Generator.pm  view on Meta::CPAN

        uses: actions/checkout@v7

      - name: Setup PHP ${{ matrix.php-version }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          extensions: mbstring, xml, ctype, json
          coverage: xdebug

      - name: Validate composer.json
        run: composer validate --strict

      - name: Cache Composer packages
        uses: actions/cache@v6
        with:
          path: vendor
          key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
          restore-keys: |
            ${{ runner.os }}-php-

      - name: Install dependencies

t/function.t  view on Meta::CPAN


	memory_cycle_ok(\$comment, 'comment string has no circular references');
};

# ═══════════════════════════════════════════════════════════════════════
# 9.  Logic-reduction proofs (post-refactoring invariant assertions)
# ═══════════════════════════════════════════════════════════════════════

# Proof: every rule in the apply_fixes dispatch table fires exactly once
# when presented with a matching issue, and never fires on a non-matching
# issue of the same type.  This validates the deductive reduction — that
# cyclomatic complexity 8 (elif chain) is equivalent to complexity 1
# (dispatch loop) for every previously-reachable input.
subtest 'Fixer::apply_fixes dispatch — all 8 rules fire independently' => sub {
	my %DISPATCH_RULES = (
		# type => [ message_that_matches, message_that_does_not_match ]
		'performance_caching'   => [
			'performance',
			'No dependency caching found - increases build times and costs',
		],
		'security_unpinned'     => [



( run in 0.646 second using v1.01-cache-2.11-cpan-d01c6094234 )