sqlboiler icon indicating copy to clipboard operation
sqlboiler copied to clipboard

Generated tests do not pass

Open the-maldridge opened this issue 4 years ago • 12 comments

What version of SQLBoiler are you using (sqlboiler --version)?

$ sqlboiler --version
SQLBoiler v4.1.2

What is your database and version (eg. Postgresql 10)

sqlite3

If this happened at generation time what was the full SQLBoiler command you used to generate your models? (if not applicable leave blank)

If this happened at runtime what code produced the issue? (if not applicable leave blank)

$ go test -v ./pkg/models/
=== RUN   TestParent
=== RUN   TestParent/Events
=== PAUSE TestParent/Events
=== RUN   TestParent/Streams
=== PAUSE TestParent/Streams
=== CONT  TestParent/Events
=== CONT  TestParent/Streams
--- PASS: TestParent (0.00s)
    --- PASS: TestParent/Events (0.00s)
    --- PASS: TestParent/Streams (0.00s)
=== RUN   TestDelete
=== RUN   TestDelete/Events
=== PAUSE TestDelete/Events
=== RUN   TestDelete/Streams
=== PAUSE TestDelete/Streams
=== CONT  TestDelete/Events
=== CONT  TestDelete/Streams
    TestDelete/Events: events_test.go:48: models: unable to insert into events: near ")": syntax error
    TestDelete/Streams: streams_test.go:48: models: unable to insert into streams: near ")": syntax error
    TestDelete/Events: events_test.go:54: should only have deleted one row, but affected: 0
    TestDelete/Streams: streams_test.go:54: should only have deleted one row, but affected: 0
--- FAIL: TestDelete (0.00s)
    --- FAIL: TestDelete/Events (0.00s)
    --- FAIL: TestDelete/Streams (0.00s)
=== RUN   TestQueryDeleteAll
=== RUN   TestQueryDeleteAll/Events
=== PAUSE TestQueryDeleteAll/Events
=== RUN   TestQueryDeleteAll/Streams
=== PAUSE TestQueryDeleteAll/Streams
=== CONT  TestQueryDeleteAll/Events
=== CONT  TestQueryDeleteAll/Streams
    TestQueryDeleteAll/Events: events_test.go:81: models: unable to insert into events: near ")": syntax error
    TestQueryDeleteAll/Streams: streams_test.go:81: models: unable to insert into streams: near ")": syntax error
    TestQueryDeleteAll/Events: events_test.go:87: should only have deleted one row, but affected: 0
    TestQueryDeleteAll/Streams: streams_test.go:87: should only have deleted one row, but affected: 0
--- FAIL: TestQueryDeleteAll (0.00s)
    --- FAIL: TestQueryDeleteAll/Events (0.00s)
    --- FAIL: TestQueryDeleteAll/Streams (0.00s)
=== RUN   TestSliceDeleteAll
=== RUN   TestSliceDeleteAll/Events
=== PAUSE TestSliceDeleteAll/Events
=== RUN   TestSliceDeleteAll/Streams
=== PAUSE TestSliceDeleteAll/Streams
=== CONT  TestSliceDeleteAll/Events
=== CONT  TestSliceDeleteAll/Streams
    TestSliceDeleteAll/Streams: streams_test.go:114: models: unable to insert into streams: near ")": syntax error
    TestSliceDeleteAll/Events: events_test.go:114: models: unable to insert into events: near ")": syntax error
    TestSliceDeleteAll/Streams: streams_test.go:122: should only have deleted one row, but affected: 0
    TestSliceDeleteAll/Events: events_test.go:122: should only have deleted one row, but affected: 0
--- FAIL: TestSliceDeleteAll (0.00s)
    --- FAIL: TestSliceDeleteAll/Streams (0.00s)
    --- FAIL: TestSliceDeleteAll/Events (0.00s)
=== RUN   TestExists
=== RUN   TestExists/Events
=== PAUSE TestExists/Events
=== RUN   TestExists/Streams
=== PAUSE TestExists/Streams
=== CONT  TestExists/Events
=== CONT  TestExists/Streams
    TestExists/Events: events_test.go:149: models: unable to insert into events: near ")": syntax error
    TestExists/Streams: streams_test.go:149: models: unable to insert into streams: near ")": syntax error
    TestExists/Events: events_test.go:157: Expected EventExists to return true, but got false.
    TestExists/Streams: streams_test.go:157: Expected StreamExists to return true, but got false.
--- FAIL: TestExists (0.00s)
    --- FAIL: TestExists/Events (0.00s)
    --- FAIL: TestExists/Streams (0.00s)
=== RUN   TestFind
=== RUN   TestFind/Events
=== PAUSE TestFind/Events
=== RUN   TestFind/Streams
=== PAUSE TestFind/Streams
=== CONT  TestFind/Events
=== CONT  TestFind/Streams
    TestFind/Events: events_test.go:175: models: unable to insert into events: near ")": syntax error
    TestFind/Streams: streams_test.go:175: models: unable to insert into streams: near ")": syntax error
    TestFind/Events: events_test.go:180: sql: no rows in result set
    TestFind/Events: events_test.go:184: want a record, got nil
    TestFind/Streams: streams_test.go:180: sql: no rows in result set
    TestFind/Streams: streams_test.go:184: want a record, got nil
--- FAIL: TestFind (0.00s)
    --- FAIL: TestFind/Events (0.00s)
    --- FAIL: TestFind/Streams (0.00s)
=== RUN   TestBind
=== RUN   TestBind/Events
=== PAUSE TestBind/Events
=== RUN   TestBind/Streams
=== PAUSE TestBind/Streams
=== CONT  TestBind/Events
=== CONT  TestBind/Streams
    TestBind/Streams: streams_test.go:202: models: unable to insert into streams: near ")": syntax error
    TestBind/Events: events_test.go:202: models: unable to insert into events: near ")": syntax error
    TestBind/Events: events_test.go:206: sql: no rows in result set
    TestBind/Streams: streams_test.go:206: sql: no rows in result set
--- FAIL: TestBind (0.00s)
    --- FAIL: TestBind/Events (0.00s)
    --- FAIL: TestBind/Streams (0.00s)
=== RUN   TestOne
=== RUN   TestOne/Events
=== PAUSE TestOne/Events
=== RUN   TestOne/Streams
=== PAUSE TestOne/Streams
=== CONT  TestOne/Events
=== CONT  TestOne/Streams
    TestOne/Events: events_test.go:224: models: unable to insert into events: near ")": syntax error
    TestOne/Events: events_test.go:228: sql: no rows in result set
    TestOne/Streams: streams_test.go:224: models: unable to insert into streams: near ")": syntax error
    TestOne/Streams: streams_test.go:228: sql: no rows in result set
--- FAIL: TestOne (0.00s)
    --- FAIL: TestOne/Events (0.00s)
    --- FAIL: TestOne/Streams (0.00s)
=== RUN   TestAll
=== RUN   TestAll/Events
=== PAUSE TestAll/Events
=== RUN   TestAll/Streams
=== PAUSE TestAll/Streams
=== CONT  TestAll/Events
=== CONT  TestAll/Streams
    TestAll/Streams: streams_test.go:252: models: unable to insert into streams: near ")": syntax error
    TestAll/Events: events_test.go:252: models: unable to insert into events: near ")": syntax error
    TestAll/Streams: streams_test.go:255: models: unable to insert into streams: near ")": syntax error
    TestAll/Events: events_test.go:255: models: unable to insert into events: near ")": syntax error
    TestAll/Streams: streams_test.go:264: want 2 records, got: 0
    TestAll/Events: events_test.go:264: want 2 records, got: 0
