From d9d0f6c5cd0d6c8cf9e7df377fd7f1f20fe49034 Mon Sep 17 00:00:00 2001 From: David Zuelke Date: Fri, 20 Nov 2020 18:39:31 +0100 Subject: [PATCH] Support Composer 2 and add 2.0.7 Closes #440 --- CHANGELOG.md | 5 ++++ support/build/composer-2.0.7 | 5 ++++ .../composer/basic_lock_oldv1/composer.json | 5 ++++ .../composer/basic_lock_oldv1/composer.lock | 19 +++++++++++++ .../composer/basic_lock_v1/composer.json | 5 ++++ .../composer/basic_lock_v1/composer.lock | 20 +++++++++++++ .../composer/basic_lock_v2/composer.json | 5 ++++ .../composer/basic_lock_v2/composer.lock | 20 +++++++++++++ test/spec/composer_spec.rb | 28 +++++++++++++++++++ 9 files changed, 112 insertions(+) create mode 100755 support/build/composer-2.0.7 create mode 100644 test/fixtures/composer/basic_lock_oldv1/composer.json create mode 100644 test/fixtures/composer/basic_lock_oldv1/composer.lock create mode 100644 test/fixtures/composer/basic_lock_v1/composer.json create mode 100644 test/fixtures/composer/basic_lock_v1/composer.lock create mode 100644 test/fixtures/composer/basic_lock_v2/composer.json create mode 100644 test/fixtures/composer/basic_lock_v2/composer.lock create mode 100644 test/spec/composer_spec.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index 28e750a9d..f3e4a524c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## v184 (2020-11-20) +### ADD + +- Support for Composer 2 (#440) [David Zuelke] +- Composer/2.0.7 [David Zuelke] + ### CHG - Install Composer using platform installer [David Zuelke] diff --git a/support/build/composer-2.0.7 b/support/build/composer-2.0.7 new file mode 100755 index 000000000..9e1cfd3c5 --- /dev/null +++ b/support/build/composer-2.0.7 @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Build Path: /app/.heroku/php +# Build Deps: php-min-* + +source $(dirname $0)/composer diff --git a/test/fixtures/composer/basic_lock_oldv1/composer.json b/test/fixtures/composer/basic_lock_oldv1/composer.json new file mode 100644 index 000000000..5bbfdab91 --- /dev/null +++ b/test/fixtures/composer/basic_lock_oldv1/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "php": "7.3.*" + } +} diff --git a/test/fixtures/composer/basic_lock_oldv1/composer.lock b/test/fixtures/composer/basic_lock_oldv1/composer.lock new file mode 100644 index 000000000..2d76e6d86 --- /dev/null +++ b/test/fixtures/composer/basic_lock_oldv1/composer.lock @@ -0,0 +1,19 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "220551b019c182b60d311f89a5a2c6a0", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "7.3.*" + }, + "platform-dev": [] +} diff --git a/test/fixtures/composer/basic_lock_v1/composer.json b/test/fixtures/composer/basic_lock_v1/composer.json new file mode 100644 index 000000000..5bbfdab91 --- /dev/null +++ b/test/fixtures/composer/basic_lock_v1/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "php": "7.3.*" + } +} diff --git a/test/fixtures/composer/basic_lock_v1/composer.lock b/test/fixtures/composer/basic_lock_v1/composer.lock new file mode 100644 index 000000000..5423eade1 --- /dev/null +++ b/test/fixtures/composer/basic_lock_v1/composer.lock @@ -0,0 +1,20 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "220551b019c182b60d311f89a5a2c6a0", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "7.3.*" + }, + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/test/fixtures/composer/basic_lock_v2/composer.json b/test/fixtures/composer/basic_lock_v2/composer.json new file mode 100644 index 000000000..5bbfdab91 --- /dev/null +++ b/test/fixtures/composer/basic_lock_v2/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "php": "7.3.*" + } +} diff --git a/test/fixtures/composer/basic_lock_v2/composer.lock b/test/fixtures/composer/basic_lock_v2/composer.lock new file mode 100644 index 000000000..6e58cda22 --- /dev/null +++ b/test/fixtures/composer/basic_lock_v2/composer.lock @@ -0,0 +1,20 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "220551b019c182b60d311f89a5a2c6a0", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "7.3.*" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/test/spec/composer_spec.rb b/test/spec/composer_spec.rb new file mode 100644 index 000000000..720029c30 --- /dev/null +++ b/test/spec/composer_spec.rb @@ -0,0 +1,28 @@ +require_relative "spec_helper" + +describe "A PHP application" do + context "with a composer.lock generatead by an old version of Composer" do + it "builds using Composer 1.x" do + new_app_with_stack_and_platrepo('test/fixtures/composer/basic_lock_oldv1').deploy do |app| + expect(app.output).to match(/- composer \(1/) + expect(app.output).to match(/Composer version 1/) + end + end + end + context "with a composer.lock generatead by a late version 1 of Composer" do + it "builds using Composer 1.x" do + new_app_with_stack_and_platrepo('test/fixtures/composer/basic_lock_v1').deploy do |app| + expect(app.output).to match(/- composer \(1/) + expect(app.output).to match(/Composer version 1/) + end + end + end + context "with a composer.lock generatead by version 2 of Composer" do + it "builds using Composer 2.x" do + new_app_with_stack_and_platrepo('test/fixtures/composer/basic_lock_v2').deploy do |app| + expect(app.output).to match(/- composer \(2/) + expect(app.output).to match(/Composer version 2/) + end + end + end +end