Skip to content

Commit b5f0008

Browse files
Initializing various ws definitions in SetupSuite
Instead of parsing and creating the various ws definitions used for testing during file initialization, doing this work in SetupSuite. This makes it easier to see parsing errors, and pinpoint where they come from. Which is handy as we work on the parser! Before this change, a panic in `MustNewDefinitions` would yield panic: test goroutine 1 [running]: github.com/helloeave/worksheets.MustNewDefinitions(0x156a760, 0xc4201ac1a0, 0x0, 0x0, 0x0, 0xc4200943d0) /Users/pascal/Development/go/src/github.com/helloeave/worksheets/worksheets.go:109 +0x39 FAIL github.com/helloeave/worksheets 0.018s ok github.com/helloeave/worksheets/tools (cached) whereas now it yields --- FAIL: TestRunAllTheDbTests (0.00s) panic: test [recovered] panic: test goroutine 5 [running]: testing.tRunner.func1(0xc4201942d0) /usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:742 +0x29d panic(0x1457a40, 0x1568b00) /usr/local/Cellar/go/1.10/libexec/src/runtime/panic.go:505 +0x229 github.com/helloeave/worksheets.MustNewDefinitions(0x156b1a0, 0xc420196240, 0x0, 0x0, 0x0, 0x1) /Users/pascal/Development/go/src/github.com/helloeave/worksheets/worksheets.go:109 +0x39 github.com/helloeave/worksheets.newAllDefs(0x0, 0x0, 0x0, 0x0, 0x0) /Users/pascal/Development/go/src/github.com/helloeave/worksheets/testutil_test.go:83 +0xec github.com/helloeave/worksheets.(*DbZuite).SetupSuite(0xc4200a18b0) /Users/pascal/Development/go/src/github.com/helloeave/worksheets/dbtestutil_test.go:35 +0x26 github.com/stretchr/testify/suite.Run(0xc4201942d0, 0x156cda0, 0xc4200a18b0) /Users/pascal/Development/go/src/github.com/stretchr/testify/suite/suite.go:64 +0x588 github.com/helloeave/worksheets.TestRunAllTheDbTests(0xc4201942d0) /Users/pascal/Development/go/src/github.com/helloeave/worksheets/dbtestutil_test.go:86 +0x51 testing.tRunner(0xc4201942d0, 0x152c7b8) /usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:777 +0xd0 created by testing.(*T).Run /usr/local/Cellar/go/1.10/libexec/src/testing/testing.go:824 +0x2e0 which properly identifies `dbtestutil_test.go:86` as the culprit.
1 parent 075bcfc commit b5f0008

File tree

11 files changed

+146
-122
lines changed

11 files changed

+146
-122
lines changed

clone_test.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,20 @@
1313
package worksheets
1414

1515
import (
16-
"strings"
17-
1816
"github.com/stretchr/testify/require"
1917
)
2018