--- FAIL: TestAll (0.00s)
    --- FAIL: TestAll/Streams (0.00s)
    --- FAIL: TestAll/Events (0.00s)
=== RUN   TestCount
=== RUN   TestCount/Events
=== PAUSE TestCount/Events
=== RUN   TestCount/Streams
=== PAUSE TestCount/Streams
=== CONT  TestCount/Events
=== CONT  TestCount/Streams
    TestCount/Streams: streams_test.go:286: models: unable to insert into streams: near ")": syntax error
    TestCount/Events: events_test.go:286: models: unable to insert into events: near ")": syntax error
    TestCount/Streams: streams_test.go:289: models: unable to insert into streams: near ")": syntax error
    TestCount/Events: events_test.go:289: models: unable to insert into events: near ")": syntax error
    TestCount/Streams: streams_test.go:298: want 2 records, got: 0
    TestCount/Events: events_test.go:298: want 2 records, got: 0
--- FAIL: TestCount (0.00s)
    --- FAIL: TestCount/Streams (0.00s)
    --- FAIL: TestCount/Events (0.00s)
=== RUN   TestHooks
=== RUN   TestHooks/Events
=== PAUSE TestHooks/Events
=== RUN   TestHooks/Streams
=== PAUSE TestHooks/Streams
=== CONT  TestHooks/Events
=== CONT  TestHooks/Streams
--- PASS: TestHooks (0.00s)
    --- PASS: TestHooks/Events (0.00s)
    --- PASS: TestHooks/Streams (0.00s)
=== RUN   TestInsert
=== RUN   TestInsert/Events
=== PAUSE TestInsert/Events
=== RUN   TestInsert/Events#01
=== PAUSE TestInsert/Events#01
=== RUN   TestInsert/Streams
=== PAUSE TestInsert/Streams
=== RUN   TestInsert/Streams#01
=== PAUSE TestInsert/Streams#01
=== CONT  TestInsert/Events
=== CONT  TestInsert/Streams
=== CONT  TestInsert/Events#01
=== CONT  TestInsert/Streams#01
    TestInsert/Events: events_test.go:457: models: unable to insert into events: near ")": syntax error
    TestInsert/Events: events_test.go:466: want one record, got: 0
    TestInsert/Streams: streams_test.go:457: models: unable to insert into streams: near ")": syntax error
    TestInsert/Streams: streams_test.go:466: want one record, got: 0
    TestInsert/Events#01: events_test.go:484: models: unable to insert into events: near ")": syntax error
    TestInsert/Streams#01: streams_test.go:484: models: unable to insert into streams: near ")": syntax error
    TestInsert/Events#01: events_test.go:493: want one record, got: 0
    TestInsert/Streams#01: streams_test.go:493: want one record, got: 0
--- FAIL: TestInsert (0.00s)
    --- FAIL: TestInsert/Events (0.00s)
    --- FAIL: TestInsert/Streams (0.00s)
    --- FAIL: TestInsert/Events#01 (0.00s)
    --- FAIL: TestInsert/Streams#01 (0.00s)
=== RUN   TestToOne
=== RUN   TestToOne/EventToStreamUsingStream
    TestToOne/EventToStreamUsingStream: events_test.go:514: models: unable to insert into streams: near ")": syntax error
--- FAIL: TestToOne (0.00s)
    --- FAIL: TestToOne/EventToStreamUsingStream (0.00s)
=== RUN   TestOneToOne
--- PASS: TestOneToOne (0.00s)
=== RUN   TestToMany
=== RUN   TestToMany/StreamToEvents
    TestToMany/StreamToEvents: streams_test.go:512: models: unable to insert into streams: near ")": syntax error
--- FAIL: TestToMany (0.00s)
    --- FAIL: TestToMany/StreamToEvents (0.00s)
=== RUN   TestToOneSet
=== RUN   TestToOneSet/EventToStreamUsingEvents
    TestToOneSet/EventToStreamUsingEvents: events_test.go:570: models: unable to populate default values for events: sql: no rows in result set
--- FAIL: TestToOneSet (0.00s)
    --- FAIL: TestToOneSet/EventToStreamUsingEvents (0.00s)
=== RUN   TestToOneRemove
--- PASS: TestToOneRemove (0.00s)
=== RUN   TestOneToOneSet
--- PASS: TestOneToOneSet (0.00s)
=== RUN   TestOneToOneRemove
--- PASS: TestOneToOneRemove (0.00s)
=== RUN   TestToManyAdd
=== RUN   TestToManyAdd/StreamToEvents
    TestToManyAdd/StreamToEvents: streams_test.go:596: models: unable to populate default values for streams: sql: no rows in result set
--- FAIL: TestToManyAdd (0.00s)
    --- FAIL: TestToManyAdd/StreamToEvents (0.00s)
=== RUN   TestToManySet
--- PASS: TestToManySet (0.00s)
=== RUN   TestToManyRemove
--- PASS: TestToManyRemove (0.00s)
=== RUN   TestReload
=== RUN   TestReload/Events
=== PAUSE TestReload/Events
=== RUN   TestReload/Streams
=== PAUSE TestReload/Streams
=== CONT  TestReload/Events
=== CONT  TestReload/Streams
    TestReload/Events: events_test.go:620: models: unable to insert into events: near ")": syntax error
    TestReload/Streams: streams_test.go:664: models: unable to insert into streams: near ")": syntax error
    TestReload/Events: events_test.go:624: sql: no rows in result set
    TestReload/Streams: streams_test.go:668: sql: no rows in result set
--- FAIL: TestReload (0.00s)
    --- FAIL: TestReload/Events (0.00s)
    --- FAIL: TestReload/Streams (0.00s)
=== RUN   TestReloadAll
=== RUN   TestReloadAll/Events
=== PAUSE TestReloadAll/Events
=== RUN   TestReloadAll/Streams
=== PAUSE TestReloadAll/Streams
=== CONT  TestReloadAll/Events
=== CONT  TestReloadAll/Streams
    TestReloadAll/Events: events_test.go:642: models: unable to insert into events: near ")": syntax error
    TestReloadAll/Streams: streams_test.go:686: models: unable to insert into streams: near ")": syntax error
--- FAIL: TestReloadAll (0.00s)
    --- FAIL: TestReloadAll/Events (0.00s)
    --- FAIL: TestReloadAll/Streams (0.00s)
=== RUN   TestSelect
=== RUN   TestSelect/Events
=== PAUSE TestSelect/Events
=== RUN   TestSelect/Streams
=== PAUSE TestSelect/Streams
=== CONT  TestSelect/Events
=== CONT  TestSelect/Streams
    TestSelect/Events: events_test.go:666: models: unable to insert into events: near ")": syntax error
    TestSelect/Streams: streams_test.go:710: models: unable to insert into streams: near ")": syntax error
    TestSelect/Events: events_test.go:675: want one record, got: 0
    TestSelect/Streams: streams_test.go:719: want one record, got: 0
--- FAIL: TestSelect (0.00s)
    --- FAIL: TestSelect/Events (0.00s)
    --- FAIL: TestSelect/Streams (0.00s)
=== RUN   TestUpdate
=== RUN   TestUpdate/Events
=== PAUSE TestUpdate/Events
=== RUN   TestUpdate/Streams
=== PAUSE TestUpdate/Streams
=== CONT  TestUpdate/Events
=== CONT  TestUpdate/Streams
    TestUpdate/Events: events_test.go:705: models: unable to insert into events: near ")": syntax error
    TestUpdate/Streams: streams_test.go:749: models: unable to insert into streams: near ")": syntax error
    TestUpdate/Events: events_test.go:714: want one record, got: 0
    TestUpdate/Streams: streams_test.go:758: want one record, got: 0
    TestUpdate/Events: events_test.go:724: should only affect one row but affected 0
    TestUpdate/Streams: streams_test.go:766: models: unable to update streams row: database is locked
