Get fixture grammars building for library unit tests

This commit is contained in:
Max Brunsfeld 2019-01-10 15:23:31 -08:00
parent 0f2347b318
commit fab4673c14
7 changed files with 70 additions and 57 deletions

View file

@ -12,7 +12,7 @@ install:
- rustc -vV
- cargo -vV
- script\fetch-test-fixtures.cmd
- script\fetch-fixtures.cmd
test_script:
- cargo build

View file

@ -7,7 +7,7 @@ env:
- TREE_SITTER_TEST=1
before_install:
- ./script/fetch-test-fixtures.sh
- ./script/fetch-fixtures
branches:
only:

View file

@ -1,26 +1,67 @@
extern crate cc;
use std::env;
use std::path::PathBuf;
use std::path::{Path, PathBuf};
use std::fs;
fn main() {
let mut config = cc::Build::new();
let src_path: PathBuf = ["src"].iter().collect();
config
.define("UTF8PROC_STATIC", "")
.flag_if_supported("-std=c99")
.flag_if_supported("-Wno-unused-parameter")
.include("include")
.include("utf8proc")
.file(src_path.join("runtime.c"));
.file(Path::new("src").join("lib.c"))
.compile("tree-sitter");
if env::var("RUST_TREE_SITTER_TEST").is_ok() {
let parser_dir: PathBuf = ["fixtures", "tree-sitter-rust", "src"].iter().collect();
config
.file(parser_dir.join("parser.c"))
.file(parser_dir.join("scanner.c"));
if env::var("TREE_SITTER_TEST").is_ok() {
let mut parser_config = cc::Build::new();
parser_config
.opt_level(0)
.flag_if_supported("-Wno-unused-parameter");
let mut scanner_c_config = cc::Build::new();
scanner_c_config
.flag_if_supported("-std=c99")
.flag_if_supported("-Wno-unused-parameter");
let mut scanner_cxx_config = cc::Build::new();
scanner_cxx_config
.cpp(true)
.flag_if_supported("-Wno-unused-parameter");
let grammars_dir: PathBuf = ["..", "test", "fixtures", "grammars"].iter().collect();
for entry in fs::read_dir(&grammars_dir).expect("Failed to list grammar directory") {
let entry = entry.expect("Failed to load grammars directory entry");
if !entry.path().is_dir() {
continue;
}
let parser_dir_path = entry.path();
let parser_src_path = parser_dir_path.join("src");
let parser_c_path = parser_src_path.join("parser.c");
let scanner_c_path = parser_src_path.join("scanner.c");
let scanner_cc_path = parser_src_path.join("scanner.cc");
println!("cargo:rerun-if-changed={}", parser_c_path.to_str().unwrap());
parser_config
.include(&parser_src_path)
.file(&parser_c_path);
if scanner_cc_path.exists() {
println!("cargo:rerun-if-changed={}", scanner_cc_path.to_str().unwrap());
scanner_cxx_config
.include(&parser_src_path)
.file(&scanner_cc_path);
} else if scanner_c_path.exists() {
println!("cargo:rerun-if-changed={}", scanner_c_path.to_str().unwrap());
scanner_c_config
.include(&parser_src_path)
.file(&scanner_c_path);
}
}
parser_config.compile("fixture-parsers");
scanner_c_config.compile("fixture-scanners-c");
scanner_cxx_config.compile("fixture-scanners-cxx");
}
config.compile("tree-sitter-runtime");
}

View file

@ -21,14 +21,15 @@ fetch_grammar() {
)
}
fetch_grammar embedded-template master
fetch_grammar javascript master
fetch_grammar json master
fetch_grammar bash master
fetch_grammar c master
fetch_grammar cpp master
fetch_grammar python master
fetch_grammar embedded-template master
fetch_grammar go master
fetch_grammar ruby master
fetch_grammar typescript master
fetch_grammar bash master
fetch_grammar html master
fetch_grammar javascript master
fetch_grammar json master
fetch_grammar python master
fetch_grammar ruby master
fetch_grammar rust master
fetch_grammar typescript master

View file

@ -1,16 +1,17 @@
@echo off
call:fetch_grammar embedded-template master
call:fetch_grammar javascript master
call:fetch_grammar json master
call:fetch_grammar bash master
call:fetch_grammar c master
call:fetch_grammar cpp master
call:fetch_grammar python master
call:fetch_grammar embedded-template master
call:fetch_grammar go master
call:fetch_grammar ruby master
call:fetch_grammar typescript master
call:fetch_grammar bash master
call:fetch_grammar html master
call:fetch_grammar javascript master
call:fetch_grammar json master
call:fetch_grammar python master
call:fetch_grammar ruby master
call:fetch_grammar rust master
call:fetch_grammar typescript master
EXIT /B 0
:fetch_grammar

View file

@ -1,16 +0,0 @@
@Echo off
SETLOCAL
Set grammar_dir=fixtures\tree-sitter-rust
Set grammar_url=https://github.com/tree-sitter/tree-sitter-rust
@IF NOT EXIST %grammar_dir% (
git clone %grammar_url% %grammar_dir% --depth=1
)
pushd %grammar_dir%
git fetch origin master --depth=1
git reset --hard origin/master
popd
ENDLOCAL

View file

@ -1,14 +0,0 @@
#!/bin/bash
grammar_dir='fixtures/tree-sitter-rust'
grammar_url='https://github.com/tree-sitter/tree-sitter-rust'
if [ ! -d $grammar_dir ]; then
git clone $grammar_url $grammar_dir --depth=1
fi
(
cd $grammar_dir;
git fetch origin master --depth=1
git reset --hard origin/master;
)