Skip to content

Commit

Permalink
internal/core: add explicit txtar test
Browse files Browse the repository at this point in the history
This explicitly tests field ordering behaviour.

Change-Id: I62874dca7410565a0b4b3ab4668a420169f97508
Signed-off-by: Matthew Sackman <[email protected]>
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1202994
TryBot-Result: CUEcueckoo <[email protected]>
Unity-Result: CUE porcuepine <[email protected]>
Reviewed-by: Marcel van Lohuizen <[email protected]>
  • Loading branch information
cuematthew committed Nov 5, 2024
1 parent edad6fc commit b780c0a
Show file tree
Hide file tree
Showing 2 changed files with 438 additions and 0 deletions.
74 changes: 74 additions & 0 deletions internal/core/toposort/sort_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
// Copyright 2024 CUE Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package toposort_test

import (
"fmt"
"testing"

"cuelang.org/go/cue/format"
"cuelang.org/go/internal/core/eval"
"cuelang.org/go/internal/core/export"
"cuelang.org/go/internal/cueexperiment"
"cuelang.org/go/internal/cuetdtest"
"cuelang.org/go/internal/cuetxtar"
)

func TestTopologicalSort(t *testing.T) {
cueexperiment.Init()
saved := cueexperiment.Flags.TopoSort
defer func() { cueexperiment.Flags.TopoSort = saved }()

cueexperiment.Flags.TopoSort = true

test := cuetxtar.TxTarTest{
Root: "testdata",
Name: "toposort",
Matrix: cuetdtest.SmallMatrix,
}

test.Run(t, func(t *cuetxtar.Test) {
run := t.Runtime()
inst := t.Instance()

v, err := run.Build(nil, inst)
if err != nil {
t.Fatal(err)
}

v.Finalize(eval.NewContext(run, v))

evalWithOptions := export.Profile{
TakeDefaults: true,
ShowOptional: true,
ShowDefinitions: true,
ShowAttributes: true,
}

expr, err := evalWithOptions.Value(run, inst.ID(), v)
if err != nil {
t.Fatal(err)
}

{
b, err := format.Node(expr)
if err != nil {
t.Fatal(err)
}
_, _ = t.Write(b)
fmt.Fprintln(t)
}
})
}
Loading

0 comments on commit b780c0a

Please sign in to comment.