From cb473bf6fff49a38680bcff620ce9d7293d6f03e Mon Sep 17 00:00:00 2001 From: Dennis Heimbigner Date: Sat, 18 Mar 2017 17:57:48 -0600 Subject: [PATCH] Apparently we have no .cdl test cases that have a global attribute whose type is an enum. Turns out this case fails because of an oversight in ncgen. This pr fixes that problem (in semantics.c). Also added test case .cdl file: tst_gattenum.cdl --- cf | 2 +- ncgen/Makefile.am | 4 ++-- ncgen/run_nc4_tests.sh | 3 +++ ncgen/semantics.c | 5 +++++ ncgen/tst_gattenum.cdl | 8 ++++++++ 5 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 ncgen/tst_gattenum.cdl diff --git a/cf b/cf index 3f489f8f9..5f6a01718 100644 --- a/cf +++ b/cf @@ -4,7 +4,7 @@ DB=1 #X=-x #FAST=1 -#HDF5=1 +HDF5=1 DAP=1 #HDF4=1 #PNETCDF=1 diff --git a/ncgen/Makefile.am b/ncgen/Makefile.am index 214575219..dafe62c51 100644 --- a/ncgen/Makefile.am +++ b/ncgen/Makefile.am @@ -24,7 +24,7 @@ man_MANS = ncgen.1 EXTRA_DIST = ncgen.y ncgen.l ncgenl.c $(man_MANS) internals.html \ run_tests.sh run_nc4_tests.sh c0.cdl c0_4.cdl ref_camrun.cdl \ ncf199.cdl CMakeLists.txt XGetopt.c c5.cdl \ -compound_datasize_test.cdl compound_datasize_test2.cdl +compound_datasize_test.cdl compound_datasize_test2.cdl tst_gattenum.cdl # This shell script causes ncgen to build a classic and a 64-bit # offset file from a cdl file shipped with the distribution. @@ -37,7 +37,7 @@ endif # USE_NETCDF4 CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \ ncf199.nc c5.nc compound_datasize_test.nc compound_datasize_test2.nc \ - tst_compound_datasize_test.cdl tst_compound_datasize_test2.cdl tst_ncf199.cdl \ + tst_compound_datasize_test.cdl tst_compound_datasize_test2.cdl tst_ncf199.cdl tst_gattenum.nc \ tst_c0.cdl tst_c0_4.cdl tst_c0_4c.cdl tst_c0_64.cdl # These rules are used if someone wants to rebuild ncgenl.c or ncgeny.c diff --git a/ncgen/run_nc4_tests.sh b/ncgen/run_nc4_tests.sh index 0c5b06759..38f493fac 100755 --- a/ncgen/run_nc4_tests.sh +++ b/ncgen/run_nc4_tests.sh @@ -54,5 +54,8 @@ validateNC "compound_datasize_test" "compound_datasize_test" -k nc4 echo "*** github issue 323 test 2" validateNC "compound_datasize_test2" "compound_datasize_test2" -k nc4 +echo "*** Global Attribute with Enum type" +validateNC "tst_gattenum" "tst_gattenum" -k nc4 + echo "*** Test successful!" exit 0 diff --git a/ncgen/semantics.c b/ncgen/semantics.c index c2da4dba3..90403c22f 100644 --- a/ncgen/semantics.c +++ b/ncgen/semantics.c @@ -422,6 +422,11 @@ processeconstrefs(void) { unsigned long i; /* locate all the datalist and walk them recursively */ + for(i=0;idata != NULL && listlength(att->data) > 0) + processeconstrefsR(att->data); + } for(i=0;idata != NULL && listlength(att->data) > 0) diff --git a/ncgen/tst_gattenum.cdl b/ncgen/tst_gattenum.cdl new file mode 100644 index 000000000..47bf651c9 --- /dev/null +++ b/ncgen/tst_gattenum.cdl @@ -0,0 +1,8 @@ +netcdf tst_gattenum { +types: + ubyte enum Bradys {Mike = 0, Carol = 1, Greg = 2, Marsha = 3, Peter = 4, + Jan = 5, Bobby = 6, Whats-her-face = 7, Alice = 8} ; + +// global attributes: + Bradys :brady_attribute = Mike, Marsha, Alice; +}