From 6553f9e4998c8e5efedef4459e730a451a68f884 Mon Sep 17 00:00:00 2001 From: nimisoere Date: Mon, 8 Jan 2024 10:44:31 +0000 Subject: [PATCH] Add test for PHP v8.3 --- .github/workflows/build.yml | 2 +- .phpunit.result.cache | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .phpunit.result.cache diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 62a8d020..4d292750 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,7 +6,7 @@ jobs: strategy: fail-fast: false matrix: - version: [8.1, 8.2] + version: [8.1, 8.2, 8.3] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 00000000..69c02329 --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +{"version":1,"defects":[],"times":{"GoCardlessPro\\ClientTest::testNoEnvironmentCreationFails":0.002,"GoCardlessPro\\ClientTest::testNoAccessTokenCreationFails":0,"GoCardlessPro\\ClientTest::testOnlyStringArguments":0,"GoCardlessPro\\ClientTest::testCreatesClientSuccessfully":0.008,"GoCardlessPro\\Core\\ApiClientTest::testGetQueryEncoding":0.002,"GoCardlessPro\\Core\\ApiClientTest::testSuccessfulResponse":0,"GoCardlessPro\\Core\\ApiClientTest::testRandomIdempotencyKeyInjectionIntoPostRequests":0,"GoCardlessPro\\Core\\ApiClientTest::testPreservationOfProvidedIdempotencyKeyForPostRequests":0,"GoCardlessPro\\Core\\ApiClientTest::testMergingOfRandomIdempotencyKeyIntoCustomHeadersForPostRequests":0,"GoCardlessPro\\Core\\ApiClientTest::testMalformedResponse":0,"GoCardlessPro\\Core\\ApiClientTest::testInvalidStateErrorResponse":0.001,"GoCardlessPro\\Core\\ApiClientTest::testPermissionsErrorResponse":0.001,"GoCardlessPro\\Core\\ApiClientTest::testRateLimitErrorResponse":0,"GoCardlessPro\\Core\\ApiClientTest::testAuthorisationErrorResponse":0,"GoCardlessPro\\Core\\ApiClientTest::testInvalidApiUsageErrorResponse":0,"GoCardlessPro\\Core\\ApiClientTest::testValidationFailedErrorResponse":0,"GoCardlessPro\\Core\\ApiClientTest::testGoCardlessErrorResponse":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testType":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testCode":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testApiResponse":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testErrors":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testDocumentationUrl":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testMessage":0,"GoCardlessPro\\Core\\Exception\\ApiExceptionTest::testRequestId":0,"GoCardlessPro\\Core\\Exception\\ErrorTest::testInvalidStateExecptionMessage":0,"GoCardlessPro\\Core\\Exception\\ErrorTest::testInvalidApiUsageMessage":0,"GoCardlessPro\\Core\\Exception\\ErrorTest::testValidationFailedMessage":0,"GoCardlessPro\\Core\\Exception\\ErrorTest::testValidationFailedWithoutFieldMessage":0,"GoCardlessPro\\Core\\Exception\\ErrorTest::testGoCardlessException":0,"GoCardlessPro\\Core\\Exception\\InvalidStateExceptionTest::testIsIdempotentCreationConflictForNonConflictError":0,"GoCardlessPro\\Core\\Exception\\InvalidStateExceptionTest::testGetConflictingResourceIdForNonConflictError":0,"GoCardlessPro\\Core\\Exception\\InvalidStateExceptionTest::testIsIdempotentCreationConflictForConflictError":0,"GoCardlessPro\\Core\\Exception\\InvalidStateExceptionTest::testGetConflictingResourceIdForConflictError":0,"GoCardlessPro\\Core\\ListResponseTest::testModelsUnwrap":0,"GoCardlessPro\\Core\\ListResponseTest::testModelsIndexing":0,"GoCardlessPro\\Core\\ListResponseTest::testForeachCount":0,"GoCardlessPro\\Core\\ListResponseTest::testForResponseWithNoCursors":0,"GoCardlessPro\\Core\\PaginatorTest::testSingleForeachIterator":0,"GoCardlessPro\\Core\\PaginatorTest::testMultipleIterations":0,"GoCardlessPro\\Integration\\BankAuthorisationsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\BankAuthorisationsIntegrationTest::testBankAuthorisationsCreate":0,"GoCardlessPro\\Integration\\BankAuthorisationsIntegrationTest::testBankAuthorisationsCreateWithIdempotencyConflict":0.001,"GoCardlessPro\\Integration\\BankAuthorisationsIntegrationTest::testBankAuthorisationsGet":0,"GoCardlessPro\\Integration\\BankDetailsLookupsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\BankDetailsLookupsIntegrationTest::testBankDetailsLookupsCreate":0,"GoCardlessPro\\Integration\\BillingRequestFlowsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\BillingRequestFlowsIntegrationTest::testBillingRequestFlowsCreate":0,"GoCardlessPro\\Integration\\BillingRequestFlowsIntegrationTest::testBillingRequestFlowsInitialise":0,"GoCardlessPro\\Integration\\BillingRequestTemplatesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\BillingRequestTemplatesIntegrationTest::testBillingRequestTemplatesList":0,"GoCardlessPro\\Integration\\BillingRequestTemplatesIntegrationTest::testBillingRequestTemplatesGet":0,"GoCardlessPro\\Integration\\BillingRequestTemplatesIntegrationTest::testBillingRequestTemplatesCreate":0,"GoCardlessPro\\Integration\\BillingRequestTemplatesIntegrationTest::testBillingRequestTemplatesCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\BillingRequestTemplatesIntegrationTest::testBillingRequestTemplatesUpdate":0,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsCreate":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsCreateWithIdempotencyConflict":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsCollectCustomerDetails":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsCollectBankAccount":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsConfirmPayerDetails":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsFulfil":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsCancel":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsList":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsGet":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsNotify":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsFallback":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsChooseCurrency":0.001,"GoCardlessPro\\Integration\\BillingRequestsIntegrationTest::testBillingRequestsSelectInstitution":0.001,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksCreate":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksGet":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksList":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksDisable":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksEnable":0,"GoCardlessPro\\Integration\\BlocksIntegrationTest::testBlocksBlockByRef":0,"GoCardlessPro\\Integration\\CreditorBankAccountsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\CreditorBankAccountsIntegrationTest::testCreditorBankAccountsCreate":0,"GoCardlessPro\\Integration\\CreditorBankAccountsIntegrationTest::testCreditorBankAccountsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\CreditorBankAccountsIntegrationTest::testCreditorBankAccountsList":0,"GoCardlessPro\\Integration\\CreditorBankAccountsIntegrationTest::testCreditorBankAccountsGet":0,"GoCardlessPro\\Integration\\CreditorBankAccountsIntegrationTest::testCreditorBankAccountsDisable":0,"GoCardlessPro\\Integration\\CreditorsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\CreditorsIntegrationTest::testCreditorsCreate":0,"GoCardlessPro\\Integration\\CreditorsIntegrationTest::testCreditorsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\CreditorsIntegrationTest::testCreditorsList":0,"GoCardlessPro\\Integration\\CreditorsIntegrationTest::testCreditorsGet":0,"GoCardlessPro\\Integration\\CreditorsIntegrationTest::testCreditorsUpdate":0,"GoCardlessPro\\Integration\\CurrencyExchangeRatesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\CurrencyExchangeRatesIntegrationTest::testCurrencyExchangeRatesList":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testCustomerBankAccountsCreate":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testCustomerBankAccountsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testCustomerBankAccountsList":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testCustomerBankAccountsGet":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testCustomerBankAccountsUpdate":0,"GoCardlessPro\\Integration\\CustomerBankAccountsIntegrationTest::testCustomerBankAccountsDisable":0,"GoCardlessPro\\Integration\\CustomerNotificationsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\CustomerNotificationsIntegrationTest::testCustomerNotificationsHandle":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testCustomersCreate":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testCustomersCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testCustomersList":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testCustomersGet":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testCustomersUpdate":0,"GoCardlessPro\\Integration\\CustomersIntegrationTest::testCustomersRemove":0,"GoCardlessPro\\Integration\\EventsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\EventsIntegrationTest::testEventsList":0.001,"GoCardlessPro\\Integration\\EventsIntegrationTest::testEventsGet":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesCreateWithDates":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesCreateWithDatesWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesCreateWithSchedule":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesCreateWithScheduleWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesList":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesGet":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesUpdate":0,"GoCardlessPro\\Integration\\InstalmentSchedulesIntegrationTest::testInstalmentSchedulesCancel":0,"GoCardlessPro\\Integration\\InstitutionsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\InstitutionsIntegrationTest::testInstitutionsList":0,"GoCardlessPro\\Integration\\InstitutionsIntegrationTest::testInstitutionsListForBillingRequest":0,"GoCardlessPro\\Integration\\MandateImportEntriesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\MandateImportEntriesIntegrationTest::testMandateImportEntriesCreate":0,"GoCardlessPro\\Integration\\MandateImportEntriesIntegrationTest::testMandateImportEntriesList":0,"GoCardlessPro\\Integration\\MandateImportsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\MandateImportsIntegrationTest::testMandateImportsCreate":0,"GoCardlessPro\\Integration\\MandateImportsIntegrationTest::testMandateImportsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\MandateImportsIntegrationTest::testMandateImportsGet":0,"GoCardlessPro\\Integration\\MandateImportsIntegrationTest::testMandateImportsSubmit":0,"GoCardlessPro\\Integration\\MandateImportsIntegrationTest::testMandateImportsCancel":0,"GoCardlessPro\\Integration\\MandatePdfsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\MandatePdfsIntegrationTest::testMandatePdfsCreate":0,"GoCardlessPro\\Integration\\MandateRequestConstraintsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesCreate":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesList":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesGet":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesUpdate":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesCancel":0,"GoCardlessPro\\Integration\\MandatesIntegrationTest::testMandatesReinstate":0,"GoCardlessPro\\Integration\\NegativeBalanceLimitsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\NegativeBalanceLimitsIntegrationTest::testNegativeBalanceLimitsList":0,"GoCardlessPro\\Integration\\NegativeBalanceLimitsIntegrationTest::testNegativeBalanceLimitsCreate":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testPayerAuthorisationsGet":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testPayerAuthorisationsCreate":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testPayerAuthorisationsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testPayerAuthorisationsUpdate":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testPayerAuthorisationsSubmit":0,"GoCardlessPro\\Integration\\PayerAuthorisationsIntegrationTest::testPayerAuthorisationsConfirm":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsCreate":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsList":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsGet":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsUpdate":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsCancel":0,"GoCardlessPro\\Integration\\PaymentsIntegrationTest::testPaymentsRetry":0,"GoCardlessPro\\Integration\\PayoutItemsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\PayoutItemsIntegrationTest::testPayoutItemsList":0,"GoCardlessPro\\Integration\\PayoutsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\PayoutsIntegrationTest::testPayoutsList":0,"GoCardlessPro\\Integration\\PayoutsIntegrationTest::testPayoutsGet":0,"GoCardlessPro\\Integration\\PayoutsIntegrationTest::testPayoutsUpdate":0,"GoCardlessPro\\Integration\\RedirectFlowsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\RedirectFlowsIntegrationTest::testRedirectFlowsCreate":0,"GoCardlessPro\\Integration\\RedirectFlowsIntegrationTest::testRedirectFlowsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\RedirectFlowsIntegrationTest::testRedirectFlowsGet":0,"GoCardlessPro\\Integration\\RedirectFlowsIntegrationTest::testRedirectFlowsComplete":0,"GoCardlessPro\\Integration\\RefundsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\RefundsIntegrationTest::testRefundsCreate":0,"GoCardlessPro\\Integration\\RefundsIntegrationTest::testRefundsCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\RefundsIntegrationTest::testRefundsList":0,"GoCardlessPro\\Integration\\RefundsIntegrationTest::testRefundsGet":0,"GoCardlessPro\\Integration\\RefundsIntegrationTest::testRefundsUpdate":0,"GoCardlessPro\\Integration\\ScenarioSimulatorsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\ScenarioSimulatorsIntegrationTest::testScenarioSimulatorsRun":0,"GoCardlessPro\\Integration\\SchemeIdentifiersIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\SchemeIdentifiersIntegrationTest::testSchemeIdentifiersCreate":0,"GoCardlessPro\\Integration\\SchemeIdentifiersIntegrationTest::testSchemeIdentifiersCreateWithIdempotencyConflict":0,"GoCardlessPro\\Integration\\SchemeIdentifiersIntegrationTest::testSchemeIdentifiersList":0,"GoCardlessPro\\Integration\\SchemeIdentifiersIntegrationTest::testSchemeIdentifiersGet":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsCreate":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsCreateWithIdempotencyConflict":0.001,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsList":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsGet":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsUpdate":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsPause":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsResume":0,"GoCardlessPro\\Integration\\SubscriptionsIntegrationTest::testSubscriptionsCancel":0,"GoCardlessPro\\Integration\\TaxRatesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\TaxRatesIntegrationTest::testTaxRatesList":0,"GoCardlessPro\\Integration\\TaxRatesIntegrationTest::testTaxRatesGet":0,"GoCardlessPro\\Integration\\TransferredMandatesIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\TransferredMandatesIntegrationTest::testTransferredMandatesTransferredMandates":0,"GoCardlessPro\\Integration\\VerificationDetailsIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\VerificationDetailsIntegrationTest::testVerificationDetailsCreate":0,"GoCardlessPro\\Integration\\VerificationDetailsIntegrationTest::testVerificationDetailsList":0,"GoCardlessPro\\Integration\\WebhooksIntegrationTest::testResourceModelExists":0,"GoCardlessPro\\Integration\\WebhooksIntegrationTest::testWebhooksList":0,"GoCardlessPro\\Integration\\WebhooksIntegrationTest::testWebhooksGet":0.001,"GoCardlessPro\\Integration\\WebhooksIntegrationTest::testWebhooksRetry":0,"GoCardlessPro\\Resources\\ResourceTest::testValidGetter":0,"GoCardlessPro\\Resources\\ResourceTest::testValidNestedGetter":0,"GoCardlessPro\\Resources\\ResourceTest::testInvalidGetter":0,"GoCardlessPro\\Resources\\ResourceTest::testGetApiResponse":0.002,"GoCardlessPro\\RetryMiddlewarFactoryTest::testRetryMiddlewareRetriesGetRequestsWhichTimeout":0.502,"GoCardlessPro\\RetryMiddlewarFactoryTest::testRetryMiddlewareRetriesGetRequestsWhichRespond5XX":0.504,"GoCardlessPro\\RetryMiddlewarFactoryTest::testRetryMiddlewareRetriesPutRequests":0.502,"GoCardlessPro\\RetryMiddlewarFactoryTest::testRetryMiddlewareRetriesCreatePostRequests":0.504,"GoCardlessPro\\RetryMiddlewarFactoryTest::testRetryMiddlewareDoesntRetryActionPostRequests":0,"GoCardlessPro\\WebhookTest::testParseWithValidSignature":0.001,"GoCardlessPro\\WebhookTest::testParseWithInvalidSignature":0.001,"GoCardlessPro\\WebhookTest::testIsSignatureValidWithValidSignature":0,"GoCardlessPro\\WebhookTest::testIsSignatureValidWithInvalidSignature":0}} \ No newline at end of file