--- FAIL: TestUpdate (0.00s)
    --- FAIL: TestUpdate/Events (0.00s)
    --- FAIL: TestUpdate/Streams (0.00s)
=== RUN   TestSliceUpdateAll
=== RUN   TestSliceUpdateAll/Events
=== PAUSE TestSliceUpdateAll/Events
=== RUN   TestSliceUpdateAll/Streams
=== PAUSE TestSliceUpdateAll/Streams
=== CONT  TestSliceUpdateAll/Events
=== CONT  TestSliceUpdateAll/Streams
    TestSliceUpdateAll/Events: events_test.go:746: models: unable to insert into events: near ")": syntax error
    TestSliceUpdateAll/Streams: streams_test.go:790: models: unable to insert into streams: near ")": syntax error
    TestSliceUpdateAll/Events: events_test.go:755: want one record, got: 0
    TestSliceUpdateAll/Streams: streams_test.go:799: want one record, got: 0
    TestSliceUpdateAll/Events: events_test.go:791: wanted one record updated but got 0
    TestSliceUpdateAll/Streams: streams_test.go:835: wanted one record updated but got 0
--- FAIL: TestSliceUpdateAll (0.00s)
    --- FAIL: TestSliceUpdateAll/Events (0.00s)
    --- FAIL: TestSliceUpdateAll/Streams (0.00s)
FAIL
FAIL	github.com/the-maldridge/nemo/pkg/models	0.019s
FAIL

What is the output of the command above with the -d flag added to it? (Provided you are comfortable sharing this, it contains a blueprint of your schema)

Please provide a relevant database schema so we can replicate your issue (Provided you are comfortable sharing this)

CREATE TABLE streams (
       id          INTEGER        PRIMARY KEY AUTOINCREMENT,
       title       VARCHAR (512)  NOT NULL,
       description VARCHAR (4096),
       archived    BOOLEAN        DEFAULT FALSE
);

CREATE TABLE events (
       id          INTEGER        PRIMARY KEY AUTOINCREMENT,
       title       VARCHAR (512)  NOT NULL,
       description VARCHAR (4096) NOT NULL,
       archived    BOOLEAN        NOT NULL
                                  DEFAULT FALSE,
       stream_id   INTEGER        REFERENCES streams (id)
                                  NOT NULL
);

Further information. What did you do, what did you expect?

I expected the tests to pass. I've gone hunting through the generated files, I've renamed my tables, I've so far not figured out what is the root cause of the failing tests.

the-maldridge avatar May 25 '20 05:05 the-maldridge

Please turn on your debug mode to output the SQL of the requests.

tooolbox avatar Jun 09 '20 04:06 tooolbox

$ go test -v ./pkg/models/ -test.sqldebug
=== RUN   TestParent
=== RUN   TestParent/Events
=== PAUSE TestParent/Events
=== RUN   TestParent/Streams
=== PAUSE TestParent/Streams
=== CONT  TestParent/Events
=== CONT  TestParent/Streams
--- PASS: TestParent (0.00s)
    --- PASS: TestParent/Events (0.00s)
    --- PASS: TestParent/Streams (0.00s)
=== RUN   TestDelete
=== RUN   TestDelete/Events
=== PAUSE TestDelete/Events
=== RUN   TestDelete/Streams
=== PAUSE TestDelete/Streams
=== CONT  TestDelete/Events
=== CONT  TestDelete/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestDelete/Events: events_test.go:48: models: unable to insert into events: near ")": syntax error
DELETE FROM "events" WHERE "id"=?
{0 false}
    TestDelete/Streams: streams_test.go:48: models: unable to insert into streams: near ")": syntax error
DELETE FROM "streams" WHERE "id"=?
{0 false}
    TestDelete/Events: events_test.go:54: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "events";
[]
    TestDelete/Streams: streams_test.go:54: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "streams";
[]
--- FAIL: TestDelete (0.00s)
    --- FAIL: TestDelete/Events (0.00s)
    --- FAIL: TestDelete/Streams (0.00s)
=== RUN   TestQueryDeleteAll
=== RUN   TestQueryDeleteAll/Events
=== PAUSE TestQueryDeleteAll/Events
=== RUN   TestQueryDeleteAll/Streams
=== PAUSE TestQueryDeleteAll/Streams
=== CONT  TestQueryDeleteAll/Events
=== CONT  TestQueryDeleteAll/Streams
INSERT INTO "events" () VALUES ()
[]
    TestQueryDeleteAll/Events: events_test.go:81: models: unable to insert into events: near ")": syntax error
DELETE FROM "events";
[]
INSERT INTO "streams" () VALUES ()
[]
    TestQueryDeleteAll/Streams: streams_test.go:81: models: unable to insert into streams: near ")": syntax error
DELETE FROM "streams";
[]
    TestQueryDeleteAll/Events: events_test.go:87: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "events";
[]
    TestQueryDeleteAll/Streams: streams_test.go:87: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "streams";
[]
--- FAIL: TestQueryDeleteAll (0.00s)
    --- FAIL: TestQueryDeleteAll/Events (0.00s)
    --- FAIL: TestQueryDeleteAll/Streams (0.00s)
=== RUN   TestSliceDeleteAll
=== RUN   TestSliceDeleteAll/Events
=== PAUSE TestSliceDeleteAll/Events
=== RUN   TestSliceDeleteAll/Streams
=== PAUSE TestSliceDeleteAll/Streams
=== CONT  TestSliceDeleteAll/Events
=== CONT  TestSliceDeleteAll/Streams
INSERT INTO "streams" () VALUES ()
[]
INSERT INTO "events" () VALUES ()
[]
    TestSliceDeleteAll/Streams: streams_test.go:114: models: unable to insert into streams: near ")": syntax error
DELETE FROM "streams" WHERE ("id"=?)
    TestSliceDeleteAll/Events: events_test.go:114: models: unable to insert into events: near ")": syntax error
DELETE FROM "events" WHERE ("id"=?)
[{0 false}]
[{0 false}]
    TestSliceDeleteAll/Streams: streams_test.go:122: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "streams";
[]
    TestSliceDeleteAll/Events: events_test.go:122: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "events";
[]
--- FAIL: TestSliceDeleteAll (0.00s)
    --- FAIL: TestSliceDeleteAll/Streams (0.00s)
    --- FAIL: TestSliceDeleteAll/Events (0.00s)
=== RUN   TestExists
=== RUN   TestExists/Events
=== PAUSE TestExists/Events
=== RUN   TestExists/Streams
=== PAUSE TestExists/Streams
=== CONT  TestExists/Events
=== CONT  TestExists/Streams
INSERT INTO "events" () VALUES ()
[]
    TestExists/Events: events_test.go:149: models: unable to insert into events: near ")": syntax error
select exists(select 1 from "events" where "id"=? limit 1)
{0 false}
INSERT INTO "streams" () VALUES ()
[]
    TestExists/Streams: streams_test.go:149: models: unable to insert into streams: near ")": syntax error
select exists(select 1 from "streams" where "id"=? limit 1)
{0 false}
    TestExists/Events: events_test.go:157: Expected EventExists to return true, but got false.
    TestExists/Streams: streams_test.go:157: Expected StreamExists to return true, but got false.
--- FAIL: TestExists (0.00s)
    --- FAIL: TestExists/Events (0.00s)
    --- FAIL: TestExists/Streams (0.00s)
