Skip to content

Commit c8a0c0b

Browse files
committed
Update test/trimming/trimming.jl for JSON ABI format
1 parent 77b1916 commit c8a0c0b

File tree

2 files changed

+34
-26
lines changed

2 files changed

+34
-26
lines changed

test/trimming/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ $(BIN)/basic_jll-o.a: $(SRCDIR)/basic_jll.jl $(JULIAC_BUILDSCRIPT)
4343
$(JULIA) -t 1 -J $(JULIA_LIBDIR)/julia/sys.$(SHLIB_EXT) --startup-file=no --history-file=no --project=$(SRCDIR) --output-o $@ --output-incremental=no --strip-ir --strip-metadata --experimental --trim $(JULIAC_BUILDSCRIPT) $< --output-exe true
4444

4545
$(BIN)/libsimple-o.a: $(SRCDIR)/libsimple.jl $(JULIAC_BUILDSCRIPT)
46-
$(JULIA) -t 1 -J $(JULIA_LIBDIR)/julia/sys.$(SHLIB_EXT) --startup-file=no --history-file=no --output-o $@ --output-incremental=no --strip-ir --strip-metadata --experimental --trim $(JULIAC_BUILDSCRIPT) $< --output-lib true $(BIN)/bindinginfo_libsimple.log
46+
$(JULIA) -t 1 -J $(JULIA_LIBDIR)/julia/sys.$(SHLIB_EXT) --startup-file=no --history-file=no --output-o $@ --output-incremental=no --strip-ir --strip-metadata --experimental --trim $(JULIAC_BUILDSCRIPT) $< --output-lib true $(BIN)/bindinginfo_libsimple.json
4747

4848
$(BIN)/hello$(EXE): $(BIN)/hello-o.a
4949
$(CC) -o $@ $(WHOLE_ARCHIVE) $< $(NO_WHOLE_ARCHIVE) $(CPPFLAGS_ADD) $(CPPFLAGS) $(CFLAGS_ADD) $(CFLAGS) $(LDFLAGS_ADD) $(LDFLAGS)
@@ -58,7 +58,7 @@ check: $(BIN)/hello$(EXE) $(BIN)/basic_jll$(EXE) $(BIN)/capplication$(EXE)
5858
$(JULIA) --depwarn=error $(SRCDIR)/trimming.jl $<
5959

6060
clean:
61-
-rm -f $(BIN)/hello$(EXE) $(BIN)/basic_jll$(EXE) $(BIN)/hello-o.a $(BIN)/basic_jll-o.a $(BIN)/libsimple-o.a $(BIN)/libsimple.$(SHLIB_EXT) $(BIN)/capplication$(EXE) $(BIN)/bindinginfo_libsimple.log
61+
-rm -f $(BIN)/hello$(EXE) $(BIN)/basic_jll$(EXE) $(BIN)/hello-o.a $(BIN)/basic_jll-o.a $(BIN)/libsimple-o.a $(BIN)/libsimple.$(SHLIB_EXT) $(BIN)/capplication$(EXE) $(BIN)/bindinginfo_libsimple.json
6262

6363
.PHONY: release clean check
6464

test/trimming/trimming.jl

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
import Pkg
2+
3+
Pkg.add(["JSON"])
4+
15
using Test
6+
using JSON
27

38
@test length(ARGS) == 1
49
bindir = dirname(ARGS[1])
@@ -24,28 +29,31 @@ let exe_suffix = splitext(Base.julia_exename())[2]
2429
@test lines[2] == "Count of same vectors: 1"
2530

2631
# Test that the logging of entrypoints and types works correctly
27-
str = read(joinpath(bindir, "bindinginfo_libsimple.log"), String)
28-
@test occursin("copyto_and_sum(fromto::CVectorPair{Float32})::Float32", str)
29-
@test occursin(
30-
"""
31-
CVector{Float32}
32-
length::Int32[0]
33-
data::Ptr{Float32}[8]
34-
16 bytes""", str
35-
)
36-
@test occursin(
37-
"""
38-
CVectorPair{Float32}
39-
from::CVector{Float32}[0]
40-
to::CVector{Float32}[16]
41-
32 bytes""", str
42-
)
43-
# ensure that there is a blank line between methods and types
44-
lines = split(str, '\n'; keepempty=true)
45-
nblanks = 0
46-
for line in lines
47-
nblanks += isempty(line)
48-
occursin("length", line) && break
49-
end
50-
@test nblanks == 1
32+
str = read(joinpath(bindir, "bindinginfo_libsimple.json"), String)
33+
34+
# The log should parse as valid JSON
35+
abi = JSON.Parser.parse(str)
36+
37+
# `copyto_and_sum` should have been exported
38+
@test any(Bool[func["symbol"] == "copyto_and_sum" for func in abi["functions"]])
39+
40+
# `CVector{Float32}` should have been exported with the correct info
41+
@test any(Bool[type["name"] == "CVector{Float32}" for type in abi["types"]])
42+
CVector_Float32 = abi["types"][findfirst(type["name"] == "CVector{Float32}" for type in abi["types"])]
43+
@test length(CVector_Float32["fields"]) == 2
44+
@test CVector_Float32["fields"][1]["offset"] == 0
45+
@test CVector_Float32["fields"][2]["offset"] == 8
46+
@test abi["types"][CVector_Float32["fields"][1]["type"]]["name"] == "Int32"
47+
@test abi["types"][CVector_Float32["fields"][2]["type"]]["name"] == "Ptr{Float32}"
48+
@test CVector_Float32["size"] == 16
49+
50+
# `CVectorPair{Float32}` should have been exported with the correct info
51+
@test any(Bool[type["name"] == "CVectorPair{Float32}" for type in abi["types"]])
52+
CVectorPair_Float32 = abi["types"][findfirst(type["name"] == "CVectorPair{Float32}" for type in abi["types"])]
53+
@test length(CVectorPair_Float32["fields"]) == 2
54+
@test CVectorPair_Float32["fields"][1]["offset"] == 0
55+
@test CVectorPair_Float32["fields"][2]["offset"] == 16
56+
@test abi["types"][CVectorPair_Float32["fields"][1]["type"]]["name"] == "CVector{Float32}"
57+
@test abi["types"][CVectorPair_Float32["fields"][2]["type"]]["name"] == "CVector{Float32}"
58+
@test CVectorPair_Float32["size"] == 32
5159
end

0 commit comments

Comments
 (0)