Skip to content

Commit

Permalink
Add integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bep committed Oct 10, 2022
1 parent 1617a92 commit d41c57c
Show file tree
Hide file tree
Showing 17 changed files with 224 additions and 343 deletions.
11 changes: 8 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
on:
push:
branches: [ main ]
branches: [ master ]
pull_request:
name: Test
permissions:
contents: read
jobs:
test:
strategy:
matrix:
go-version: [1.18.x, 1.19.x]
platform: [ macos-latest, ubuntu-latest, windows-latest]
go-version: [1.19.x] #
platform: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
- name: Install Go
Expand Down Expand Up @@ -37,6 +39,9 @@ jobs:
#- name: Lint
# run: golint ./...
- name: Test
env:
S3DEPLOY_TEST_KEY: ${{ secrets.S3DEPLOY_TEST_KEY }}
S3DEPLOY_TEST_SECRET: ${{ secrets.S3DEPLOY_TEST_SECRET }}
run: go test -race ./... -coverpkg=./... -coverprofile=coverage.txt -covermode=atomic
- name: Upload coverage
if: success() && matrix.platform == 'ubuntu-latest'
Expand Down
26 changes: 22 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,18 +1,36 @@
module github.com/bep/s3deploy/v2

go 1.14
go 1.18

require (
github.com/aws/aws-sdk-go-v2 v1.16.14
github.com/aws/aws-sdk-go-v2/credentials v1.12.18
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.20.3
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.9
github.com/aws/smithy-go v1.13.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780
github.com/frankban/quicktest v1.14.3
golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect
github.com/oklog/ulid/v2 v2.1.0
github.com/rogpeppe/go-internal v1.9.0
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
golang.org/x/text v0.3.7
gopkg.in/yaml.v2 v2.4.0
)