=== RUN   TestFind
=== RUN   TestFind/Events
=== PAUSE TestFind/Events
=== RUN   TestFind/Streams
=== PAUSE TestFind/Streams
=== CONT  TestFind/Events
=== CONT  TestFind/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestFind/Events: events_test.go:175: models: unable to insert into events: near ")": syntax error
select * from "events" where "id"=?
    TestFind/Streams: streams_test.go:175: models: unable to insert into streams: near ")": syntax error
select * from "streams" where "id"=?
[{0 false}]
[{0 false}]
    TestFind/Events: events_test.go:180: sql: no rows in result set
    TestFind/Streams: streams_test.go:180: sql: no rows in result set
    TestFind/Events: events_test.go:184: want a record, got nil
    TestFind/Streams: streams_test.go:184: want a record, got nil
--- FAIL: TestFind (0.00s)
    --- FAIL: TestFind/Events (0.00s)
    --- FAIL: TestFind/Streams (0.00s)
=== RUN   TestBind
=== RUN   TestBind/Events
=== PAUSE TestBind/Events
=== RUN   TestBind/Streams
=== PAUSE TestBind/Streams
=== CONT  TestBind/Events
INSERT INTO "events" () VALUES ()
[]
=== CONT  TestBind/Streams
    TestBind/Events: events_test.go:202: models: unable to insert into events: near ")": syntax error
SELECT * FROM "events";
[]
INSERT INTO "streams" () VALUES ()
[]
    TestBind/Streams: streams_test.go:202: models: unable to insert into streams: near ")": syntax error
SELECT * FROM "streams";
[]
    TestBind/Events: events_test.go:206: sql: no rows in result set
    TestBind/Streams: streams_test.go:206: sql: no rows in result set
--- FAIL: TestBind (0.00s)
    --- FAIL: TestBind/Events (0.00s)
    --- FAIL: TestBind/Streams (0.00s)
=== RUN   TestOne
=== RUN   TestOne/Events
=== PAUSE TestOne/Events
=== RUN   TestOne/Streams
=== PAUSE TestOne/Streams
=== CONT  TestOne/Events
=== CONT  TestOne/Streams
INSERT INTO "events" () VALUES ()
[]
    TestOne/Events: events_test.go:224: models: unable to insert into events: near ")": syntax error
SELECT * FROM "events" LIMIT 1;
[]
INSERT INTO "streams" () VALUES ()
[]
    TestOne/Events: events_test.go:228: sql: no rows in result set
    TestOne/Streams: streams_test.go:224: models: unable to insert into streams: near ")": syntax error
SELECT * FROM "streams" LIMIT 1;
[]
    TestOne/Streams: streams_test.go:228: sql: no rows in result set
--- FAIL: TestOne (0.00s)
    --- FAIL: TestOne/Events (0.00s)
    --- FAIL: TestOne/Streams (0.00s)
=== RUN   TestAll
=== RUN   TestAll/Events
=== PAUSE TestAll/Events
=== RUN   TestAll/Streams
=== PAUSE TestAll/Streams
=== CONT  TestAll/Events
=== CONT  TestAll/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestAll/Events: events_test.go:252: models: unable to insert into events: near ")": syntax error
    TestAll/Streams: streams_test.go:252: models: unable to insert into streams: near ")": syntax error
INSERT INTO "events" () VALUES ()
[]
    TestAll/Events: events_test.go:255: models: unable to insert into events: near ")": syntax error
SELECT * FROM "events";
[]
INSERT INTO "streams" () VALUES ()
[]
    TestAll/Streams: streams_test.go:255: models: unable to insert into streams: near ")": syntax error
SELECT * FROM "streams";
[]
    TestAll/Events: events_test.go:264: want 2 records, got: 0
    TestAll/Streams: streams_test.go:264: want 2 records, got: 0
--- FAIL: TestAll (0.00s)
    --- FAIL: TestAll/Events (0.00s)
    --- FAIL: TestAll/Streams (0.00s)
=== RUN   TestCount
=== RUN   TestCount/Events
=== PAUSE TestCount/Events
=== RUN   TestCount/Streams
=== PAUSE TestCount/Streams
=== CONT  TestCount/Events
=== CONT  TestCount/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestCount/Events: events_test.go:286: models: unable to insert into events: near ")": syntax error
INSERT INTO "events" () VALUES ()
[]
    TestCount/Streams: streams_test.go:286: models: unable to insert into streams: near ")": syntax error
    TestCount/Events: events_test.go:289: models: unable to insert into events: near ")": syntax error
INSERT INTO "streams" () VALUES ()
[]
    TestCount/Streams: streams_test.go:289: models: unable to insert into streams: near ")": syntax error
SELECT COUNT(*) FROM "events";
[]
SELECT COUNT(*) FROM "streams";
[]
    TestCount/Events: events_test.go:298: want 2 records, got: 0
    TestCount/Streams: streams_test.go:298: want 2 records, got: 0
--- FAIL: TestCount (0.00s)
    --- FAIL: TestCount/Events (0.00s)
    --- FAIL: TestCount/Streams (0.00s)
=== RUN   TestHooks
=== RUN   TestHooks/Events
=== PAUSE TestHooks/Events
=== RUN   TestHooks/Streams
=== PAUSE TestHooks/Streams
=== CONT  TestHooks/Events
=== CONT  TestHooks/Streams
--- PASS: TestHooks (0.00s)
    --- PASS: TestHooks/Events (0.00s)
    --- PASS: TestHooks/Streams (0.00s)
=== RUN   TestInsert
=== RUN   TestInsert/Events
=== PAUSE TestInsert/Events
=== RUN   TestInsert/Events#01
=== PAUSE TestInsert/Events#01
=== RUN   TestInsert/Streams
=== PAUSE TestInsert/Streams
=== RUN   TestInsert/Streams#01
=== PAUSE TestInsert/Streams#01
=== CONT  TestInsert/Events
=== CONT  TestInsert/Streams
=== CONT  TestInsert/Events#01
=== CONT  TestInsert/Streams#01
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestInsert/Events: events_test.go:457: models: unable to insert into events: near ")": syntax error
    TestInsert/Streams: streams_test.go:457: models: unable to insert into streams: near ")": syntax error
SELECT COUNT(*) FROM "streams";
[]
SELECT COUNT(*) FROM "events";
[]
    TestInsert/Streams: streams_test.go:466: want one record, got: 0
    TestInsert/Events: events_test.go:466: want one record, got: 0
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestInsert/Events#01: events_test.go:484: models: unable to insert into events: near ")": syntax error
    TestInsert/Streams#01: streams_test.go:484: models: unable to insert into streams: near ")": syntax error
SELECT COUNT(*) FROM "events";
[]
SELECT COUNT(*) FROM "streams";
[]
    TestInsert/Events#01: events_test.go:493: want one record, got: 0
    TestInsert/Streams#01: streams_test.go:493: want one record, got: 0
--- FAIL: TestInsert (0.00s)
    --- FAIL: TestInsert/Streams (0.00s)
    --- FAIL: TestInsert/Events (0.00s)
    --- FAIL: TestInsert/Events#01 (0.00s)
    --- FAIL: TestInsert/Streams#01 (0.00s)
=== RUN   TestToOne
=== RUN   TestToOne/EventToStreamUsingStream
INSERT INTO "streams" () VALUES ()
[]
    TestToOne/EventToStreamUsingStream: events_test.go:514: models: unable to insert into streams: near ")": syntax error
--- FAIL: TestToOne (0.00s)
    --- FAIL: TestToOne/EventToStreamUsingStream (0.00s)
=== RUN   TestOneToOne
--- PASS: TestOneToOne (0.00s)
=== RUN   TestToMany
=== RUN   TestToMany/StreamToEvents
INSERT INTO "streams" () VALUES ()
[]
    TestToMany/StreamToEvents: streams_test.go:512: models: unable to insert into streams: near ")": syntax error