21-
var cloneDefs = MustNewDefinitions(strings.NewReader(`
19+
var cloneDefs = `
2220
worksheet dup_me {
2321
1: value text
2422
2: v_slice []number[0]
2523
3: r_slice []dup_me
2624
4: ref1 dup_me
2725
5: ref2 dup_me
28-
}
29-
`))
26+
}`
3027

3128
func (s *Zuite) TestClone_simple() {
32-
ws := cloneDefs.MustNewWorksheet("dup_me")
29+
ws := s.cloneDefs.MustNewWorksheet("dup_me")
3330
ws.MustSet("value", NewText("Mary had a little lamb"))
3431
ws.data[indexVersion] = MustNewValue("666")
3532

@@ -47,8 +44,8 @@ func (s *Zuite) TestClone_simple() {
4744
}
4845

4946
func (s *Zuite) TestClone_withOneWsRef() {
50-
ws1 := cloneDefs.MustNewWorksheet("dup_me")
51-
ws2 := cloneDefs.MustNewWorksheet("dup_me")
47+
ws1 := s.cloneDefs.MustNewWorksheet("dup_me")
48+
ws2 := s.cloneDefs.MustNewWorksheet("dup_me")
5249
ws1.MustSet("ref1", ws2)
5350

5451
dup1 := ws1.Clone()
@@ -84,8 +81,8 @@ func (s *Zuite) TestClone_withOneWsRef() {
8481
}
8582

8683
func (s *Zuite) TestClone_withTwoWsRefToSameWs() {
87-
ws1 := cloneDefs.MustNewWorksheet("dup_me")
88-
ws2 := cloneDefs.MustNewWorksheet("dup_me")
84+
ws1 := s.cloneDefs.MustNewWorksheet("dup_me")
85+
ws2 := s.cloneDefs.MustNewWorksheet("dup_me")
8986
ws1.MustSet("ref1", ws2)
9087
ws1.MustSet("ref2", ws2)
9188

@@ -131,7 +128,7 @@ func (s *Zuite) TestClone_withTwoWsRefToSameWs() {
131128
}
132129

133130
func (s *Zuite) TestClone_withSliceOfValues() {
134-
ws := cloneDefs.MustNewWorksheet("dup_me")
131+
ws := s.cloneDefs.MustNewWorksheet("dup_me")
135132
ws.MustAppend("v_slice", MustNewValue("2"))
136133
ws.MustAppend("v_slice", MustNewValue("3"))
137134
ws.MustAppend("v_slice", MustNewValue("3"))
@@ -170,10 +167,10 @@ func (s *Zuite) TestClone_withSliceOfValues() {
170167
}
171168

172169
func (s *Zuite) TestClone_withSliceOfRefs() {
173-
ws := cloneDefs.MustNewWorksheet("dup_me")
174-
child1 := cloneDefs.MustNewWorksheet("dup_me")
175-
child2 := cloneDefs.MustNewWorksheet("dup_me")
176-
child3 := cloneDefs.MustNewWorksheet("dup_me")
170+
ws := s.cloneDefs.MustNewWorksheet("dup_me")
171+
child1 := s.cloneDefs.MustNewWorksheet("dup_me")
172+
child2 := s.cloneDefs.MustNewWorksheet("dup_me")
173+
child3 := s.cloneDefs.MustNewWorksheet("dup_me")
177174
ws.MustAppend("r_slice", child1)
178175
ws.MustAppend("r_slice", child2)
179176
ws.MustAppend("r_slice", child3)

computed_by_test.go

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ func (s *Zuite) TestComputedBy_cyclicEditsIfNoIdentCheck() {
327327
require.Equal(s.T(), "undefined", ws.MustGet("b").String(), "b")
328328
}
329329

330-
var defsCrossWs = MustNewDefinitions(strings.NewReader(`
330+
var defsCrossWs = `
331331
worksheet parent {
332332
1:child_amount number[2] computed_by {
333333
return child.amount
@@ -337,11 +337,11 @@ worksheet parent {
337337
338338
worksheet child {
339339
5:amount number[2]
340-
}`))
340+
}`
341341

342342
func (s *Zuite) TestComputedBy_simpleCrossWsParentPointers() {
343-
parent := defsCrossWs.MustNewWorksheet("parent")
344-
child := defsCrossWs.MustNewWorksheet("child")
343+
parent := s.defsCrossWs.MustNewWorksheet("parent")
344+
child := s.defsCrossWs.MustNewWorksheet("child")
345345
forciblySetId(parent, "parent-id")
346346

347347
require.Len(s.T(), child.parents, 0)
@@ -361,9 +361,9 @@ func (s *Zuite) TestComputedBy_simpleCrossWsParentPointers() {
361361
}
362362

363363
func (s *Zuite) TestComputedBy_simpleCrossWsExample() {
364-
parent := defsCrossWs.MustNewWorksheet("parent")
364+
parent := s.defsCrossWs.MustNewWorksheet("parent")
365365

366-
child := defsCrossWs.MustNewWorksheet("child")
366+
child := s.defsCrossWs.MustNewWorksheet("child")
367367
child.MustSet("amount", MustNewValue("1.11"))
368368
parent.MustSet("child", child)
369369
require.Equal(s.T(), "1.11", parent.MustGet("child_amount").String())
@@ -397,7 +397,7 @@ func (p sumPlugin) Compute(values ...Value) Value {
397397
return sum
398398
}
399399

400-
var defsCrossWsThroughSlice = MustNewDefinitions(strings.NewReader(`
400+
var defsCrossWsThroughSlice = `
401401
worksheet parent {
402402
10:sum_child_amount number[2] computed_by {
403403
external
@@ -407,18 +407,20 @@ worksheet parent {
407407
408408
worksheet child {
409409
50:amount number[2]
410-
}`), Options{
410+
}`
411+
412+
var defsCrossWsThroughSliceOptions = Options{
411413
Plugins: map[string]map[string]ComputedBy{
412414
"parent": {
413415
"sum_child_amount": sumPlugin("children.amount"),
414416
},
415417
},
416-
})
418+
}
417419

418420
func (s *Zuite) TestComputedBy_crossWsThroughSliceParentPointers() {
419-
parent := defsCrossWsThroughSlice.MustNewWorksheet("parent")
420-
child1 := defsCrossWsThroughSlice.MustNewWorksheet("child")
421-
child2 := defsCrossWsThroughSlice.MustNewWorksheet("child")
421+
parent := s.defsCrossWsThroughSlice.MustNewWorksheet("parent")
422+
child1 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
423+
child2 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
422424
forciblySetId(parent, "parent-id")
423425

424426
require.Len(s.T(), child1.parents, 0)
@@ -454,16 +456,16 @@ func (s *Zuite) TestComputedBy_crossWsThroughSliceParentPointers() {
454456
}
455457

456458
func (s *Zuite) TestComputedBy_crossWsThroughSliceExample() {
457-
parent := defsCrossWsThroughSlice.MustNewWorksheet("parent")
459+
parent := s.defsCrossWsThroughSlice.MustNewWorksheet("parent")
458460

459461
require.Equal(s.T(), "0", parent.MustGet("sum_child_amount").String())
460462

461-
child1 := defsCrossWsThroughSlice.MustNewWorksheet("child")
463+
child1 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
462464
child1.MustSet("amount", MustNewValue("1.11"))
463465
parent.MustAppend("children", child1)
464466
require.Equal(s.T(), "1.11", parent.MustGet("sum_child_amount").String())
465467

466-
child2 := defsCrossWsThroughSlice.MustNewWorksheet("child")
468+
child2 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
467469
child2.MustSet("amount", MustNewValue("2.22"))
468470
parent.MustAppend("children", child2)
469471
require.Equal(s.T(), "3.33", parent.MustGet("sum_child_amount").String())
@@ -476,17 +478,17 @@ func (s *Zuite) TestComputedBy_crossWsThroughSliceExample() {
476478
}
477479

478480
func (s *DbZuite) TestComputedBy_crossWs_parentsRefsPersistence() {
479-
store := NewStore(defsCrossWs)
481+
store := NewStore(s.defsCrossWs)
480482

481483
// We create a parent, pointing to a child.
482484
var (
483485
parentId = "aaaaaaaa-9be5-41e4-9b56-787f52f5a198"
484486
childId = "bbbbbbbb-9be5-41e4-9b56-787f52f5a198"
485487
)
486488
s.MustRunTransaction(func(tx *runner.Tx) error {
487-
parent := defsCrossWs.MustNewWorksheet("parent")
489+
parent := s.defsCrossWs.MustNewWorksheet("parent")
488490
forciblySetId(parent, parentId)
489-
child := defsCrossWs.MustNewWorksheet("child")
491+
child := s.defsCrossWs.MustNewWorksheet("child")
490492
forciblySetId(child, childId)
491493
child.MustSet("amount", MustNewValue("6.66"))
492494
parent.MustSet("child", child)
@@ -543,7 +545,7 @@ func (s *DbZuite) TestComputedBy_crossWs_parentsRefsPersistence() {
543545
}
544546

545547
func (s *DbZuite) TestComputedBy_crossWs_twoParentsOneChildRefsPersistence() {
546-
store := NewStore(defsCrossWs)
548+
store := NewStore(s.defsCrossWs)
547549

548550
// We create two parents, pointing to the same child.
549551
var (
@@ -552,11 +554,11 @@ func (s *DbZuite) TestComputedBy_crossWs_twoParentsOneChildRefsPersistence() {
552554
childId = "cccccccc-9be5-41e4-9b56-787f52f5a198"
553555
)
554556
s.MustRunTransaction(func(tx *runner.Tx) error {
555-
parent1 := defsCrossWs.MustNewWorksheet("parent")
557+
parent1 := s.defsCrossWs.MustNewWorksheet("parent")
556558
forciblySetId(parent1, parent1Id)
557-
parent2 := defsCrossWs.MustNewWorksheet("parent")
559+
parent2 := s.defsCrossWs.MustNewWorksheet("parent")
558560
forciblySetId(parent2, parent2Id)
559-
child := defsCrossWs.MustNewWorksheet("child")
561+
child := s.defsCrossWs.MustNewWorksheet("child")
560562
forciblySetId(child, childId)
561563
child.MustSet("amount", MustNewValue("6.66"))
562564
parent1.MustSet("child", child)
@@ -611,17 +613,17 @@ func (s *DbZuite) TestComputedBy_crossWs_twoParentsOneChildRefsPersistence() {
611613

612614
func (s *DbZuite) TestComputedBy_crossWs_parentWithSlicesRefsPersistence1() {
613615
var (
614-
store = NewStore(defsCrossWsThroughSlice)
616+
store = NewStore(s.defsCrossWsThroughSlice)
615617
parentId = "aaaaaaaa-9be5-41e4-9b56-787f52f5a198"
616618
child1Id = "bbbbbbbb-9be5-41e4-9b56-787f52f5a198"
617619
child2Id = "cccccccc-9be5-41e4-9b56-787f52f5a198"
618620
)
619621

620622
// We create a parent, pointing to a child through a slice.
621623
s.MustRunTransaction(func(tx *runner.Tx) error {
622-
parent := defsCrossWsThroughSlice.MustNewWorksheet("parent")
624+
parent := s.defsCrossWsThroughSlice.MustNewWorksheet("parent")
623625
forciblySetId(parent, parentId)
624-
child1 := defsCrossWsThroughSlice.MustNewWorksheet("child")
626+
child1 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
625627
forciblySetId(child1, child1Id)
626628
child1.MustSet("amount", MustNewValue("6.66"))
627629
parent.MustAppend("children", child1)
@@ -648,7 +650,7 @@ func (s *DbZuite) TestComputedBy_crossWs_parentWithSlicesRefsPersistence1() {
648650
if err != nil {
649651
return err
650652
}
651-
child2 := defsCrossWsThroughSlice.MustNewWorksheet("child")
653+
child2 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
652654
forciblySetId(child2, child2Id)
653655
child2.MustSet("amount", MustNewValue("7.77"))
654656
parent.MustAppend("children", child2)
@@ -696,17 +698,17 @@ func (s *DbZuite) TestComputedBy_crossWs_parentWithSlicesRefsPersistence1() {
696698

697699
func (s *DbZuite) TestComputedBy_crossWs_parentWithSlicesRefsPersistence2() {
698700
var (
699-
store = NewStore(defsCrossWsThroughSlice)
701+
store = NewStore(s.defsCrossWsThroughSlice)
700702
parentId = "aaaaaaaa-9be5-41e4-9b56-787f52f5a198"
701703
childId = "bbbbbbbb-9be5-41e4-9b56-787f52f5a198"
702704
)
703705

704706
// We create a parent ws, and a child ws, but we do not connect them yet.
705707
s.MustRunTransaction(func(tx *runner.Tx) error {
706-
parent := defsCrossWsThroughSlice.MustNewWorksheet("parent")
708+
parent := s.defsCrossWsThroughSlice.MustNewWorksheet("parent")
707709
forciblySetId(parent, parentId)
708710

709-
child := defsCrossWsThroughSlice.MustNewWorksheet("child")
711+
child := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
710712
forciblySetId(child, childId)
711713
child.MustSet("amount", MustNewValue("6.66"))
712714

@@ -751,7 +753,7 @@ func (s *DbZuite) TestComputedBy_crossWs_parentWithSlicesRefsPersistence2() {
751753

752754
func (s *DbZuite) TestComputedBy_crossWs_updateOfChildCarriesToParent() {
753755
var (
754-
store = NewStore(defsCrossWsThroughSlice)
756+
store = NewStore(s.defsCrossWsThroughSlice)
755757
parentId = "aaaaaaaa-9be5-41e4-9b56-787f52f5a198"
756758
child1Id = "bbbbbbbb-9be5-41e4-9b56-787f52f5a198"
757759
child2Id = "cccccccc-9be5-41e4-9b56-787f52f5a198"
@@ -760,9 +762,9 @@ func (s *DbZuite) TestComputedBy_crossWs_updateOfChildCarriesToParent() {
760762
// We create a parent, pointing to two children through a slice.
761763
var childrenSliceId string
762764
s.MustRunTransaction(func(tx *runner.Tx) error {
763-
parent := defsCrossWsThroughSlice.MustNewWorksheet("parent")
764-
child1 := defsCrossWsThroughSlice.MustNewWorksheet("child")
765-
child2 := defsCrossWsThroughSlice.MustNewWorksheet("child")
765+
parent := s.defsCrossWsThroughSlice.MustNewWorksheet("parent")
766+
child1 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
767+
child2 := s.defsCrossWsThroughSlice.MustNewWorksheet("child")
766768
forciblySetId(parent, parentId)
767769
forciblySetId(child1, child1Id)
768770
forciblySetId(child2, child2Id)

dbstore_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func (s *DbZuite) TestUpdateUndefinedField() {
270270
func (s *DbZuite) TestProperlyLoadUndefinedField() {
271271
var wsId string
272272
s.MustRunTransaction(func(tx *runner.Tx) error {
273-
ws := defs.MustNewWorksheet("simple")
273+
ws := s.defs.MustNewWorksheet("simple")
274274
wsId = ws.Id()
275275
ws.MustSet("age", MustNewValue("123456"))
276276

dbtestutil_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,15 @@ import (
2525

2626
type DbZuite struct {
2727
suite.Suite
28+
allDefs
2829
db *runner.DB
2930
store *DbStore
3031
}
3132

3233
func (s *DbZuite) SetupSuite() {
34+
// init
35+
s.allDefs = newAllDefs()
36+
3337
// db
3438
dbUrl := "postgres://ws_user:@localhost/ws_test?sslmode=disable"
3539
db, err := sql.Open("postgres", dbUrl)
@@ -39,7 +43,7 @@ func (s *DbZuite) SetupSuite() {
3943
s.db = runner.NewDB(db, "postgres")
4044

4145
// store
42-
s.store = NewStore(defs)
46+
s.store = NewStore(s.defs)
4347
}
4448

4549
func (s *DbZuite) SetupTest() {

expressions_test.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,22 @@
1313
package worksheets
1414

1515
import (
16-
"strings"
17-
1816
"github.com/stretchr/testify/require"
1917
)
2018

21-
var defsForSelectors = MustNewDefinitions(strings.NewReader(`
19+
var defsForSelectors = `
2220
worksheet child {
2321
1:name text
2422
}
2523
2624
worksheet parent {
2725
2:ref_to_child child
2826
3:refs_to_children []child
29-
}`))
27+
}`
3028

3129
func (s *Zuite) TestSelectors() {
3230
// single field
33-
child := defsForSelectors.MustNewWorksheet("child")
31+
child := s.defsForSelectors.MustNewWorksheet("child")
3432
child.MustSet("name", alice)
3533
{
3634
actual, err := tSelector([]string{"name"}).compute(child)
@@ -39,7 +37,7 @@ func (s *Zuite) TestSelectors() {
3937
}
4038

4139
// path to field
42-
parent := defsForSelectors.MustNewWorksheet("parent")
40+
parent := s.defsForSelectors.MustNewWorksheet("parent")
4341
parent.MustSet("ref_to_child", child)
4442
{
4543
actual, err := tSelector([]string{"ref_to_child", "name"}).compute(parent)
@@ -60,8 +58,8 @@ func (s *Zuite) TestSelectors() {
6058
}
6159

6260
func (s *Zuite) TestSelectorSliceTypes() {
63-
child := defsForSelectors.MustNewWorksheet("child")
64-
parent := defsForSelectors.MustNewWorksheet("parent")
61+
child := s.defsForSelectors.MustNewWorksheet("child")
62+
parent := s.defsForSelectors.MustNewWorksheet("parent")
6563
parent.MustAppend("refs_to_children", child)
6664
// even with an undefined value, slice type should match field def type
6765
{

0 commit comments

Comments
 (0)