require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.7 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.15 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.12 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.8 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.16 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.15 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.15 // indirect
github.com/aws/smithy-go v1.13.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/google/go-cmp v0.5.8 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect
)
12 changes: 7 additions & 5 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,23 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU=
github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI=
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
Expand Down
4 changes: 2 additions & 2 deletions lib/cloudfront_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ package lib
import (
"context"
"fmt"
"io/ioutil"
"io"
"path"
"testing"

Expand Down Expand Up @@ -100,7 +100,7 @@ func TestNewCloudFrontClient(t *testing.T) {
c := qt.New(t)
client, err := newCloudFrontClient(
&mockCloudfrontHandler{},
newPrinter(ioutil.Discard),
newPrinter(io.Discard),
Config{
CDNDistributionIDs: Strings{"12345"},
Force: true,
Expand Down
7 changes: 3 additions & 4 deletions lib/deployer.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"os"
"path"
"path/filepath"
Expand Down Expand Up @@ -51,9 +50,9 @@ func Deploy(cfg *Config) (DeployStats, error) {
return DeployStats{}, err
}

var outv, out io.Writer = ioutil.Discard, os.Stdout
var outv, out io.Writer = io.Discard, os.Stdout
if cfg.Silent {
out = ioutil.Discard
out = io.Discard
} else {
if cfg.Verbose {
outv = os.Stdout
Expand Down Expand Up @@ -335,7 +334,7 @@ func (d *Deployer) loadConfig() error {
return nil
}

data, err := ioutil.ReadFile(configFile)
data, err := os.ReadFile(configFile)

if os.IsNotExist(err) {
return nil
Expand Down
3 changes: 1 addition & 2 deletions lib/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"encoding/hex"
"fmt"
"io"
"io/ioutil"
"mime"
"net/http"
"os"
Expand Down Expand Up @@ -205,7 +204,7 @@ func newOSFile(routes routes, targetRoot, relPath, absPath string, fi os.FileInf
peek = make([]byte, 512)
file.Read(peek)
} else {
b, err := ioutil.ReadAll(file)
b, err := io.ReadAll(file)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions lib/files_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package lib

import (
"io/ioutil"
"io"
"os"
"path/filepath"
"strings"
Expand All @@ -24,7 +24,7 @@ func TestOSFile(t *testing.T) {
c.Assert(of.Size(), qt.Equals, int64(3))
c.Assert(of.ETag(), qt.Equals, `"902fbdd2b1df0c4f70b4a5d23525e932"`)
c.Assert(of.Content(), qt.IsNotNil)
b, err := ioutil.ReadAll(of.Content())
b, err := io.ReadAll(of.Content())
c.Assert(err, qt.IsNil)
c.Assert(string(b), qt.Equals, "ABC")
c.Assert(of.ContentType(), qt.Equals, "text/css; charset=utf-8")
Expand Down
1 change: 0 additions & 1 deletion lib/s3.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,6 @@ func (s *s3Store) applyMetadataToPutObjectInput(input *s3.PutObjectInput, f loca
default:
input.Metadata[k] = v
}
input.Metadata[k] = v
}

return nil
Expand Down
10 changes: 5 additions & 5 deletions lib/s3_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package lib

import (
"io/ioutil"
"io"
"testing"

qt "github.com/frankban/quicktest"
Expand All @@ -17,7 +17,7 @@ func TestNewRemoteStoreNoAclProvided(t *testing.T) {
Silent: true,
}

s, err := newRemoteStore(cfg, newPrinter(ioutil.Discard))
s, err := newRemoteStore(cfg, newPrinter(io.Discard))
c.Assert(err, qt.IsNil)

c.Assert("private", qt.Equals, s.acl)
Expand All @@ -33,7 +33,7 @@ func TestNewRemoteStoreAclProvided(t *testing.T) {
Silent: true,
}

s, err := newRemoteStore(cfg, newPrinter(ioutil.Discard))
s, err := newRemoteStore(cfg, newPrinter(io.Discard))
c.Assert(err, qt.IsNil)

c.Assert("public-read", qt.Equals, s.acl)
Expand All @@ -49,7 +49,7 @@ func TestNewRemoteStoreOtherCannedAclProvided(t *testing.T) {
Silent: true,
}

s, err := newRemoteStore(cfg, newPrinter(ioutil.Discard))
s, err := newRemoteStore(cfg, newPrinter(io.Discard))
c.Assert(err, qt.IsNil)

c.Assert("bucket-owner-full-control", qt.Equals, s.acl)
Expand All @@ -66,7 +66,7 @@ func TestNewRemoteStoreDeprecatedPublicReadACLFlaglProvided(t *testing.T) {
Silent: true,
}

s, err := newRemoteStore(cfg, newPrinter(ioutil.Discard))
s, err := newRemoteStore(cfg, newPrinter(io.Discard))
c.Assert(err, qt.IsNil)

c.Assert("public-read", qt.Equals, s.acl)
Expand Down
2 changes: 0 additions & 2 deletions lib/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ func createCredentials(cfg Config) (aws.CredentialsProvider, error) {
return nil, errors.New("AWS key and secret are required")
}

// This seem to be a bug in https://github.com/aws/aws-sdk-go-v2
// It should be possible to use the default credentials provider chain.
if os.Getenv("AWS_ACCESS_KEY_ID") != "" {
return credentials.NewStaticCredentialsProvider(os.Getenv("AWS_ACCESS_KEY_ID"), os.Getenv("AWS_SECRET_ACCESS_KEY"), os.Getenv("AWS_SESSION_TOKEN")), nil
}
Expand Down
41 changes: 37 additions & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"flag"
"fmt"
"log"
"runtime/debug"

"github.com/bep/s3deploy/v2/lib"
)
Expand All @@ -24,33 +25,65 @@ func main() {

// Use:
// s3deploy -source=public/ -bucket=example.com -region=eu-west-1 -key=$AWS_ACCESS_KEY_ID -secret=$AWS_SECRET_ACCESS_KEY
if err := parseAndRun(); err != nil {
log.Fatal(err)
}
}

func parseAndRun() error {
cfg, err := lib.FlagsToConfig()
if err != nil {
log.Fatal(err)
return err
}

flag.Parse()

initVersionInfo()

if !cfg.Silent {
fmt.Printf("s3deploy %v, commit %v, built at %v\n", version, commit, date)
}

if cfg.Help {
flag.Usage()
return
return nil
}

if cfg.PrintVersion {
return
return nil
}

stats, err := lib.Deploy(cfg)
if err != nil {
log.Fatal("error: ", err)
return err
}

if !cfg.Silent {
fmt.Println(stats.Summary())
}

return nil

}

func initVersionInfo() {

bi, ok := debug.ReadBuildInfo()
if !ok {
return
}

version = bi.Main.Version

for _, s := range bi.Settings {
switch s.Key {
case "vcs":
case "vcs.revision":
commit = s.Value
case "vcs.time":
date = s.Value
case "vcs.modified":
}
}

}
Loading

0 comments on commit d41c57c

Please # to comment.