mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	go-sqlite3 gomod version (#12490)
This commit is contained in:
		
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							@@ -45,7 +45,7 @@ require (
 | 
				
			|||||||
	github.com/go-redis/redis v6.15.2+incompatible
 | 
						github.com/go-redis/redis v6.15.2+incompatible
 | 
				
			||||||
	github.com/go-sql-driver/mysql v1.5.0
 | 
						github.com/go-sql-driver/mysql v1.5.0
 | 
				
			||||||
	github.com/go-swagger/go-swagger v0.21.0
 | 
						github.com/go-swagger/go-swagger v0.21.0
 | 
				
			||||||
	github.com/go-testfixtures/testfixtures/v3 v3.2.0
 | 
						github.com/go-testfixtures/testfixtures/v3 v3.4.0
 | 
				
			||||||
	github.com/gobwas/glob v0.2.3
 | 
						github.com/gobwas/glob v0.2.3
 | 
				
			||||||
	github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28
 | 
						github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28
 | 
				
			||||||
	github.com/gogs/cron v0.0.0-20171120032916-9f6c956d3e14
 | 
						github.com/gogs/cron v0.0.0-20171120032916-9f6c956d3e14
 | 
				
			||||||
@@ -68,7 +68,7 @@ require (
 | 
				
			|||||||
	github.com/mailru/easyjson v0.7.0 // indirect
 | 
						github.com/mailru/easyjson v0.7.0 // indirect
 | 
				
			||||||
	github.com/markbates/goth v1.61.2
 | 
						github.com/markbates/goth v1.61.2
 | 
				
			||||||
	github.com/mattn/go-isatty v0.0.12
 | 
						github.com/mattn/go-isatty v0.0.12
 | 
				
			||||||
	github.com/mattn/go-sqlite3 v2.0.2+incompatible
 | 
						github.com/mattn/go-sqlite3 v1.14.0
 | 
				
			||||||
	github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75
 | 
						github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75
 | 
				
			||||||
	github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81
 | 
						github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81
 | 
				
			||||||
	github.com/mgechev/revive v1.0.2
 | 
						github.com/mgechev/revive v1.0.2
 | 
				
			||||||
@@ -90,7 +90,7 @@ require (
 | 
				
			|||||||
	github.com/sergi/go-diff v1.1.0
 | 
						github.com/sergi/go-diff v1.1.0
 | 
				
			||||||
	github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect
 | 
						github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect
 | 
				
			||||||
	github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd
 | 
						github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd
 | 
				
			||||||
	github.com/stretchr/testify v1.4.0
 | 
						github.com/stretchr/testify v1.5.1
 | 
				
			||||||
	github.com/tecbot/gorocksdb v0.0.0-20181010114359-8752a9433481 // indirect
 | 
						github.com/tecbot/gorocksdb v0.0.0-20181010114359-8752a9433481 // indirect
 | 
				
			||||||
	github.com/tinylib/msgp v1.1.2 // indirect
 | 
						github.com/tinylib/msgp v1.1.2 // indirect
 | 
				
			||||||
	github.com/tstranex/u2f v1.0.0
 | 
						github.com/tstranex/u2f v1.0.0
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										86
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								go.sum
									
									
									
									
									
								
							@@ -127,6 +127,8 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf
 | 
				
			|||||||
github.com/chris-ramon/douceur v0.2.0 h1:IDMEdxlEUUBYBKE4z/mJnFyVXox+MjuEVDJNN27glkU=
 | 
					github.com/chris-ramon/douceur v0.2.0 h1:IDMEdxlEUUBYBKE4z/mJnFyVXox+MjuEVDJNN27glkU=
 | 
				
			||||||
github.com/chris-ramon/douceur v0.2.0/go.mod h1:wDW5xjJdeoMm1mRt4sD4c/LbF/mWdEpRXQKjTR8nIBE=
 | 
					github.com/chris-ramon/douceur v0.2.0/go.mod h1:wDW5xjJdeoMm1mRt4sD4c/LbF/mWdEpRXQKjTR8nIBE=
 | 
				
			||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 | 
					github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 | 
				
			||||||
 | 
					github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
 | 
				
			||||||
 | 
					github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
 | 
				
			||||||
github.com/corbym/gocrest v1.0.3 h1:gwEdq6RkTmq+09CTuM29DfKOCtZ7G7bcyxs3IZ6EVdU=
 | 
					github.com/corbym/gocrest v1.0.3 h1:gwEdq6RkTmq+09CTuM29DfKOCtZ7G7bcyxs3IZ6EVdU=
 | 
				
			||||||
github.com/corbym/gocrest v1.0.3/go.mod h1:maVFL5lbdS2PgfOQgGRWDYTeunSWQeiEgoNdTABShCs=
 | 
					github.com/corbym/gocrest v1.0.3/go.mod h1:maVFL5lbdS2PgfOQgGRWDYTeunSWQeiEgoNdTABShCs=
 | 
				
			||||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
 | 
					github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
 | 
				
			||||||
@@ -135,6 +137,7 @@ github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8Nz
 | 
				
			|||||||
github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
 | 
					github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
 | 
				
			||||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 | 
					github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 | 
				
			||||||
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 | 
					github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 | 
				
			||||||
 | 
					github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 | 
				
			||||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 | 
					github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 | 
				
			||||||
github.com/couchbase/ghistogram v0.1.0/go.mod h1:s1Jhy76zqfEecpNWJfWUiKZookAFaiGOEoyzgHt9i7k=
 | 
					github.com/couchbase/ghistogram v0.1.0/go.mod h1:s1Jhy76zqfEecpNWJfWUiKZookAFaiGOEoyzgHt9i7k=
 | 
				
			||||||
github.com/couchbase/gomemcached v0.0.0-20190515232915-c4b4ca0eb21d h1:XMf4E1U+b9E3ElF0mjvfXZdflBRZz4gLp16nQ/QSHQM=
 | 
					github.com/couchbase/gomemcached v0.0.0-20190515232915-c4b4ca0eb21d h1:XMf4E1U+b9E3ElF0mjvfXZdflBRZz4gLp16nQ/QSHQM=
 | 
				
			||||||
@@ -151,6 +154,7 @@ github.com/couchbase/vellum v1.0.1/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLB
 | 
				
			|||||||
github.com/couchbaselabs/go-couchbase v0.0.0-20190708161019-23e7ca2ce2b7 h1:1XjEY/gnjQ+AfXef2U6dxCquhiRzkEpxZuWqs+QxTL8=
 | 
					github.com/couchbaselabs/go-couchbase v0.0.0-20190708161019-23e7ca2ce2b7 h1:1XjEY/gnjQ+AfXef2U6dxCquhiRzkEpxZuWqs+QxTL8=
 | 
				
			||||||
github.com/couchbaselabs/go-couchbase v0.0.0-20190708161019-23e7ca2ce2b7/go.mod h1:mby/05p8HE5yHEAKiIH/555NoblMs7PtW6NrYshDruc=
 | 
					github.com/couchbaselabs/go-couchbase v0.0.0-20190708161019-23e7ca2ce2b7/go.mod h1:mby/05p8HE5yHEAKiIH/555NoblMs7PtW6NrYshDruc=
 | 
				
			||||||
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
 | 
					github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
 | 
				
			||||||
 | 
					github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
 | 
				
			||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 | 
					github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 | 
				
			||||||
github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY=
 | 
					github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY=
 | 
				
			||||||
github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8=
 | 
					github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8=
 | 
				
			||||||
@@ -303,12 +307,14 @@ github.com/go-swagger/go-swagger v0.21.0 h1:AX9mdfzp6eJtUe92nFrWmbK7ocRgkCDPJs0F
 | 
				
			|||||||
github.com/go-swagger/go-swagger v0.21.0/go.mod h1:tDb8PdDVFcaE8EPXkMOsuxpL3UEPiwu1UDZar9Z/1RY=
 | 
					github.com/go-swagger/go-swagger v0.21.0/go.mod h1:tDb8PdDVFcaE8EPXkMOsuxpL3UEPiwu1UDZar9Z/1RY=
 | 
				
			||||||
github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013 h1:l9rI6sNaZgNC0LnF3MiE+qTmyBA/tZAg1rtyrGbUMK0=
 | 
					github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013 h1:l9rI6sNaZgNC0LnF3MiE+qTmyBA/tZAg1rtyrGbUMK0=
 | 
				
			||||||
github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013/go.mod h1:b65mBPzqzZWxOZGxSWrqs4GInLIn+u99Q9q7p+GKni0=
 | 
					github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013/go.mod h1:b65mBPzqzZWxOZGxSWrqs4GInLIn+u99Q9q7p+GKni0=
 | 
				
			||||||
github.com/go-testfixtures/testfixtures/v3 v3.2.0 h1:FGAW3z5UzmrZGjR/dZp1u3Tbld0SDmirLO4RrR5++7Q=
 | 
					github.com/go-testfixtures/testfixtures/v3 v3.4.0 h1:cny44xqH4ctXRld/COxFGPC7XDyOU8KNnwmfCxEEqoQ=
 | 
				
			||||||
github.com/go-testfixtures/testfixtures/v3 v3.2.0/go.mod h1:RZctY24ixituGC73XlAV1gkCwYMVwiSwPm26MNlQIhE=
 | 
					github.com/go-testfixtures/testfixtures/v3 v3.4.0/go.mod h1:P4L3WxgOsCLbAeUC50qX5rdj1ULZfUMqgCbqah3OH5U=
 | 
				
			||||||
github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y=
 | 
					github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y=
 | 
				
			||||||
github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
 | 
					github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
 | 
				
			||||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 | 
					github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 | 
				
			||||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
 | 
					github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
 | 
				
			||||||
 | 
					github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
 | 
				
			||||||
 | 
					github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 | 
				
			||||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 | 
					github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 | 
				
			||||||
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 | 
					github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 | 
				
			||||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
 | 
					github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
 | 
				
			||||||
@@ -415,6 +421,47 @@ github.com/issue9/assert v1.3.2 h1:IaTa37u4m1fUuTH9K9ldO5IONKVDXjLiUO1T9vj0OF0=
 | 
				
			|||||||
github.com/issue9/assert v1.3.2/go.mod h1:9Ger+iz8X7r1zMYYwEhh++2wMGWcNN2oVI+zIQXxcio=
 | 
					github.com/issue9/assert v1.3.2/go.mod h1:9Ger+iz8X7r1zMYYwEhh++2wMGWcNN2oVI+zIQXxcio=
 | 
				
			||||||
github.com/issue9/identicon v1.0.1 h1:pCDfjMDM6xWK0Chxo8Lif+ST/nOEtmXgMITgV1YA9Og=
 | 
					github.com/issue9/identicon v1.0.1 h1:pCDfjMDM6xWK0Chxo8Lif+ST/nOEtmXgMITgV1YA9Og=
 | 
				
			||||||
github.com/issue9/identicon v1.0.1/go.mod h1:UKNVkUFI68RPz/RlLhsAr1aX6bBSaYEWRHVfdjrMUmk=
 | 
					github.com/issue9/identicon v1.0.1/go.mod h1:UKNVkUFI68RPz/RlLhsAr1aX6bBSaYEWRHVfdjrMUmk=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v1.5.0 h1:oFSOilzIZkyg787M1fEmyMfOUUvwj0daqYMfaWwNL4o=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
 | 
				
			||||||
 | 
					github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
 | 
				
			||||||
 | 
					github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
 | 
				
			||||||
 | 
					github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2 h1:JVX6jT/XfzNqIjye4717ITLaNwV9mWbJx0dLCpcRzdA=
 | 
				
			||||||
 | 
					github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
 | 
				
			||||||
 | 
					github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
 | 
				
			||||||
 | 
					github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.1 h1:Rdjp4NFjwHnEslx2b66FfCI2S0LhO4itac3hXz6WX9M=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
 | 
				
			||||||
 | 
					github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8 h1:Q3tB+ExeflWUW7AFcAhXqk40s9mnNYLk1nOkKNZ5GnU=
 | 
				
			||||||
 | 
					github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v1.3.0 h1:l8JvKrby3RI7Kg3bYEeU9TA4vqC38QDpFCfcrC7KuN0=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v1.3.0/go.mod h1:b0JqxHvPmljG+HQ5IsvQ0yqeSi4nGcDTVjFoiLDb0Ik=
 | 
				
			||||||
 | 
					github.com/jackc/pgx v3.6.2+incompatible h1:2zP5OD7kiyR3xzRYMhOcXVvkDZsImVXfj+yIyTQf3/o=
 | 
				
			||||||
 | 
					github.com/jackc/pgx v3.6.2+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.6.0 h1:Fh0O9GdlG4gYpjpwOqjdEodJUQM9jzN3Hdv7PN0xmm0=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.6.0/go.mod h1:vPh43ZzxijXUVJ+t/EmXBtFmbFVO72cuneCT9oAlxAg=
 | 
				
			||||||
 | 
					github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
 | 
				
			||||||
 | 
					github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
 | 
				
			||||||
 | 
					github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
 | 
				
			||||||
github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4=
 | 
					github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4=
 | 
				
			||||||
github.com/jaytaylor/html2text v0.0.0-20160923191438-8fb95d837f7d h1:ig/iUfDDg06RVW8OMby+GrmW6K2nPO3AFHlEIdvJSd4=
 | 
					github.com/jaytaylor/html2text v0.0.0-20160923191438-8fb95d837f7d h1:ig/iUfDDg06RVW8OMby+GrmW6K2nPO3AFHlEIdvJSd4=
 | 
				
			||||||
github.com/jaytaylor/html2text v0.0.0-20160923191438-8fb95d837f7d/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk=
 | 
					github.com/jaytaylor/html2text v0.0.0-20160923191438-8fb95d837f7d/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk=
 | 
				
			||||||
@@ -453,11 +500,13 @@ github.com/klauspost/pgzip v1.2.1 h1:oIPZROsWuPHpOdMVWLuJZXwgjhrW8r1yEX8UqMyeNHM
 | 
				
			|||||||
github.com/klauspost/pgzip v1.2.1/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 | 
					github.com/klauspost/pgzip v1.2.1/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 | 
				
			||||||
github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw=
 | 
					github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw=
 | 
				
			||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
					github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
				
			||||||
 | 
					github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
				
			||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 | 
					github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 | 
				
			||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 | 
					github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
				
			||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
					github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
				
			||||||
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
 | 
					github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
 | 
				
			||||||
 | 
					github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
 | 
				
			||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 | 
					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/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
				
			||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
					github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			||||||
@@ -466,6 +515,7 @@ github.com/lafriks/xormstore v1.3.2 h1:hqi3F8s/B4rz8GuEZZDuHuOxRjeuOpEI/cC7vcnWw
 | 
				
			|||||||
github.com/lafriks/xormstore v1.3.2/go.mod h1:mVNIwIa25QIr8rfR7YlVjrqN/apswHkVdtLCyVYBzXw=
 | 
					github.com/lafriks/xormstore v1.3.2/go.mod h1:mVNIwIa25QIr8rfR7YlVjrqN/apswHkVdtLCyVYBzXw=
 | 
				
			||||||
github.com/lestrrat-go/jwx v0.9.0/go.mod h1:iEoxlYfZjvoGpuWwxUz+eR5e6KTJGsaRcy/YNA/UnBk=
 | 
					github.com/lestrrat-go/jwx v0.9.0/go.mod h1:iEoxlYfZjvoGpuWwxUz+eR5e6KTJGsaRcy/YNA/UnBk=
 | 
				
			||||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
					github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
 | 
					github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
 | 
					github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
 | 
				
			||||||
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
					github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
					github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
@@ -490,12 +540,17 @@ github.com/markbates/going v1.0.0/go.mod h1:I6mnB4BPnEeqo85ynXIx1ZFLLbtiLHNXVgWe
 | 
				
			|||||||
github.com/markbates/goth v1.61.2 h1:jDowrUH5qw8KGuQdKwFhLzkXkTYCIPfz3LHADJsiPIs=
 | 
					github.com/markbates/goth v1.61.2 h1:jDowrUH5qw8KGuQdKwFhLzkXkTYCIPfz3LHADJsiPIs=
 | 
				
			||||||
github.com/markbates/goth v1.61.2/go.mod h1:qh2QfwZoWRucQ+DR5KVKC6dUGkNCToWh4vS45GIzFsY=
 | 
					github.com/markbates/goth v1.61.2/go.mod h1:qh2QfwZoWRucQ+DR5KVKC6dUGkNCToWh4vS45GIzFsY=
 | 
				
			||||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 | 
					github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 | 
				
			||||||
 | 
					github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
 | 
				
			||||||
 | 
					github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 | 
				
			||||||
github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
 | 
					github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
 | 
				
			||||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 | 
					github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 | 
				
			||||||
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
 | 
					github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
 | 
				
			||||||
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 | 
					github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 | 
					github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
					github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
 | 
					github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
 | 
					github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 | 
					github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 | 
				
			||||||
@@ -505,9 +560,8 @@ github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m
 | 
				
			|||||||
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 | 
					github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v1.11.0 h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q=
 | 
					github.com/mattn/go-sqlite3 v1.11.0 h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 | 
					github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 | 
				
			||||||
 | 
					github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
 | 
					github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v2.0.2+incompatible h1:qzw9c2GNT8UFrgWNDhCTqRqYUSmu/Dav/9Z58LGpk7U=
 | 
					 | 
				
			||||||
github.com/mattn/go-sqlite3 v2.0.2+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 | 
					 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 h1:Pijfgr7ZuvX7QIQiEwLdRVr3RoMG+i0SbBO1Qu+7yVk=
 | 
					github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 h1:Pijfgr7ZuvX7QIQiEwLdRVr3RoMG+i0SbBO1Qu+7yVk=
 | 
				
			||||||
@@ -612,11 +666,17 @@ github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqn
 | 
				
			|||||||
github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001 h1:YDeskXpkNDhPdWN3REluVa46HQOVuVkjkd2sWnrABNQ=
 | 
					github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001 h1:YDeskXpkNDhPdWN3REluVa46HQOVuVkjkd2sWnrABNQ=
 | 
				
			||||||
github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 | 
					github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 | 
					github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 | 
				
			||||||
 | 
					github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 | 
				
			||||||
 | 
					github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
 | 
				
			||||||
 | 
					github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
 | 
				
			||||||
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
 | 
					github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
 | 
				
			||||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
 | 
					github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
 | 
				
			||||||
 | 
					github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 | 
				
			||||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
 | 
					github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
 | 
				
			||||||
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
 | 
					github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
 | 
				
			||||||
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 | 
					github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 | 
				
			||||||
 | 
					github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE=
 | 
				
			||||||
 | 
					github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
 | 
				
			||||||
github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b h1:4kg1wyftSKxLtnPAvcRWakIPpokB9w780/KwrNLnfPA=
 | 
					github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b h1:4kg1wyftSKxLtnPAvcRWakIPpokB9w780/KwrNLnfPA=
 | 
				
			||||||
github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
 | 
					github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
 | 
				
			||||||
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd h1:ug7PpSOB5RBPK1Kg6qskGBoP3Vnj/aNYFTznWvlkGo0=
 | 
					github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd h1:ug7PpSOB5RBPK1Kg6qskGBoP3Vnj/aNYFTznWvlkGo0=
 | 
				
			||||||
@@ -627,6 +687,8 @@ github.com/siddontang/go-snappy v0.0.0-20140704025258-d8f7bb82a96d/go.mod h1:vq0
 | 
				
			|||||||
github.com/siddontang/ledisdb v0.0.0-20190202134119-8ceb77e66a92/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg=
 | 
					github.com/siddontang/ledisdb v0.0.0-20190202134119-8ceb77e66a92/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg=
 | 
				
			||||||
github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
 | 
					github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
 | 
				
			||||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 | 
					github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 | 
				
			||||||
 | 
					github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
 | 
				
			||||||
 | 
					github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 | 
				
			||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 | 
					github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 | 
				
			||||||
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 | 
					github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 | 
				
			||||||
github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w=
 | 
					github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w=
 | 
				
			||||||
@@ -664,6 +726,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
				
			|||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
				
			||||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
 | 
					github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
 | 
				
			||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 | 
					github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
 | 
					github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
 | 
				
			||||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
 | 
					github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
 | 
				
			||||||
github.com/tecbot/gorocksdb v0.0.0-20181010114359-8752a9433481 h1:HOxvxvnntLiPn123Fk+twfUhCQdMDaqmb0cclArW0T0=
 | 
					github.com/tecbot/gorocksdb v0.0.0-20181010114359-8752a9433481 h1:HOxvxvnntLiPn123Fk+twfUhCQdMDaqmb0cclArW0T0=
 | 
				
			||||||
@@ -717,6 +781,7 @@ github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691 h1:VWSx
 | 
				
			|||||||
github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691/go.mod h1:YLF3kDffRfUH/bTxOxHhV6lxwIB3Vfj91rEwNMS9MXo=
 | 
					github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691/go.mod h1:YLF3kDffRfUH/bTxOxHhV6lxwIB3Vfj91rEwNMS9MXo=
 | 
				
			||||||
github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60 h1:gZucqLjL1eDzVWrXj4uiWeMbAopJlBR2mKQAsTGdPwo=
 | 
					github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60 h1:gZucqLjL1eDzVWrXj4uiWeMbAopJlBR2mKQAsTGdPwo=
 | 
				
			||||||
github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60/go.mod h1:i9VhcIHN2PxXMbQrKqXNueok6QNONoPjNMoj9MygVL0=
 | 
					github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60/go.mod h1:i9VhcIHN2PxXMbQrKqXNueok6QNONoPjNMoj9MygVL0=
 | 
				
			||||||
 | 
					github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
 | 
				
			||||||
github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
 | 
					github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
 | 
				
			||||||
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
 | 
					github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
 | 
				
			||||||
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 | 
					go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 | 
				
			||||||
@@ -729,8 +794,10 @@ go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
 | 
				
			|||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 | 
					go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 | 
				
			||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
 | 
					go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
 | 
				
			||||||
go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA=
 | 
					go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA=
 | 
				
			||||||
 | 
					go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
				
			||||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
					go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
				
			||||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 | 
					go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 | 
				
			||||||
 | 
					go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
					go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 | 
					golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 | 
					golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 | 
				
			||||||
@@ -738,10 +805,12 @@ golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnf
 | 
				
			|||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190907121410-71b5226ff739/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190907121410-71b5226ff739/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad h1:5E5raQxcv+6CZ11RrBYQe5WRbUIWpScjh0kvHZkZIrQ=
 | 
					golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad h1:5E5raQxcv+6CZ11RrBYQe5WRbUIWpScjh0kvHZkZIrQ=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
@@ -784,6 +853,7 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR
 | 
				
			|||||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20200202094626-16171245cfb2/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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -820,7 +890,9 @@ golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5h
 | 
				
			|||||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
					golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
@@ -829,6 +901,7 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w
 | 
				
			|||||||
golang.org/x/sys v0.0.0-20190730183949-1393eb018365/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190730183949-1393eb018365/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190907184412-d223b2b6db03/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190907184412-d223b2b6db03/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47 h1:/XfQ9z7ib8eEJX2hdgFTZJ/ntt0swNk5oYBziWeTCvY=
 | 
					golang.org/x/sys v0.0.0-20191010194322-b09406accb47 h1:/XfQ9z7ib8eEJX2hdgFTZJ/ntt0swNk5oYBziWeTCvY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
@@ -863,17 +936,21 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3
 | 
				
			|||||||
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
					golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
					golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
					golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
					golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
					golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
					golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
					golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
					golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200225230052-807dcd883420 h1:4RJNOV+2rLxMEfr6QIpC7GEv9MjD6ApGXTCLrNF9+eA=
 | 
					golang.org/x/tools v0.0.0-20200225230052-807dcd883420 h1:4RJNOV+2rLxMEfr6QIpC7GEv9MjD6ApGXTCLrNF9+eA=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200225230052-807dcd883420/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 | 
					golang.org/x/tools v0.0.0-20200225230052-807dcd883420/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 h1:azwY/v0y0K4mFHVsg5+UrTgchqALYWpqVo6vL5OmkmI=
 | 
					golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224 h1:azwY/v0y0K4mFHVsg5+UrTgchqALYWpqVo6vL5OmkmI=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
 | 
					golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
 | 
					golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
					golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
@@ -932,6 +1009,7 @@ gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
 | 
				
			|||||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
 | 
					gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
 | 
				
			||||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
 | 
					gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
 | 
				
			||||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
 | 
					gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
 | 
				
			||||||
 | 
					gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
 | 
				
			||||||
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
					gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
				
			||||||
gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
					gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
				
			||||||
gopkg.in/ini.v1 v1.44.2/go.mod h1:M3Cogqpuv0QCi3ExAY5V4uOt4qb/R3xZubo9m8lK5wg=
 | 
					gopkg.in/ini.v1 v1.44.2/go.mod h1:M3Cogqpuv0QCi3ExAY5V4uOt4qb/R3xZubo9m8lK5wg=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/.sample.env
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/.sample.env
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,3 +2,4 @@ PG_CONN_STRING="user=postgres dbname=testfixtures_test sslmode=disable"
 | 
				
			|||||||
MYSQL_CONN_STRING="root:@/testfixtures_test?multiStatements=true"
 | 
					MYSQL_CONN_STRING="root:@/testfixtures_test?multiStatements=true"
 | 
				
			||||||
SQLITE_CONN_STRING="testdb.sqlite3"
 | 
					SQLITE_CONN_STRING="testdb.sqlite3"
 | 
				
			||||||
SQLSERVER_CONN_STRING="server=localhost\SQLExpress;database=testfixtures_test;user id=sa;password=sqlserver;encrypt=disable"
 | 
					SQLSERVER_CONN_STRING="server=localhost\SQLExpress;database=testfixtures_test;user id=sa;password=sqlserver;encrypt=disable"
 | 
				
			||||||
 | 
					CRDB_CONN_STRING="host=cockroachdb user=root dbname=defaultdb port=26257 sslmode=disable"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,5 +1,22 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## v3.4.0 - 2020-08-09
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Add support to CockroachDB
 | 
				
			||||||
 | 
					  ([#77](https://github.com/go-testfixtures/testfixtures/pull/77)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## v3.3.0 - 2020-06-27
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Add support for the [github.com/jackc/pgx](https://github.com/jackc/pgx)
 | 
				
			||||||
 | 
					  PostgreSQL driver
 | 
				
			||||||
 | 
					  ([#71](https://github.com/go-testfixtures/testfixtures/issues/71), [#74](https://github.com/go-testfixtures/testfixtures/pull/74)).
 | 
				
			||||||
 | 
					- Fix bug where some tables were empty due to `ON DELETE CASCADE`
 | 
				
			||||||
 | 
					  ([#67](https://github.com/go-testfixtures/testfixtures/issues/67), [#70](https://github.com/go-testfixtures/testfixtures/pull/70)).
 | 
				
			||||||
 | 
					- Fix SQLite version
 | 
				
			||||||
 | 
					  ([#73](https://github.com/go-testfixtures/testfixtures/pull/73)).
 | 
				
			||||||
 | 
					- On MySQL, return a clearer error message when a table doesn't exist
 | 
				
			||||||
 | 
					  ([#69](https://github.com/go-testfixtures/testfixtures/pull/69)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v3.2.0 - 2020-05-10
 | 
					## v3.2.0 - 2020-05-10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Add support for loading multiple files and directories
 | 
					- Add support for loading multiple files and directories
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -74,7 +74,7 @@ The file would look like this (it can have as many record you want):
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
An YAML object or array will be converted to JSON. It will be stored on a native
 | 
					An YAML object or array will be converted to JSON. It will be stored on a native
 | 
				
			||||||
JSON type like JSONB on PostgreSQL or as a TEXT or VARCHAR column on other
 | 
					JSON type like JSONB on PostgreSQL & CockroachDB or as a TEXT or VARCHAR column on other
 | 
				
			||||||
databases.
 | 
					databases.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```yml
 | 
					```yml
 | 
				
			||||||
@@ -249,9 +249,9 @@ testfixtures.New(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Compatible databases
 | 
					## Compatible databases
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### PostgreSQL / TimescaleDB
 | 
					### PostgreSQL / TimescaleDB / CockroachDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This package has two approaches to disable foreign keys while importing fixtures
 | 
					This package has three approaches to disable foreign keys while importing fixtures
 | 
				
			||||||
for PostgreSQL databases:
 | 
					for PostgreSQL databases:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### With `DISABLE TRIGGER`
 | 
					#### With `DISABLE TRIGGER`
 | 
				
			||||||
@@ -288,7 +288,21 @@ testfixtures.New(
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Tested using the [github.com/lib/pq](https://github.com/lib/pq) driver.
 | 
					#### With `DROP CONSTRAINT`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This approach is implemented to support databases that do not support above
 | 
				
			||||||
 | 
					methods (namely CockroachDB).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					testfixtures.New(
 | 
				
			||||||
 | 
					        ...
 | 
				
			||||||
 | 
					        testfixtures.Dialect("postgres"),
 | 
				
			||||||
 | 
					        testfixtures.UseDropConstraint(),
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Tested using the [github.com/lib/pq](https://github.com/lib/pq) and
 | 
				
			||||||
 | 
					[github.com/jackc/pgx](https://github.com/jackc/pgx) drivers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### MySQL / MariaDB
 | 
					### MySQL / MariaDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -453,6 +467,7 @@ for the database you want to run tests against:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
task test:pg # PostgreSQL
 | 
					task test:pg # PostgreSQL
 | 
				
			||||||
 | 
					task test:crdb # CockroachDB
 | 
				
			||||||
task test:mysql # MySQL
 | 
					task test:mysql # MySQL
 | 
				
			||||||
task test:sqlite # SQLite
 | 
					task test:sqlite # SQLite
 | 
				
			||||||
task test:sqlserver # Microsoft SQL Server
 | 
					task test:sqlserver # Microsoft SQL Server
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/Taskfile.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/Taskfile.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -20,7 +20,7 @@ tasks:
 | 
				
			|||||||
  test:mysql:
 | 
					  test:mysql:
 | 
				
			||||||
    desc: Test MySQL
 | 
					    desc: Test MySQL
 | 
				
			||||||
    cmds:
 | 
					    cmds:
 | 
				
			||||||
      - task: test:db
 | 
					      - task: test-db
 | 
				
			||||||
        vars: {DATABASE: mysql}
 | 
					        vars: {DATABASE: mysql}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  test:sqlite:
 | 
					  test:sqlite:
 | 
				
			||||||
@@ -35,6 +35,12 @@ tasks:
 | 
				
			|||||||
      - task: test-db
 | 
					      - task: test-db
 | 
				
			||||||
        vars: {DATABASE: sqlserver}
 | 
					        vars: {DATABASE: sqlserver}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test:crdb:
 | 
				
			||||||
 | 
					    desc: Test CockroachDB
 | 
				
			||||||
 | 
					    cmds:
 | 
				
			||||||
 | 
					      - task: test-db
 | 
				
			||||||
 | 
					        vars: {DATABASE: cockroachdb}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  test-db:
 | 
					  test-db:
 | 
				
			||||||
    cmds:
 | 
					    cmds:
 | 
				
			||||||
      - go test -v -tags {{.DATABASE}}
 | 
					      - go test -v -tags {{.DATABASE}}
 | 
				
			||||||
@@ -56,4 +62,4 @@ tasks:
 | 
				
			|||||||
  docker:test:
 | 
					  docker:test:
 | 
				
			||||||
    cmds:
 | 
					    cmds:
 | 
				
			||||||
      - docker-compose down -v
 | 
					      - docker-compose down -v
 | 
				
			||||||
      - docker-compose run testfixtures go test -v -tags 'postgresql sqlite mysql sqlserver'
 | 
					      - docker-compose run testfixtures go test -v -tags 'postgresql sqlite mysql sqlserver cockroachdb'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/docker-compose.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/docker-compose.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ services:
 | 
				
			|||||||
      - postgresql
 | 
					      - postgresql
 | 
				
			||||||
      - mysql
 | 
					      - mysql
 | 
				
			||||||
      - sqlserver
 | 
					      - sqlserver
 | 
				
			||||||
 | 
					      - cockroachdb
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      PGPASSWORD: postgres
 | 
					      PGPASSWORD: postgres
 | 
				
			||||||
      PG_CONN_STRING: host=postgresql user=postgres dbname=testfixtures_test port=5432 sslmode=disable
 | 
					      PG_CONN_STRING: host=postgresql user=postgres dbname=testfixtures_test port=5432 sslmode=disable
 | 
				
			||||||
@@ -17,6 +18,8 @@ services:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      SQLSERVER_CONN_STRING: server=sqlserver;database=master;user id=sa;password=SQL@1server;encrypt=disable
 | 
					      SQLSERVER_CONN_STRING: server=sqlserver;database=master;user id=sa;password=SQL@1server;encrypt=disable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      CRDB_CONN_STRING: host=cockroachdb user=root dbname=defaultdb port=26257 sslmode=disable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  postgresql:
 | 
					  postgresql:
 | 
				
			||||||
    image: postgres:12.1-alpine
 | 
					    image: postgres:12.1-alpine
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
@@ -35,3 +38,7 @@ services:
 | 
				
			|||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      ACCEPT_EULA: 'Y'
 | 
					      ACCEPT_EULA: 'Y'
 | 
				
			||||||
      SA_PASSWORD: SQL@1server
 | 
					      SA_PASSWORD: SQL@1server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  cockroachdb:
 | 
				
			||||||
 | 
					    image: cockroachdb/cockroach:v20.1.3
 | 
				
			||||||
 | 
					    command: start-single-node --store /cockroach-data --insecure --advertise-host cockroachdb
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,9 +3,10 @@ module github.com/go-testfixtures/testfixtures/v3
 | 
				
			|||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73
 | 
						github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73
 | 
				
			||||||
	github.com/go-sql-driver/mysql v1.4.1
 | 
						github.com/go-sql-driver/mysql v1.4.1
 | 
				
			||||||
 | 
						github.com/jackc/pgx/v4 v4.6.0
 | 
				
			||||||
	github.com/joho/godotenv v1.3.0
 | 
						github.com/joho/godotenv v1.3.0
 | 
				
			||||||
	github.com/lib/pq v1.3.0
 | 
						github.com/lib/pq v1.3.0
 | 
				
			||||||
	github.com/mattn/go-sqlite3 v2.0.2+incompatible
 | 
						github.com/mattn/go-sqlite3 v1.14.0
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5
 | 
						github.com/spf13/pflag v1.0.5
 | 
				
			||||||
	google.golang.org/appengine v1.3.0 // indirect
 | 
						google.golang.org/appengine v1.3.0 // indirect
 | 
				
			||||||
	gopkg.in/yaml.v2 v2.2.7
 | 
						gopkg.in/yaml.v2 v2.2.7
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										142
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										142
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +1,164 @@
 | 
				
			|||||||
 | 
					github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
 | 
				
			||||||
 | 
					github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
 | 
				
			||||||
 | 
					github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
 | 
				
			||||||
 | 
					github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
 | 
				
			||||||
 | 
					github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 | 
				
			||||||
 | 
					github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 | 
				
			||||||
 | 
					github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
 | 
				
			||||||
 | 
					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.0.0-20191128021309-1d7a30a10f73 h1:OGNva6WhsKst5OZf7eZOklDztV3hwtTHovdrLHV+MsA=
 | 
					github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73 h1:OGNva6WhsKst5OZf7eZOklDztV3hwtTHovdrLHV+MsA=
 | 
				
			||||||
github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
 | 
					github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
 | 
				
			||||||
github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
 | 
					github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
 | 
				
			||||||
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 | 
					github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 | 
				
			||||||
 | 
					github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 | 
				
			||||||
 | 
					github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
 | 
				
			||||||
 | 
					github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 | 
				
			||||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
 | 
					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-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
 | 
				
			||||||
 | 
					github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v1.5.0 h1:oFSOilzIZkyg787M1fEmyMfOUUvwj0daqYMfaWwNL4o=
 | 
				
			||||||
 | 
					github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
 | 
				
			||||||
 | 
					github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
 | 
				
			||||||
 | 
					github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
 | 
				
			||||||
 | 
					github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2 h1:JVX6jT/XfzNqIjye4717ITLaNwV9mWbJx0dLCpcRzdA=
 | 
				
			||||||
 | 
					github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
 | 
				
			||||||
 | 
					github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
 | 
				
			||||||
 | 
					github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.1 h1:Rdjp4NFjwHnEslx2b66FfCI2S0LhO4itac3hXz6WX9M=
 | 
				
			||||||
 | 
					github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
 | 
				
			||||||
 | 
					github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8 h1:Q3tB+ExeflWUW7AFcAhXqk40s9mnNYLk1nOkKNZ5GnU=
 | 
				
			||||||
 | 
					github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v1.3.0 h1:l8JvKrby3RI7Kg3bYEeU9TA4vqC38QDpFCfcrC7KuN0=
 | 
				
			||||||
 | 
					github.com/jackc/pgtype v1.3.0/go.mod h1:b0JqxHvPmljG+HQ5IsvQ0yqeSi4nGcDTVjFoiLDb0Ik=
 | 
				
			||||||
 | 
					github.com/jackc/pgx v3.6.2+incompatible h1:2zP5OD7kiyR3xzRYMhOcXVvkDZsImVXfj+yIyTQf3/o=
 | 
				
			||||||
 | 
					github.com/jackc/pgx v3.6.2+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.6.0 h1:Fh0O9GdlG4gYpjpwOqjdEodJUQM9jzN3Hdv7PN0xmm0=
 | 
				
			||||||
 | 
					github.com/jackc/pgx/v4 v4.6.0/go.mod h1:vPh43ZzxijXUVJ+t/EmXBtFmbFVO72cuneCT9oAlxAg=
 | 
				
			||||||
 | 
					github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
 | 
				
			||||||
 | 
					github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
 | 
				
			||||||
 | 
					github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
 | 
				
			||||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
 | 
					github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
 | 
				
			||||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
 | 
					github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
 | 
				
			||||||
 | 
					github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
				
			||||||
 | 
					github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
				
			||||||
 | 
					github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 | 
				
			||||||
 | 
					github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
				
			||||||
 | 
					github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
				
			||||||
 | 
					github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
 | 
				
			||||||
 | 
					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 v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
 | 
					github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
 | 
					github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU=
 | 
					github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU=
 | 
				
			||||||
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
					github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v2.0.2+incompatible h1:qzw9c2GNT8UFrgWNDhCTqRqYUSmu/Dav/9Z58LGpk7U=
 | 
					github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v2.0.2+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 | 
					github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
 | 
				
			||||||
 | 
					github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
 | 
				
			||||||
 | 
					github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
 | 
				
			||||||
 | 
					github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
 | 
				
			||||||
 | 
					github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
 | 
					github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 | 
				
			||||||
 | 
					github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
 | 
				
			||||||
 | 
					github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
 | 
				
			||||||
 | 
					github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 | 
				
			||||||
 | 
					github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE=
 | 
				
			||||||
 | 
					github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
 | 
				
			||||||
 | 
					github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
 | 
				
			||||||
 | 
					github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
				
			||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
					github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
				
			||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
					github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
 | 
					github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
 | 
				
			||||||
 | 
					go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
				
			||||||
 | 
					go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
				
			||||||
 | 
					go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 | 
				
			||||||
 | 
					go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
 | 
					go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI=
 | 
					golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
				
			||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
					golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
				
			||||||
 | 
					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-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
 | 
					google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
 | 
				
			||||||
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 | 
					google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 | 
					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 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/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo=
 | 
					gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/mysql.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/mysql.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -119,13 +119,16 @@ func (h *mySQL) afterLoad(q queryable) error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *mySQL) getChecksum(q queryable, tableName string) (int64, error) {
 | 
					func (h *mySQL) getChecksum(q queryable, tableName string) (int64, error) {
 | 
				
			||||||
	sql := fmt.Sprintf("CHECKSUM TABLE %s", h.quoteKeyword(tableName))
 | 
						query := fmt.Sprintf("CHECKSUM TABLE %s", h.quoteKeyword(tableName))
 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		table    string
 | 
							table    string
 | 
				
			||||||
		checksum int64
 | 
							checksum sql.NullInt64
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	if err := q.QueryRow(sql).Scan(&table, &checksum); err != nil {
 | 
						if err := q.QueryRow(query).Scan(&table, &checksum); err != nil {
 | 
				
			||||||
		return 0, err
 | 
							return 0, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return checksum, nil
 | 
						if !checksum.Valid {
 | 
				
			||||||
 | 
							return 0, fmt.Errorf("testfixtures: table %s does not exist", tableName)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return checksum.Int64, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										96
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/postgresql.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/postgresql.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -10,18 +10,21 @@ type postgreSQL struct {
 | 
				
			|||||||
	baseHelper
 | 
						baseHelper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	useAlterConstraint bool
 | 
						useAlterConstraint bool
 | 
				
			||||||
 | 
						useDropConstraint  bool
 | 
				
			||||||
	skipResetSequences bool
 | 
						skipResetSequences bool
 | 
				
			||||||
	resetSequencesTo   int64
 | 
						resetSequencesTo   int64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tables                   []string
 | 
						tables                   []string
 | 
				
			||||||
	sequences                []string
 | 
						sequences                []string
 | 
				
			||||||
	nonDeferrableConstraints []pgConstraint
 | 
						nonDeferrableConstraints []pgConstraint
 | 
				
			||||||
 | 
						constraints              []pgConstraint
 | 
				
			||||||
	tablesChecksum           map[string]string
 | 
						tablesChecksum           map[string]string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type pgConstraint struct {
 | 
					type pgConstraint struct {
 | 
				
			||||||
	tableName      string
 | 
						tableName      string
 | 
				
			||||||
	constraintName string
 | 
						constraintName string
 | 
				
			||||||
 | 
						definition     string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *postgreSQL) init(db *sql.DB) error {
 | 
					func (h *postgreSQL) init(db *sql.DB) error {
 | 
				
			||||||
@@ -42,6 +45,11 @@ func (h *postgreSQL) init(db *sql.DB) error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						h.constraints, err = h.getConstraints(db)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -63,7 +71,7 @@ func (h *postgreSQL) tableNames(q queryable) ([]string, error) {
 | 
				
			|||||||
		FROM pg_class
 | 
							FROM pg_class
 | 
				
			||||||
		INNER JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
 | 
							INNER JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
 | 
				
			||||||
		WHERE pg_class.relkind = 'r'
 | 
							WHERE pg_class.relkind = 'r'
 | 
				
			||||||
		  AND pg_namespace.nspname NOT IN ('pg_catalog', 'information_schema')
 | 
							  AND pg_namespace.nspname NOT IN ('pg_catalog', 'information_schema', 'crdb_internal')
 | 
				
			||||||
		  AND pg_namespace.nspname NOT LIKE 'pg_toast%'
 | 
							  AND pg_namespace.nspname NOT LIKE 'pg_toast%'
 | 
				
			||||||
		  AND pg_namespace.nspname NOT LIKE '\_timescaledb%';
 | 
							  AND pg_namespace.nspname NOT LIKE '\_timescaledb%';
 | 
				
			||||||
	`
 | 
						`
 | 
				
			||||||
@@ -123,14 +131,15 @@ func (*postgreSQL) getNonDeferrableConstraints(q queryable) ([]pgConstraint, err
 | 
				
			|||||||
		FROM information_schema.table_constraints
 | 
							FROM information_schema.table_constraints
 | 
				
			||||||
		WHERE constraint_type = 'FOREIGN KEY'
 | 
							WHERE constraint_type = 'FOREIGN KEY'
 | 
				
			||||||
		  AND is_deferrable = 'NO'
 | 
							  AND is_deferrable = 'NO'
 | 
				
			||||||
 | 
							  AND table_schema <> 'crdb_internal'
 | 
				
			||||||
		  AND table_schema NOT LIKE '\_timescaledb%'
 | 
							  AND table_schema NOT LIKE '\_timescaledb%'
 | 
				
			||||||
  	`
 | 
					  	`
 | 
				
			||||||
	rows, err := q.Query(sql)
 | 
						rows, err := q.Query(sql)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	defer rows.Close()
 | 
						defer rows.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for rows.Next() {
 | 
						for rows.Next() {
 | 
				
			||||||
		var constraint pgConstraint
 | 
							var constraint pgConstraint
 | 
				
			||||||
		if err = rows.Scan(&constraint.tableName, &constraint.constraintName); err != nil {
 | 
							if err = rows.Scan(&constraint.tableName, &constraint.constraintName); err != nil {
 | 
				
			||||||
@@ -144,6 +153,84 @@ func (*postgreSQL) getNonDeferrableConstraints(q queryable) ([]pgConstraint, err
 | 
				
			|||||||
	return constraints, nil
 | 
						return constraints, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *postgreSQL) getConstraints(q queryable) ([]pgConstraint, error) {
 | 
				
			||||||
 | 
						var constraints []pgConstraint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sql := `
 | 
				
			||||||
 | 
							SELECT conrelid::regclass AS table_from, conname, pg_get_constraintdef(pg_constraint.oid)
 | 
				
			||||||
 | 
							FROM pg_constraint
 | 
				
			||||||
 | 
							INNER JOIN pg_namespace ON pg_namespace.oid = pg_constraint.connamespace
 | 
				
			||||||
 | 
							WHERE contype = 'f'
 | 
				
			||||||
 | 
							  AND pg_namespace.nspname NOT IN ('pg_catalog', 'information_schema', 'crdb_internal')
 | 
				
			||||||
 | 
							  AND pg_namespace.nspname NOT LIKE 'pg_toast%'
 | 
				
			||||||
 | 
							  AND pg_namespace.nspname NOT LIKE '\_timescaledb%';
 | 
				
			||||||
 | 
							`
 | 
				
			||||||
 | 
						rows, err := q.Query(sql)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer rows.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for rows.Next() {
 | 
				
			||||||
 | 
							var constraint pgConstraint
 | 
				
			||||||
 | 
							if err = rows.Scan(
 | 
				
			||||||
 | 
								&constraint.tableName,
 | 
				
			||||||
 | 
								&constraint.constraintName,
 | 
				
			||||||
 | 
								&constraint.definition,
 | 
				
			||||||
 | 
							); err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							constraints = append(constraints, constraint)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err = rows.Err(); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return constraints, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *postgreSQL) dropAndRecreateConstraints(db *sql.DB, loadFn loadFunction) (err error) {
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							// Re-create constraints again after load
 | 
				
			||||||
 | 
							var sql string
 | 
				
			||||||
 | 
							for _, constraint := range h.constraints {
 | 
				
			||||||
 | 
								sql += fmt.Sprintf(
 | 
				
			||||||
 | 
									"ALTER TABLE %s ADD CONSTRAINT %s %s;",
 | 
				
			||||||
 | 
									h.quoteKeyword(constraint.tableName),
 | 
				
			||||||
 | 
									h.quoteKeyword(constraint.constraintName),
 | 
				
			||||||
 | 
									constraint.definition,
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if _, err2 := db.Exec(sql); err2 != nil && err == nil {
 | 
				
			||||||
 | 
								err = err2
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var sql string
 | 
				
			||||||
 | 
						for _, constraint := range h.constraints {
 | 
				
			||||||
 | 
							sql += fmt.Sprintf(
 | 
				
			||||||
 | 
								"ALTER TABLE %s DROP CONSTRAINT %s;",
 | 
				
			||||||
 | 
								h.quoteKeyword(constraint.tableName),
 | 
				
			||||||
 | 
								h.quoteKeyword(constraint.constraintName),
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if _, err := db.Exec(sql); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tx, err := db.Begin()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer tx.Rollback()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = loadFn(tx); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return tx.Commit()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *postgreSQL) disableTriggers(db *sql.DB, loadFn loadFunction) (err error) {
 | 
					func (h *postgreSQL) disableTriggers(db *sql.DB, loadFn loadFunction) (err error) {
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		// re-enable triggers after load
 | 
							// re-enable triggers after load
 | 
				
			||||||
@@ -224,6 +311,9 @@ func (h *postgreSQL) disableReferentialIntegrity(db *sql.DB, loadFn loadFunction
 | 
				
			|||||||
		}()
 | 
							}()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if h.useDropConstraint {
 | 
				
			||||||
 | 
							return h.dropAndRecreateConstraints(db, loadFn)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if h.useAlterConstraint {
 | 
						if h.useAlterConstraint {
 | 
				
			||||||
		return h.makeConstraintsDeferrable(db, loadFn)
 | 
							return h.makeConstraintsDeferrable(db, loadFn)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -274,7 +364,7 @@ func (h *postgreSQL) afterLoad(q queryable) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (h *postgreSQL) getChecksum(q queryable, tableName string) (string, error) {
 | 
					func (h *postgreSQL) getChecksum(q queryable, tableName string) (string, error) {
 | 
				
			||||||
	sqlStr := fmt.Sprintf(`
 | 
						sqlStr := fmt.Sprintf(`
 | 
				
			||||||
			SELECT md5(CAST((array_agg(t.*)) AS TEXT))
 | 
								SELECT md5(CAST((json_agg(t.*)) AS TEXT))
 | 
				
			||||||
			FROM %s AS t
 | 
								FROM %s AS t
 | 
				
			||||||
		`,
 | 
							`,
 | 
				
			||||||
		h.quoteKeyword(tableName),
 | 
							h.quoteKeyword(tableName),
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/testfixtures.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								vendor/github.com/go-testfixtures/testfixtures/v3/testfixtures.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -109,7 +109,7 @@ func Dialect(dialect string) func(*Loader) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func helperForDialect(dialect string) (helper, error) {
 | 
					func helperForDialect(dialect string) (helper, error) {
 | 
				
			||||||
	switch dialect {
 | 
						switch dialect {
 | 
				
			||||||
	case "postgres", "postgresql", "timescaledb":
 | 
						case "postgres", "postgresql", "timescaledb", "pgx":
 | 
				
			||||||
		return &postgreSQL{}, nil
 | 
							return &postgreSQL{}, nil
 | 
				
			||||||
	case "mysql", "mariadb":
 | 
						case "mysql", "mariadb":
 | 
				
			||||||
		return &mySQL{}, nil
 | 
							return &mySQL{}, nil
 | 
				
			||||||
@@ -139,6 +139,22 @@ func UseAlterConstraint() func(*Loader) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UseDropConstraint If true, the constraints will be dropped
 | 
				
			||||||
 | 
					// and recreated after loading fixtures. This is implemented mainly to support
 | 
				
			||||||
 | 
					// CockroachDB which does not support other methods.
 | 
				
			||||||
 | 
					// Only valid for PostgreSQL dialect. Returns an error otherwise.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func UseDropConstraint() func(*Loader) error {
 | 
				
			||||||
 | 
						return func(l *Loader) error {
 | 
				
			||||||
 | 
							pgHelper, ok := l.helper.(*postgreSQL)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								return fmt.Errorf("testfixtures: UseDropConstraint is only valid for PostgreSQL databases")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							pgHelper.useDropConstraint = true
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SkipResetSequences prevents Loader from reseting sequences after loading
 | 
					// SkipResetSequences prevents Loader from reseting sequences after loading
 | 
				
			||||||
// fixtures.
 | 
					// fixtures.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -324,19 +340,34 @@ func (l *Loader) Load() error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := l.helper.disableReferentialIntegrity(l.db, func(tx *sql.Tx) error {
 | 
						err := l.helper.disableReferentialIntegrity(l.db, func(tx *sql.Tx) error {
 | 
				
			||||||
 | 
							modifiedTables := make(map[string]bool, len(l.fixturesFiles))
 | 
				
			||||||
		for _, file := range l.fixturesFiles {
 | 
							for _, file := range l.fixturesFiles {
 | 
				
			||||||
			modified, err := l.helper.isTableModified(tx, file.fileNameWithoutExtension())
 | 
								tableName := file.fileNameWithoutExtension()
 | 
				
			||||||
 | 
								modified, err := l.helper.isTableModified(tx, tableName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								modifiedTables[tableName] = modified
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Delete existing table data for specified fixtures before populating the data. This helps avoid
 | 
				
			||||||
 | 
							// DELETE CASCADE constraints when using the `UseAlterConstraint()` option.
 | 
				
			||||||
 | 
							for _, file := range l.fixturesFiles {
 | 
				
			||||||
 | 
								modified := modifiedTables[file.fileNameWithoutExtension()]
 | 
				
			||||||
			if !modified {
 | 
								if !modified {
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if err := file.delete(tx, l.helper); err != nil {
 | 
								if err := file.delete(tx, l.helper); err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			err = l.helper.whileInsertOnTable(tx, file.fileNameWithoutExtension(), func() error {
 | 
							for _, file := range l.fixturesFiles {
 | 
				
			||||||
 | 
								modified := modifiedTables[file.fileNameWithoutExtension()]
 | 
				
			||||||
 | 
								if !modified {
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								err := l.helper.whileInsertOnTable(tx, file.fileNameWithoutExtension(), func() error {
 | 
				
			||||||
				for j, i := range file.insertSQLs {
 | 
									for j, i := range file.insertSQLs {
 | 
				
			||||||
					if _, err := tx.Exec(i.sql, i.params...); err != nil {
 | 
										if _, err := tx.Exec(i.sql, i.params...); err != nil {
 | 
				
			||||||
						return &InsertError{
 | 
											return &InsertError{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								vendor/github.com/mattn/go-sqlite3/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/mattn/go-sqlite3/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,13 +21,15 @@ before_install:
 | 
				
			|||||||
    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
 | 
					    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
 | 
				
			||||||
      brew update
 | 
					      brew update
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  - go get github.com/smartystreets/goconvey
 | 
					 | 
				
			||||||
  - go get github.com/mattn/goveralls
 | 
					  - go get github.com/mattn/goveralls
 | 
				
			||||||
  - go get golang.org/x/tools/cmd/cover
 | 
					  - go get golang.org/x/tools/cmd/cover
 | 
				
			||||||
 | 
					
 | 
				
			||||||
script:
 | 
					script:
 | 
				
			||||||
  - $HOME/gopath/bin/goveralls -repotoken 3qJVUE0iQwqnCbmNcDsjYu1nh4J4KIFXx
 | 
					  - $HOME/gopath/bin/goveralls -repotoken 3qJVUE0iQwqnCbmNcDsjYu1nh4J4KIFXx -parallel
 | 
				
			||||||
  - go test -race -v . -tags ""
 | 
					  - go test -race -v . -tags ""
 | 
				
			||||||
  - go test -race -v . -tags "libsqlite3"
 | 
					  - go test -race -v . -tags "libsqlite3"
 | 
				
			||||||
  - go test -race -v . -tags "sqlite_allow_uri_authority sqlite_app_armor sqlite_foreign_keys sqlite_fts5 sqlite_icu sqlite_introspect sqlite_json sqlite_preupdate_hook sqlite_secure_delete sqlite_see sqlite_stat4 sqlite_trace sqlite_userauth sqlite_vacuum_incr sqlite_vtable sqlite_unlock_notify"
 | 
					  - go test -race -v . -tags "sqlite_allow_uri_authority sqlite_app_armor sqlite_foreign_keys sqlite_fts5 sqlite_icu sqlite_introspect sqlite_json sqlite_preupdate_hook sqlite_secure_delete sqlite_see sqlite_stat4 sqlite_trace sqlite_userauth sqlite_vacuum_incr sqlite_vtable sqlite_unlock_notify"
 | 
				
			||||||
  - go test -race -v . -tags "sqlite_vacuum_full"
 | 
					  - go test -race -v . -tags "sqlite_vacuum_full"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					notifications:
 | 
				
			||||||
 | 
					  webhooks: https://coveralls.io/webhook?repo_token=3qJVUE0iQwqnCbmNcDsjYu1nh4J4KIFXx
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								vendor/github.com/mattn/go-sqlite3/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/mattn/go-sqlite3/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -7,6 +7,8 @@ go-sqlite3
 | 
				
			|||||||
[](https://coveralls.io/r/mattn/go-sqlite3?branch=master)
 | 
					[](https://coveralls.io/r/mattn/go-sqlite3?branch=master)
 | 
				
			||||||
[](https://goreportcard.com/report/github.com/mattn/go-sqlite3)
 | 
					[](https://goreportcard.com/report/github.com/mattn/go-sqlite3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**NOTE:** The increase to v2 was an accident. There were no major changes or features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Description
 | 
					# Description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sqlite3 driver conforming to the built-in database/sql interface
 | 
					sqlite3 driver conforming to the built-in database/sql interface
 | 
				
			||||||
@@ -210,9 +212,15 @@ This library can be cross-compiled.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
In some cases you are required to the `CC` environment variable with the cross compiler.
 | 
					In some cases you are required to the `CC` environment variable with the cross compiler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Additional information:
 | 
					## Cross Compiling from MAC OSX
 | 
				
			||||||
- [#491](https://github.com/mattn/go-sqlite3/issues/491)
 | 
					The simplest way to cross compile from OSX is to use [xgo](https://github.com/karalabe/xgo).
 | 
				
			||||||
- [#560](https://github.com/mattn/go-sqlite3/issues/560)
 | 
					
 | 
				
			||||||
 | 
					Steps:
 | 
				
			||||||
 | 
					- Install [xgo](https://github.com/karalabe/xgo) (`go get github.com/karalabe/xgo`).
 | 
				
			||||||
 | 
					- Ensure that your project is within your `GOPATH`.
 | 
				
			||||||
 | 
					- Run `xgo local/path/to/project`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please refer to the project's [README](https://github.com/karalabe/xgo/blob/master/README.md) for further information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Google Cloud Platform
 | 
					# Google Cloud Platform
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -451,6 +459,16 @@ If you want your own extension to be listed here or you want to add a reference
 | 
				
			|||||||
Spatialite is available as an extension to SQLite, and can be used in combination with this repository.
 | 
					Spatialite is available as an extension to SQLite, and can be used in combination with this repository.
 | 
				
			||||||
For an example see [shaxbee/go-spatialite](https://github.com/shaxbee/go-spatialite).
 | 
					For an example see [shaxbee/go-spatialite](https://github.com/shaxbee/go-spatialite).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## extension-functions.c from SQLite3 Contrib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extension-functions.c is available as an extension to SQLite, and provides the following functions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Math: acos, asin, atan, atn2, atan2, acosh, asinh, atanh, difference, degrees, radians, cos, sin, tan, cot, cosh, sinh, tanh, coth, exp, log, log10, power, sign, sqrt, square, ceil, floor, pi.
 | 
				
			||||||
 | 
					- String: replicate, charindex, leftstr, rightstr, ltrim, rtrim, trim, replace, reverse, proper, padl, padr, padc, strfilter.
 | 
				
			||||||
 | 
					- Aggregate: stdev, variance, mode, median, lower_quartile, upper_quartile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For an example see [dinedal/go-sqlite3-extension-functions](https://github.com/dinedal/go-sqlite3-extension-functions).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# FAQ
 | 
					# FAQ
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Getting insert error while query is opened.
 | 
					- Getting insert error while query is opened.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								vendor/github.com/mattn/go-sqlite3/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/mattn/go-sqlite3/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					module github.com/mattn/go-sqlite3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						github.com/PuerkitoBio/goquery v1.5.1
 | 
				
			||||||
 | 
						golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										13
									
								
								vendor/github.com/mattn/go-sqlite3/go.sum
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/mattn/go-sqlite3/go.sum
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					github.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=
 | 
				
			||||||
 | 
					github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
 | 
				
			||||||
 | 
					github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
 | 
				
			||||||
 | 
					github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
							
								
								
									
										18290
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18290
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										773
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										773
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										132
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										132
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -802,20 +802,29 @@ func (c *SQLiteConn) exec(ctx context.Context, query string, args []namedValue)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		var res driver.Result
 | 
							var res driver.Result
 | 
				
			||||||
		if s.(*SQLiteStmt).s != nil {
 | 
							if s.(*SQLiteStmt).s != nil {
 | 
				
			||||||
 | 
								stmtArgs := make([]namedValue, 0, len(args))
 | 
				
			||||||
			na := s.NumInput()
 | 
								na := s.NumInput()
 | 
				
			||||||
			if len(args) < na {
 | 
								if len(args) - start < na {
 | 
				
			||||||
				s.Close()
 | 
									s.Close()
 | 
				
			||||||
				return nil, fmt.Errorf("not enough args to execute query: want %d got %d", na, len(args))
 | 
									return nil, fmt.Errorf("not enough args to execute query: want %d got %d", na, len(args))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for i := 0; i < na; i++ {
 | 
								// consume the number of arguments used in the current
 | 
				
			||||||
				args[i].Ordinal -= start
 | 
								// statement and append all named arguments not
 | 
				
			||||||
 | 
								// contained therein
 | 
				
			||||||
 | 
								stmtArgs = append(stmtArgs, args[start:start+na]...)
 | 
				
			||||||
 | 
								for i := range args {
 | 
				
			||||||
 | 
									if (i < start || i >= na) && args[i].Name != "" {
 | 
				
			||||||
 | 
										stmtArgs = append(stmtArgs, args[i])
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			res, err = s.(*SQLiteStmt).exec(ctx, args[:na])
 | 
								for i := range stmtArgs {
 | 
				
			||||||
 | 
									stmtArgs[i].Ordinal = i + 1
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								res, err = s.(*SQLiteStmt).exec(ctx, stmtArgs)
 | 
				
			||||||
			if err != nil && err != driver.ErrSkip {
 | 
								if err != nil && err != driver.ErrSkip {
 | 
				
			||||||
				s.Close()
 | 
									s.Close()
 | 
				
			||||||
				return nil, err
 | 
									return nil, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			args = args[na:]
 | 
					 | 
				
			||||||
			start += na
 | 
								start += na
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		tail := s.(*SQLiteStmt).t
 | 
							tail := s.(*SQLiteStmt).t
 | 
				
			||||||
@@ -848,24 +857,33 @@ func (c *SQLiteConn) Query(query string, args []driver.Value) (driver.Rows, erro
 | 
				
			|||||||
func (c *SQLiteConn) query(ctx context.Context, query string, args []namedValue) (driver.Rows, error) {
 | 
					func (c *SQLiteConn) query(ctx context.Context, query string, args []namedValue) (driver.Rows, error) {
 | 
				
			||||||
	start := 0
 | 
						start := 0
 | 
				
			||||||
	for {
 | 
						for {
 | 
				
			||||||
 | 
							stmtArgs := make([]namedValue, 0, len(args))
 | 
				
			||||||
		s, err := c.prepare(ctx, query)
 | 
							s, err := c.prepare(ctx, query)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		s.(*SQLiteStmt).cls = true
 | 
							s.(*SQLiteStmt).cls = true
 | 
				
			||||||
		na := s.NumInput()
 | 
							na := s.NumInput()
 | 
				
			||||||
		if len(args) < na {
 | 
							if len(args) - start < na {
 | 
				
			||||||
			return nil, fmt.Errorf("not enough args to execute query: want %d got %d", na, len(args))
 | 
								return nil, fmt.Errorf("not enough args to execute query: want %d got %d", na, len(args) - start)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for i := 0; i < na; i++ {
 | 
							// consume the number of arguments used in the current
 | 
				
			||||||
			args[i].Ordinal -= start
 | 
							// statement and append all named arguments not contained
 | 
				
			||||||
 | 
							// therein
 | 
				
			||||||
 | 
							stmtArgs = append(stmtArgs, args[start:start+na]...)
 | 
				
			||||||
 | 
							for i := range args {
 | 
				
			||||||
 | 
								if (i < start || i >= na) && args[i].Name != "" {
 | 
				
			||||||
 | 
									stmtArgs = append(stmtArgs, args[i])
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		rows, err := s.(*SQLiteStmt).query(ctx, args[:na])
 | 
							for i := range stmtArgs {
 | 
				
			||||||
 | 
								stmtArgs[i].Ordinal = i + 1
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							rows, err := s.(*SQLiteStmt).query(ctx, stmtArgs)
 | 
				
			||||||
		if err != nil && err != driver.ErrSkip {
 | 
							if err != nil && err != driver.ErrSkip {
 | 
				
			||||||
			s.Close()
 | 
								s.Close()
 | 
				
			||||||
			return rows, err
 | 
								return rows, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		args = args[na:]
 | 
					 | 
				
			||||||
		start += na
 | 
							start += na
 | 
				
			||||||
		tail := s.(*SQLiteStmt).t
 | 
							tail := s.(*SQLiteStmt).t
 | 
				
			||||||
		if tail == "" {
 | 
							if tail == "" {
 | 
				
			||||||
@@ -1778,11 +1796,6 @@ func (s *SQLiteStmt) NumInput() int {
 | 
				
			|||||||
	return int(C.sqlite3_bind_parameter_count(s.s))
 | 
						return int(C.sqlite3_bind_parameter_count(s.s))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type bindArg struct {
 | 
					 | 
				
			||||||
	n int
 | 
					 | 
				
			||||||
	v driver.Value
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var placeHolder = []byte{0}
 | 
					var placeHolder = []byte{0}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *SQLiteStmt) bind(args []namedValue) error {
 | 
					func (s *SQLiteStmt) bind(args []namedValue) error {
 | 
				
			||||||
@@ -1791,52 +1804,63 @@ func (s *SQLiteStmt) bind(args []namedValue) error {
 | 
				
			|||||||
		return s.c.lastError()
 | 
							return s.c.lastError()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bindIndices := make([][3]int, len(args))
 | 
				
			||||||
 | 
						prefixes := []string{":", "@", "$"}
 | 
				
			||||||
	for i, v := range args {
 | 
						for i, v := range args {
 | 
				
			||||||
 | 
							bindIndices[i][0] = args[i].Ordinal
 | 
				
			||||||
		if v.Name != "" {
 | 
							if v.Name != "" {
 | 
				
			||||||
			cname := C.CString(":" + v.Name)
 | 
								for j := range prefixes {
 | 
				
			||||||
			args[i].Ordinal = int(C.sqlite3_bind_parameter_index(s.s, cname))
 | 
									cname := C.CString(prefixes[j] + v.Name)
 | 
				
			||||||
			C.free(unsafe.Pointer(cname))
 | 
									bindIndices[i][j] = int(C.sqlite3_bind_parameter_index(s.s, cname))
 | 
				
			||||||
 | 
									C.free(unsafe.Pointer(cname))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								args[i].Ordinal = bindIndices[i][0]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, arg := range args {
 | 
						for i, arg := range args {
 | 
				
			||||||
		n := C.int(arg.Ordinal)
 | 
							for j := range bindIndices[i] {
 | 
				
			||||||
		switch v := arg.Value.(type) {
 | 
								if bindIndices[i][j] == 0 {
 | 
				
			||||||
		case nil:
 | 
									continue
 | 
				
			||||||
			rv = C.sqlite3_bind_null(s.s, n)
 | 
								}
 | 
				
			||||||
		case string:
 | 
								n := C.int(bindIndices[i][j])
 | 
				
			||||||
			if len(v) == 0 {
 | 
								switch v := arg.Value.(type) {
 | 
				
			||||||
				rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&placeHolder[0])), C.int(0))
 | 
								case nil:
 | 
				
			||||||
			} else {
 | 
									rv = C.sqlite3_bind_null(s.s, n)
 | 
				
			||||||
				b := []byte(v)
 | 
								case string:
 | 
				
			||||||
 | 
									if len(v) == 0 {
 | 
				
			||||||
 | 
										rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&placeHolder[0])), C.int(0))
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										b := []byte(v)
 | 
				
			||||||
 | 
										rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b)))
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								case int64:
 | 
				
			||||||
 | 
									rv = C.sqlite3_bind_int64(s.s, n, C.sqlite3_int64(v))
 | 
				
			||||||
 | 
								case bool:
 | 
				
			||||||
 | 
									if v {
 | 
				
			||||||
 | 
										rv = C.sqlite3_bind_int(s.s, n, 1)
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										rv = C.sqlite3_bind_int(s.s, n, 0)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								case float64:
 | 
				
			||||||
 | 
									rv = C.sqlite3_bind_double(s.s, n, C.double(v))
 | 
				
			||||||
 | 
								case []byte:
 | 
				
			||||||
 | 
									if v == nil {
 | 
				
			||||||
 | 
										rv = C.sqlite3_bind_null(s.s, n)
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										ln := len(v)
 | 
				
			||||||
 | 
										if ln == 0 {
 | 
				
			||||||
 | 
											v = placeHolder
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										rv = C._sqlite3_bind_blob(s.s, n, unsafe.Pointer(&v[0]), C.int(ln))
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								case time.Time:
 | 
				
			||||||
 | 
									b := []byte(v.Format(SQLiteTimestampFormats[0]))
 | 
				
			||||||
				rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b)))
 | 
									rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b)))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case int64:
 | 
								if rv != C.SQLITE_OK {
 | 
				
			||||||
			rv = C.sqlite3_bind_int64(s.s, n, C.sqlite3_int64(v))
 | 
									return s.c.lastError()
 | 
				
			||||||
		case bool:
 | 
					 | 
				
			||||||
			if v {
 | 
					 | 
				
			||||||
				rv = C.sqlite3_bind_int(s.s, n, 1)
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				rv = C.sqlite3_bind_int(s.s, n, 0)
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case float64:
 | 
					 | 
				
			||||||
			rv = C.sqlite3_bind_double(s.s, n, C.double(v))
 | 
					 | 
				
			||||||
		case []byte:
 | 
					 | 
				
			||||||
			if v == nil {
 | 
					 | 
				
			||||||
				rv = C.sqlite3_bind_null(s.s, n)
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				ln := len(v)
 | 
					 | 
				
			||||||
				if ln == 0 {
 | 
					 | 
				
			||||||
					v = placeHolder
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				rv = C._sqlite3_bind_blob(s.s, n, unsafe.Pointer(&v[0]), C.int(ln))
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		case time.Time:
 | 
					 | 
				
			||||||
			b := []byte(v.Format(SQLiteTimestampFormats[0]))
 | 
					 | 
				
			||||||
			rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b)))
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if rv != C.SQLITE_OK {
 | 
					 | 
				
			||||||
			return s.c.lastError()
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -28,12 +28,9 @@ func (c *SQLiteConn) loadExtensions(extensions []string) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, extension := range extensions {
 | 
						for _, extension := range extensions {
 | 
				
			||||||
		cext := C.CString(extension)
 | 
							if err := c.loadExtension(extension, nil); err != nil {
 | 
				
			||||||
		defer C.free(unsafe.Pointer(cext))
 | 
					 | 
				
			||||||
		rv = C.sqlite3_load_extension(c.db, cext, nil, nil)
 | 
					 | 
				
			||||||
		if rv != C.SQLITE_OK {
 | 
					 | 
				
			||||||
			C.sqlite3_enable_load_extension(c.db, 0)
 | 
								C.sqlite3_enable_load_extension(c.db, 0)
 | 
				
			||||||
			return errors.New(C.GoString(C.sqlite3_errmsg(c.db)))
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,6 +38,7 @@ func (c *SQLiteConn) loadExtensions(extensions []string) error {
 | 
				
			|||||||
	if rv != C.SQLITE_OK {
 | 
						if rv != C.SQLITE_OK {
 | 
				
			||||||
		return errors.New(C.GoString(C.sqlite3_errmsg(c.db)))
 | 
							return errors.New(C.GoString(C.sqlite3_errmsg(c.db)))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -51,14 +49,9 @@ func (c *SQLiteConn) LoadExtension(lib string, entry string) error {
 | 
				
			|||||||
		return errors.New(C.GoString(C.sqlite3_errmsg(c.db)))
 | 
							return errors.New(C.GoString(C.sqlite3_errmsg(c.db)))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clib := C.CString(lib)
 | 
						if err := c.loadExtension(lib, &entry); err != nil {
 | 
				
			||||||
	defer C.free(unsafe.Pointer(clib))
 | 
							C.sqlite3_enable_load_extension(c.db, 0)
 | 
				
			||||||
	centry := C.CString(entry)
 | 
							return err
 | 
				
			||||||
	defer C.free(unsafe.Pointer(centry))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	rv = C.sqlite3_load_extension(c.db, clib, centry, nil)
 | 
					 | 
				
			||||||
	if rv != C.SQLITE_OK {
 | 
					 | 
				
			||||||
		return errors.New(C.GoString(C.sqlite3_errmsg(c.db)))
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rv = C.sqlite3_enable_load_extension(c.db, 0)
 | 
						rv = C.sqlite3_enable_load_extension(c.db, 0)
 | 
				
			||||||
@@ -68,3 +61,24 @@ func (c *SQLiteConn) LoadExtension(lib string, entry string) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *SQLiteConn) loadExtension(lib string, entry *string) error {
 | 
				
			||||||
 | 
						clib := C.CString(lib)
 | 
				
			||||||
 | 
						defer C.free(unsafe.Pointer(clib))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var centry *C.char
 | 
				
			||||||
 | 
						if entry != nil {
 | 
				
			||||||
 | 
							centry := C.CString(*entry)
 | 
				
			||||||
 | 
							defer C.free(unsafe.Pointer(centry))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var errMsg *C.char
 | 
				
			||||||
 | 
						defer C.sqlite3_free(unsafe.Pointer(errMsg))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rv := C.sqlite3_load_extension(c.db, clib, centry, &errMsg)
 | 
				
			||||||
 | 
						if rv != C.SQLITE_OK {
 | 
				
			||||||
 | 
							return errors.New(C.GoString(errMsg))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -215,7 +215,6 @@ func addTraceMapping(connHandle uintptr, traceConf TraceConfig) {
 | 
				
			|||||||
			traceConf, connHandle, oldEntryCopy.config))
 | 
								traceConf, connHandle, oldEntryCopy.config))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	traceMap[connHandle] = traceMapEntry{config: traceConf}
 | 
						traceMap[connHandle] = traceMapEntry{config: traceConf}
 | 
				
			||||||
	fmt.Printf("Added trace config %v: handle 0x%x.\n", traceConf, connHandle)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func lookupTraceMapping(connHandle uintptr) (TraceConfig, bool) {
 | 
					func lookupTraceMapping(connHandle uintptr) (TraceConfig, bool) {
 | 
				
			||||||
@@ -234,7 +233,6 @@ func popTraceMapping(connHandle uintptr) (TraceConfig, bool) {
 | 
				
			|||||||
	entryCopy, found := traceMap[connHandle]
 | 
						entryCopy, found := traceMap[connHandle]
 | 
				
			||||||
	if found {
 | 
						if found {
 | 
				
			||||||
		delete(traceMap, connHandle)
 | 
							delete(traceMap, connHandle)
 | 
				
			||||||
		fmt.Printf("Pop handle 0x%x: deleted trace config %v.\n", connHandle, entryCopy.config)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return entryCopy.config, found
 | 
						return entryCopy.config, found
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										25
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3ext.h
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3ext.h
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -325,6 +325,17 @@ struct sqlite3_api_routines {
 | 
				
			|||||||
  int (*value_frombind)(sqlite3_value*);
 | 
					  int (*value_frombind)(sqlite3_value*);
 | 
				
			||||||
  /* Version 3.30.0 and later */
 | 
					  /* Version 3.30.0 and later */
 | 
				
			||||||
  int (*drop_modules)(sqlite3*,const char**);
 | 
					  int (*drop_modules)(sqlite3*,const char**);
 | 
				
			||||||
 | 
					  /* Version 3.31.0 and later */
 | 
				
			||||||
 | 
					  sqlite3_int64 (*hard_heap_limit64)(sqlite3_int64);
 | 
				
			||||||
 | 
					  const char *(*uri_key)(const char*,int);
 | 
				
			||||||
 | 
					  const char *(*filename_database)(const char*);
 | 
				
			||||||
 | 
					  const char *(*filename_journal)(const char*);
 | 
				
			||||||
 | 
					  const char *(*filename_wal)(const char*);
 | 
				
			||||||
 | 
					  /* Version 3.32.0 and later */
 | 
				
			||||||
 | 
					  char *(*create_filename)(const char*,const char*,const char*,
 | 
				
			||||||
 | 
					                           int,const char**);
 | 
				
			||||||
 | 
					  void (*free_filename)(char*);
 | 
				
			||||||
 | 
					  sqlite3_file *(*database_file_object)(const char*);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -615,10 +626,20 @@ typedef int (*sqlite3_loadext_entry)(
 | 
				
			|||||||
/* Version 3.26.0 and later */
 | 
					/* Version 3.26.0 and later */
 | 
				
			||||||
#define sqlite3_normalized_sql         sqlite3_api->normalized_sql
 | 
					#define sqlite3_normalized_sql         sqlite3_api->normalized_sql
 | 
				
			||||||
/* Version 3.28.0 and later */
 | 
					/* Version 3.28.0 and later */
 | 
				
			||||||
#define sqlite3_stmt_isexplain         sqlite3_api->isexplain
 | 
					#define sqlite3_stmt_isexplain         sqlite3_api->stmt_isexplain
 | 
				
			||||||
#define sqlite3_value_frombind         sqlite3_api->frombind
 | 
					#define sqlite3_value_frombind         sqlite3_api->value_frombind
 | 
				
			||||||
/* Version 3.30.0 and later */
 | 
					/* Version 3.30.0 and later */
 | 
				
			||||||
#define sqlite3_drop_modules           sqlite3_api->drop_modules
 | 
					#define sqlite3_drop_modules           sqlite3_api->drop_modules
 | 
				
			||||||
 | 
					/* Version 3.31.0 and later */
 | 
				
			||||||
 | 
					#define sqlite3_hard_heap_limit64      sqlite3_api->hard_heap_limit64
 | 
				
			||||||
 | 
					#define sqlite3_uri_key                sqlite3_api->uri_key
 | 
				
			||||||
 | 
					#define sqlite3_filename_database      sqlite3_api->filename_database
 | 
				
			||||||
 | 
					#define sqlite3_filename_journal       sqlite3_api->filename_journal
 | 
				
			||||||
 | 
					#define sqlite3_filename_wal           sqlite3_api->filename_wal
 | 
				
			||||||
 | 
					/* Version 3.32.0 and later */
 | 
				
			||||||
 | 
					#define sqlite3_create_filename        sqlite3_api->create_filename
 | 
				
			||||||
 | 
					#define sqlite3_free_filename          sqlite3_api->free_filename
 | 
				
			||||||
 | 
					#define sqlite3_database_file_object   sqlite3_api->database_file_object
 | 
				
			||||||
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
 | 
					#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
 | 
					#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								vendor/github.com/mattn/go-sqlite3/static_mock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/mattn/go-sqlite3/static_mock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -13,14 +13,25 @@ import (
 | 
				
			|||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					 | 
				
			||||||
	sql.Register("sqlite3", &SQLiteDriverMock{})
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type SQLiteDriverMock struct{}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var errorMsg = errors.New("Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub")
 | 
					var errorMsg = errors.New("Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (SQLiteDriverMock) Open(s string) (driver.Conn, error) {
 | 
					func init() {
 | 
				
			||||||
	return nil, errorMsg
 | 
						sql.Register("sqlite3", &SQLiteDriver{})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type (
 | 
				
			||||||
 | 
						SQLiteDriver struct {
 | 
				
			||||||
 | 
							Extensions  []string
 | 
				
			||||||
 | 
							ConnectHook func(*SQLiteConn) error
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						SQLiteConn struct{}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (SQLiteDriver) Open(s string) (driver.Conn, error)                        { return nil, errorMsg }
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterAggregator(string, interface{}, bool) error       { return errorMsg }
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterAuthorizer(func(int, string, string, string) int) {}
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterCollation(string, func(string, string) int) error { return errorMsg }
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterCommitHook(func() int)                            {}
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterFunc(string, interface{}, bool) error             { return errorMsg }
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterRollbackHook(func())                              {}
 | 
				
			||||||
 | 
					func (c *SQLiteConn) RegisterUpdateHook(func(int, string, string, int64))      {}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										78
									
								
								vendor/github.com/stretchr/testify/assert/assertion_format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										78
									
								
								vendor/github.com/stretchr/testify/assert/assertion_format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -32,7 +32,8 @@ func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args
 | 
				
			|||||||
	return Contains(t, s, contains, append([]interface{}{msg}, args...)...)
 | 
						return Contains(t, s, contains, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExistsf checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
 | 
					func DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -160,7 +161,8 @@ func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {
 | 
				
			|||||||
	return False(t, value, append([]interface{}{msg}, args...)...)
 | 
						return False(t, value, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExistsf checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
 | 
					func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -267,7 +269,7 @@ func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, ms
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDeltaf asserts that the two numerals are within delta of each other.
 | 
					// InDeltaf asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 assert.InDeltaf(t, math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01)
 | 
					// 	 assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted")
 | 
				
			||||||
func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
 | 
					func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -325,14 +327,6 @@ func JSONEqf(t TestingT, expected string, actual string, msg string, args ...int
 | 
				
			|||||||
	return JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
						return JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// YAMLEqf asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {
 | 
					 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Lenf asserts that the specified object has specific length.
 | 
					// Lenf asserts that the specified object has specific length.
 | 
				
			||||||
// Lenf also fails if the object has a type that len() not accept.
 | 
					// Lenf also fails if the object has a type that len() not accept.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -369,6 +363,17 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args .
 | 
				
			|||||||
	return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)
 | 
						return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Neverf asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return Never(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Nilf asserts that the specified object is nil.
 | 
					// Nilf asserts that the specified object is nil.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//    assert.Nilf(t, err, "error message %s", "formatted")
 | 
					//    assert.Nilf(t, err, "error message %s", "formatted")
 | 
				
			||||||
@@ -379,6 +384,15 @@ func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool
 | 
				
			|||||||
	return Nil(t, object, append([]interface{}{msg}, args...)...)
 | 
						return Nil(t, object, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExistsf checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NoDirExists(t, path, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NoErrorf asserts that a function returned no error (i.e. `nil`).
 | 
					// NoErrorf asserts that a function returned no error (i.e. `nil`).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//   actualObj, err := SomeFunction()
 | 
					//   actualObj, err := SomeFunction()
 | 
				
			||||||
@@ -392,6 +406,15 @@ func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool {
 | 
				
			|||||||
	return NoError(t, err, append([]interface{}{msg}, args...)...)
 | 
						return NoError(t, err, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExistsf checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NoFileExists(t, path, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
					// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
				
			||||||
// specified substring or element.
 | 
					// specified substring or element.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -462,6 +485,19 @@ func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ..
 | 
				
			|||||||
	return NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...)
 | 
						return NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSamef asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted")
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NotSame(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotSubsetf asserts that the specified list(array, slice...) contains not all
 | 
					// NotSubsetf asserts that the specified list(array, slice...) contains not all
 | 
				
			||||||
// elements given in the specified subset(array, slice...).
 | 
					// elements given in the specified subset(array, slice...).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -491,6 +527,18 @@ func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool
 | 
				
			|||||||
	return Panics(t, f, append([]interface{}{msg}, args...)...)
 | 
						return Panics(t, f, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func PanicsWithErrorf(t TestingT, errString string, f PanicTestFunc, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return PanicsWithError(t, errString, f, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that
 | 
					// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that
 | 
				
			||||||
// the recovered panic value equals the expected panic value.
 | 
					// the recovered panic value equals the expected panic value.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -557,6 +605,14 @@ func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta tim
 | 
				
			|||||||
	return WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...)
 | 
						return WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEqf asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Zerof asserts that i is the zero value for its type.
 | 
					// Zerof asserts that i is the zero value for its type.
 | 
				
			||||||
func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {
 | 
					func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										156
									
								
								vendor/github.com/stretchr/testify/assert/assertion_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										156
									
								
								vendor/github.com/stretchr/testify/assert/assertion_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -53,7 +53,8 @@ func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string,
 | 
				
			|||||||
	return Containsf(a.t, s, contains, msg, args...)
 | 
						return Containsf(a.t, s, contains, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExists checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {
 | 
					func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -61,7 +62,8 @@ func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
	return DirExists(a.t, path, msgAndArgs...)
 | 
						return DirExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExistsf checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool {
 | 
					func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -309,7 +311,8 @@ func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool {
 | 
				
			|||||||
	return Falsef(a.t, value, msg, args...)
 | 
						return Falsef(a.t, value, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExists checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {
 | 
					func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -317,7 +320,8 @@ func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
	return FileExists(a.t, path, msgAndArgs...)
 | 
						return FileExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExistsf checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool {
 | 
					func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -521,7 +525,7 @@ func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDelta asserts that the two numerals are within delta of each other.
 | 
					// InDelta asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 a.InDelta(math.Pi, (22 / 7.0), 0.01)
 | 
					// 	 a.InDelta(math.Pi, 22/7.0, 0.01)
 | 
				
			||||||
func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
 | 
					func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -563,7 +567,7 @@ func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, del
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDeltaf asserts that the two numerals are within delta of each other.
 | 
					// InDeltaf asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 a.InDeltaf(math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01)
 | 
					// 	 a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted")
 | 
				
			||||||
func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
 | 
					func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -639,22 +643,6 @@ func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ..
 | 
				
			|||||||
	return JSONEqf(a.t, expected, actual, msg, args...)
 | 
						return JSONEqf(a.t, expected, actual, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// YAMLEq asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool {
 | 
					 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return YAMLEq(a.t, expected, actual, msgAndArgs...)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// YAMLEqf asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool {
 | 
					 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return YAMLEqf(a.t, expected, actual, msg, args...)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Len asserts that the specified object has specific length.
 | 
					// Len asserts that the specified object has specific length.
 | 
				
			||||||
// Len also fails if the object has a type that len() not accept.
 | 
					// Len also fails if the object has a type that len() not accept.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -727,6 +715,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i
 | 
				
			|||||||
	return Lessf(a.t, e1, e2, msg, args...)
 | 
						return Lessf(a.t, e1, e2, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Never asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)
 | 
				
			||||||
 | 
					func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return Never(a.t, condition, waitFor, tick, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Neverf asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return Neverf(a.t, condition, waitFor, tick, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Nil asserts that the specified object is nil.
 | 
					// Nil asserts that the specified object is nil.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//    a.Nil(err)
 | 
					//    a.Nil(err)
 | 
				
			||||||
@@ -747,6 +757,24 @@ func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) b
 | 
				
			|||||||
	return Nilf(a.t, object, msg, args...)
 | 
						return Nilf(a.t, object, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExists checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NoDirExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExistsf checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NoDirExistsf(a.t, path, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NoError asserts that a function returned no error (i.e. `nil`).
 | 
					// NoError asserts that a function returned no error (i.e. `nil`).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//   actualObj, err := SomeFunction()
 | 
					//   actualObj, err := SomeFunction()
 | 
				
			||||||
@@ -773,6 +801,24 @@ func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool {
 | 
				
			|||||||
	return NoErrorf(a.t, err, msg, args...)
 | 
						return NoErrorf(a.t, err, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExists checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NoFileExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExistsf checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NoFileExistsf(a.t, path, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
					// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
				
			||||||
// specified substring or element.
 | 
					// specified substring or element.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -913,6 +959,32 @@ func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, arg
 | 
				
			|||||||
	return NotRegexpf(a.t, rx, str, msg, args...)
 | 
						return NotRegexpf(a.t, rx, str, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSame asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.NotSame(ptr1, ptr2)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NotSame(a.t, expected, actual, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSamef asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.NotSamef(ptr1, ptr2, "error message %s", "formatted")
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NotSamef(a.t, expected, actual, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
					// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
				
			||||||
// elements given in the specified subset(array, slice...).
 | 
					// elements given in the specified subset(array, slice...).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -961,6 +1033,30 @@ func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
	return Panics(a.t, f, msgAndArgs...)
 | 
						return Panics(a.t, f, msgAndArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithError asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   a.PanicsWithError("crazy error", func(){ GoCrazy() })
 | 
				
			||||||
 | 
					func (a *Assertions) PanicsWithError(errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return PanicsWithError(a.t, errString, f, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func (a *Assertions) PanicsWithErrorf(errString string, f PanicTestFunc, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return PanicsWithErrorf(a.t, errString, f, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
 | 
					// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
 | 
				
			||||||
// the recovered panic value equals the expected panic value.
 | 
					// the recovered panic value equals the expected panic value.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -1103,6 +1199,22 @@ func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta
 | 
				
			|||||||
	return WithinDurationf(a.t, expected, actual, delta, msg, args...)
 | 
						return WithinDurationf(a.t, expected, actual, delta, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEq asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return YAMLEq(a.t, expected, actual, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEqf asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return YAMLEqf(a.t, expected, actual, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Zero asserts that i is the zero value for its type.
 | 
					// Zero asserts that i is the zero value for its type.
 | 
				
			||||||
func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {
 | 
					func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										218
									
								
								vendor/github.com/stretchr/testify/assert/assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										218
									
								
								vendor/github.com/stretchr/testify/assert/assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ import (
 | 
				
			|||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"runtime"
 | 
						"runtime"
 | 
				
			||||||
 | 
						"runtime/debug"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
	"unicode"
 | 
						"unicode"
 | 
				
			||||||
@@ -21,7 +22,7 @@ import (
 | 
				
			|||||||
	yaml "gopkg.in/yaml.v2"
 | 
						yaml "gopkg.in/yaml.v2"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_format.go.tmpl
 | 
					//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TestingT is an interface wrapper around *testing.T
 | 
					// TestingT is an interface wrapper around *testing.T
 | 
				
			||||||
type TestingT interface {
 | 
					type TestingT interface {
 | 
				
			||||||
@@ -351,6 +352,19 @@ func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{})
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// validateEqualArgs checks whether provided arguments can be safely used in the
 | 
				
			||||||
 | 
					// Equal/NotEqual functions.
 | 
				
			||||||
 | 
					func validateEqualArgs(expected, actual interface{}) error {
 | 
				
			||||||
 | 
						if expected == nil && actual == nil {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if isFunction(expected) || isFunction(actual) {
 | 
				
			||||||
 | 
							return errors.New("cannot take func type as argument")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Same asserts that two pointers reference the same object.
 | 
					// Same asserts that two pointers reference the same object.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//    assert.Same(t, ptr1, ptr2)
 | 
					//    assert.Same(t, ptr1, ptr2)
 | 
				
			||||||
@@ -362,18 +376,7 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b
 | 
				
			|||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	expectedPtr, actualPtr := reflect.ValueOf(expected), reflect.ValueOf(actual)
 | 
						if !samePointers(expected, actual) {
 | 
				
			||||||
	if expectedPtr.Kind() != reflect.Ptr || actualPtr.Kind() != reflect.Ptr {
 | 
					 | 
				
			||||||
		return Fail(t, "Invalid operation: both arguments must be pointers", msgAndArgs...)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	expectedType, actualType := reflect.TypeOf(expected), reflect.TypeOf(actual)
 | 
					 | 
				
			||||||
	if expectedType != actualType {
 | 
					 | 
				
			||||||
		return Fail(t, fmt.Sprintf("Pointer expected to be of type %v, but was %v",
 | 
					 | 
				
			||||||
			expectedType, actualType), msgAndArgs...)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if expected != actual {
 | 
					 | 
				
			||||||
		return Fail(t, fmt.Sprintf("Not same: \n"+
 | 
							return Fail(t, fmt.Sprintf("Not same: \n"+
 | 
				
			||||||
			"expected: %p %#v\n"+
 | 
								"expected: %p %#v\n"+
 | 
				
			||||||
			"actual  : %p %#v", expected, expected, actual, actual), msgAndArgs...)
 | 
								"actual  : %p %#v", expected, expected, actual, actual), msgAndArgs...)
 | 
				
			||||||
@@ -382,6 +385,42 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSame asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.NotSame(t, ptr1, ptr2)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if samePointers(expected, actual) {
 | 
				
			||||||
 | 
							return Fail(t, fmt.Sprintf(
 | 
				
			||||||
 | 
								"Expected and actual point to the same object: %p %#v",
 | 
				
			||||||
 | 
								expected, expected), msgAndArgs...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// samePointers compares two generic interface objects and returns whether
 | 
				
			||||||
 | 
					// they point to the same object
 | 
				
			||||||
 | 
					func samePointers(first, second interface{}) bool {
 | 
				
			||||||
 | 
						firstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second)
 | 
				
			||||||
 | 
						if firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						firstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second)
 | 
				
			||||||
 | 
						if firstType != secondType {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// compare pointer addresses
 | 
				
			||||||
 | 
						return first == second
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// formatUnequalValues takes two values of arbitrary types and returns string
 | 
					// formatUnequalValues takes two values of arbitrary types and returns string
 | 
				
			||||||
// representations appropriate to be presented to the user.
 | 
					// representations appropriate to be presented to the user.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -393,9 +432,11 @@ func formatUnequalValues(expected, actual interface{}) (e string, a string) {
 | 
				
			|||||||
		return fmt.Sprintf("%T(%#v)", expected, expected),
 | 
							return fmt.Sprintf("%T(%#v)", expected, expected),
 | 
				
			||||||
			fmt.Sprintf("%T(%#v)", actual, actual)
 | 
								fmt.Sprintf("%T(%#v)", actual, actual)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						switch expected.(type) {
 | 
				
			||||||
	return fmt.Sprintf("%#v", expected),
 | 
						case time.Duration:
 | 
				
			||||||
		fmt.Sprintf("%#v", actual)
 | 
							return fmt.Sprintf("%v", expected), fmt.Sprintf("%v", actual)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return fmt.Sprintf("%#v", expected), fmt.Sprintf("%#v", actual)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// EqualValues asserts that two objects are equal or convertable to the same types
 | 
					// EqualValues asserts that two objects are equal or convertable to the same types
 | 
				
			||||||
@@ -901,15 +942,17 @@ func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
type PanicTestFunc func()
 | 
					type PanicTestFunc func()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// didPanic returns true if the function passed to it panics. Otherwise, it returns false.
 | 
					// didPanic returns true if the function passed to it panics. Otherwise, it returns false.
 | 
				
			||||||
func didPanic(f PanicTestFunc) (bool, interface{}) {
 | 
					func didPanic(f PanicTestFunc) (bool, interface{}, string) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	didPanic := false
 | 
						didPanic := false
 | 
				
			||||||
	var message interface{}
 | 
						var message interface{}
 | 
				
			||||||
 | 
						var stack string
 | 
				
			||||||
	func() {
 | 
						func() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		defer func() {
 | 
							defer func() {
 | 
				
			||||||
			if message = recover(); message != nil {
 | 
								if message = recover(); message != nil {
 | 
				
			||||||
				didPanic = true
 | 
									didPanic = true
 | 
				
			||||||
 | 
									stack = string(debug.Stack())
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}()
 | 
							}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -918,7 +961,7 @@ func didPanic(f PanicTestFunc) (bool, interface{}) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return didPanic, message
 | 
						return didPanic, message, stack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -930,7 +973,7 @@ func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if funcDidPanic, panicValue := didPanic(f); !funcDidPanic {
 | 
						if funcDidPanic, panicValue, _ := didPanic(f); !funcDidPanic {
 | 
				
			||||||
		return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
 | 
							return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -946,12 +989,34 @@ func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndAr
 | 
				
			|||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	funcDidPanic, panicValue := didPanic(f)
 | 
						funcDidPanic, panicValue, panickedStack := didPanic(f)
 | 
				
			||||||
	if !funcDidPanic {
 | 
						if !funcDidPanic {
 | 
				
			||||||
		return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
 | 
							return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if panicValue != expected {
 | 
						if panicValue != expected {
 | 
				
			||||||
		return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v", f, expected, panicValue), msgAndArgs...)
 | 
							return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v\n\tPanic stack:\t%s", f, expected, panicValue, panickedStack), msgAndArgs...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithError asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() })
 | 
				
			||||||
 | 
					func PanicsWithError(t TestingT, errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						funcDidPanic, panicValue, panickedStack := didPanic(f)
 | 
				
			||||||
 | 
						if !funcDidPanic {
 | 
				
			||||||
 | 
							return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						panicErr, ok := panicValue.(error)
 | 
				
			||||||
 | 
						if !ok || panicErr.Error() != errString {
 | 
				
			||||||
 | 
							return Fail(t, fmt.Sprintf("func %#v should panic with error message:\t%#v\n\tPanic value:\t%#v\n\tPanic stack:\t%s", f, errString, panicValue, panickedStack), msgAndArgs...)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
@@ -965,8 +1030,8 @@ func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if funcDidPanic, panicValue := didPanic(f); funcDidPanic {
 | 
						if funcDidPanic, panicValue, panickedStack := didPanic(f); funcDidPanic {
 | 
				
			||||||
		return Fail(t, fmt.Sprintf("func %#v should not panic\n\tPanic value:\t%v", f, panicValue), msgAndArgs...)
 | 
							return Fail(t, fmt.Sprintf("func %#v should not panic\n\tPanic value:\t%v\n\tPanic stack:\t%s", f, panicValue, panickedStack), msgAndArgs...)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
@@ -1026,7 +1091,7 @@ func toFloat(x interface{}) (float64, bool) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDelta asserts that the two numerals are within delta of each other.
 | 
					// InDelta asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 assert.InDelta(t, math.Pi, (22 / 7.0), 0.01)
 | 
					// 	 assert.InDelta(t, math.Pi, 22/7.0, 0.01)
 | 
				
			||||||
func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
 | 
					func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -1314,7 +1379,8 @@ func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExists checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
					func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -1332,7 +1398,24 @@ func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// NoFileExists checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info, err := os.Lstat(path)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if info.IsDir() {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return Fail(t, fmt.Sprintf("file %q exists", path), msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DirExists checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
					func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -1350,6 +1433,25 @@ func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExists checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info, err := os.Lstat(path)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if os.IsNotExist(err) {
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !info.IsDir() {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return Fail(t, fmt.Sprintf("directory %q exists", path), msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// JSONEq asserts that two JSON strings are equivalent.
 | 
					// JSONEq asserts that two JSON strings are equivalent.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//  assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)
 | 
					//  assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)
 | 
				
			||||||
@@ -1439,15 +1541,6 @@ func diff(expected interface{}, actual interface{}) string {
 | 
				
			|||||||
	return "\n\nDiff:\n" + diff
 | 
						return "\n\nDiff:\n" + diff
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// validateEqualArgs checks whether provided arguments can be safely used in the
 | 
					 | 
				
			||||||
// Equal/NotEqual functions.
 | 
					 | 
				
			||||||
func validateEqualArgs(expected, actual interface{}) error {
 | 
					 | 
				
			||||||
	if isFunction(expected) || isFunction(actual) {
 | 
					 | 
				
			||||||
		return errors.New("cannot take func type as argument")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func isFunction(arg interface{}) bool {
 | 
					func isFunction(arg interface{}) bool {
 | 
				
			||||||
	if arg == nil {
 | 
						if arg == nil {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
@@ -1475,24 +1568,59 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t
 | 
				
			|||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ch := make(chan bool, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	timer := time.NewTimer(waitFor)
 | 
						timer := time.NewTimer(waitFor)
 | 
				
			||||||
	ticker := time.NewTicker(tick)
 | 
					 | 
				
			||||||
	checkPassed := make(chan bool)
 | 
					 | 
				
			||||||
	defer timer.Stop()
 | 
						defer timer.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ticker := time.NewTicker(tick)
 | 
				
			||||||
	defer ticker.Stop()
 | 
						defer ticker.Stop()
 | 
				
			||||||
	defer close(checkPassed)
 | 
					
 | 
				
			||||||
	for {
 | 
						for tick := ticker.C; ; {
 | 
				
			||||||
		select {
 | 
							select {
 | 
				
			||||||
		case <-timer.C:
 | 
							case <-timer.C:
 | 
				
			||||||
			return Fail(t, "Condition never satisfied", msgAndArgs...)
 | 
								return Fail(t, "Condition never satisfied", msgAndArgs...)
 | 
				
			||||||
		case result := <-checkPassed:
 | 
							case <-tick:
 | 
				
			||||||
			if result {
 | 
								tick = nil
 | 
				
			||||||
 | 
								go func() { ch <- condition() }()
 | 
				
			||||||
 | 
							case v := <-ch:
 | 
				
			||||||
 | 
								if v {
 | 
				
			||||||
				return true
 | 
									return true
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case <-ticker.C:
 | 
								tick = ticker.C
 | 
				
			||||||
			go func() {
 | 
							}
 | 
				
			||||||
				checkPassed <- condition()
 | 
						}
 | 
				
			||||||
			}()
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Never asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)
 | 
				
			||||||
 | 
					func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ch := make(chan bool, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						timer := time.NewTimer(waitFor)
 | 
				
			||||||
 | 
						defer timer.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ticker := time.NewTicker(tick)
 | 
				
			||||||
 | 
						defer ticker.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for tick := ticker.C; ; {
 | 
				
			||||||
 | 
							select {
 | 
				
			||||||
 | 
							case <-timer.C:
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							case <-tick:
 | 
				
			||||||
 | 
								tick = nil
 | 
				
			||||||
 | 
								go func() { ch <- condition() }()
 | 
				
			||||||
 | 
							case v := <-ch:
 | 
				
			||||||
 | 
								if v {
 | 
				
			||||||
 | 
									return Fail(t, "Condition satisfied", msgAndArgs...)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								tick = ticker.C
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/github.com/stretchr/testify/assert/forward_assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/stretchr/testify/assert/forward_assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -13,4 +13,4 @@ func New(t TestingT) *Assertions {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs
 | 
					//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/github.com/stretchr/testify/require/forward_requirements.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/stretchr/testify/require/forward_requirements.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -13,4 +13,4 @@ func New(t TestingT) *Assertions {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:generate go run ../_codegen/main.go -output-package=require -template=require_forward.go.tmpl -include-format-funcs
 | 
					//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require_forward.go.tmpl -include-format-funcs"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										210
									
								
								vendor/github.com/stretchr/testify/require/require.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										210
									
								
								vendor/github.com/stretchr/testify/require/require.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -66,7 +66,8 @@ func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExists checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func DirExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
					func DirExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -77,7 +78,8 @@ func DirExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExistsf checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func DirExistsf(t TestingT, path string, msg string, args ...interface{}) {
 | 
					func DirExistsf(t TestingT, path string, msg string, args ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -275,12 +277,12 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) {
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
//    assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)
 | 
					//    assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)
 | 
				
			||||||
func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
 | 
					func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if assert.Eventually(t, condition, waitFor, tick, msgAndArgs...) {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if assert.Eventually(t, condition, waitFor, tick, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -289,12 +291,12 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
//    assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
 | 
					//    assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
 | 
				
			||||||
func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
 | 
					func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
 | 
				
			||||||
	if assert.Eventuallyf(t, condition, waitFor, tick, msg, args...) {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if assert.Eventuallyf(t, condition, waitFor, tick, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -394,7 +396,8 @@ func Falsef(t TestingT, value bool, msg string, args ...interface{}) {
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExists checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func FileExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
					func FileExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -405,7 +408,8 @@ func FileExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExistsf checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func FileExistsf(t TestingT, path string, msg string, args ...interface{}) {
 | 
					func FileExistsf(t TestingT, path string, msg string, args ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -660,7 +664,7 @@ func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, ms
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDelta asserts that the two numerals are within delta of each other.
 | 
					// InDelta asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 assert.InDelta(t, math.Pi, (22 / 7.0), 0.01)
 | 
					// 	 assert.InDelta(t, math.Pi, 22/7.0, 0.01)
 | 
				
			||||||
func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {
 | 
					func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -717,7 +721,7 @@ func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta f
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDeltaf asserts that the two numerals are within delta of each other.
 | 
					// InDeltaf asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 assert.InDeltaf(t, math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01)
 | 
					// 	 assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted")
 | 
				
			||||||
func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {
 | 
					func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -820,28 +824,6 @@ func JSONEqf(t TestingT, expected string, actual string, msg string, args ...int
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// YAMLEq asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {
 | 
					 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if assert.YAMLEq(t, expected, actual, msgAndArgs...) {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	t.FailNow()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// YAMLEqf asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {
 | 
					 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if assert.YAMLEqf(t, expected, actual, msg, args...) {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	t.FailNow()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Len asserts that the specified object has specific length.
 | 
					// Len asserts that the specified object has specific length.
 | 
				
			||||||
// Len also fails if the object has a type that len() not accept.
 | 
					// Len also fails if the object has a type that len() not accept.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -932,6 +914,34 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Never asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)
 | 
				
			||||||
 | 
					func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.Never(t, condition, waitFor, tick, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Neverf asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.Neverf(t, condition, waitFor, tick, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Nil asserts that the specified object is nil.
 | 
					// Nil asserts that the specified object is nil.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//    assert.Nil(t, err)
 | 
					//    assert.Nil(t, err)
 | 
				
			||||||
@@ -958,6 +968,30 @@ func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) {
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExists checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.NoDirExists(t, path, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExistsf checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.NoDirExistsf(t, path, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NoError asserts that a function returned no error (i.e. `nil`).
 | 
					// NoError asserts that a function returned no error (i.e. `nil`).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//   actualObj, err := SomeFunction()
 | 
					//   actualObj, err := SomeFunction()
 | 
				
			||||||
@@ -990,6 +1024,30 @@ func NoErrorf(t TestingT, err error, msg string, args ...interface{}) {
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExists checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.NoFileExists(t, path, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExistsf checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.NoFileExistsf(t, path, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
					// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
				
			||||||
// specified substring or element.
 | 
					// specified substring or element.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -1166,6 +1224,38 @@ func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ..
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSame asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.NotSame(t, ptr1, ptr2)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func NotSame(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.NotSame(t, expected, actual, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSamef asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted")
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.NotSamef(t, expected, actual, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
					// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
				
			||||||
// elements given in the specified subset(array, slice...).
 | 
					// elements given in the specified subset(array, slice...).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -1229,6 +1319,36 @@ func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithError asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() })
 | 
				
			||||||
 | 
					func PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.PanicsWithError(t, errString, f, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.PanicsWithErrorf(t, errString, f, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
 | 
					// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
 | 
				
			||||||
// the recovered panic value equals the expected panic value.
 | 
					// the recovered panic value equals the expected panic value.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -1410,6 +1530,28 @@ func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta tim
 | 
				
			|||||||
	t.FailNow()
 | 
						t.FailNow()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEq asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.YAMLEq(t, expected, actual, msgAndArgs...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEqf asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if assert.YAMLEqf(t, expected, actual, msg, args...) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						t.FailNow()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Zero asserts that i is the zero value for its type.
 | 
					// Zero asserts that i is the zero value for its type.
 | 
				
			||||||
func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) {
 | 
					func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := t.(tHelper); ok {
 | 
						if h, ok := t.(tHelper); ok {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										156
									
								
								vendor/github.com/stretchr/testify/require/require_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										156
									
								
								vendor/github.com/stretchr/testify/require/require_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -54,7 +54,8 @@ func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string,
 | 
				
			|||||||
	Containsf(a.t, s, contains, msg, args...)
 | 
						Containsf(a.t, s, contains, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExists checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) {
 | 
					func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -62,7 +63,8 @@ func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) {
 | 
				
			|||||||
	DirExists(a.t, path, msgAndArgs...)
 | 
						DirExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
 | 
					// DirExistsf checks whether a directory exists in the given path. It also fails
 | 
				
			||||||
 | 
					// if the path is a file rather a directory or there is an error checking whether it exists.
 | 
				
			||||||
func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) {
 | 
					func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -310,7 +312,8 @@ func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) {
 | 
				
			|||||||
	Falsef(a.t, value, msg, args...)
 | 
						Falsef(a.t, value, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExists checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) {
 | 
					func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -318,7 +321,8 @@ func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) {
 | 
				
			|||||||
	FileExists(a.t, path, msgAndArgs...)
 | 
						FileExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
 | 
					// FileExistsf checks whether a file exists in the given path. It also fails if
 | 
				
			||||||
 | 
					// the path points to a directory or there is an error when trying to check the file.
 | 
				
			||||||
func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) {
 | 
					func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -522,7 +526,7 @@ func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDelta asserts that the two numerals are within delta of each other.
 | 
					// InDelta asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 a.InDelta(math.Pi, (22 / 7.0), 0.01)
 | 
					// 	 a.InDelta(math.Pi, 22/7.0, 0.01)
 | 
				
			||||||
func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {
 | 
					func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -564,7 +568,7 @@ func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, del
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// InDeltaf asserts that the two numerals are within delta of each other.
 | 
					// InDeltaf asserts that the two numerals are within delta of each other.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// 	 a.InDeltaf(math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01)
 | 
					// 	 a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted")
 | 
				
			||||||
func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {
 | 
					func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
		h.Helper()
 | 
							h.Helper()
 | 
				
			||||||
@@ -640,22 +644,6 @@ func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ..
 | 
				
			|||||||
	JSONEqf(a.t, expected, actual, msg, args...)
 | 
						JSONEqf(a.t, expected, actual, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// YAMLEq asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) {
 | 
					 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	YAMLEq(a.t, expected, actual, msgAndArgs...)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// YAMLEqf asserts that two YAML strings are equivalent.
 | 
					 | 
				
			||||||
func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) {
 | 
					 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
					 | 
				
			||||||
		h.Helper()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	YAMLEqf(a.t, expected, actual, msg, args...)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Len asserts that the specified object has specific length.
 | 
					// Len asserts that the specified object has specific length.
 | 
				
			||||||
// Len also fails if the object has a type that len() not accept.
 | 
					// Len also fails if the object has a type that len() not accept.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -728,6 +716,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i
 | 
				
			|||||||
	Lessf(a.t, e1, e2, msg, args...)
 | 
						Lessf(a.t, e1, e2, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Never asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)
 | 
				
			||||||
 | 
					func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						Never(a.t, condition, waitFor, tick, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Neverf asserts that the given condition doesn't satisfy in waitFor time,
 | 
				
			||||||
 | 
					// periodically checking the target function each tick.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						Neverf(a.t, condition, waitFor, tick, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Nil asserts that the specified object is nil.
 | 
					// Nil asserts that the specified object is nil.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//    a.Nil(err)
 | 
					//    a.Nil(err)
 | 
				
			||||||
@@ -748,6 +758,24 @@ func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) {
 | 
				
			|||||||
	Nilf(a.t, object, msg, args...)
 | 
						Nilf(a.t, object, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExists checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						NoDirExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoDirExistsf checks whether a directory does not exist in the given path.
 | 
				
			||||||
 | 
					// It fails if the path points to an existing _directory_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						NoDirExistsf(a.t, path, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NoError asserts that a function returned no error (i.e. `nil`).
 | 
					// NoError asserts that a function returned no error (i.e. `nil`).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//   actualObj, err := SomeFunction()
 | 
					//   actualObj, err := SomeFunction()
 | 
				
			||||||
@@ -774,6 +802,24 @@ func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) {
 | 
				
			|||||||
	NoErrorf(a.t, err, msg, args...)
 | 
						NoErrorf(a.t, err, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExists checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						NoFileExists(a.t, path, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NoFileExistsf checks whether a file does not exist in a given path. It fails
 | 
				
			||||||
 | 
					// if the path points to an existing _file_ only.
 | 
				
			||||||
 | 
					func (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						NoFileExistsf(a.t, path, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
					// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the
 | 
				
			||||||
// specified substring or element.
 | 
					// specified substring or element.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -914,6 +960,32 @@ func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, arg
 | 
				
			|||||||
	NotRegexpf(a.t, rx, str, msg, args...)
 | 
						NotRegexpf(a.t, rx, str, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSame asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.NotSame(ptr1, ptr2)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						NotSame(a.t, expected, actual, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NotSamef asserts that two pointers do not reference the same object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    a.NotSamef(ptr1, ptr2, "error message %s", "formatted")
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Both arguments must be pointer variables. Pointer variable sameness is
 | 
				
			||||||
 | 
					// determined based on the equality of both type and value.
 | 
				
			||||||
 | 
					func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						NotSamef(a.t, expected, actual, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
					// NotSubset asserts that the specified list(array, slice...) contains not all
 | 
				
			||||||
// elements given in the specified subset(array, slice...).
 | 
					// elements given in the specified subset(array, slice...).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -962,6 +1034,30 @@ func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {
 | 
				
			|||||||
	Panics(a.t, f, msgAndArgs...)
 | 
						Panics(a.t, f, msgAndArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithError asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   a.PanicsWithError("crazy error", func(){ GoCrazy() })
 | 
				
			||||||
 | 
					func (a *Assertions) PanicsWithError(errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						PanicsWithError(a.t, errString, f, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc
 | 
				
			||||||
 | 
					// panics, and that the recovered panic value is an error that satisfies the
 | 
				
			||||||
 | 
					// EqualError comparison.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")
 | 
				
			||||||
 | 
					func (a *Assertions) PanicsWithErrorf(errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						PanicsWithErrorf(a.t, errString, f, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
 | 
					// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
 | 
				
			||||||
// the recovered panic value equals the expected panic value.
 | 
					// the recovered panic value equals the expected panic value.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -1104,6 +1200,22 @@ func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta
 | 
				
			|||||||
	WithinDurationf(a.t, expected, actual, delta, msg, args...)
 | 
						WithinDurationf(a.t, expected, actual, delta, msg, args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEq asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						YAMLEq(a.t, expected, actual, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YAMLEqf asserts that two YAML strings are equivalent.
 | 
				
			||||||
 | 
					func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) {
 | 
				
			||||||
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 | 
							h.Helper()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						YAMLEqf(a.t, expected, actual, msg, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Zero asserts that i is the zero value for its type.
 | 
					// Zero asserts that i is the zero value for its type.
 | 
				
			||||||
func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) {
 | 
					func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) {
 | 
				
			||||||
	if h, ok := a.t.(tHelper); ok {
 | 
						if h, ok := a.t.(tHelper); ok {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/github.com/stretchr/testify/require/requirements.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/stretchr/testify/require/requirements.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -26,4 +26,4 @@ type BoolAssertionFunc func(TestingT, bool, ...interface{})
 | 
				
			|||||||
// for table driven tests.
 | 
					// for table driven tests.
 | 
				
			||||||
type ErrorAssertionFunc func(TestingT, error, ...interface{})
 | 
					type ErrorAssertionFunc func(TestingT, error, ...interface{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:generate go run ../_codegen/main.go -output-package=require -template=require.go.tmpl -include-format-funcs
 | 
					//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require.go.tmpl -include-format-funcs"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							@@ -372,7 +372,7 @@ github.com/go-swagger/go-swagger/cmd/swagger/commands/initcmd
 | 
				
			|||||||
github.com/go-swagger/go-swagger/codescan
 | 
					github.com/go-swagger/go-swagger/codescan
 | 
				
			||||||
github.com/go-swagger/go-swagger/generator
 | 
					github.com/go-swagger/go-swagger/generator
 | 
				
			||||||
github.com/go-swagger/go-swagger/scan
 | 
					github.com/go-swagger/go-swagger/scan
 | 
				
			||||||
# github.com/go-testfixtures/testfixtures/v3 v3.2.0
 | 
					# github.com/go-testfixtures/testfixtures/v3 v3.4.0
 | 
				
			||||||
## explicit
 | 
					## explicit
 | 
				
			||||||
github.com/go-testfixtures/testfixtures/v3
 | 
					github.com/go-testfixtures/testfixtures/v3
 | 
				
			||||||
# github.com/gobwas/glob v0.2.3
 | 
					# github.com/gobwas/glob v0.2.3
 | 
				
			||||||
@@ -543,7 +543,7 @@ github.com/mattn/go-colorable
 | 
				
			|||||||
github.com/mattn/go-isatty
 | 
					github.com/mattn/go-isatty
 | 
				
			||||||
# github.com/mattn/go-runewidth v0.0.7
 | 
					# github.com/mattn/go-runewidth v0.0.7
 | 
				
			||||||
github.com/mattn/go-runewidth
 | 
					github.com/mattn/go-runewidth
 | 
				
			||||||
# github.com/mattn/go-sqlite3 v2.0.2+incompatible
 | 
					# github.com/mattn/go-sqlite3 v1.14.0
 | 
				
			||||||
## explicit
 | 
					## explicit
 | 
				
			||||||
github.com/mattn/go-sqlite3
 | 
					github.com/mattn/go-sqlite3
 | 
				
			||||||
# github.com/matttproud/golang_protobuf_extensions v1.0.1
 | 
					# github.com/matttproud/golang_protobuf_extensions v1.0.1
 | 
				
			||||||
@@ -659,7 +659,7 @@ github.com/spf13/pflag
 | 
				
			|||||||
github.com/spf13/viper
 | 
					github.com/spf13/viper
 | 
				
			||||||
# github.com/steveyen/gtreap v0.1.0
 | 
					# github.com/steveyen/gtreap v0.1.0
 | 
				
			||||||
github.com/steveyen/gtreap
 | 
					github.com/steveyen/gtreap
 | 
				
			||||||
# github.com/stretchr/testify v1.4.0
 | 
					# github.com/stretchr/testify v1.5.1
 | 
				
			||||||
## explicit
 | 
					## explicit
 | 
				
			||||||
github.com/stretchr/testify/assert
 | 
					github.com/stretchr/testify/assert
 | 
				
			||||||
github.com/stretchr/testify/require
 | 
					github.com/stretchr/testify/require
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user