--- FAIL: TestToMany (0.00s)
    --- FAIL: TestToMany/StreamToEvents (0.00s)
=== RUN   TestToOneSet
=== RUN   TestToOneSet/EventToStreamUsingEvents
INSERT INTO "events" ("title","description","archived","stream_id") VALUES (?,?,?,?)
[n o true 1591678657]
SELECT "id" FROM "events" WHERE "id"=?
{0 false}
    TestToOneSet/EventToStreamUsingEvents: events_test.go:570: models: unable to populate default values for events: sql: no rows in result set
--- FAIL: TestToOneSet (0.00s)
    --- FAIL: TestToOneSet/EventToStreamUsingEvents (0.00s)
=== RUN   TestToOneRemove
--- PASS: TestToOneRemove (0.00s)
=== RUN   TestOneToOneSet
--- PASS: TestOneToOneSet (0.00s)
=== RUN   TestOneToOneRemove
--- PASS: TestOneToOneRemove (0.00s)
=== RUN   TestToManyAdd
=== RUN   TestToManyAdd/StreamToEvents
INSERT INTO "streams" ("title","description","archived") VALUES (?,?,?)
[n {o true} {true true}]
SELECT "id" FROM "streams" WHERE "id"=?
{0 false}
    TestToManyAdd/StreamToEvents: streams_test.go:596: models: unable to populate default values for streams: sql: no rows in result set
--- FAIL: TestToManyAdd (0.00s)
    --- FAIL: TestToManyAdd/StreamToEvents (0.00s)
=== RUN   TestToManySet
--- PASS: TestToManySet (0.00s)
=== RUN   TestToManyRemove
--- PASS: TestToManyRemove (0.00s)
=== RUN   TestReload
=== RUN   TestReload/Events
=== PAUSE TestReload/Events
=== RUN   TestReload/Streams
=== PAUSE TestReload/Streams
=== CONT  TestReload/Events
=== CONT  TestReload/Streams
INSERT INTO "streams" () VALUES ()
[]
INSERT INTO "events" () VALUES ()
[]
    TestReload/Streams: streams_test.go:664: models: unable to insert into streams: near ")": syntax error
select * from "streams" where "id"=?
    TestReload/Events: events_test.go:620: models: unable to insert into events: near ")": syntax error
select * from "events" where "id"=?
[{0 false}]
[{0 false}]
    TestReload/Streams: streams_test.go:668: sql: no rows in result set
    TestReload/Events: events_test.go:624: sql: no rows in result set
--- FAIL: TestReload (0.00s)
    --- FAIL: TestReload/Events (0.00s)
    --- FAIL: TestReload/Streams (0.00s)
=== RUN   TestReloadAll
=== RUN   TestReloadAll/Events
=== PAUSE TestReloadAll/Events
=== RUN   TestReloadAll/Streams
=== PAUSE TestReloadAll/Streams
=== CONT  TestReloadAll/Events
INSERT INTO "events" () VALUES ()
[]
=== CONT  TestReloadAll/Streams
    TestReloadAll/Events: events_test.go:642: models: unable to insert into events: near ")": syntax error
SELECT "events".* FROM "events" WHERE ("id"=?)
[{0 false}]
INSERT INTO "streams" () VALUES ()
[]
    TestReloadAll/Streams: streams_test.go:686: models: unable to insert into streams: near ")": syntax error
SELECT "streams".* FROM "streams" WHERE ("id"=?)
[{0 false}]
--- FAIL: TestReloadAll (0.00s)
    --- FAIL: TestReloadAll/Events (0.00s)
    --- FAIL: TestReloadAll/Streams (0.00s)
=== RUN   TestSelect
=== RUN   TestSelect/Events
=== PAUSE TestSelect/Events
=== RUN   TestSelect/Streams
=== PAUSE TestSelect/Streams
=== CONT  TestSelect/Events
=== CONT  TestSelect/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestSelect/Events: events_test.go:666: models: unable to insert into events: near ")": syntax error
SELECT * FROM "events";
[]
    TestSelect/Streams: streams_test.go:710: models: unable to insert into streams: near ")": syntax error
SELECT * FROM "streams";
[]
    TestSelect/Events: events_test.go:675: want one record, got: 0
    TestSelect/Streams: streams_test.go:719: want one record, got: 0
--- FAIL: TestSelect (0.00s)
    --- FAIL: TestSelect/Events (0.00s)
    --- FAIL: TestSelect/Streams (0.00s)
=== RUN   TestUpdate
=== RUN   TestUpdate/Events
=== PAUSE TestUpdate/Events
=== RUN   TestUpdate/Streams
=== PAUSE TestUpdate/Streams
=== CONT  TestUpdate/Events
=== CONT  TestUpdate/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
[]
    TestUpdate/Streams: streams_test.go:749: models: unable to insert into streams: near ")": syntax error
    TestUpdate/Events: events_test.go:705: models: unable to insert into events: near ")": syntax error
SELECT COUNT(*) FROM "streams";
[]
SELECT COUNT(*) FROM "events";
[]
    TestUpdate/Streams: streams_test.go:758: want one record, got: 0
    TestUpdate/Events: events_test.go:714: want one record, got: 0
UPDATE "streams" SET "title"=?,"description"=?,"archived"=? WHERE "id"=?
UPDATE "events" SET "title"=?,"description"=?,"archived"=?,"stream_id"=? WHERE "id"=?
[o {q true} {false false} {0 false}]
[o q false 1591678661 {0 false}]
    TestUpdate/Streams: streams_test.go:768: should only affect one row but affected 0
    TestUpdate/Events: events_test.go:722: models: unable to update events row: database is locked
--- FAIL: TestUpdate (0.00s)
    --- FAIL: TestUpdate/Streams (0.00s)
    --- FAIL: TestUpdate/Events (0.00s)
=== RUN   TestSliceUpdateAll
=== RUN   TestSliceUpdateAll/Events
=== PAUSE TestSliceUpdateAll/Events
=== RUN   TestSliceUpdateAll/Streams
=== PAUSE TestSliceUpdateAll/Streams
=== CONT  TestSliceUpdateAll/Events
=== CONT  TestSliceUpdateAll/Streams
INSERT INTO "events" () VALUES ()
[]
INSERT INTO "streams" () VALUES ()
    TestSliceUpdateAll/Events: events_test.go:746: models: unable to insert into events: near ")": syntax error
SELECT COUNT(*) FROM "events";
[]
[]
    TestSliceUpdateAll/Streams: streams_test.go:790: models: unable to insert into streams: near ")": syntax error
SELECT COUNT(*) FROM "streams";
[]
    TestSliceUpdateAll/Events: events_test.go:755: want one record, got: 0
UPDATE "events" SET "title"=?,"description"=?,"archived"=?,"stream_id"=? WHERE ("id"=?)
o q false 1591678661 {0 false}
    TestSliceUpdateAll/Streams: streams_test.go:799: want one record, got: 0
    TestSliceUpdateAll/Events: events_test.go:791: wanted one record updated but got 0
UPDATE "streams" SET "description"=?,"archived"=?,"title"=? WHERE ("id"=?)
{q true} {false false} o {0 false}
    TestSliceUpdateAll/Streams: streams_test.go:835: wanted one record updated but got 0
--- FAIL: TestSliceUpdateAll (0.00s)
    --- FAIL: TestSliceUpdateAll/Events (0.00s)
    --- FAIL: TestSliceUpdateAll/Streams (0.00s)
FAIL
FAIL	github.com/the-maldridge/nemo/pkg/models	0.096s
FAIL

the-maldridge avatar Jun 09 '20 04:06 the-maldridge

Great, well INSERT INTO "events" () VALUES () is clearly incorrect.

