From 4a10c2c400c8b84bf09f5c346d8dfa969f5fabbe Mon Sep 17 00:00:00 2001 From: Michael Fridman Date: Thu, 19 May 2022 19:50:11 -0400 Subject: [PATCH] Remove matryer/is replace with simple internal lib (#356) --- go.mod | 24 ++-- go.sum | 239 ++++++++++---------------------- internal/check/check.go | 79 +++++++++++ tests/e2e/allow_missing_test.go | 199 +++++++++++++------------- tests/e2e/migrations_test.go | 166 ++++++++++++---------- tests/e2e/no_versioning_test.go | 84 ++++++----- up_test.go | 15 +- 7 files changed, 406 insertions(+), 400 deletions(-) create mode 100644 internal/check/check.go diff --git a/go.mod b/go.mod index e3c9619..75e52a0 100644 --- a/go.mod +++ b/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 ) diff --git a/go.sum b/go.sum index 83a7c00..cff19ac 100644 --- a/go.sum +++ b/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= diff --git a/internal/check/check.go b/internal/check/check.go new file mode 100644 index 0000000..cb097e8 --- /dev/null +++ b/internal/check/check.go @@ -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) +} diff --git a/tests/e2e/allow_missing_test.go b/tests/e2e/allow_missing_test.go index dd85b01..37a769c 100644 --- a/tests/e2e/allow_missing_test.go +++ b/tests/e2e/allow_missing_test.go @@ -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 } diff --git a/tests/e2e/migrations_test.go b/tests/e2e/migrations_test.go index 83ab739..fa58a9c 100644 --- a/tests/e2e/migrations_test.go +++ b/tests/e2e/migrations_test.go @@ -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") + } } } diff --git a/tests/e2e/no_versioning_test.go b/tests/e2e/no_versioning_test.go index 032965b..c976712 100644 --- a/tests/e2e/no_versioning_test.go +++ b/tests/e2e/no_versioning_test.go @@ -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) }) } diff --git a/up_test.go b/up_test.go index 44e666b..cb491ca 100644 --- a/up_test.go +++ b/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) + } }