graphql-idl-parser 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -1
- data/Rakefile +6 -4
- data/ext/graphql-idl-parser/graphql-idl-parser/Cargo.lock +295 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/Cargo.toml +16 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/LICENSE.txt +21 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/README.md +53 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/build.rs +5 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/Cargo.lock +305 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/Cargo.toml +18 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/README.md +48 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/example/example.c +33 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/includes/gql-idl-parser.h +138 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/src/lib.rs +128 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/src/types.rs +485 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-1d630313aa5d216c/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-1d630313aa5d216c/build_script_build-1d630313aa5d216c +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-3e27951e7158def5/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-3e27951e7158def5/build_script_build-3e27951e7158def5 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-481c4176d6a6472d/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-481c4176d6a6472d/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-5e9a4656cd081ee1/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/graphql-idl-parser-5e9a4656cd081ee1/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/kernel32-sys-2b7eb293aa6c1ae8/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/kernel32-sys-2b7eb293aa6c1ae8/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/kernel32-sys-da175f6bc66f228c/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/kernel32-sys-da175f6bc66f228c/build_script_build-da175f6bc66f228c +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/lalrpop-d0f0dc8a044bb86f/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/lalrpop-d0f0dc8a044bb86f/build_script_build-d0f0dc8a044bb86f +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/lalrpop-db9b482018d6c515/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/build/lalrpop-db9b482018d6c515/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libaho_corasick-07ac37ff1c5ebb39.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libascii_canvas-37ba58d788f6e28b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libatty-3d34ead0eff1f49c.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libbit_set-05034a00bed6372c.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libbit_vec-ba66b7b721a96204.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libbuild-d4f96a70b883038d.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libdiff-9cac472257fa481b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libdocopt-5b3087b1b6e5d091.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libeither-8157fecd348c1485.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libena-b40ce2cd268672c3.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libfixedbitset-c7f65ed08cebcf3b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libgraphql_idl_parser-38237266b2814db0.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libgraphql_idl_parser-85dc5bc4abe95968.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libgraphqlidlparser.dylib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libitertools-8d570d6c59d3b2d0.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libkernel32-fa4855bd85e0519b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/liblalrpop-8888f5942735b084.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/liblalrpop_intern-70b4cf4d149e3995.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/liblalrpop_snap-695e4827988eac78.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/liblalrpop_util-90bdd1a9fd691a70.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/liblazy_static-a6b1325db7ee41a1.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/liblibc-0d055c7503ac4180.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libmemchr-7e8d0bb06e3caae0.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libordermap-f92645c599568d9f.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libpetgraph-62c5b51f9db3f0c7.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libregex-5d259a9431f27ed9.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libregex_syntax-e6a16469e776d773.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/librustc_serialize-21d20a12dd90991b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libstrsim-8e26967d29bdf2e6.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libterm-189de8985c74cf03.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libthread_local-036458f1fbee14fb.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libunicode_xid-8adffabb9e6dd184.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libunreachable-bd47b36c4e87f432.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libutf8_ranges-220e9d44a3644657.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libvoid-d761da60d30362e9.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/deps/libwinapi-753252e15931e6fc.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/libgraphqlidlparser.d +1 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/target/release/libgraphqlidlparser.dylib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar.c +673 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar.h +161 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar/fixtures.h +54 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar/fs.h +341 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar/print.h +74 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar/sandbox.h +154 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/clar_test.h +19 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/enums.c +40 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/generate.py +243 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/helpers.c +60 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/helpers.h +6 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/input_objects.c +48 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/interfaces.c +41 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/main.c +35 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/objects.c +130 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/scalars.c +39 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/graphql-idl-parser-ffi/test/unions.c +38 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/script/compile +11 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/script/fmt +23 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/script/test +30 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/src/gqlidl.lalrpop +199 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/src/gqlidl.rs +29491 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/src/lib.rs +9 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/src/macros.rs +61 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/src/tests.rs +561 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/src/type_definition.rs +404 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-0ed64d9cad312f79/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-0ed64d9cad312f79/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-0fa24f7f5e35d20a/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-0fa24f7f5e35d20a/build_script_build-0fa24f7f5e35d20a +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-0fa24f7f5e35d20a/build_script_build-0fa24f7f5e35d20a.dSYM/Contents/Info.plist +20 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-0fa24f7f5e35d20a/build_script_build-0fa24f7f5e35d20a.dSYM/Contents/Resources/DWARF/build_script_build-0fa24f7f5e35d20a +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-57f7e3c3ef8471d2/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-57f7e3c3ef8471d2/build_script_build-57f7e3c3ef8471d2 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-57f7e3c3ef8471d2/build_script_build-57f7e3c3ef8471d2.dSYM/Contents/Info.plist +20 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-57f7e3c3ef8471d2/build_script_build-57f7e3c3ef8471d2.dSYM/Contents/Resources/DWARF/build_script_build-57f7e3c3ef8471d2 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-5e9a4656cd081ee1/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/graphql-idl-parser-5e9a4656cd081ee1/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/kernel32-sys-2b7eb293aa6c1ae8/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/kernel32-sys-2b7eb293aa6c1ae8/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/kernel32-sys-d2306aba19864163/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/kernel32-sys-d2306aba19864163/build_script_build-d2306aba19864163 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/kernel32-sys-d2306aba19864163/build_script_build-d2306aba19864163.dSYM/Contents/Info.plist +20 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/kernel32-sys-d2306aba19864163/build_script_build-d2306aba19864163.dSYM/Contents/Resources/DWARF/build_script_build-d2306aba19864163 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/lalrpop-4a05302baa5fb2a2/build-script-build +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/lalrpop-4a05302baa5fb2a2/build_script_build-4a05302baa5fb2a2 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/lalrpop-4a05302baa5fb2a2/build_script_build-4a05302baa5fb2a2.dSYM/Contents/Info.plist +20 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/lalrpop-4a05302baa5fb2a2/build_script_build-4a05302baa5fb2a2.dSYM/Contents/Resources/DWARF/build_script_build-4a05302baa5fb2a2 +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/lalrpop-db9b482018d6c515/output +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/build/lalrpop-db9b482018d6c515/stderr +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libaho_corasick-a9ec1f95080d1f6a.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libascii_canvas-92c3bf0cf98f6d67.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libatty-35b65e46cfc403bc.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libbit_set-d9484919f1726cf1.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libbit_vec-8716b059e7c4619b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libbuild-0b12b372edd4cd19.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libdiff-c81afd03f1d10610.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libdocopt-f02dfd6fea4878cc.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libeither-20b79fd67623dec7.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libena-e8706d9d37da725b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libfixedbitset-da616d0027237c90.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libgraphql_idl_parser-33a4c3bdcdc654b7.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libgraphql_idl_parser-d6636cf90a34aa47.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libitertools-34d50068529acf4d.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libkernel32-56b5a11a7716f7c7.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/liblalrpop-65f3c84608c05ce1.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/liblalrpop_intern-a3c97188386c0872.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/liblalrpop_snap-d6e467def27f0a55.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/liblalrpop_util-e59e6b2e2aec1b3e.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/liblazy_static-4518bdaa60b81936.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/liblibc-ab7be4fcfaa3a31b.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libmemchr-85dd561868acc188.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libordermap-4691b832eea88398.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libpetgraph-0220c5a13678d70e.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libregex-44e22d9874a5fb64.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libregex_syntax-490c2654111b5bf0.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/librustc_serialize-a7771718d4ee73a5.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libstrsim-038156debd12bd7a.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libterm-d12b955648e4f4b4.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libthread_local-84091b6b04cf1914.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libunicode_xid-89ce822c6e6dbe69.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libunreachable-654322b1fcb434b1.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libutf8_ranges-53f91d3b6e8885c9.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libvoid-181e881e54467554.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/deps/libwinapi-9c9d2aba65add76c.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/target/debug/libgraphql_idl_parser.rlib +0 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/enums.graphql +8 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/github.graphql +5115 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/input_objects.graphql +11 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/interfaces.graphql +5 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/objects.graphql +54 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/scalars.graphql +4 -0
- data/ext/graphql-idl-parser/graphql-idl-parser/test/unions.graphql +2 -0
- data/graphql-idl-parser.gemspec +8 -6
- data/lib/graphql-idl-parser/version.rb +1 -1
- data/test/graphql-idl-parser/enums_test.rb +20 -0
- data/test/graphql-idl-parser/graphql-idl-parser_test.rb +48 -0
- data/test/graphql-idl-parser/input_objects_test.rb +28 -0
- data/test/graphql-idl-parser/interfaces_test.rb +20 -0
- data/test/graphql-idl-parser/objects_test.rb +104 -0
- data/test/graphql-idl-parser/scalars_test.rb +19 -0
- data/test/graphql-idl-parser/unions_test.rb +18 -0
- data/test/test_helper.rb +12 -0
- metadata +194 -12
- data/.gitignore +0 -18
- data/.gitmodules +0 -4
- data/.rubocop.yml +0 -10
- data/.travis.yml +0 -28
- data/Gemfile +0 -4
- data/script/bootstrap +0 -11
- data/script/cibuild +0 -5
- data/script/update_submodules +0 -21
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
static void clar_print_init(int test_count, int suite_count, const char *suite_names)
|
3
|
+
{
|
4
|
+
(void)test_count;
|
5
|
+
printf("Loaded %d suites: %s\n", (int)suite_count, suite_names);
|
6
|
+
printf("Started\n");
|
7
|
+
}
|
8
|
+
|
9
|
+
static void clar_print_shutdown(int test_count, int suite_count, int error_count)
|
10
|
+
{
|
11
|
+
(void)test_count;
|
12
|
+
(void)suite_count;
|
13
|
+
(void)error_count;
|
14
|
+
|
15
|
+
printf("\n\n");
|
16
|
+
clar_report_errors();
|
17
|
+
}
|
18
|
+
|
19
|
+
static void clar_print_error(int num, const struct clar_error *error)
|
20
|
+
{
|
21
|
+
printf(" %d) Failure:\n", num);
|
22
|
+
|
23
|
+
printf("%s::%s [%s:%d]\n",
|
24
|
+
error->suite,
|
25
|
+
error->test,
|
26
|
+
error->file,
|
27
|
+
error->line_number);
|
28
|
+
|
29
|
+
printf(" %s\n", error->error_msg);
|
30
|
+
|
31
|
+
if (error->description != NULL) {
|
32
|
+
printf(" %s\n", error->description);
|
33
|
+
}
|
34
|
+
|
35
|
+
printf("\n");
|
36
|
+
fflush(stdout);
|
37
|
+
}
|
38
|
+
|
39
|
+
static void clar_print_ontest(const char *test_name, int test_number, enum cl_test_status status)
|
40
|
+
{
|
41
|
+
(void)test_name;
|
42
|
+
(void)test_number;
|
43
|
+
|
44
|
+
switch(status) {
|
45
|
+
case CL_TEST_OK:
|
46
|
+
printf(".");
|
47
|
+
break;
|
48
|
+
case CL_TEST_FAILURE:
|
49
|
+
printf("F");
|
50
|
+
break;
|
51
|
+
case CL_TEST_SKIP:
|
52
|
+
printf("S");
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
|
56
|
+
fflush(stdout);
|
57
|
+
}
|
58
|
+
|
59
|
+
static void clar_print_onsuite(const char *suite_name, int suite_index)
|
60
|
+
{
|
61
|
+
if (_clar.report_suite_names) {
|
62
|
+
printf("\n%s", suite_name);
|
63
|
+
}
|
64
|
+
|
65
|
+
(void)suite_index;
|
66
|
+
}
|
67
|
+
|
68
|
+
static void clar_print_onabort(const char *msg, ...)
|
69
|
+
{
|
70
|
+
va_list argp;
|
71
|
+
va_start(argp, msg);
|
72
|
+
vfprintf(stderr, msg, argp);
|
73
|
+
va_end(argp);
|
74
|
+
}
|
@@ -0,0 +1,154 @@
|
|
1
|
+
static char _clar_path[4096];
|
2
|
+
|
3
|
+
static int
|
4
|
+
is_valid_tmp_path(const char *path)
|
5
|
+
{
|
6
|
+
STAT_T st;
|
7
|
+
|
8
|
+
if (stat(path, &st) != 0) {
|
9
|
+
return 0;
|
10
|
+
}
|
11
|
+
|
12
|
+
if (!S_ISDIR(st.st_mode)) {
|
13
|
+
return 0;
|
14
|
+
}
|
15
|
+
|
16
|
+
return (access(path, W_OK) == 0);
|
17
|
+
}
|
18
|
+
|
19
|
+
static int
|
20
|
+
find_tmp_path(char *buffer, size_t length)
|
21
|
+
{
|
22
|
+
#ifndef _WIN32
|
23
|
+
static const size_t var_count = 5;
|
24
|
+
static const char *env_vars[] = {
|
25
|
+
"CLAR_TMP", "TMPDIR", "TMP", "TEMP", "USERPROFILE"
|
26
|
+
};
|
27
|
+
|
28
|
+
size_t i;
|
29
|
+
|
30
|
+
for (i = 0; i < var_count; ++i) {
|
31
|
+
const char *env = getenv(env_vars[i]);
|
32
|
+
if (!env) {
|
33
|
+
continue;
|
34
|
+
}
|
35
|
+
|
36
|
+
if (is_valid_tmp_path(env)) {
|
37
|
+
strncpy(buffer, env, length);
|
38
|
+
return 0;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
/* If the environment doesn't say anything, try to use /tmp */
|
43
|
+
if (is_valid_tmp_path("/tmp")) {
|
44
|
+
strncpy(buffer, "/tmp", length);
|
45
|
+
return 0;
|
46
|
+
}
|
47
|
+
|
48
|
+
#else
|
49
|
+
DWORD env_len = GetEnvironmentVariable("CLAR_TMP", buffer, (DWORD)length);
|
50
|
+
if (env_len > 0 && env_len < (DWORD)length) {
|
51
|
+
return 0;
|
52
|
+
}
|
53
|
+
|
54
|
+
if (GetTempPath((DWORD)length, buffer)) {
|
55
|
+
return 0;
|
56
|
+
}
|
57
|
+
#endif
|
58
|
+
|
59
|
+
/* This system doesn't like us, try to use the current directory */
|
60
|
+
if (is_valid_tmp_path(".")) {
|
61
|
+
strncpy(buffer, ".", length);
|
62
|
+
return 0;
|
63
|
+
}
|
64
|
+
|
65
|
+
return -1;
|
66
|
+
}
|
67
|
+
|
68
|
+
static void clar_unsandbox(void)
|
69
|
+
{
|
70
|
+
if (_clar_path[0] == '\0') {
|
71
|
+
return;
|
72
|
+
}
|
73
|
+
|
74
|
+
cl_must_pass(chdir(".."));
|
75
|
+
|
76
|
+
fs_rm(_clar_path);
|
77
|
+
}
|
78
|
+
|
79
|
+
static int build_sandbox_path(void)
|
80
|
+
{
|
81
|
+
#ifdef CLAR_TMPDIR
|
82
|
+
const char path_tail[] = CLAR_TMPDIR "_XXXXXX";
|
83
|
+
#else
|
84
|
+
const char path_tail[] = "clar_tmp_XXXXXX";
|
85
|
+
#endif
|
86
|
+
|
87
|
+
size_t len;
|
88
|
+
|
89
|
+
if (find_tmp_path(_clar_path, sizeof(_clar_path)) < 0) {
|
90
|
+
return -1;
|
91
|
+
}
|
92
|
+
|
93
|
+
len = strlen(_clar_path);
|
94
|
+
|
95
|
+
#ifdef _WIN32
|
96
|
+
{ /* normalize path to POSIX forward slashes */
|
97
|
+
size_t i;
|
98
|
+
for (i = 0; i < len; ++i) {
|
99
|
+
if (_clar_path[i] == '\\') {
|
100
|
+
_clar_path[i] = '/';
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
#endif
|
105
|
+
|
106
|
+
if (_clar_path[len - 1] != '/') {
|
107
|
+
_clar_path[len++] = '/';
|
108
|
+
}
|
109
|
+
|
110
|
+
strncpy(_clar_path + len, path_tail, sizeof(_clar_path) - len);
|
111
|
+
|
112
|
+
#if defined(__MINGW32__)
|
113
|
+
if (_mktemp(_clar_path) == NULL) {
|
114
|
+
return -1;
|
115
|
+
}
|
116
|
+
|
117
|
+
if (mkdir(_clar_path, 0700) != 0) {
|
118
|
+
return -1;
|
119
|
+
}
|
120
|
+
#elif defined(_WIN32)
|
121
|
+
if (_mktemp_s(_clar_path, sizeof(_clar_path)) != 0) {
|
122
|
+
return -1;
|
123
|
+
}
|
124
|
+
|
125
|
+
if (mkdir(_clar_path, 0700) != 0) {
|
126
|
+
return -1;
|
127
|
+
}
|
128
|
+
#else
|
129
|
+
if (mkdtemp(_clar_path) == NULL) {
|
130
|
+
return -1;
|
131
|
+
}
|
132
|
+
#endif
|
133
|
+
|
134
|
+
return 0;
|
135
|
+
}
|
136
|
+
|
137
|
+
static int clar_sandbox(void)
|
138
|
+
{
|
139
|
+
if (_clar_path[0] == '\0' && build_sandbox_path() < 0) {
|
140
|
+
return -1;
|
141
|
+
}
|
142
|
+
|
143
|
+
if (chdir(_clar_path) != 0) {
|
144
|
+
return -1;
|
145
|
+
}
|
146
|
+
|
147
|
+
return 0;
|
148
|
+
}
|
149
|
+
|
150
|
+
const char *clar_sandbox_path(void)
|
151
|
+
{
|
152
|
+
return _clar_path;
|
153
|
+
}
|
154
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) Vicent Marti. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of clar, distributed under the ISC license.
|
5
|
+
* For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
#ifndef __CLAR_TEST__
|
8
|
+
#define __CLAR_TEST__
|
9
|
+
|
10
|
+
/* Import the standard clar helper functions */
|
11
|
+
#include "clar.h"
|
12
|
+
|
13
|
+
/* Your custom shared includes / defines here */
|
14
|
+
extern int global_test_counter;
|
15
|
+
|
16
|
+
#include "helpers.h"
|
17
|
+
#include "gql-idl-parser.h"
|
18
|
+
|
19
|
+
#endif
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#include "clar.h"
|
2
|
+
#include "clar_test.h"
|
3
|
+
#include <stdio.h>
|
4
|
+
#include <string.h>
|
5
|
+
|
6
|
+
static char *fixture;
|
7
|
+
|
8
|
+
void test_enums__initialize(void)
|
9
|
+
{
|
10
|
+
global_test_counter++;
|
11
|
+
}
|
12
|
+
|
13
|
+
void test_enums__cleanup(void)
|
14
|
+
{
|
15
|
+
if (fixture != NULL) {
|
16
|
+
free(fixture);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
void test_enums__inline(void)
|
21
|
+
{
|
22
|
+
fixture = read_fixture("enums.graphql");
|
23
|
+
|
24
|
+
GraphQLTypes* types = NULL;
|
25
|
+
size_t types_len = 0;
|
26
|
+
uint8_t err;
|
27
|
+
|
28
|
+
err = gqlidl_parse_schema(fixture, &types, &types_len);
|
29
|
+
|
30
|
+
cl_assert_equal_i(err, 0);
|
31
|
+
|
32
|
+
cl_assert_equal_s(types[0].typename, "enum");
|
33
|
+
cl_assert_equal_s("ProjectState", types[0].enum_type.name);
|
34
|
+
cl_assert_equal_s("State of the project; either 'open' or 'closed'", types[0].enum_type.description);
|
35
|
+
cl_assert_equal_i(2, types[0].enum_type.values.length);
|
36
|
+
cl_assert_equal_s("CLOSED", types[0].enum_type.values.data[0].name);
|
37
|
+
cl_assert_equal_s("The project is closed.", types[0].enum_type.values.data[0].description);
|
38
|
+
cl_assert_equal_s("OPEN", types[0].enum_type.values.data[1].name);
|
39
|
+
cl_assert_equal_s("The project is open.", types[0].enum_type.values.data[1].description);
|
40
|
+
}
|
@@ -0,0 +1,243 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
#
|
3
|
+
# Copyright (c) Vicent Marti. All rights reserved.
|
4
|
+
#
|
5
|
+
# This file is part of clar, distributed under the ISC license.
|
6
|
+
# For full terms see the included COPYING file.
|
7
|
+
#
|
8
|
+
|
9
|
+
from __future__ import with_statement
|
10
|
+
from string import Template
|
11
|
+
import re, fnmatch, os, codecs, pickle
|
12
|
+
|
13
|
+
class Module(object):
|
14
|
+
class Template(object):
|
15
|
+
def __init__(self, module):
|
16
|
+
self.module = module
|
17
|
+
|
18
|
+
def _render_callback(self, cb):
|
19
|
+
if not cb:
|
20
|
+
return ' { NULL, NULL }'
|
21
|
+
return ' { "%s", &%s }' % (cb['short_name'], cb['symbol'])
|
22
|
+
|
23
|
+
class DeclarationTemplate(Template):
|
24
|
+
def render(self):
|
25
|
+
out = "\n".join("extern %s;" % cb['declaration'] for cb in self.module.callbacks) + "\n"
|
26
|
+
|
27
|
+
if self.module.initialize:
|
28
|
+
out += "extern %s;\n" % self.module.initialize['declaration']
|
29
|
+
|
30
|
+
if self.module.cleanup:
|
31
|
+
out += "extern %s;\n" % self.module.cleanup['declaration']
|
32
|
+
|
33
|
+
return out
|
34
|
+
|
35
|
+
class CallbacksTemplate(Template):
|
36
|
+
def render(self):
|
37
|
+
out = "static const struct clar_func _clar_cb_%s[] = {\n" % self.module.name
|
38
|
+
out += ",\n".join(self._render_callback(cb) for cb in self.module.callbacks)
|
39
|
+
out += "\n};\n"
|
40
|
+
return out
|
41
|
+
|
42
|
+
class InfoTemplate(Template):
|
43
|
+
def render(self):
|
44
|
+
return Template(
|
45
|
+
r"""
|
46
|
+
{
|
47
|
+
"${clean_name}",
|
48
|
+
${initialize},
|
49
|
+
${cleanup},
|
50
|
+
${cb_ptr}, ${cb_count}, ${enabled}
|
51
|
+
}"""
|
52
|
+
).substitute(
|
53
|
+
clean_name = self.module.clean_name(),
|
54
|
+
initialize = self._render_callback(self.module.initialize),
|
55
|
+
cleanup = self._render_callback(self.module.cleanup),
|
56
|
+
cb_ptr = "_clar_cb_%s" % self.module.name,
|
57
|
+
cb_count = len(self.module.callbacks),
|
58
|
+
enabled = int(self.module.enabled)
|
59
|
+
)
|
60
|
+
|
61
|
+
def __init__(self, name):
|
62
|
+
self.name = name
|
63
|
+
|
64
|
+
self.mtime = 0
|
65
|
+
self.enabled = True
|
66
|
+
self.modified = False
|
67
|
+
|
68
|
+
def clean_name(self):
|
69
|
+
return self.name.replace("_", "::")
|
70
|
+
|
71
|
+
def _skip_comments(self, text):
|
72
|
+
SKIP_COMMENTS_REGEX = re.compile(
|
73
|
+
r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
|
74
|
+
re.DOTALL | re.MULTILINE)
|
75
|
+
|
76
|
+
def _replacer(match):
|
77
|
+
s = match.group(0)
|
78
|
+
return "" if s.startswith('/') else s
|
79
|
+
|
80
|
+
return re.sub(SKIP_COMMENTS_REGEX, _replacer, text)
|
81
|
+
|
82
|
+
def parse(self, contents):
|
83
|
+
TEST_FUNC_REGEX = r"^(void\s+(test_%s__(\w+))\s*\(\s*void\s*\))\s*\{"
|
84
|
+
|
85
|
+
contents = self._skip_comments(contents)
|
86
|
+
regex = re.compile(TEST_FUNC_REGEX % self.name, re.MULTILINE)
|
87
|
+
|
88
|
+
self.callbacks = []
|
89
|
+
self.initialize = None
|
90
|
+
self.cleanup = None
|
91
|
+
|
92
|
+
for (declaration, symbol, short_name) in regex.findall(contents):
|
93
|
+
data = {
|
94
|
+
"short_name" : short_name,
|
95
|
+
"declaration" : declaration,
|
96
|
+
"symbol" : symbol
|
97
|
+
}
|
98
|
+
|
99
|
+
if short_name == 'initialize':
|
100
|
+
self.initialize = data
|
101
|
+
elif short_name == 'cleanup':
|
102
|
+
self.cleanup = data
|
103
|
+
else:
|
104
|
+
self.callbacks.append(data)
|
105
|
+
|
106
|
+
return self.callbacks != []
|
107
|
+
|
108
|
+
def refresh(self, path):
|
109
|
+
self.modified = False
|
110
|
+
|
111
|
+
try:
|
112
|
+
st = os.stat(path)
|
113
|
+
|
114
|
+
# Not modified
|
115
|
+
if st.st_mtime == self.mtime:
|
116
|
+
return True
|
117
|
+
|
118
|
+
self.modified = True
|
119
|
+
self.mtime = st.st_mtime
|
120
|
+
|
121
|
+
with codecs.open(path, encoding='utf-8') as fp:
|
122
|
+
raw_content = fp.read()
|
123
|
+
|
124
|
+
except IOError:
|
125
|
+
return False
|
126
|
+
|
127
|
+
return self.parse(raw_content)
|
128
|
+
|
129
|
+
class TestSuite(object):
|
130
|
+
|
131
|
+
def __init__(self, path):
|
132
|
+
self.path = path
|
133
|
+
|
134
|
+
def should_generate(self, path):
|
135
|
+
if not os.path.isfile(path):
|
136
|
+
return True
|
137
|
+
|
138
|
+
if any(module.modified for module in self.modules.values()):
|
139
|
+
return True
|
140
|
+
|
141
|
+
return False
|
142
|
+
|
143
|
+
def find_modules(self):
|
144
|
+
modules = []
|
145
|
+
for root, _, files in os.walk(self.path):
|
146
|
+
module_root = root[len(self.path):]
|
147
|
+
module_root = [c for c in module_root.split(os.sep) if c]
|
148
|
+
|
149
|
+
tests_in_module = fnmatch.filter(files, "*.c")
|
150
|
+
|
151
|
+
for test_file in tests_in_module:
|
152
|
+
full_path = os.path.join(root, test_file)
|
153
|
+
module_name = "_".join(module_root + [test_file[:-2]]).replace("-", "_")
|
154
|
+
|
155
|
+
modules.append((full_path, module_name))
|
156
|
+
|
157
|
+
return modules
|
158
|
+
|
159
|
+
def load_cache(self):
|
160
|
+
path = os.path.join(self.path, '.clarcache')
|
161
|
+
cache = {}
|
162
|
+
|
163
|
+
try:
|
164
|
+
fp = open(path, 'rb')
|
165
|
+
cache = pickle.load(fp)
|
166
|
+
fp.close()
|
167
|
+
except (IOError, ValueError):
|
168
|
+
pass
|
169
|
+
|
170
|
+
return cache
|
171
|
+
|
172
|
+
def save_cache(self):
|
173
|
+
path = os.path.join(self.path, '.clarcache')
|
174
|
+
with open(path, 'wb') as cache:
|
175
|
+
pickle.dump(self.modules, cache)
|
176
|
+
|
177
|
+
def load(self, force = False):
|
178
|
+
module_data = self.find_modules()
|
179
|
+
self.modules = {} if force else self.load_cache()
|
180
|
+
|
181
|
+
for path, name in module_data:
|
182
|
+
if name not in self.modules:
|
183
|
+
self.modules[name] = Module(name)
|
184
|
+
|
185
|
+
if not self.modules[name].refresh(path):
|
186
|
+
del self.modules[name]
|
187
|
+
|
188
|
+
def disable(self, excluded):
|
189
|
+
for exclude in excluded:
|
190
|
+
for module in self.modules.values():
|
191
|
+
name = module.clean_name()
|
192
|
+
if name.startswith(exclude):
|
193
|
+
module.enabled = False
|
194
|
+
module.modified = True
|
195
|
+
|
196
|
+
def suite_count(self):
|
197
|
+
return len(self.modules)
|
198
|
+
|
199
|
+
def callback_count(self):
|
200
|
+
return sum(len(module.callbacks) for module in self.modules.values())
|
201
|
+
|
202
|
+
def write(self):
|
203
|
+
output = os.path.join(self.path, 'clar.suite')
|
204
|
+
|
205
|
+
if not self.should_generate(output):
|
206
|
+
return False
|
207
|
+
|
208
|
+
with open(output, 'w') as data:
|
209
|
+
for module in self.modules.values():
|
210
|
+
t = Module.DeclarationTemplate(module)
|
211
|
+
data.write(t.render())
|
212
|
+
|
213
|
+
for module in self.modules.values():
|
214
|
+
t = Module.CallbacksTemplate(module)
|
215
|
+
data.write(t.render())
|
216
|
+
|
217
|
+
suites = "static struct clar_suite _clar_suites[] = {" + ','.join(
|
218
|
+
Module.InfoTemplate(module).render() for module in sorted(self.modules.values(), key=lambda module: module.name)
|
219
|
+
) + "\n};\n"
|
220
|
+
|
221
|
+
data.write(suites)
|
222
|
+
|
223
|
+
data.write("static const size_t _clar_suite_count = %d;\n" % self.suite_count())
|
224
|
+
data.write("static const size_t _clar_callback_count = %d;\n" % self.callback_count())
|
225
|
+
|
226
|
+
self.save_cache()
|
227
|
+
return True
|
228
|
+
|
229
|
+
if __name__ == '__main__':
|
230
|
+
from optparse import OptionParser
|
231
|
+
|
232
|
+
parser = OptionParser()
|
233
|
+
parser.add_option('-f', '--force', action="store_true", dest='force', default=False)
|
234
|
+
parser.add_option('-x', '--exclude', dest='excluded', action='append', default=[])
|
235
|
+
|
236
|
+
options, args = parser.parse_args()
|
237
|
+
|
238
|
+
for path in args or ['.']:
|
239
|
+
suite = TestSuite(path)
|
240
|
+
suite.load(options.force)
|
241
|
+
suite.disable(options.excluded)
|
242
|
+
if suite.write():
|
243
|
+
print("Written `clar.suite` (%d tests in %d suites)" % (suite.callback_count(), suite.suite_count()))
|