The beautiful part about generated code is you can look at what it's doing and put log statements in it, etc. Or push your dev branch up into your repo so that other people can.

tooolbox avatar Jun 09 '20 05:06 tooolbox

Sure, I can push my branches. Is it customary to commit the generated sqlboiler code? Or is it recommended to use a generate expression to get it just prior to compilation?

the-maldridge avatar Jun 09 '20 05:06 the-maldridge

I pushed everything on a branch, here are the models that generated the above test results: https://github.com/the-maldridge/nemo/tree/events/pkg/models

the-maldridge avatar Jun 09 '20 05:06 the-maldridge

Is it customary to commit the generated sqlboiler code? Or is it recommended to use a generate expression to get it just prior to compilation?

In Go, it's customary to commit generated code. This will make it compatible with go get for example.

tooolbox avatar Jun 09 '20 05:06 tooolbox

Looks like boil.Infer() is thinking there is no data in your struct, you can see what it's doing here.

You can see that the logic for what to insert is, what columns don't have a default in the db plus what fields in the struct are non-zero? It's coming up empty-handed.

Looking at the tests, just before the Insert there's a randomize.Struct(...) call. I can't look further right now, but that's where I would investigate. Maybe log the event struct before it goes into Insert(...).

tooolbox avatar Jun 09 '20 06:06 tooolbox

@the-maldridge It looks like the configuration for the sqlite3 driver is incorrect.

Inside the template it says this:

			{{if .Dialect.UseDefaultKeyword -}}
			cache.query = "INSERT INTO {{$schemaTable}} %sDEFAULT VALUES%s"
			{{else -}}
			cache.query = "INSERT INTO {{$schemaTable}} () VALUES ()%s%s"
			{{end -}}

Is there a specific way that sqlite3 would like us to generate empty inserts?

aarondl avatar Jun 18 '20 00:06 aarondl

I believe that it should just be DEFAULT VALUES, though I am far from a SQL Expert. I tend to rely on utility libraries to handle the query composition.

the-maldridge avatar Jun 18 '20 00:06 the-maldridge

Based on this: https://sqlite.org/syntax/insert-stmt.html

I believe that's correct. I've released a fix to the sqlboiler-sqlite3 project. You can try the commit: a93887c

aarondl avatar Jun 18 '20 01:06 aarondl

Seems closer, but not quite there. The tests now fail as follows:

$ go test -v ./pkg/models/ -test.sqldebug
=== RUN   TestParent
=== RUN   TestParent/Events
=== PAUSE TestParent/Events
=== RUN   TestParent/Streams
=== PAUSE TestParent/Streams
=== CONT  TestParent/Events
=== CONT  TestParent/Streams
--- PASS: TestParent (0.00s)
    --- PASS: TestParent/Events (0.00s)
    --- PASS: TestParent/Streams (0.00s)
=== RUN   TestDelete
=== RUN   TestDelete/Events
=== PAUSE TestDelete/Events
=== RUN   TestDelete/Streams
=== PAUSE TestDelete/Streams
=== CONT  TestDelete/Events
=== CONT  TestDelete/Streams
INSERT INTO "streams" DEFAULT VALUES
[]
INSERT INTO "events" DEFAULT VALUES
[]
    TestDelete/Streams: streams_test.go:48: models: unable to insert into streams: NOT NULL constraint failed: streams.title
DELETE FROM "streams" WHERE "id"=?
{0 false}
    TestDelete/Streams: streams_test.go:54: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "streams";
[]
    TestDelete/Events: events_test.go:48: models: unable to insert into events: NOT NULL constraint failed: events.title
DELETE FROM "events" WHERE "id"=?
{0 false}
    TestDelete/Events: events_test.go:54: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "events";
[]
--- FAIL: TestDelete (0.00s)
    --- FAIL: TestDelete/Streams (0.00s)
    --- FAIL: TestDelete/Events (0.00s)
=== RUN   TestQueryDeleteAll
=== RUN   TestQueryDeleteAll/Events
=== PAUSE TestQueryDeleteAll/Events
=== RUN   TestQueryDeleteAll/Streams
=== PAUSE TestQueryDeleteAll/Streams
=== CONT  TestQueryDeleteAll/Events
=== CONT  TestQueryDeleteAll/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestQueryDeleteAll/Streams: streams_test.go:81: models: unable to insert into streams: NOT NULL constraint failed: streams.title
DELETE FROM "streams";
[]
    TestQueryDeleteAll/Streams: streams_test.go:87: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "streams";
[]
    TestQueryDeleteAll/Events: events_test.go:81: models: unable to insert into events: NOT NULL constraint failed: events.title
DELETE FROM "events";
[]
    TestQueryDeleteAll/Events: events_test.go:87: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "events";
[]
--- FAIL: TestQueryDeleteAll (0.00s)
    --- FAIL: TestQueryDeleteAll/Streams (0.00s)
    --- FAIL: TestQueryDeleteAll/Events (0.00s)
=== RUN   TestSliceDeleteAll
=== RUN   TestSliceDeleteAll/Events
=== PAUSE TestSliceDeleteAll/Events
=== RUN   TestSliceDeleteAll/Streams
=== PAUSE TestSliceDeleteAll/Streams
=== CONT  TestSliceDeleteAll/Events
INSERT INTO "events" DEFAULT VALUES
[]
=== CONT  TestSliceDeleteAll/Streams
    TestSliceDeleteAll/Events: events_test.go:114: models: unable to insert into events: NOT NULL constraint failed: events.title
INSERT INTO "streams" DEFAULT VALUES
[]
DELETE FROM "events" WHERE ("id"=?)
[{0 false}]
    TestSliceDeleteAll/Events: events_test.go:122: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "events";
[]
    TestSliceDeleteAll/Streams: streams_test.go:114: models: unable to insert into streams: NOT NULL constraint failed: streams.title
DELETE FROM "streams" WHERE ("id"=?)
[{0 false}]
    TestSliceDeleteAll/Streams: streams_test.go:122: should only have deleted one row, but affected: 0
SELECT COUNT(*) FROM "streams";
[]
--- FAIL: TestSliceDeleteAll (0.00s)
    --- FAIL: TestSliceDeleteAll/Events (0.00s)
    --- FAIL: TestSliceDeleteAll/Streams (0.00s)
=== RUN   TestExists
=== RUN   TestExists/Events
=== PAUSE TestExists/Events
=== RUN   TestExists/Streams
=== PAUSE TestExists/Streams
=== CONT  TestExists/Events
INSERT INTO "events" DEFAULT VALUES
[]
=== CONT  TestExists/Streams
    TestExists/Events: events_test.go:149: models: unable to insert into events: NOT NULL constraint failed: events.title
select exists(select 1 from "events" where "id"=? limit 1)
{0 false}
INSERT INTO "streams" DEFAULT VALUES
[]
    TestExists/Events: events_test.go:157: Expected EventExists to return true, but got false.
    TestExists/Streams: streams_test.go:149: models: unable to insert into streams: NOT NULL constraint failed: streams.title
select exists(select 1 from "streams" where "id"=? limit 1)
{0 false}
    TestExists/Streams: streams_test.go:157: Expected StreamExists to return true, but got false.
--- FAIL: TestExists (0.00s)
    --- FAIL: TestExists/Events (0.00s)
    --- FAIL: TestExists/Streams (0.00s)
=== RUN   TestFind
=== RUN   TestFind/Events
=== PAUSE TestFind/Events
=== RUN   TestFind/Streams
=== PAUSE TestFind/Streams
=== CONT  TestFind/Events
=== CONT  TestFind/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestFind/Events: events_test.go:175: models: unable to insert into events: NOT NULL constraint failed: events.title
select * from "events" where "id"=?
[{0 false}]
    TestFind/Events: events_test.go:180: sql: no rows in result set
    TestFind/Events: events_test.go:184: want a record, got nil
    TestFind/Streams: streams_test.go:175: models: unable to insert into streams: NOT NULL constraint failed: streams.title
