mirror of https://github.com/pressly/goose.git
Remove matryer/is replace with simple internal lib (#356)
parent
b44efc3a96
commit
4a10c2c400
24
go.mod
24
go.mod
|
@ -3,21 +3,19 @@ module github.com/pressly/goose/v3
|
|||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4
|
||||
github.com/denisenkom/go-mssqldb v0.12.0
|
||||
github.com/bits-and-blooms/bitset v1.2.0 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
|
||||
github.com/containerd/continuity v0.3.0 // indirect
|
||||
github.com/denisenkom/go-mssqldb v0.12.2
|
||||
github.com/docker/cli v20.10.14+incompatible // indirect
|
||||
github.com/go-sql-driver/mysql v1.6.0
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
|
||||
github.com/lib/pq v1.10.4
|
||||
github.com/matryer/is v1.4.0
|
||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/ory/dockertest/v3 v3.8.2-0.20220414165644-e38b9742dc7d
|
||||
github.com/lib/pq v1.10.6
|
||||
github.com/opencontainers/runc v1.1.1 // indirect
|
||||
github.com/ory/dockertest/v3 v3.8.2-0.20220425141607-148c3da5afe5
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/stretchr/testify v1.7.1 // indirect
|
||||
github.com/ziutek/mymysql v1.5.4
|
||||
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd // indirect
|
||||
golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect
|
||||
golang.org/x/tools v0.1.10 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
||||
lukechampine.com/uint128 v1.2.0 // indirect
|
||||
modernc.org/sqlite v1.17.0
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
|
||||
modernc.org/sqlite v1.17.2
|
||||
)
|
||||
|
|
239
go.sum
239
go.sum
|
@ -1,38 +1,48 @@
|
|||
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
||||
github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
|
||||
github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
|
||||
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
|
||||
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
|
||||
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
|
||||
github.com/bkaradzic/go-lz4 v1.0.0 h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk=
|
||||
github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4=
|
||||
github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4=
|
||||
github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E=
|
||||
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||
github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA=
|
||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg=
|
||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
|
||||
github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ=
|
||||
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
|
||||
github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
|
||||
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
|
||||
github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
|
||||
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
|
||||
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4=
|
||||
github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/denisenkom/go-mssqldb v0.12.0 h1:VtrkII767ttSPNRfFekePK3sctr+joXgO58stqQbtUA=
|
||||
github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU=
|
||||
github.com/denisenkom/go-mssqldb v0.12.2 h1:1OcPn5GBIobjWNd+8yjfHNIaFX14B1pWI3F9HZy5KXw=
|
||||
github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk=
|
||||
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
|
||||
github.com/docker/cli v20.10.11+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
|
||||
github.com/docker/cli v20.10.14+incompatible h1:dSBKJOVesDgHo7rbxlYjYsXe7gPzrTT+/cKQgpDAazg=
|
||||
github.com/docker/cli v20.10.14+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
|
||||
github.com/docker/docker v20.10.7+incompatible h1:Z6O9Nhsjv+ayUEeI1IojKbYcsGdgYSNqxe1s2MYzUhQ=
|
||||
|
@ -51,13 +61,21 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x
|
|||
github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188 h1:+eHOFJl1BaXrQxKX+T06f78590z4qA2ZzBTqahsKSE4=
|
||||
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8=
|
||||
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
|
||||
github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
|
@ -74,40 +92,45 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU
|
|||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk=
|
||||
github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
|
||||
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
||||
github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
|
||||
github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||
github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
|
||||
github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
|
||||
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A=
|
||||
github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU=
|
||||
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 h1:rzf0wL0CHVc8CEsgyygG0Mn9CNCCPZqOPaz8RiiHYQk=
|
||||
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc=
|
||||
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
|
||||
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
|
||||
github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
|
||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||
github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=
|
||||
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||
github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
|
||||
github.com/opencontainers/runc v1.1.1 h1:PJ9DSs2sVwE0iVr++pAHE6QkS9tzcVWozlPifdwMgrU=
|
||||
github.com/opencontainers/runc v1.1.1/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc=
|
||||
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
|
||||
github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8=
|
||||
github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
|
||||
github.com/ory/dockertest/v3 v3.8.1 h1:vU/8d1We4qIad2YM0kOwRVtnyue7ExvacPiw1yDm17g=
|
||||
github.com/ory/dockertest/v3 v3.8.1/go.mod h1:wSRQ3wmkz+uSARYMk7kVJFDBGm8x5gSxIhI7NDc+BAQ=
|
||||
github.com/ory/dockertest/v3 v3.8.2-0.20220414165644-e38b9742dc7d h1:eVO59I/Xkxg8e92MS4nbuxdT22cUdCzDgYDLcIlboXI=
|
||||
github.com/ory/dockertest/v3 v3.8.2-0.20220414165644-e38b9742dc7d/go.mod h1:rzVyVkwYO+KDpmwIRT0CtFNoRrupV/Z8IRJ1EFkBTQU=
|
||||
github.com/ory/dockertest/v3 v3.8.2-0.20220425141607-148c3da5afe5 h1:WZ+vNzvqyV9gjAWUdQ505pp5/rPq1lVJnX7ehp5gY7Y=
|
||||
github.com/ory/dockertest/v3 v3.8.2-0.20220425141607-148c3da5afe5/go.mod h1:jgm0rnguArPXsVduy+oUjzFtD0Na+DDNbUl8W5v+ez8=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
|
||||
|
@ -119,6 +142,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
|||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
|
||||
github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
|
@ -143,32 +167,24 @@ github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17
|
|||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
|
||||
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E=
|
||||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38=
|
||||
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210610132358-84b48f89b13b h1:k+E048sYJHyVnsr1GDrRZWQ32D2C7lWs9JRc0bel53A=
|
||||
golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4=
|
||||
golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -180,51 +196,48 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
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/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
|
||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||
golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=
|
||||
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
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=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
|
@ -234,153 +247,43 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
|
|||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
|
||||
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
|
||||
gotest.tools/v3 v3.1.0 h1:rVV8Tcg/8jHUkPUorwjaMTtemIMVXfIPKiOqnhEhakk=
|
||||
gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ=
|
||||
gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I=
|
||||
gotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A=
|
||||
lukechampine.com/uint128 v1.1.1 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU=
|
||||
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
|
||||
lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
|
||||
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
|
||||
modernc.org/cc/v3 v3.33.6/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.33.9/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.33.11/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.34.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.4/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.5/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.7/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.8/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.10/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.15/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.16/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.17/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.18/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.20/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.22/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
|
||||
modernc.org/cc/v3 v3.35.24/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
|
||||
modernc.org/cc/v3 v3.35.25/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
|
||||
modernc.org/cc/v3 v3.35.26 h1:S4B+fg6/9krLtfZ9lr7pfKiESopiv+Sm6lUUI3oc0fY=
|
||||
modernc.org/cc/v3 v3.35.26/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
|
||||
modernc.org/ccgo/v3 v3.9.5/go.mod h1:umuo2EP2oDSBnD3ckjaVUXMrmeAw8C8OSICVa0iFf60=
|
||||
modernc.org/ccgo/v3 v3.10.0/go.mod h1:c0yBmkRFi7uW4J7fwx/JiijwOjeAeR2NoSaRVFPmjMw=
|
||||
modernc.org/ccgo/v3 v3.11.0/go.mod h1:dGNposbDp9TOZ/1KBxghxtUp/bzErD0/0QW4hhSaBMI=
|
||||
modernc.org/ccgo/v3 v3.11.1/go.mod h1:lWHxfsn13L3f7hgGsGlU28D9eUOf6y3ZYHKoPaKU0ag=
|
||||
modernc.org/ccgo/v3 v3.11.3/go.mod h1:0oHunRBMBiXOKdaglfMlRPBALQqsfrCKXgw9okQ3GEw=
|
||||
modernc.org/ccgo/v3 v3.12.4/go.mod h1:Bk+m6m2tsooJchP/Yk5ji56cClmN6R1cqc9o/YtbgBQ=
|
||||
modernc.org/ccgo/v3 v3.12.6/go.mod h1:0Ji3ruvpFPpz+yu+1m0wk68pdr/LENABhTrDkMDWH6c=
|
||||
modernc.org/ccgo/v3 v3.12.8/go.mod h1:Hq9keM4ZfjCDuDXxaHptpv9N24JhgBZmUG5q60iLgUo=
|
||||
modernc.org/ccgo/v3 v3.12.11/go.mod h1:0jVcmyDwDKDGWbcrzQ+xwJjbhZruHtouiBEvDfoIsdg=
|
||||
modernc.org/ccgo/v3 v3.12.14/go.mod h1:GhTu1k0YCpJSuWwtRAEHAol5W7g1/RRfS4/9hc9vF5I=
|
||||
modernc.org/ccgo/v3 v3.12.18/go.mod h1:jvg/xVdWWmZACSgOiAhpWpwHWylbJaSzayCqNOJKIhs=
|
||||
modernc.org/ccgo/v3 v3.12.20/go.mod h1:aKEdssiu7gVgSy/jjMastnv/q6wWGRbszbheXgWRHc8=
|
||||
modernc.org/ccgo/v3 v3.12.21/go.mod h1:ydgg2tEprnyMn159ZO/N4pLBqpL7NOkJ88GT5zNU2dE=
|
||||
modernc.org/ccgo/v3 v3.12.22/go.mod h1:nyDVFMmMWhMsgQw+5JH6B6o4MnZ+UQNw1pp52XYFPRk=
|
||||
modernc.org/ccgo/v3 v3.12.25/go.mod h1:UaLyWI26TwyIT4+ZFNjkyTbsPsY3plAEB6E7L/vZV3w=
|
||||
modernc.org/ccgo/v3 v3.12.29/go.mod h1:FXVjG7YLf9FetsS2OOYcwNhcdOLGt8S9bQ48+OP75cE=
|
||||
modernc.org/ccgo/v3 v3.12.36/go.mod h1:uP3/Fiezp/Ga8onfvMLpREq+KUjUmYMxXPO8tETHtA8=
|
||||
modernc.org/ccgo/v3 v3.12.38/go.mod h1:93O0G7baRST1vNj4wnZ49b1kLxt0xCW5Hsa2qRaZPqc=
|
||||
modernc.org/ccgo/v3 v3.12.43/go.mod h1:k+DqGXd3o7W+inNujK15S5ZYuPoWYLpF5PYougCmthU=
|
||||
modernc.org/ccgo/v3 v3.12.46/go.mod h1:UZe6EvMSqOxaJ4sznY7b23/k13R8XNlyWsO5bAmSgOE=
|
||||
modernc.org/ccgo/v3 v3.12.47/go.mod h1:m8d6p0zNps187fhBwzY/ii6gxfjob1VxWb919Nk1HUk=
|
||||
modernc.org/ccgo/v3 v3.12.50/go.mod h1:bu9YIwtg+HXQxBhsRDE+cJjQRuINuT9PUK4orOco/JI=
|
||||
modernc.org/ccgo/v3 v3.12.51/go.mod h1:gaIIlx4YpmGO2bLye04/yeblmvWEmE4BBBls4aJXFiE=
|
||||
modernc.org/ccgo/v3 v3.12.53/go.mod h1:8xWGGTFkdFEWBEsUmi+DBjwu/WLy3SSOrqEmKUjMeEg=
|
||||
modernc.org/ccgo/v3 v3.12.54/go.mod h1:yANKFTm9llTFVX1FqNKHE0aMcQb1fuPJx6p8AcUx+74=
|
||||
modernc.org/ccgo/v3 v3.12.55/go.mod h1:rsXiIyJi9psOwiBkplOaHye5L4MOOaCjHg1Fxkj7IeU=
|
||||
modernc.org/ccgo/v3 v3.12.56/go.mod h1:ljeFks3faDseCkr60JMpeDb2GSO3TKAmrzm7q9YOcMU=
|
||||
modernc.org/ccgo/v3 v3.12.57/go.mod h1:hNSF4DNVgBl8wYHpMvPqQWDQx8luqxDnNGCMM4NFNMc=
|
||||
modernc.org/ccgo/v3 v3.12.60/go.mod h1:k/Nn0zdO1xHVWjPYVshDeWKqbRWIfif5dtsIOCUVMqM=
|
||||
modernc.org/ccgo/v3 v3.12.66/go.mod h1:jUuxlCFZTUZLMV08s7B1ekHX5+LIAurKTTaugUr/EhQ=
|
||||
modernc.org/ccgo/v3 v3.12.67/go.mod h1:Bll3KwKvGROizP2Xj17GEGOTrlvB1XcVaBrC90ORO84=
|
||||
modernc.org/ccgo/v3 v3.12.73/go.mod h1:hngkB+nUUqzOf3iqsM48Gf1FZhY599qzVg1iX+BT3cQ=
|
||||
modernc.org/ccgo/v3 v3.12.81/go.mod h1:p2A1duHoBBg1mFtYvnhAnQyI6vL0uw5PGYLSIgF6rYY=
|
||||
modernc.org/ccgo/v3 v3.12.84/go.mod h1:ApbflUfa5BKadjHynCficldU1ghjen84tuM5jRynB7w=
|
||||
modernc.org/ccgo/v3 v3.12.86/go.mod h1:dN7S26DLTgVSni1PVA3KxxHTcykyDurf3OgUzNqTSrU=
|
||||
modernc.org/ccgo/v3 v3.12.90/go.mod h1:obhSc3CdivCRpYZmrvO88TXlW0NvoSVvdh/ccRjJYko=
|
||||
modernc.org/ccgo/v3 v3.12.92/go.mod h1:5yDdN7ti9KWPi5bRVWPl8UNhpEAtCjuEE7ayQnzzqHA=
|
||||
modernc.org/ccgo/v3 v3.13.1/go.mod h1:aBYVOUfIlcSnrsRVU8VRS35y2DIfpgkmVkYZ0tpIXi4=
|
||||
modernc.org/ccgo/v3 v3.15.9/go.mod h1:md59wBwDT2LznX/OTCPoVS6KIsdRgY8xqQwBV+hkTH0=
|
||||
modernc.org/ccgo/v3 v3.15.10/go.mod h1:wQKxoFn0ynxMuCLfFD09c8XPUCc8obfchoVR9Cn0fI8=
|
||||
modernc.org/ccgo/v3 v3.15.12/go.mod h1:VFePOWoCd8uDGRJpq/zfJ29D0EVzMSyID8LCMWYbX6I=
|
||||
modernc.org/ccgo/v3 v3.15.14/go.mod h1:144Sz2iBCKogb9OKwsu7hQEub3EVgOlyI8wMUPGKUXQ=
|
||||
modernc.org/ccgo/v3 v3.15.15/go.mod h1:z5qltXjU4PJl0pE5nhYQCvA9DhPHiWsl5GWl89+NSYE=
|
||||
modernc.org/ccgo/v3 v3.15.16/go.mod h1:XbKRMeMWMdq712Tr5ECgATYMrzJ+g9zAZEj2ktzBe24=
|
||||
modernc.org/ccgo/v3 v3.15.17/go.mod h1:bofnFkpRFf5gLY+mBZIyTW6FEcp26xi2lgOFk2Rlvs0=
|
||||
modernc.org/ccgo/v3 v3.15.19/go.mod h1:TDJj+DxR26pkDteH2E5WQDj/xlmtsX7JdzkJkaZhOVU=
|
||||
modernc.org/ccgo/v3 v3.16.0/go.mod h1:w55kPTAqvRMAYS3Lwij6qhqIuBEYS3Z8QtDkjD8cnik=
|
||||
modernc.org/ccgo/v3 v3.16.1/go.mod h1:w55kPTAqvRMAYS3Lwij6qhqIuBEYS3Z8QtDkjD8cnik=
|
||||
modernc.org/ccgo/v3 v3.16.2 h1:FUklsEMps3Y2heuTOmn/l6mv83nQgCjW3nsU+1JXzuQ=
|
||||
modernc.org/ccgo/v3 v3.16.2/go.mod h1:w55kPTAqvRMAYS3Lwij6qhqIuBEYS3Z8QtDkjD8cnik=
|
||||
modernc.org/ccorpus v1.11.1/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
|
||||
modernc.org/cc/v3 v3.36.0 h1:0kmRkTmqNidmu3c7BNDSdVHCxXCkWLmWmCIVX4LUboo=
|
||||
modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
|
||||
modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc=
|
||||
modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw=
|
||||
modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=
|
||||
modernc.org/ccgo/v3 v3.16.6 h1:3l18poV+iUemQ98O3X5OMr97LOqlzis+ytivU4NqGhA=
|
||||
modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=
|
||||
modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk=
|
||||
modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
|
||||
modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
|
||||
modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
|
||||
modernc.org/libc v1.9.8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w=
|
||||
modernc.org/libc v1.9.11/go.mod h1:NyF3tsA5ArIjJ83XB0JlqhjTabTCHm9aX4XMPHyQn0Q=
|
||||
modernc.org/libc v1.11.0/go.mod h1:2lOfPmj7cz+g1MrPNmX65QCzVxgNq2C5o0jdLY2gAYg=
|
||||
modernc.org/libc v1.11.2/go.mod h1:ioIyrl3ETkugDO3SGZ+6EOKvlP3zSOycUETe4XM4n8M=
|
||||
modernc.org/libc v1.11.5/go.mod h1:k3HDCP95A6U111Q5TmG3nAyUcp3kR5YFZTeDS9v8vSU=
|
||||
modernc.org/libc v1.11.6/go.mod h1:ddqmzR6p5i4jIGK1d/EiSw97LBcE3dK24QEwCFvgNgE=
|
||||
modernc.org/libc v1.11.11/go.mod h1:lXEp9QOOk4qAYOtL3BmMve99S5Owz7Qyowzvg6LiZso=
|
||||
modernc.org/libc v1.11.13/go.mod h1:ZYawJWlXIzXy2Pzghaf7YfM8OKacP3eZQI81PDLFdY8=
|
||||
modernc.org/libc v1.11.16/go.mod h1:+DJquzYi+DMRUtWI1YNxrlQO6TcA5+dRRiq8HWBWRC8=
|
||||
modernc.org/libc v1.11.19/go.mod h1:e0dgEame6mkydy19KKaVPBeEnyJB4LGNb0bBH1EtQ3I=
|
||||
modernc.org/libc v1.11.24/go.mod h1:FOSzE0UwookyT1TtCJrRkvsOrX2k38HoInhw+cSCUGk=
|
||||
modernc.org/libc v1.11.26/go.mod h1:SFjnYi9OSd2W7f4ct622o/PAYqk7KHv6GS8NZULIjKY=
|
||||
modernc.org/libc v1.11.27/go.mod h1:zmWm6kcFXt/jpzeCgfvUNswM0qke8qVwxqZrnddlDiE=
|
||||
modernc.org/libc v1.11.28/go.mod h1:Ii4V0fTFcbq3qrv3CNn+OGHAvzqMBvC7dBNyC4vHZlg=
|
||||
modernc.org/libc v1.11.31/go.mod h1:FpBncUkEAtopRNJj8aRo29qUiyx5AvAlAxzlx9GNaVM=
|
||||
modernc.org/libc v1.11.34/go.mod h1:+Tzc4hnb1iaX/SKAutJmfzES6awxfU1BPvrrJO0pYLg=
|
||||
modernc.org/libc v1.11.37/go.mod h1:dCQebOwoO1046yTrfUE5nX1f3YpGZQKNcITUYWlrAWo=
|
||||
modernc.org/libc v1.11.39/go.mod h1:mV8lJMo2S5A31uD0k1cMu7vrJbSA3J3waQJxpV4iqx8=
|
||||
modernc.org/libc v1.11.42/go.mod h1:yzrLDU+sSjLE+D4bIhS7q1L5UwXDOw99PLSX0BlZvSQ=
|
||||
modernc.org/libc v1.11.44/go.mod h1:KFq33jsma7F5WXiYelU8quMJasCCTnHK0mkri4yPHgA=
|
||||
modernc.org/libc v1.11.45/go.mod h1:Y192orvfVQQYFzCNsn+Xt0Hxt4DiO4USpLNXBlXg/tM=
|
||||
modernc.org/libc v1.11.47/go.mod h1:tPkE4PzCTW27E6AIKIR5IwHAQKCAtudEIeAV1/SiyBg=
|
||||
modernc.org/libc v1.11.49/go.mod h1:9JrJuK5WTtoTWIFQ7QjX2Mb/bagYdZdscI3xrvHbXjE=
|
||||
modernc.org/libc v1.11.51/go.mod h1:R9I8u9TS+meaWLdbfQhq2kFknTW0O3aw3kEMqDDxMaM=
|
||||
modernc.org/libc v1.11.53/go.mod h1:5ip5vWYPAoMulkQ5XlSJTy12Sz5U6blOQiYasilVPsU=
|
||||
modernc.org/libc v1.11.54/go.mod h1:S/FVnskbzVUrjfBqlGFIPA5m7UwB3n9fojHhCNfSsnw=
|
||||
modernc.org/libc v1.11.55/go.mod h1:j2A5YBRm6HjNkoSs/fzZrSxCuwWqcMYTDPLNx0URn3M=
|
||||
modernc.org/libc v1.11.56/go.mod h1:pakHkg5JdMLt2OgRadpPOTnyRXm/uzu+Yyg/LSLdi18=
|
||||
modernc.org/libc v1.11.58/go.mod h1:ns94Rxv0OWyoQrDqMFfWwka2BcaF6/61CqJRK9LP7S8=
|
||||
modernc.org/libc v1.11.71/go.mod h1:DUOmMYe+IvKi9n6Mycyx3DbjfzSKrdr/0Vgt3j7P5gw=
|
||||
modernc.org/libc v1.11.75/go.mod h1:dGRVugT6edz361wmD9gk6ax1AbDSe0x5vji0dGJiPT0=
|
||||
modernc.org/libc v1.11.82/go.mod h1:NF+Ek1BOl2jeC7lw3a7Jj5PWyHPwWD4aq3wVKxqV1fI=
|
||||
modernc.org/libc v1.11.86/go.mod h1:ePuYgoQLmvxdNT06RpGnaDKJmDNEkV7ZPKI2jnsvZoE=
|
||||
modernc.org/libc v1.11.87/go.mod h1:Qvd5iXTeLhI5PS0XSyqMY99282y+3euapQFxM7jYnpY=
|
||||
modernc.org/libc v1.11.88/go.mod h1:h3oIVe8dxmTcchcFuCcJ4nAWaoiwzKCdv82MM0oiIdQ=
|
||||
modernc.org/libc v1.11.98/go.mod h1:ynK5sbjsU77AP+nn61+k+wxUGRx9rOFcIqWYYMaDZ4c=
|
||||
modernc.org/libc v1.11.101/go.mod h1:wLLYgEiY2D17NbBOEp+mIJJJBGSiy7fLL4ZrGGZ+8jI=
|
||||
modernc.org/libc v1.12.0/go.mod h1:2MH3DaF/gCU8i/UBiVE1VFRos4o523M7zipmwH8SIgQ=
|
||||
modernc.org/libc v1.14.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
|
||||
modernc.org/libc v1.14.2/go.mod h1:MX1GBLnRLNdvmK9azU9LCxZ5lMyhrbEMK8rG3X/Fe34=
|
||||
modernc.org/libc v1.14.3/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ=
|
||||
modernc.org/libc v1.14.6/go.mod h1:2PJHINagVxO4QW/5OQdRrvMYo+bm5ClpUFfyXCYl9ak=
|
||||
modernc.org/libc v1.14.7/go.mod h1:f8xfWXW8LW41qb4X5+huVQo5dcfPlq7Cbny2TDheMv0=
|
||||
modernc.org/libc v1.14.8/go.mod h1:9+JCLb1MWSY23smyOpIPbd5ED+rSS/ieiDWUpdyO3mo=
|
||||
modernc.org/libc v1.14.10/go.mod h1:y1MtIWhwpJFpLYm6grAThtuXJKEsY6xkdZmXbRngIdo=
|
||||
modernc.org/libc v1.14.12/go.mod h1:fJdoe23MHu2ruPQkFPPqCpToDi5cckzsbmkI6Ez0LqQ=
|
||||
modernc.org/libc v1.15.0 h1:/CTHjQ1QO5mkLDeQICuA9Vh0YvhQTMqtCF2urQTaod8=
|
||||
modernc.org/libc v1.15.0/go.mod h1:H1OKCu+NYa9+uQG8WsP7DndMBP61I4PWH8ivWhbdoWQ=
|
||||
modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=
|
||||
modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A=
|
||||
modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU=
|
||||
modernc.org/libc v1.16.7 h1:qzQtHhsZNpVPpeCu+aMIQldXeV1P0vRhSqCL0nOIJOA=
|
||||
modernc.org/libc v1.16.7/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU=
|
||||
modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/mathutil v1.4.1 h1:ij3fYGe8zBF4Vu+g0oT7mB06r8sqGWKuJu1yXeR4by8=
|
||||
modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/memory v1.0.4/go.mod h1:nV2OApxradM3/OVbs2/0OsP6nPfakXpi50C7dcoHXlc=
|
||||
modernc.org/memory v1.0.5/go.mod h1:B7OYswTRnfGg+4tDH1t1OeUNnsy2viGTdME4tzd+IjM=
|
||||
modernc.org/memory v1.0.6/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
|
||||
modernc.org/memory v1.0.7 h1:UE3cxTRFa5tfUibAV7Jqq8P7zRY0OlJg+yWVIIaluEE=
|
||||
modernc.org/memory v1.0.7/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
|
||||
modernc.org/memory v1.1.1 h1:bDOL0DIDLQv7bWhP3gMvIrnoFw+Eo6F7a2QK9HPDiFU=
|
||||
modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
|
||||
modernc.org/opt v0.1.1 h1:/0RX92k9vwVeDXj+Xn23DKp2VJubL7k8qNffND6qn3A=
|
||||
modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
|
||||
modernc.org/sqlite v1.17.0 h1:yF5JlxCzQOn2WzyfGAPvHbMNx98ifXLno7a97qggXjE=
|
||||
modernc.org/sqlite v1.17.0/go.mod h1:yMNaeEckF88G+PcfRcZRwGE+XnBkzWl/j15bPsDm4QM=
|
||||
modernc.org/sqlite v1.17.2 h1:TjmF36Wi5QcPYqRoAacV1cAyJ7xB/CD0ExpVUEMebnw=
|
||||
modernc.org/sqlite v1.17.2/go.mod h1:GOQmuiXd6pTTes1Fi2s9apiCcD/wbKQtBZ0Nw6/etjM=
|
||||
modernc.org/strutil v1.1.1 h1:xv+J1BXY3Opl2ALrBwyfEikFAj8pmqcpnfmuwUwcozs=
|
||||
modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw=
|
||||
modernc.org/tcl v1.12.0 h1:Mw2Ukszv5qZbwk/wC9HkDjxhPD4exnd/7/zVxqrB4rY=
|
||||
modernc.org/tcl v1.12.0/go.mod h1:9zyAWctRV6IAkMTBeGLyYYqcBrTlVy3ubqiY3dzMfwI=
|
||||
modernc.org/tcl v1.13.1 h1:npxzTwFTZYM8ghWicVIX1cRWzj7Nd8i6AqqX2p+IYao=
|
||||
modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw=
|
||||
modernc.org/token v1.0.0 h1:a0jaWiNMDhDUtqOj09wvjWWAqd3q7WpBulmL9H2egsk=
|
||||
modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||
modernc.org/z v1.4.0 h1:IpbQb3bOi5Fz17UVGU/mSor8sKIu/7pdCsmGGnQHcxs=
|
||||
modernc.org/z v1.4.0/go.mod h1:x6vxerH3hHCPGA3DAM5pERRzuyJEO4UGVfdQC4NZYl0=
|
||||
modernc.org/z v1.5.1 h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM=
|
||||
modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8=
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
package check
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func NoError(t *testing.T, err error) {
|
||||
t.Helper()
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func HasError(t *testing.T, err error) {
|
||||
t.Helper()
|
||||
if err == nil {
|
||||
t.Fatal("expecting an error: got nil")
|
||||
}
|
||||
}
|
||||
|
||||
func IsError(t *testing.T, err, target error) {
|
||||
t.Helper()
|
||||
if !errors.Is(err, target) {
|
||||
t.Fatalf("expecting specific error:\ngot: %v\nwant: %v", err, target)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func Number(t *testing.T, got, want interface{}) {
|
||||
t.Helper()
|
||||
gotNumber, err := reflectToInt64(got)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
wantNumber, err := reflectToInt64(want)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if gotNumber != wantNumber {
|
||||
t.Fatalf("unexpected number value: got:%d want:%d ", gotNumber, wantNumber)
|
||||
}
|
||||
}
|
||||
|
||||
func NumberNotZero(t *testing.T, got interface{}) {
|
||||
t.Helper()
|
||||
gotNumber, err := reflectToInt64(got)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if gotNumber == 0 {
|
||||
t.Fatalf("unexpected number value: got:%d want non-zero ", gotNumber)
|
||||
}
|
||||
}
|
||||
|
||||
func Bool(t *testing.T, got, want bool) {
|
||||
t.Helper()
|
||||
if got != want {
|
||||
t.Fatalf("unexpected boolean value: got:%t want:%t", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func Contains(t *testing.T, got, want string) {
|
||||
t.Helper()
|
||||
if !strings.Contains(got, want) {
|
||||
t.Errorf("failed to find substring %q in string value %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func reflectToInt64(v interface{}) (int64, error) {
|
||||
switch typ := v.(type) {
|
||||
case int, int8, int16, int32, int64:
|
||||
return reflect.ValueOf(typ).Int(), nil
|
||||
}
|
||||
return 0, fmt.Errorf("invalid number: must be int64 type: got:%T", v)
|
||||
}
|
|
@ -2,16 +2,14 @@ package e2e
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/matryer/is"
|
||||
"github.com/pressly/goose/v3"
|
||||
"github.com/pressly/goose/v3/internal/check"
|
||||
)
|
||||
|
||||
func TestNotAllowMissing(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
// Create and apply first 5 migrations.
|
||||
db := setupTestDB(t, 5)
|
||||
|
@ -22,72 +20,72 @@ func TestNotAllowMissing(t *testing.T) {
|
|||
|
||||
// Developer A - migration 7 (mistakenly applied)
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, 7)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
err = migrations[6].Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 7)
|
||||
|
||||
// Developer B - migration 6 (missing) and 8 (new)
|
||||
// This should raise an error. By default goose does not allow missing (out-of-order)
|
||||
// migrations, which means halt if a missing migration is detected.
|
||||
err = goose.Up(db, migrationsDir)
|
||||
is.True(err != nil) // error: found 1 missing migrations
|
||||
is.True(strings.Contains(err.Error(), "missing migrations"))
|
||||
check.HasError(t, err)
|
||||
check.Contains(t, err.Error(), "missing migrations")
|
||||
// Confirm db version is unchanged.
|
||||
current, err = goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 7)
|
||||
}
|
||||
|
||||
func TestAllowMissingUpWithRedo(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
// Create and apply first 5 migrations.
|
||||
db := setupTestDB(t, 5)
|
||||
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
is.True(len(migrations) != 0)
|
||||
check.NoError(t, err)
|
||||
if len(migrations) == 0 {
|
||||
t.Fatalf("got zero migrations")
|
||||
}
|
||||
|
||||
// Migration 7
|
||||
{
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, 7)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
err = migrations[6].Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 7)
|
||||
|
||||
// Redo the previous Up migration and re-apply it.
|
||||
err = goose.Redo(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.True(currentVersion == migrations[6].Version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, migrations[6].Version)
|
||||
}
|
||||
// Migration 6
|
||||
{
|
||||
err = goose.UpByOne(db, migrationsDir, goose.WithAllowMissing())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, int64(6))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, 6)
|
||||
|
||||
err = goose.Redo(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err = goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, int64(6))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, 6)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNowAllowMissingUpByOne(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
// Create and apply first 5 migrations.
|
||||
db := setupTestDB(t, 5)
|
||||
|
@ -104,33 +102,34 @@ func TestNowAllowMissingUpByOne(t *testing.T) {
|
|||
// Developer A - migration 7 (mistakenly applied)
|
||||
{
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, 7)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
err = migrations[6].Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 7)
|
||||
}
|
||||
// Developer B - migration 6
|
||||
{
|
||||
// By default, this should raise an error.
|
||||
err := goose.UpByOne(db, migrationsDir)
|
||||
is.True(err != nil) // error: found 1 missing migrations
|
||||
is.True(strings.Contains(err.Error(), "missing migrations"))
|
||||
// error: found 1 missing migrations
|
||||
check.HasError(t, err)
|
||||
check.Contains(t, err.Error(), "missing migrations")
|
||||
|
||||
count, err := getGooseVersionCount(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(count, int64(6)) // Expecting count of migrations to be 6
|
||||
check.NoError(t, err)
|
||||
check.Number(t, count, 6)
|
||||
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7)) // Expecting max(version_id) to be 7
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version_id) to be 7
|
||||
check.Number(t, current, 7)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAllowMissingUpWithReset(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
// Create and apply first 5 migrations.
|
||||
db := setupTestDB(t, 5)
|
||||
|
@ -147,47 +146,49 @@ func TestAllowMissingUpWithReset(t *testing.T) {
|
|||
// Developer A - migration 7 (mistakenly applied)
|
||||
{
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, 7)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
err = migrations[6].Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 7)
|
||||
}
|
||||
// Developer B - migration 6 (missing) and 8 (new)
|
||||
{
|
||||
// By default, attempting to apply this migration will raise an error.
|
||||
// If goose is set to "allow missing" migrations then it should get applied.
|
||||
err := goose.Up(db, migrationsDir, goose.WithAllowMissing())
|
||||
is.NoErr(err) // Applying missing migration should return no error when allow-missing=true
|
||||
// Applying missing migration should return no error when allow-missing=true
|
||||
check.NoError(t, err)
|
||||
|
||||
// Avoid hard-coding total and max, instead resolve it from the testdata migrations.
|
||||
// In other words, we applied 1..5,7,6,8 and this test shouldn't care
|
||||
// about migration 9 and onwards.
|
||||
allMigrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
maxVersionID := allMigrations[len(allMigrations)-1].Version
|
||||
|
||||
count, err := getGooseVersionCount(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(count, int64(len(allMigrations))) // Count should be all testdata migrations (all applied)
|
||||
check.NoError(t, err)
|
||||
// Count should be all testdata migrations (all applied)
|
||||
check.Number(t, count, len(allMigrations))
|
||||
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, maxVersionID) // Expecting max(version_id) to be highest version in testdata
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version_id) to be highest version in testdata
|
||||
check.Number(t, current, maxVersionID)
|
||||
}
|
||||
|
||||
// Migrate everything down using Reset.
|
||||
err := goose.Reset(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, int64(0))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, 0)
|
||||
}
|
||||
|
||||
func TestAllowMissingUpByOne(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
// Create and apply first 5 migrations.
|
||||
db := setupTestDB(t, 5)
|
||||
|
@ -204,45 +205,48 @@ func TestAllowMissingUpByOne(t *testing.T) {
|
|||
// Developer A - migration 7 (mistakenly applied)
|
||||
{
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, 7)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
err = migrations[6].Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 7)
|
||||
}
|
||||
// Developer B - migration 6
|
||||
{
|
||||
err := goose.UpByOne(db, migrationsDir, goose.WithAllowMissing())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
|
||||
count, err := getGooseVersionCount(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(count, int64(7)) // Expecting count of migrations to be 7
|
||||
check.NoError(t, err)
|
||||
// Expecting count of migrations to be 7
|
||||
check.Number(t, count, 7)
|
||||
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(6)) // Expecting max(version_id) to be 6
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version_id) to be 6
|
||||
check.Number(t, current, 6)
|
||||
}
|
||||
// Developer B - migration 8
|
||||
{
|
||||
// By default, this should raise an error.
|
||||
err := goose.UpByOne(db, migrationsDir, goose.WithAllowMissing())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
|
||||
count, err := getGooseVersionCount(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(count, int64(8)) // Expecting count of migrations to be 8
|
||||
check.NoError(t, err)
|
||||
// Expecting count of migrations to be 8
|
||||
check.Number(t, count, 8)
|
||||
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(8)) // Expecting max(version_id) to be 8
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version_id) to be 8
|
||||
check.Number(t, current, 8)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMigrateAllowMissingDown(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
const (
|
||||
maxVersion = 8
|
||||
|
@ -253,28 +257,29 @@ func TestMigrateAllowMissingDown(t *testing.T) {
|
|||
// Developer A - migration 7 (mistakenly applied)
|
||||
{
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, maxVersion-1)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
err = migrations[6].Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(maxVersion-1))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, maxVersion-1)
|
||||
}
|
||||
// Developer B - migration 6 (missing) and 8 (new)
|
||||
{
|
||||
// 6
|
||||
err := goose.UpByOne(db, migrationsDir, goose.WithAllowMissing())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// 8
|
||||
err = goose.UpByOne(db, migrationsDir, goose.WithAllowMissing())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
|
||||
count, err := getGooseVersionCount(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(count, int64(maxVersion)) // Expecting count of migrations to be 8
|
||||
check.NoError(t, err)
|
||||
check.Number(t, count, maxVersion)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(maxVersion)) // Expecting max(version_id) to be 8
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version_id) to be 8
|
||||
check.Number(t, current, maxVersion)
|
||||
}
|
||||
// The order in the database is expected to be:
|
||||
// 1,2,3,4,5,7,6,8
|
||||
|
@ -284,56 +289,58 @@ func TestMigrateAllowMissingDown(t *testing.T) {
|
|||
// Migrate down by one. Expecting 6.
|
||||
{
|
||||
err := goose.Down(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(6)) // Expecting max(version) to be 6
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version) to be 6
|
||||
check.Number(t, current, 6)
|
||||
}
|
||||
// Migrate down by one. Expecting 7.
|
||||
{
|
||||
err := goose.Down(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(7)) // Expecting max(version) to be 7
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version) to be 7
|
||||
check.Number(t, current, 7)
|
||||
}
|
||||
// Migrate down by one. Expecting 5.
|
||||
{
|
||||
err := goose.Down(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
current, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(current, int64(5)) // Expecting max(version) to be 5
|
||||
check.NoError(t, err)
|
||||
// Expecting max(version) to be 5
|
||||
check.Number(t, current, 5)
|
||||
}
|
||||
}
|
||||
|
||||
// setupTestDB is helper to setup a DB and apply migrations
|
||||
// up to the specified version.
|
||||
func setupTestDB(t *testing.T, version int64) *sql.DB {
|
||||
is := is.New(t)
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
|
||||
goose.SetDialect(*dialect)
|
||||
|
||||
// Create goose table.
|
||||
current, err := goose.EnsureDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.True(current == int64(0))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, 0)
|
||||
// Collect first 5 migrations.
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, version)
|
||||
is.NoErr(err)
|
||||
is.True(int64(len(migrations)) == version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, len(migrations), version)
|
||||
// Apply n migrations manually.
|
||||
for _, m := range migrations {
|
||||
err := m.Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
}
|
||||
// Verify the current DB version is the Nth migration. This will only
|
||||
// work for sqeuentially applied migrations.
|
||||
current, err = goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.True(current == int64(version))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, current, version)
|
||||
|
||||
return db
|
||||
}
|
||||
|
|
|
@ -2,194 +2,214 @@ package e2e
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/matryer/is"
|
||||
"github.com/pressly/goose/v3"
|
||||
"github.com/pressly/goose/v3/internal/check"
|
||||
)
|
||||
|
||||
func TestMigrateUpWithReset(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
goose.SetDialect(*dialect)
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
is.True(len(migrations) != 0)
|
||||
check.NoError(t, err)
|
||||
check.NumberNotZero(t, len(migrations))
|
||||
// Migrate all
|
||||
err = goose.Up(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, migrations[len(migrations)-1].Version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, migrations[len(migrations)-1].Version)
|
||||
// Validate the db migration version actually matches what goose claims it is
|
||||
gotVersion, err := getCurrentGooseVersion(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(gotVersion, currentVersion) // incorrect database version
|
||||
check.NoError(t, err)
|
||||
// incorrect database version
|
||||
check.Number(t, gotVersion, currentVersion)
|
||||
|
||||
// Migrate everything down using Reset.
|
||||
err = goose.Reset(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err = goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, int64(0))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, 0)
|
||||
}
|
||||
|
||||
func TestMigrateUpWithRedo(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
goose.SetDialect(*dialect)
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
is.True(len(migrations) != 0)
|
||||
check.NoError(t, err)
|
||||
|
||||
check.NumberNotZero(t, len(migrations))
|
||||
startingVersion, err := goose.EnsureDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(startingVersion, int64(0))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, startingVersion, 0)
|
||||
// Migrate all
|
||||
for _, migration := range migrations {
|
||||
err = migration.Up(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.True(currentVersion == migration.Version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, migration.Version)
|
||||
|
||||
// Redo the previous Up migration and re-apply it.
|
||||
err = goose.Redo(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err = goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.True(currentVersion == migration.Version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, migration.Version)
|
||||
}
|
||||
// Once everything is tested the version should match the highest testdata version
|
||||
maxVersion := migrations[len(migrations)-1].Version
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, maxVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, maxVersion)
|
||||
}
|
||||
|
||||
func TestMigrateUpTo(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
const (
|
||||
upToVersion int64 = 2
|
||||
)
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
goose.SetDialect(*dialect)
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
is.True(len(migrations) != 0)
|
||||
check.NoError(t, err)
|
||||
check.NumberNotZero(t, len(migrations))
|
||||
// Migrate up to the second migration
|
||||
err = goose.UpTo(db, migrationsDir, upToVersion)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Fetch the goose version from DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, upToVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, upToVersion)
|
||||
// Validate the version actually matches what goose claims it is
|
||||
gotVersion, err := getCurrentGooseVersion(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(gotVersion, upToVersion) // incorrect database version
|
||||
check.NoError(t, err)
|
||||
check.Number(t, gotVersion, upToVersion) // incorrect database version
|
||||
}
|
||||
|
||||
func TestMigrateUpByOne(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
goose.SetDialect(*dialect)
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
is.True(len(migrations) != 0)
|
||||
check.NoError(t, err)
|
||||
check.NumberNotZero(t, len(migrations))
|
||||
// Apply all migrations one-by-one.
|
||||
var counter int
|
||||
for {
|
||||
err := goose.UpByOne(db, migrationsDir)
|
||||
counter++
|
||||
if counter > len(migrations) {
|
||||
is.Equal(err, goose.ErrNoNextVersion)
|
||||
if !errors.Is(err, goose.ErrNoNextVersion) {
|
||||
t.Fatalf("incorrect error: got:%v want:%v", err, goose.ErrNoNextVersion)
|
||||
}
|
||||
break
|
||||
}
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
}
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, migrations[len(migrations)-1].Version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, migrations[len(migrations)-1].Version)
|
||||
// Validate the db migration version actually matches what goose claims it is
|
||||
gotVersion, err := getCurrentGooseVersion(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(gotVersion, currentVersion) // incorrect database version
|
||||
check.NoError(t, err)
|
||||
check.Number(t, gotVersion, currentVersion) // incorrect database version
|
||||
}
|
||||
|
||||
func TestMigrateFull(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := is.New(t)
|
||||
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
goose.SetDialect(*dialect)
|
||||
migrations, err := goose.CollectMigrations(migrationsDir, 0, goose.MaxVersion)
|
||||
is.NoErr(err)
|
||||
is.True(len(migrations) != 0)
|
||||
check.NoError(t, err)
|
||||
check.NumberNotZero(t, len(migrations))
|
||||
// test retrieving invalid current goose migrations. goose cannot return a migration
|
||||
// if the supplied "current" version is non-existent or 0.
|
||||
_, err = migrations.Current(20160813)
|
||||
is.Equal(err, goose.ErrNoCurrentVersion)
|
||||
if !errors.Is(err, goose.ErrNoCurrentVersion) {
|
||||
t.Fatalf("incorrect error: got:%v want:%v", err, goose.ErrNoCurrentVersion)
|
||||
}
|
||||
_, err = migrations.Current(0)
|
||||
is.Equal(err, goose.ErrNoCurrentVersion)
|
||||
if !errors.Is(err, goose.ErrNoCurrentVersion) {
|
||||
t.Fatalf("incorrect error: got:%v want:%v", err, goose.ErrNoCurrentVersion)
|
||||
}
|
||||
// verify the first migration1. This should not change if more migrations are added
|
||||
// in the future.
|
||||
migration1, err := migrations.Current(1)
|
||||
is.NoErr(err)
|
||||
is.Equal(migration1.Version, int64(1))
|
||||
is.Equal(migration1.Source, filepath.Join(migrationsDir, "00001_a.sql"))
|
||||
is.Equal(migration1.Registered, false) // expecting false for .sql migrations
|
||||
is.Equal(migration1.Previous, int64(-1))
|
||||
is.Equal(migration1.Next, int64(2))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, migration1.Version, 1)
|
||||
if migration1.Source != filepath.Join(migrationsDir, "00001_a.sql") {
|
||||
t.Fatalf("failed to get correct migration file:\ngot:%s\nwant:%s",
|
||||
migration1.Source,
|
||||
filepath.Join(migrationsDir, "00001_a.sql"),
|
||||
)
|
||||
}
|
||||
// expecting false for .sql migrations
|
||||
check.Bool(t, migration1.Registered, false)
|
||||
check.Number(t, migration1.Previous, -1)
|
||||
check.Number(t, migration1.Next, 2)
|
||||
|
||||
{
|
||||
// Apply all up migrations
|
||||
err = goose.Up(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(currentVersion, migrations[len(migrations)-1].Version)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, currentVersion, migrations[len(migrations)-1].Version)
|
||||
// Validate the db migration version actually matches what goose claims it is
|
||||
gotVersion, err := getCurrentGooseVersion(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(gotVersion, currentVersion) // incorrect database version
|
||||
check.NoError(t, err)
|
||||
check.Number(t, gotVersion, currentVersion) // incorrect database version
|
||||
tables, err := getTableNames(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(tables, knownTables)
|
||||
check.NoError(t, err)
|
||||
if !reflect.DeepEqual(tables, knownTables) {
|
||||
t.Logf("got tables: %v", tables)
|
||||
t.Logf("known tables: %v", knownTables)
|
||||
t.Fatal("failed to match tables")
|
||||
}
|
||||
}
|
||||
{
|
||||
// Apply 1 down migration
|
||||
err := goose.Down(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
gotVersion, err := getCurrentGooseVersion(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(gotVersion, migrations[len(migrations)-1].Version-1) // incorrect database version
|
||||
check.NoError(t, err)
|
||||
check.Number(t, gotVersion, migrations[len(migrations)-1].Version-1) // incorrect database version
|
||||
}
|
||||
{
|
||||
// Migrate all remaining migrations down. Should only be left with a single table:
|
||||
// the default goose table
|
||||
err := goose.DownTo(db, migrationsDir, 0)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
gotVersion, err := getCurrentGooseVersion(db, goose.TableName())
|
||||
is.NoErr(err)
|
||||
is.Equal(gotVersion, int64(0))
|
||||
check.NoError(t, err)
|
||||
check.Number(t, gotVersion, 0)
|
||||
tables, err := getTableNames(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(tables, []string{goose.TableName()})
|
||||
check.NoError(t, err)
|
||||
knownTables := []string{goose.TableName()}
|
||||
if !reflect.DeepEqual(tables, knownTables) {
|
||||
t.Logf("got tables: %v", tables)
|
||||
t.Logf("known tables: %v", knownTables)
|
||||
t.Fatal("failed to match tables")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@ import (
|
|||
"database/sql"
|
||||
"testing"
|
||||
|
||||
"github.com/matryer/is"
|
||||
"github.com/pressly/goose/v3"
|
||||
"github.com/pressly/goose/v3/internal/check"
|
||||
)
|
||||
|
||||
func TestNoVersioning(t *testing.T) {
|
||||
|
@ -18,120 +18,116 @@ func TestNoVersioning(t *testing.T) {
|
|||
// These are owners created by migration files.
|
||||
wantOwnerCount = 4
|
||||
)
|
||||
is := is.New(t)
|
||||
db, err := newDockerDB(t)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
goose.SetDialect(*dialect)
|
||||
|
||||
err = goose.Up(db, migrationsDir)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
baseVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
|
||||
t.Run("seed-up-down-to-zero", func(t *testing.T) {
|
||||
is := is.NewRelaxed(t)
|
||||
// Run (all) up migrations from the seed dir
|
||||
{
|
||||
err = goose.Up(db, seedDir, goose.WithNoVersioning())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Confirm no changes to the versioned schema in the DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(baseVersion, currentVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, baseVersion, currentVersion)
|
||||
seedOwnerCount, err := countSeedOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(seedOwnerCount, wantSeedOwnerCount)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, seedOwnerCount, wantSeedOwnerCount)
|
||||
}
|
||||
|
||||
// Run (all) down migrations from the seed dir
|
||||
{
|
||||
err = goose.DownTo(db, seedDir, 0, goose.WithNoVersioning())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Confirm no changes to the versioned schema in the DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(baseVersion, currentVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, baseVersion, currentVersion)
|
||||
seedOwnerCount, err := countSeedOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(seedOwnerCount, 0)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, seedOwnerCount, 0)
|
||||
}
|
||||
|
||||
// The migrations added 4 non-seed owners, they must remain
|
||||
// in the database afterwards
|
||||
ownerCount, err := countOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(ownerCount, wantOwnerCount)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, ownerCount, wantOwnerCount)
|
||||
})
|
||||
|
||||
t.Run("test-seed-up-reset", func(t *testing.T) {
|
||||
is := is.NewRelaxed(t)
|
||||
// Run (all) up migrations from the seed dir
|
||||
{
|
||||
err = goose.Up(db, seedDir, goose.WithNoVersioning())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Confirm no changes to the versioned schema in the DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(baseVersion, currentVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, baseVersion, currentVersion)
|
||||
seedOwnerCount, err := countSeedOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(seedOwnerCount, wantSeedOwnerCount)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, seedOwnerCount, wantSeedOwnerCount)
|
||||
}
|
||||
|
||||
// Run reset (effectively the same as down-to 0)
|
||||
{
|
||||
err = goose.Reset(db, seedDir, goose.WithNoVersioning())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Confirm no changes to the versioned schema in the DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(baseVersion, currentVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, baseVersion, currentVersion)
|
||||
seedOwnerCount, err := countSeedOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(seedOwnerCount, 0)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, seedOwnerCount, 0)
|
||||
}
|
||||
|
||||
// The migrations added 4 non-seed owners, they must remain
|
||||
// in the database afterwards
|
||||
ownerCount, err := countOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(ownerCount, wantOwnerCount)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, ownerCount, wantOwnerCount)
|
||||
})
|
||||
|
||||
t.Run("test-seed-up-redo", func(t *testing.T) {
|
||||
is := is.NewRelaxed(t)
|
||||
// Run (all) up migrations from the seed dir
|
||||
{
|
||||
err = goose.Up(db, seedDir, goose.WithNoVersioning())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Confirm no changes to the versioned schema in the DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(baseVersion, currentVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, baseVersion, currentVersion)
|
||||
seedOwnerCount, err := countSeedOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(seedOwnerCount, wantSeedOwnerCount)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, seedOwnerCount, wantSeedOwnerCount)
|
||||
}
|
||||
|
||||
// Run reset (effectively the same as down-to 0)
|
||||
{
|
||||
err = goose.Redo(db, seedDir, goose.WithNoVersioning())
|
||||
is.NoErr(err)
|
||||
check.NoError(t, err)
|
||||
// Confirm no changes to the versioned schema in the DB
|
||||
currentVersion, err := goose.GetDBVersion(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(baseVersion, currentVersion)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, baseVersion, currentVersion)
|
||||
seedOwnerCount, err := countSeedOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(seedOwnerCount, wantSeedOwnerCount) // owners should be unchanged
|
||||
check.NoError(t, err)
|
||||
check.Number(t, seedOwnerCount, wantSeedOwnerCount) // owners should be unchanged
|
||||
}
|
||||
|
||||
// The migrations added 4 non-seed owners, they must remain
|
||||
// in the database afterwards along with the 250 seed owners for a
|
||||
// total of 254.
|
||||
ownerCount, err := countOwners(db)
|
||||
is.NoErr(err)
|
||||
is.Equal(ownerCount, wantOwnerCount+wantSeedOwnerCount)
|
||||
check.NoError(t, err)
|
||||
check.Number(t, ownerCount, wantOwnerCount+wantSeedOwnerCount)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
15
up_test.go
15
up_test.go
|
@ -2,12 +2,9 @@ package goose
|
|||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/matryer/is"
|
||||
)
|
||||
|
||||
func TestFindMissingMigrations(t *testing.T) {
|
||||
is := is.New(t)
|
||||
known := Migrations{
|
||||
{Version: 1},
|
||||
{Version: 3},
|
||||
|
@ -26,7 +23,13 @@ func TestFindMissingMigrations(t *testing.T) {
|
|||
{Version: 8}, // new migration
|
||||
}
|
||||
got := findMissingMigrations(known, new)
|
||||
is.Equal(len(got), int(2))
|
||||
is.Equal(got[0].Version, int64(2)) // Expecting first missing migration
|
||||
is.Equal(got[1].Version, int64(6)) // Expecting second missing migration
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("invalid migration count: got:%d want:%d", len(got), 2)
|
||||
}
|
||||
if got[0].Version != 2 {
|
||||
t.Errorf("expecting first migration: got:%d want:%d", got[0].Version, 2)
|
||||
}
|
||||
if got[1].Version != 6 {
|
||||
t.Errorf("expecting second migration: got:%d want:%d", got[0].Version, 6)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue