func createEnvBuildpack() string { tmpPath, err := ioutil.TempDir("", "buildpack-cats") Expect(err).ToNot(HaveOccurred()) buildpackArchivePath := path.Join(tmpPath, "buildpack.zip") archive_helpers.CreateZipArchive(buildpackArchivePath, []archive_helpers.ArchiveFile{ { Name: "bin/compile", Body: `#!/usr/bin/env bash echo "STAGED WITH CUSTOM BUILDPACK" mkdir -p $1 $2 if [ -f "$2/cached-file" ]; then cp $2/cached-file $1/content else echo "cache not found" > $1/content fi env content=$(cat $1/content) echo "web: while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; echo "custom buildpack contents - $content"; } | nc -l \$PORT; done" > $1/Procfile echo "here's a cache" > $2/cached-file `, }, { Name: "bin/detect", Body: `#!/bin/bash echo no exit 1 `, }, { Name: "bin/release", Body: `#!/usr/bin/env bash cat <<EOF --- config_vars: PATH: bin:/usr/local/bin:/usr/bin:/bin FROM_BUILD_PACK: "yes" default_process_types: web: while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; echo "custom buildpack contents - $content"; } | nc -l \$PORT; done EOF `, }, }) return buildpackArchivePath }
archive_helpers.CreateZipArchive(buildpackArchivePath, []archive_helpers.ArchiveFile{ { Name: "bin/compile", Body: `#!/usr/bin/env bash sleep 5 cat /etc/lsb-release sleep 10 `, }, { Name: "bin/detect", Body: fmt.Sprintf(`#!/bin/bash if [ -f "${1}/%s" ]; then echo Simple else echo no exit 1 fi `, matchingFilename(appName)), }, { Name: "bin/release", Body: `#!/usr/bin/env bash cat <<EOF --- config_vars: PATH: bin:/usr/local/bin:/usr/bin:/bin FROM_BUILD_PACK: "yes" default_process_types: web: while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; echo -e "\$(cat /etc/lsb-release)"; } | nc -l \$PORT; done EOF `, }, })
tmpPath, err := ioutil.TempDir("", "env-group-staging") Expect(err).ToNot(HaveOccurred()) buildpackArchivePath := path.Join(tmpPath, "buildpack.zip") archive_helpers.CreateZipArchive(buildpackArchivePath, []archive_helpers.ArchiveFile{ { Name: "bin/compile", Body: fmt.Sprintf(`#!/usr/bin/env bash sleep 5 echo $%s exit 1 `, envVarName), }, { Name: "bin/detect", Body: `#!/bin/bash exit 1 `, }, { Name: "bin/release", Body: `#!/usr/bin/env bash exit 1 `, }, }) return buildpackArchivePath } var fetchEnvironmentVariables = func(groupType string) map[string]string {
archive_helpers.CreateZipArchive(buildpackArchivePath, []archive_helpers.ArchiveFile{ { Name: "bin/compile", Body: `#!/usr/bin/env bash mkdir -p $1 $2 if [ -f "$2/cached-file" ]; then cp $2/cached-file $1/content else echo "cache not found" > $1/content fi echo "here's a cache" > $2/cached-file `, }, { Name: "bin/detect", Body: fmt.Sprintf(`#!/bin/bash if [ -f "${1}/%s" ]; then echo Buildpack that needs cache else echo no exit 1 fi `, matchingFilename(appName)), }, { Name: "bin/release", Body: `#!/usr/bin/env bash content=$(cat $1/content) cat <<EOF --- config_vars: PATH: bin:/usr/local/bin:/usr/bin:/bin FROM_BUILD_PACK: "yes" default_process_types: web: while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; echo "custom buildpack contents - $content"; } | nc -l \$PORT; done EOF `, }, })
archive_helpers.CreateZipArchive(buildpackArchivePath, []archive_helpers.ArchiveFile{ { Name: "bin/compile", Body: `#!/usr/bin/env bash sleep 5 echo RUBY_LOCATION=$(which ruby) echo RUBY_VERSION=$(ruby --version) sleep 10 `, }, { Name: "bin/detect", Body: fmt.Sprintf(`#!/bin/bash if [ -f "${1}/%s" ]; then echo Simple else echo no exit 1 fi `, matchingFilename(appName)), }, { Name: "bin/release", Body: `#!/usr/bin/env bash cat <<EOF --- config_vars: PATH: bin:/usr/local/bin:/usr/bin:/bin FROM_BUILD_PACK: "yes" default_process_types: web: while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; echo "hi from a simple admin buildpack"; } | nc -l \$PORT; done EOF `, }, })
Expect(emptyDirInfo.IsDir()).To(BeTrue()) target, err := os.Readlink(filepath.Join(extractionDest, "some-symlink")) Expect(err).NotTo(HaveOccurred()) Expect(target).To(Equal("some-file")) symlinkInfo, err := os.Lstat(filepath.Join(extractionDest, "some-symlink")) Expect(err).NotTo(HaveOccurred()) Expect(symlinkInfo.Mode() & 0755).To(Equal(os.FileMode(0755))) } Context("when the file is a zip archive", func() { BeforeEach(func() { test_helper.CreateZipArchive(extractionSrc, archiveFiles) }) Context("when 'unzip' is on the PATH", func() { BeforeEach(func() { _, err := exec.LookPath("unzip") Expect(err).NotTo(HaveOccurred()) }) It("extracts the ZIP's files, generating directories, and honoring file permissions and symlinks", extractionTest) }) Context("when 'unzip' is not in the PATH", func() { var oldPATH string BeforeEach(func() {