select * from "streams" where "id"=?
[{0 false}]
    TestFind/Streams: streams_test.go:180: sql: no rows in result set
    TestFind/Streams: streams_test.go:184: want a record, got nil
--- FAIL: TestFind (0.00s)
    --- FAIL: TestFind/Events (0.00s)
    --- FAIL: TestFind/Streams (0.00s)
=== RUN   TestBind
=== RUN   TestBind/Events
=== PAUSE TestBind/Events
=== RUN   TestBind/Streams
=== PAUSE TestBind/Streams
=== CONT  TestBind/Events
=== CONT  TestBind/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestBind/Events: events_test.go:202: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT * FROM "events";
[]
    TestBind/Events: events_test.go:206: sql: no rows in result set
    TestBind/Streams: streams_test.go:202: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT * FROM "streams";
[]
    TestBind/Streams: streams_test.go:206: sql: no rows in result set
--- FAIL: TestBind (0.00s)
    --- FAIL: TestBind/Events (0.00s)
    --- FAIL: TestBind/Streams (0.00s)
=== RUN   TestOne
=== RUN   TestOne/Events
=== PAUSE TestOne/Events
=== RUN   TestOne/Streams
=== PAUSE TestOne/Streams
=== CONT  TestOne/Events
=== CONT  TestOne/Streams
INSERT INTO "events" DEFAULT VALUES
[]
    TestOne/Events: events_test.go:224: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT * FROM "events" LIMIT 1;
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestOne/Events: events_test.go:228: sql: no rows in result set
    TestOne/Streams: streams_test.go:224: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT * FROM "streams" LIMIT 1;
[]
    TestOne/Streams: streams_test.go:228: sql: no rows in result set
--- FAIL: TestOne (0.00s)
    --- FAIL: TestOne/Events (0.00s)
    --- FAIL: TestOne/Streams (0.00s)
=== RUN   TestAll
=== RUN   TestAll/Events
=== PAUSE TestAll/Events
=== RUN   TestAll/Streams
=== PAUSE TestAll/Streams
=== CONT  TestAll/Events
=== CONT  TestAll/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestAll/Streams: streams_test.go:252: models: unable to insert into streams: NOT NULL constraint failed: streams.title
INSERT INTO "streams" DEFAULT VALUES
[]
    TestAll/Streams: streams_test.go:255: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT * FROM "streams";
[]
    TestAll/Streams: streams_test.go:264: want 2 records, got: 0
    TestAll/Events: events_test.go:252: models: unable to insert into events: NOT NULL constraint failed: events.title
INSERT INTO "events" DEFAULT VALUES
[]
    TestAll/Events: events_test.go:255: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT * FROM "events";
[]
    TestAll/Events: events_test.go:264: want 2 records, got: 0
--- FAIL: TestAll (0.00s)
    --- FAIL: TestAll/Streams (0.00s)
    --- FAIL: TestAll/Events (0.00s)
=== RUN   TestCount
=== RUN   TestCount/Events
=== PAUSE TestCount/Events
=== RUN   TestCount/Streams
=== PAUSE TestCount/Streams
=== CONT  TestCount/Events
=== CONT  TestCount/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestCount/Events: events_test.go:286: models: unable to insert into events: NOT NULL constraint failed: events.title
INSERT INTO "events" DEFAULT VALUES
[]
    TestCount/Events: events_test.go:289: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT COUNT(*) FROM "events";
[]
    TestCount/Events: events_test.go:298: want 2 records, got: 0
    TestCount/Streams: streams_test.go:286: models: unable to insert into streams: NOT NULL constraint failed: streams.title
INSERT INTO "streams" DEFAULT VALUES
[]
    TestCount/Streams: streams_test.go:289: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT COUNT(*) FROM "streams";
[]
    TestCount/Streams: streams_test.go:298: want 2 records, got: 0
--- FAIL: TestCount (0.00s)
    --- FAIL: TestCount/Events (0.00s)
    --- FAIL: TestCount/Streams (0.00s)
=== RUN   TestHooks
=== RUN   TestHooks/Events
=== PAUSE TestHooks/Events
=== RUN   TestHooks/Streams
=== PAUSE TestHooks/Streams
=== CONT  TestHooks/Events
=== CONT  TestHooks/Streams
--- PASS: TestHooks (0.00s)
    --- PASS: TestHooks/Events (0.00s)
    --- PASS: TestHooks/Streams (0.00s)
=== RUN   TestInsert
=== RUN   TestInsert/Events
=== PAUSE TestInsert/Events
=== RUN   TestInsert/Events#01
=== PAUSE TestInsert/Events#01
=== RUN   TestInsert/Streams
=== PAUSE TestInsert/Streams
=== RUN   TestInsert/Streams#01
=== PAUSE TestInsert/Streams#01
=== CONT  TestInsert/Events
INSERT INTO "events" DEFAULT VALUES
[]
    TestInsert/Events: events_test.go:457: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT COUNT(*) FROM "events";
[]
    TestInsert/Events: events_test.go:466: want one record, got: 0
=== CONT  TestInsert/Streams#01
INSERT INTO "streams" DEFAULT VALUES
[]
=== CONT  TestInsert/Events#01
=== CONT  TestInsert/Streams
INSERT INTO "events" DEFAULT VALUES
[]
    TestInsert/Events#01: events_test.go:484: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT COUNT(*) FROM "events";
[]
    TestInsert/Events#01: events_test.go:493: want one record, got: 0
    TestInsert/Streams#01: streams_test.go:484: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT COUNT(*) FROM "streams";
[]
    TestInsert/Streams#01: streams_test.go:493: want one record, got: 0
INSERT INTO "streams" DEFAULT VALUES
[]
    TestInsert/Streams: streams_test.go:457: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT COUNT(*) FROM "streams";
[]
    TestInsert/Streams: streams_test.go:466: want one record, got: 0
--- FAIL: TestInsert (0.00s)
    --- FAIL: TestInsert/Events (0.00s)
    --- FAIL: TestInsert/Events#01 (0.00s)
    --- FAIL: TestInsert/Streams#01 (0.00s)
    --- FAIL: TestInsert/Streams (0.00s)
=== RUN   TestToOne
=== RUN   TestToOne/EventToStreamUsingStream
INSERT INTO "streams" DEFAULT VALUES
[]
    TestToOne/EventToStreamUsingStream: events_test.go:514: models: unable to insert into streams: NOT NULL constraint failed: streams.title
--- FAIL: TestToOne (0.00s)
    --- FAIL: TestToOne/EventToStreamUsingStream (0.00s)
=== RUN   TestOneToOne
--- PASS: TestOneToOne (0.00s)
=== RUN   TestToMany
=== RUN   TestToMany/StreamToEvents
INSERT INTO "streams" DEFAULT VALUES
[]
    TestToMany/StreamToEvents: streams_test.go:512: models: unable to insert into streams: NOT NULL constraint failed: streams.title
--- FAIL: TestToMany (0.00s)
    --- FAIL: TestToMany/StreamToEvents (0.00s)
=== RUN   TestToOneSet
=== RUN   TestToOneSet/EventToStreamUsingEvents
INSERT INTO "events" ("title","description","archived","stream_id") VALUES (?,?,?,?)
[N O true 1592630321]
SELECT "id" FROM "events" WHERE "id"=?
{0 false}
    TestToOneSet/EventToStreamUsingEvents: events_test.go:570: models: unable to populate default values for events: sql: no rows in result set
--- FAIL: TestToOneSet (0.00s)
    --- FAIL: TestToOneSet/EventToStreamUsingEvents (0.00s)
=== RUN   TestToOneRemove
--- PASS: TestToOneRemove (0.00s)
=== RUN   TestOneToOneSet
--- PASS: TestOneToOneSet (0.00s)
=== RUN   TestOneToOneRemove
--- PASS: TestOneToOneRemove (0.00s)
=== RUN   TestToManyAdd
=== RUN   TestToManyAdd/StreamToEvents
INSERT INTO "streams" ("title","description","archived") VALUES (?,?,?)
[N {O true} {true true}]
SELECT "id" FROM "streams" WHERE "id"=?
{0 false}
    TestToManyAdd/StreamToEvents: streams_test.go:596: models: unable to populate default values for streams: sql: no rows in result set
--- FAIL: TestToManyAdd (0.00s)
    --- FAIL: TestToManyAdd/StreamToEvents (0.00s)
=== RUN   TestToManySet
--- PASS: TestToManySet (0.00s)
=== RUN   TestToManyRemove
--- PASS: TestToManyRemove (0.00s)
=== RUN   TestReload
=== RUN   TestReload/Events
=== PAUSE TestReload/Events
=== RUN   TestReload/Streams
=== PAUSE TestReload/Streams
=== CONT  TestReload/Events
=== CONT  TestReload/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestReload/Events: events_test.go:620: models: unable to insert into events: NOT NULL constraint failed: events.title
select * from "events" where "id"=?
[{0 false}]
    TestReload/Events: events_test.go:624: sql: no rows in result set
    TestReload/Streams: streams_test.go:664: models: unable to insert into streams: NOT NULL constraint failed: streams.title
select * from "streams" where "id"=?
[{0 false}]
    TestReload/Streams: streams_test.go:668: sql: no rows in result set
--- FAIL: TestReload (0.00s)
    --- FAIL: TestReload/Events (0.00s)
    --- FAIL: TestReload/Streams (0.00s)
=== RUN   TestReloadAll
=== RUN   TestReloadAll/Events
=== PAUSE TestReloadAll/Events
=== RUN   TestReloadAll/Streams
=== PAUSE TestReloadAll/Streams
=== CONT  TestReloadAll/Events
=== CONT  TestReloadAll/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestReloadAll/Events: events_test.go:642: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT "events".* FROM "events" WHERE ("id"=?)
[{0 false}]
    TestReloadAll/Streams: streams_test.go:686: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT "streams".* FROM "streams" WHERE ("id"=?)
[{0 false}]
--- FAIL: TestReloadAll (0.00s)
    --- FAIL: TestReloadAll/Events (0.00s)
    --- FAIL: TestReloadAll/Streams (0.00s)
=== RUN   TestSelect
=== RUN   TestSelect/Events
=== PAUSE TestSelect/Events
=== RUN   TestSelect/Streams
=== PAUSE TestSelect/Streams
=== CONT  TestSelect/Events
INSERT INTO "events" DEFAULT VALUES
[]
=== CONT  TestSelect/Streams
    TestSelect/Events: events_test.go:666: models: unable to insert into events: NOT NULL constraint failed: events.title
INSERT INTO "streams" DEFAULT VALUES
[]
SELECT * FROM "events";
[]
    TestSelect/Events: events_test.go:675: want one record, got: 0
    TestSelect/Streams: streams_test.go:710: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT * FROM "streams";
[]
    TestSelect/Streams: streams_test.go:719: want one record, got: 0
--- FAIL: TestSelect (0.00s)
    --- FAIL: TestSelect/Events (0.00s)
    --- FAIL: TestSelect/Streams (0.00s)
=== RUN   TestUpdate
=== RUN   TestUpdate/Events
=== PAUSE TestUpdate/Events
=== RUN   TestUpdate/Streams
=== PAUSE TestUpdate/Streams
=== CONT  TestUpdate/Events
=== CONT  TestUpdate/Streams
INSERT INTO "events" DEFAULT VALUES
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestUpdate/Streams: streams_test.go:749: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT COUNT(*) FROM "streams";
[]
    TestUpdate/Streams: streams_test.go:758: want one record, got: 0
UPDATE "streams" SET "title"=?,"description"=?,"archived"=? WHERE "id"=?
[ {P true} {false false} {0 false}]
    TestUpdate/Streams: streams_test.go:768: should only affect one row but affected 0
    TestUpdate/Events: events_test.go:705: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT COUNT(*) FROM "events";
[]
    TestUpdate/Events: events_test.go:714: want one record, got: 0
UPDATE "events" SET "title"=?,"description"=?,"archived"=?,"stream_id"=? WHERE "id"=?
[ P false 1592630324 {0 false}]
    TestUpdate/Events: events_test.go:724: should only affect one row but affected 0
--- FAIL: TestUpdate (0.00s)
    --- FAIL: TestUpdate/Streams (0.00s)
    --- FAIL: TestUpdate/Events (0.00s)
=== RUN   TestSliceUpdateAll
=== RUN   TestSliceUpdateAll/Events
=== PAUSE TestSliceUpdateAll/Events
=== RUN   TestSliceUpdateAll/Streams
=== PAUSE TestSliceUpdateAll/Streams
=== CONT  TestSliceUpdateAll/Events
=== CONT  TestSliceUpdateAll/Streams
INSERT INTO "events" DEFAULT VALUES
[]
    TestSliceUpdateAll/Events: events_test.go:746: models: unable to insert into events: NOT NULL constraint failed: events.title
SELECT COUNT(*) FROM "events";
[]
INSERT INTO "streams" DEFAULT VALUES
[]
    TestSliceUpdateAll/Events: events_test.go:755: want one record, got: 0
UPDATE "events" SET "title"=?,"description"=?,"archived"=?,"stream_id"=? WHERE ("id"=?)
 P false 1592630324 {0 false}
    TestSliceUpdateAll/Events: events_test.go:791: wanted one record updated but got 0
    TestSliceUpdateAll/Streams: streams_test.go:790: models: unable to insert into streams: NOT NULL constraint failed: streams.title
SELECT COUNT(*) FROM "streams";
[]
    TestSliceUpdateAll/Streams: streams_test.go:799: want one record, got: 0
UPDATE "streams" SET "title"=?,"description"=?,"archived"=? WHERE ("id"=?)
 {P true} {false false} {0 false}
    TestSliceUpdateAll/Streams: streams_test.go:835: wanted one record updated but got 0
--- FAIL: TestSliceUpdateAll (0.00s)
    --- FAIL: TestSliceUpdateAll/Events (0.00s)
    --- FAIL: TestSliceUpdateAll/Streams (0.00s)
FAIL
FAIL	github.com/the-maldridge/nemo/pkg/models	0.035s
FAIL

the-maldridge avatar Jun 20 '20 05:06 the-maldridge

Hi @the-maldridge it seems like the issue is that sqlboiler believes there's a default value accompanying all of your fields. I was unable to reproduce your issue using your schema with the following configuration:

Go software: sqlboiler: 4.1.2 sqlboiler-sqlite3: a93887c09a14c34ea2c793728c5f914958efbcc6 github.com/mattn/go-sqlite3: v1.14.0

System software: sqlite3: 3.22.0 2018-01-22 18:45:57 0c55d179733b46

The problem could be one of two things:

  • You have changed your schema and forgot to regenerate the models (sqlboiler --wipe sqlite3)
  • The generation of the models is failing to see that these are columns WITHOUT default values and that it must insert data for them. In order to see if that's the case, you need to run sqlboiler --debug sqlite3

aarondl avatar Jun 26 '20 18:06 aarondl