Merge pull request #662 from diml/improve-tests

Simplify blackbox tests
This commit is contained in:
Rudi Grinberg 2018-04-03 12:21:17 +08:00 committed by GitHub
commit 126c91fcd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
65 changed files with 443 additions and 419 deletions

View File

@ -80,6 +80,7 @@ module Main = struct
?filter_out_optional_stanzas_with_missing_deps
?x:common.x
~ignore_promoted_rules:common.ignore_promoted_rules
~capture_outputs:common.capture_outputs
()
end
@ -217,7 +218,11 @@ let common =
let root, to_cwd =
match root with
| Some dn -> (dn, [])
| None -> find_root ()
| None ->
if Config.inside_dune then
(".", [])
else
find_root ()
in
let orig_args =
List.concat
@ -491,8 +496,9 @@ let installed_libraries =
let doc = "Print out libraries installed on the system." in
let go common na =
set_common common ~targets:[];
let env = Main.setup_env ~capture_outputs:common.capture_outputs in
Scheduler.go ~log:(Log.create common) ~common
(Context.create (Default [Native]) >>= fun ctxs ->
(Context.create (Default [Native]) ~env >>= fun ctxs ->
let ctx = List.hd ctxs in
let findlib = ctx.findlib in
if na then begin
@ -996,7 +1002,8 @@ let install_uninstall ~what =
>>= fun libdir ->
Fiber.parallel_iter install_files ~f:(fun path ->
let purpose = Process.Build_job install_files in
Process.run ~purpose Strict (Path.to_string opam_installer)
Process.run ~purpose ~env:setup.env Strict
(Path.to_string opam_installer)
([ sprintf "-%c" what.[0]
; Path.to_string path
; "--prefix"

View File

@ -891,7 +891,7 @@ and exec_list l ~ectx ~dir ~env ~stdout_to ~stderr_to =
let exec ~targets ~context t =
let env =
match (context : Context.t option) with
| None -> Env.initial ()
| None -> Env.initial
| Some c -> c.env
in
let targets = Path.Set.to_list targets in

View File

@ -10,9 +10,9 @@ let parse_path ?(sep=path_sep) s =
List.map (String.split s ~on:sep) ~f:Path.absolute
let path =
match Sys.getenv "PATH" with
| exception Not_found -> []
| s -> parse_path s
match Env.get Env.initial "PATH" with
| None -> []
| Some s -> parse_path s
let exe = if Sys.win32 then ".exe" else ""

View File

@ -29,10 +29,10 @@ let colorize =
let stderr_supports_colors = lazy(
not Sys.win32 &&
Unix.(isatty stderr) &&
match Sys.getenv "TERM" with
| exception Not_found -> false
| "dumb" -> false
| _ -> true
match Env.get Env.initial "TERM" with
| None -> false
| Some "dumb" -> false
| Some _ -> true
)
let strip_colors_for_stderr s =
@ -45,17 +45,15 @@ let strip_colors_for_stderr s =
tools will disable colors. Since we support colors in the output of
commands, we force it via specific environment variables if stderr
supports colors. *)
let setup_env_for_colors = lazy(
if !Clflags.capture_outputs && Lazy.force stderr_supports_colors then begin
let set var value =
match Sys.getenv var with
| exception Not_found -> Unix.putenv var value
| (_ : string) -> ()
in
set "OPAMCOLOR" "always";
set "OCAML_COLOR" "always";
end
)
let setup_env_for_colors env =
let set env var value =
Env.update env ~var ~f:(function
| None -> Some value
| Some s -> Some s)
in
let env = set env "OPAMCOLOR" "always" in
let env = set env "OCAML_COLOR" "always" in
env
module Style = struct
open Ansi_color.Style

View File

@ -3,7 +3,10 @@ open Stdune
val colorize : key:string -> string -> string
val stderr_supports_colors : bool Lazy.t
val setup_env_for_colors : unit Lazy.t
(** [Env.initial] extended with variables to force a few tools to
print colors *)
val setup_env_for_colors : Env.t -> Env.t
(** Strip colors in [not (Lazy.force stderr_supports_colors)] *)
val strip_colors_for_stderr : string -> string

View File

@ -19,6 +19,9 @@ let dev_null = Path.of_string (if Sys.win32 then "nul" else "/dev/null")
let jbuilder_keep_fname = ".jbuilder-keep"
let inside_emacs = Option.is_some (Env.get Env.initial "INSIDE_EMACS")
let inside_dune = Option.is_some (Env.get Env.initial "INSIDE_DUNE")
open Sexp.Of_sexp
module Display = struct
@ -61,8 +64,8 @@ let merge t (partial : Partial.t) =
}
let default =
{ display = Progress
; concurrency = 4
{ display = if inside_dune then Quiet else Progress
; concurrency = if inside_dune then 1 else 4
}
let t =
@ -86,11 +89,6 @@ let load_user_config_file () =
else
default
let inside_emacs =
match Sys.getenv "INSIDE_EMACS" with
| (_ : string) -> true
| exception Not_found -> false
let adapt_display config ~output_is_a_tty =
if config.display = Progress &&
not output_is_a_tty &&

View File

@ -18,6 +18,9 @@ val jbuilder_keep_fname : string
(** Are we running inside an emacs shell? *)
val inside_emacs : bool
(** Are we running insinde Dune? *)
val inside_dune : bool
(** Jbuilder configuration *)
module Display : sig

View File

@ -91,7 +91,7 @@ let sexp_of_t t =
; "ocamlopt", option path t.ocamlopt
; "ocamldep", path t.ocamldep
; "ocamlmklib", path t.ocamlmklib
; "env", Env.sexp_of_t (Env.diff t.env (Env.initial ()))
; "env", Env.sexp_of_t (Env.diff t.env Env.initial)
; "findlib_path", list path (Findlib.path t.findlib)
; "arch_sixtyfour", bool t.arch_sixtyfour
; "natdynlink_supported", bool t.natdynlink_supported
@ -143,12 +143,13 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () =
match which "ocamlfind" with
| None -> prog_not_found_in_path "ocamlfind"
| Some fn ->
(* When OCAMLFIND_CONF is set, "ocamlfind printconf" does print the contents of the
variable, but "ocamlfind printconf conf" still prints the configuration file set
at the configuration time of ocamlfind, sigh... *)
match Sys.getenv "OCAMLFIND_CONF" with
| s -> Fiber.return (Path.absolute s)
| exception Not_found ->
(* When OCAMLFIND_CONF is set, "ocamlfind printconf" does print
the contents of the variable, but "ocamlfind printconf conf"
still prints the configuration file set at the configuration
time of ocamlfind, sigh... *)
match Env.get env "OCAMLFIND_CONF" with
| Some s -> Fiber.return (Path.absolute s)
| None ->
Process.run_capture_line ~env Strict
(Path.to_string fn) ["printconf"; "conf"]
>>| Path.absolute)
@ -208,7 +209,7 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () =
context *)
(* CR-someday diml: maybe we should actually clear OCAMLPATH
in other build contexts *)
match Env.get env var, Env.get (Env.initial ()) var with
match Env.get env var, Env.get Env.initial var with
| None , None -> None
| Some s, None -> Some s
| None , Some _ -> None
@ -399,20 +400,20 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () =
let opam_config_var t var = opam_config_var ~env:t.env ~cache:t.opam_var_cache var
let default ?(merlin=true) ~targets () =
create ~kind:Default ~path:Bin.path ~env:(Env.initial ())
~name:"default" ~merlin ~targets ()
let default ?(merlin=true) ~env ~targets () =
create ~kind:Default ~path:Bin.path ~env ~name:"default" ~merlin ~targets ()
let create_for_opam ?root ~targets ~switch ~name ?(merlin=false) () =
let create_for_opam ?root ~env ~targets ~switch ~name ?(merlin=false) () =
match Bin.opam with
| None -> Utils.program_not_found "opam"
| Some fn ->
(match root with
| Some root -> Fiber.return root
| None ->
Process.run_capture_line Strict (Path.to_string fn) ["config"; "var"; "root"])
Process.run_capture_line Strict ~env
(Path.to_string fn) ["config"; "var"; "root"])
>>= fun root ->
Process.run_capture Strict (Path.to_string fn)
Process.run_capture ~env Strict (Path.to_string fn)
["config"; "env"; "--root"; root; "--switch"; switch; "--sexp"]
>>= fun s ->
let vars =
@ -439,14 +440,14 @@ let create_for_opam ?root ~targets ~switch ~name ?(merlin=false) () =
| None -> Bin.path
| Some s -> Bin.parse_path s
in
let env = Env.extend (Env.initial ()) ~vars in
let env = Env.extend env ~vars in
create ~kind:(Opam { root; switch }) ~targets ~path ~env ~name ~merlin ()
let create ?merlin def =
let create ?merlin ~env def =
match (def : Workspace.Context.t) with
| Default targets -> default ~targets ?merlin ()
| Default targets -> default ~env ~targets ?merlin ()
| Opam { name; switch; root; targets; _ } ->
create_for_opam ?root ~switch ~name ?merlin ~targets ()
create_for_opam ?root ~env ~switch ~name ?merlin ~targets ()
let which t s = which ~cache:t.which_cache ~path:t.path s

View File

@ -120,6 +120,7 @@ val compare : t -> t -> Ordering.t
val create
: ?merlin:bool
-> env:Env.t
-> Workspace.Context.t
-> t list Fiber.t

View File

@ -49,14 +49,7 @@ let of_unix arr =
| [] -> assert false
| x::_ -> x)
let initial =
let i =
lazy (
make (Lazy.force Colors.setup_env_for_colors;
Unix.environment ()
|> of_unix)
) in
fun () -> Lazy.force i
let initial = make (of_unix (Unix.environment ()))
let add t ~var ~value =
make (Map.add t.vars var value)

View File

@ -9,7 +9,8 @@ type t
module Map : Map.S with type key = Var.t
val initial : unit -> t
(** The environment when the process started *)
val initial : t
val to_unix : t -> string array

View File

@ -17,9 +17,9 @@ let create ?(display=Config.default.display) () =
let oc = Io.open_out "_build/log" in
Printf.fprintf oc "# %s\n# OCAMLPARAM: %s\n%!"
(String.concat (List.map (Array.to_list Sys.argv) ~f:quote_for_shell) ~sep:" ")
(match Sys.getenv "OCAMLPARAM" with
| s -> Printf.sprintf "%S" s
| exception Not_found -> "unset");
(match Env.get Env.initial "OCAMLPARAM" with
| Some s -> Printf.sprintf "%S" s
| None -> "unset");
let buf = Buffer.create 1024 in
let ppf = Format.formatter_of_buffer buf in
Some { oc; buf; ppf; display }

View File

@ -9,6 +9,7 @@ type setup =
; contexts : Context.t list
; packages : Package.t Package.Name.Map.t
; file_tree : File_tree.t
; env : Env.t
}
let package_install_file { packages; _ } pkg =
@ -18,6 +19,15 @@ let package_install_file { packages; _ } pkg =
Ok (Path.relative p.path
(Utils.install_file ~package:p.name ~findlib_toolchain:None))
let setup_env ~capture_outputs =
let env =
if capture_outputs || not (Lazy.force Colors.stderr_supports_colors) then
Env.initial
else
Colors.setup_env_for_colors Env.initial
in
Env.add env ~var:"INSIDE_DUNE" ~value:"1"
let setup ?(log=Log.no_log)
?filter_out_optional_stanzas_with_missing_deps
?workspace ?(workspace_file="jbuild-workspace")
@ -25,8 +35,12 @@ let setup ?(log=Log.no_log)
?extra_ignored_subtrees
?x
?ignore_promoted_rules
?(capture_outputs=true)
() =
let conf = Jbuild_load.load ?extra_ignored_subtrees ?ignore_promoted_rules () in
let env = setup_env ~capture_outputs in
let conf =
Jbuild_load.load ?extra_ignored_subtrees ?ignore_promoted_rules ()
in
Option.iter only_packages ~f:(fun set ->
Package.Name.Set.iter set ~f:(fun pkg ->
if not (Package.Name.Map.mem conf.packages pkg) then
@ -55,7 +69,7 @@ let setup ?(log=Log.no_log)
Fiber.parallel_map workspace.contexts ~f:(fun ctx_def ->
let name = Workspace.Context.name ctx_def in
Context.create ctx_def ~merlin:(workspace.merlin_context = Some name))
Context.create ctx_def ~env ~merlin:(workspace.merlin_context = Some name))
>>= fun contexts ->
let contexts = List.concat contexts in
List.iter contexts ~f:(fun (ctx : Context.t) ->
@ -88,6 +102,7 @@ let setup ?(log=Log.no_log)
; contexts
; packages = conf.packages
; file_tree = conf.file_tree
; env
}
let find_context_exn t ~name =

View File

@ -8,6 +8,7 @@ type setup =
; contexts : Context.t list
; packages : Package.t Package.Name.Map.t
; file_tree : File_tree.t
; env : Env.t
}
(* Returns [Error ()] if [pkg] is unknown *)
@ -23,6 +24,7 @@ val setup
-> ?only_packages:Package.Name.Set.t
-> ?x:string
-> ?ignore_promoted_rules:bool
-> ?capture_outputs:bool
-> unit
-> setup Fiber.t
val external_lib_deps
@ -33,7 +35,11 @@ val external_lib_deps
val find_context_exn : setup -> name:string -> Context.t
(** Setup the environment *)
val setup_env : capture_outputs:bool -> Env.t
(**/**)
(* This is used to bootstrap jbuilder itself. It is not part of the public API. *)
(* This is used to bootstrap jbuilder itself. It is not part of the
public API. *)
val bootstrap : unit -> unit

View File

@ -24,7 +24,7 @@ let print path1 path2 =
| None -> fallback ()
| Some prog ->
Format.eprintf "%a@?" Loc.print loc;
Process.run ~dir Strict (Path.to_string prog)
Process.run ~dir ~env:Env.initial Strict (Path.to_string prog)
["-u"; file1; file2]
>>= fun () ->
fallback ()
@ -35,7 +35,7 @@ let print path1 path2 =
let cmd =
sprintf "%s %s %s" cmd (quote_for_shell file1) (quote_for_shell file2)
in
Process.run ~dir Strict (Path.to_string sh) [arg; cmd]
Process.run ~dir ~env:Env.initial Strict (Path.to_string sh) [arg; cmd]
>>= fun () ->
die "command reported no differences: %s"
(if dir = "." then
@ -46,7 +46,7 @@ let print path1 path2 =
match Bin.which "patdiff" with
| None -> normal_diff ()
| Some prog ->
Process.run ~dir Strict (Path.to_string prog)
Process.run ~dir ~env:Env.initial Strict (Path.to_string prog)
[ "-keep-whitespace"
; "-location-style"; "omake"
; if Lazy.force Colors.stderr_supports_colors then

View File

@ -209,7 +209,7 @@ let gen_id =
let next = ref (-1) in
fun () -> incr next; !next
let run_internal ?dir ?(stdout_to=Terminal) ?(stderr_to=Terminal) ?env ~purpose
let run_internal ?dir ?(stdout_to=Terminal) ?(stderr_to=Terminal) ~env ~purpose
fail_mode prog args =
Scheduler.wait_for_available_job ()
>>= fun scheduler ->
@ -238,13 +238,8 @@ let run_internal ?dir ?(stdout_to=Terminal) ?(stderr_to=Terminal) ?env ~purpose
let stdout, close_stdout = get_std_output stdout_to ~default:stdout_fd in
let stderr, close_stderr = get_std_output stderr_to ~default:stderr_fd in
let run () =
match env with
| None ->
Unix.create_process prog argv
Unix.stdin stdout stderr
| Some env ->
Unix.create_process_env prog argv (Env.to_unix env)
Unix.stdin stdout stderr
Unix.create_process_env prog argv (Env.to_unix env)
Unix.stdin stdout stderr
in
let pid =
match dir with
@ -319,16 +314,16 @@ let run_internal ?dir ?(stdout_to=Terminal) ?(stderr_to=Terminal) ?env ~purpose
output
| WSTOPPED _ -> assert false
let run ?dir ?stdout_to ?stderr_to ?env ?(purpose=Internal_job) fail_mode
let run ?dir ?stdout_to ?stderr_to ~env ?(purpose=Internal_job) fail_mode
prog args =
map_result fail_mode
(run_internal ?dir ?stdout_to ?stderr_to ?env ~purpose fail_mode prog args)
(run_internal ?dir ?stdout_to ?stderr_to ~env ~purpose fail_mode prog args)
~f:ignore
let run_capture_gen ?dir ?env ?(purpose=Internal_job) fail_mode prog args ~f =
let run_capture_gen ?dir ~env ?(purpose=Internal_job) fail_mode prog args ~f =
let fn = Temp.create "jbuild" ".output" in
map_result fail_mode
(run_internal ?dir ~stdout_to:(File fn) ?env ~purpose fail_mode prog args)
(run_internal ?dir ~stdout_to:(File fn) ~env ~purpose fail_mode prog args)
~f:(fun () ->
let x = f fn in
Temp.destroy fn;
@ -337,8 +332,8 @@ let run_capture_gen ?dir ?env ?(purpose=Internal_job) fail_mode prog args ~f =
let run_capture = run_capture_gen ~f:Io.read_file
let run_capture_lines = run_capture_gen ~f:Io.lines_of_file
let run_capture_line ?dir ?env ?(purpose=Internal_job) fail_mode prog args =
run_capture_gen ?dir ?env ~purpose fail_mode prog args ~f:(fun fn ->
let run_capture_line ?dir ~env ?(purpose=Internal_job) fail_mode prog args =
run_capture_gen ?dir ~env ~purpose fail_mode prog args ~f:(fun fn ->
match Io.lines_of_file fn with
| [x] -> x
| l ->

View File

@ -41,7 +41,7 @@ val run
: ?dir:string
-> ?stdout_to:std_output_to
-> ?stderr_to:std_output_to
-> ?env:Env.t
-> env:Env.t
-> ?purpose:purpose
-> (unit, 'a) failure_mode
-> string
@ -51,7 +51,7 @@ val run
(** Run a command and capture its output *)
val run_capture
: ?dir:string
-> ?env:Env.t
-> env:Env.t
-> ?purpose:purpose
-> (string, 'a) failure_mode
-> string
@ -59,7 +59,7 @@ val run_capture
-> 'a Fiber.t
val run_capture_line
: ?dir:string
-> ?env:Env.t
-> env:Env.t
-> ?purpose:purpose
-> (string, 'a) failure_mode
-> string
@ -67,7 +67,7 @@ val run_capture_line
-> 'a Fiber.t
val run_capture_lines
: ?dir:string
-> ?env:Env.t
-> env:Env.t
-> ?purpose:purpose
-> (string list, 'a) failure_mode
-> string

View File

@ -153,7 +153,6 @@ let rec go_rec t =
let go ?(log=Log.no_log) ?(config=Config.default)
?(gen_status_line=fun () -> None) fiber =
Lazy.force Colors.setup_env_for_colors;
Log.info log ("Workspace root: " ^ !Clflags.workspace_root);
let cwd = Sys.getcwd () in
if cwd <> initial_cwd then

View File

@ -205,15 +205,19 @@ let subst_git ?name () =
| Some x -> Path.to_string x
| None -> Utils.program_not_found "git"
in
let env = Env.initial in
Fiber.fork_and_join
(fun () ->
Fiber.fork_and_join
(fun () ->
Process.run_capture Strict git ["describe"; "--always"; "--dirty"])
Process.run_capture Strict git ["describe"; "--always"; "--dirty"]
~env)
(fun () ->
Process.run_capture Strict git ["rev-parse"; rev]))
Process.run_capture Strict git ["rev-parse"; rev]
~env))
(fun () ->
Process.run_capture_lines Strict git ["ls-tree"; "-r"; "--name-only"; rev])
Process.run_capture_lines Strict git ["ls-tree"; "-r"; "--name-only"; rev]
~env)
>>= fun ((version, commit), files) ->
let version = String.trim version in
let commit = String.trim commit in

View File

@ -8,454 +8,454 @@
(alias
((name runtest)
(deps ((files_recursively_in test-cases/redirections)))
(deps ((package jbuilder)
(files_recursively_in test-cases/redirections)))
(action
(chdir test-cases/redirections
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/misc)))
(deps ((package jbuilder)
(files_recursively_in test-cases/misc)))
(action
(chdir test-cases/misc
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github20)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github20)))
(action
(chdir test-cases/github20
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest-js)
(deps ((files_recursively_in test-cases/js_of_ocaml)))
(deps ((package jbuilder)
(files_recursively_in test-cases/js_of_ocaml)))
(action
(chdir test-cases/js_of_ocaml
(setenv JBUILDER ${bin:jbuilder}
(setenv NODE ${bin:node}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))))
(setenv NODE ${bin:node}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github24)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github24)))
(action
(chdir test-cases/github24
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/menhir)))
(deps ((package jbuilder)
(files_recursively_in test-cases/menhir)))
(action
(chdir test-cases/menhir
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github25)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github25)))
(action
(chdir test-cases/github25/root
(setenv OCAMLPATH ../findlib-packages
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/lib-available)))
(deps ((package jbuilder)
(files_recursively_in test-cases/lib-available)))
(action
(chdir test-cases/lib-available
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/copy_files)))
(deps ((package jbuilder)
(files_recursively_in test-cases/copy_files)))
(action
(chdir test-cases/copy_files
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/aliases)))
(deps ((package jbuilder)
(files_recursively_in test-cases/aliases)))
(action
(chdir test-cases/aliases
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/force-test)))
(deps ((package jbuilder)
(files_recursively_in test-cases/force-test)))
(action
(chdir test-cases/force-test
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/meta-gen)))
(deps ((package jbuilder)
(files_recursively_in test-cases/meta-gen)))
(action
(chdir test-cases/meta-gen
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/exec-cmd)))
(deps ((package jbuilder)
(files_recursively_in test-cases/exec-cmd)))
(action
(chdir test-cases/exec-cmd
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/ocaml-syntax)))
(deps ((package jbuilder)
(files_recursively_in test-cases/ocaml-syntax)))
(action
(chdir test-cases/ocaml-syntax
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(chdir test-cases/ocaml-syntax
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/gen-opam-install-file)))
(deps ((package jbuilder)
(files_recursively_in test-cases/gen-opam-install-file)))
(action
(chdir test-cases/gen-opam-install-file
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(chdir test-cases/gen-opam-install-file
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest-skipped)
(deps ((files_recursively_in test-cases/reason)))
(deps ((package jbuilder)
(files_recursively_in test-cases/reason)))
(action
(chdir test-cases/reason
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/odoc)))
(deps ((package jbuilder)
(files_recursively_in test-cases/odoc)))
(action
(chdir test-cases/odoc
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/select)))
(deps ((package jbuilder)
(files_recursively_in test-cases/select)))
(action
(chdir test-cases/select
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/multiple-private-libs)))
(deps ((package jbuilder)
(files_recursively_in test-cases/multiple-private-libs)))
(action
(chdir test-cases/multiple-private-libs
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/ppx-rewriter)))
(deps ((package jbuilder)
(files_recursively_in test-cases/ppx-rewriter)))
(action
(chdir test-cases/ppx-rewriter
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/utop)))
(deps ((package jbuilder)
(files_recursively_in test-cases/utop)))
(action
(chdir test-cases/utop
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/c-stubs)))
(deps ((package jbuilder)
(files_recursively_in test-cases/c-stubs)))
(action
(chdir test-cases/c-stubs
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/cross-compilation)))
(deps ((package jbuilder)
(files_recursively_in test-cases/cross-compilation)))
(action
(chdir test-cases/cross-compilation
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/promote)))
(deps ((package jbuilder)
(files_recursively_in test-cases/promote)))
(action
(chdir test-cases/promote
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/include-loop)))
(deps ((package jbuilder)
(files_recursively_in test-cases/include-loop)))
(action
(chdir test-cases/include-loop
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/scope-bug)))
(deps ((package jbuilder)
(files_recursively_in test-cases/scope-bug)))
(action
(chdir test-cases/scope-bug
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/scope-ppx-bug)))
(deps ((package jbuilder)
(files_recursively_in test-cases/scope-ppx-bug)))
(action
(chdir test-cases/scope-ppx-bug
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/loop)))
(deps ((package jbuilder)
(files_recursively_in test-cases/loop)))
(action
(chdir test-cases/loop
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/intf-only)))
(deps ((package jbuilder)
(files_recursively_in test-cases/intf-only)))
(action
(chdir test-cases/intf-only
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/installable-dup-private-libs)))
(deps ((package jbuilder)
(files_recursively_in test-cases/installable-dup-private-libs)))
(action
(chdir test-cases/installable-dup-private-libs
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/inline_tests)))
(deps ((package jbuilder)
(files_recursively_in test-cases/inline_tests)))
(action
(chdir test-cases/inline_tests
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/byte-code-only)))
(deps ((package jbuilder)
(files_recursively_in test-cases/byte-code-only)))
(action
(chdir test-cases/byte-code-only
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/merlin-tests)))
(deps ((package jbuilder)
(files_recursively_in test-cases/merlin-tests)))
(action
(chdir test-cases/merlin-tests
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/findlib)))
(deps ((package jbuilder)
(files_recursively_in test-cases/findlib)))
(action
(chdir test-cases/findlib
(setenv OCAMLPATH findlib-packages
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/odoc-unique-mlds)))
(deps ((package jbuilder)
(files_recursively_in test-cases/odoc-unique-mlds)))
(action
(chdir test-cases/odoc-unique-mlds
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions 4.02.3 run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/ocamldep-multi-stanzas)))
(deps ((package jbuilder)
(files_recursively_in test-cases/ocamldep-multi-stanzas)))
(action
(chdir test-cases/ocamldep-multi-stanzas
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/exclude-missing-module)))
(deps ((package jbuilder)
(files_recursively_in test-cases/exclude-missing-module)))
(action
(chdir test-cases/exclude-missing-module
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github534)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github534)))
(action
(chdir test-cases/github534
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github568)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github568)))
(action
(chdir test-cases/github568
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/output-obj)))
(deps ((package jbuilder)
(files_recursively_in test-cases/output-obj)))
(action
(chdir test-cases/output-obj
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions <4.06.0
run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} -ocamlv ${ocaml_version} -skip-versions <4.06.0
run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github597)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github597)))
(action
(chdir test-cases/github597
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/private-public-overlap)))
(deps ((package jbuilder)
(files_recursively_in test-cases/private-public-overlap)))
(action
(chdir test-cases/private-public-overlap
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/depend-on-the-universe)))
(deps ((package jbuilder)
(files_recursively_in test-cases/depend-on-the-universe)))
(action
(chdir test-cases/depend-on-the-universe
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/package-dep)))
(deps ((package jbuilder)
(files_recursively_in test-cases/package-dep)))
(action
(chdir test-cases/package-dep
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))
(alias
((name runtest)
(deps ((files_recursively_in test-cases/github644)))
(deps ((package jbuilder)
(files_recursively_in test-cases/github644)))
(action
(chdir test-cases/github644
(setenv JBUILDER ${bin:jbuilder}
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected)))))))
(progn
(run ${exe:cram.exe} run.t)
(diff? run.t run.t.corrected))))))

View File

@ -1,22 +1,22 @@
$ $JBUILDER clean -j1 --display short --root .
$ $JBUILDER build -j1 --display short --root . @just-in-src
$ jbuilder clean --display short
$ jbuilder build --display short @just-in-src
running in src
$ $JBUILDER clean -j1 --display short --root .
$ $JBUILDER build -j1 --display short --root . @everywhere
$ jbuilder clean --display short
$ jbuilder build --display short @everywhere
running in src/foo/bar
running in src/foo/baz
running in src
$ $JBUILDER clean -j1 --display short --root .
$ $JBUILDER build -j1 --display short --root . @x
$ jbuilder clean --display short
$ jbuilder build --display short @x
running in src/foo/bar
running in src/foo/baz
running in src
$ $JBUILDER build -j1 --display short --root . @plop
$ jbuilder build --display short @plop
From the command line:
Error: Alias plop is empty.
It is not defined in . or any of its descendants.
[1]
$ $JBUILDER build -j1 --display short --root . @truc/x
$ jbuilder build --display short @truc/x
From the command line:
Error: Don't know about directory truc!
[1]

View File

@ -1,4 +1,4 @@
$ env ORIG_PATH="$PATH" PATH="$PWD/ocaml-bin:$PATH" $JBUILDER build --root . -j1 --display short
$ env ORIG_PATH="$PATH" PATH="$PWD/ocaml-bin:$PATH" jbuilder build --display short
ocamldep bin/toto.ml.d
ocamlc bin/.toto.eobjs/toto.{cmi,cmo,cmt}
ocamlc bin/toto.exe
@ -7,6 +7,6 @@
ocamlc src/foo.cma
Check that building a native only executable fails
$ env ORIG_PATH="$PATH" PATH="$PWD/ocaml-bin:$PATH" $JBUILDER build --root . -j1 --display short native-only/foo.exe
$ env ORIG_PATH="$PATH" PATH="$PWD/ocaml-bin:$PATH" jbuilder build --display short native-only/foo.exe
Don't know how to build native-only/foo.exe
[1]

View File

@ -1,4 +1,4 @@
$ $JBUILDER exec -j1 ./qnativerun/run.exe --display short --root .
$ jbuilder exec ./qnativerun/run.exe --display short
ocamldep qnativerun/run.ml.d
ocamlc q/q_stub.o
ocamlmklib q/dllq_stubs.so,q/libq_stubs.a
@ -11,4 +11,4 @@
ocamlopt qnativerun/.run.eobjs/run.{cmx,o}
ocamlopt qnativerun/run.exe
42
# $ $JBUILDER exec -j1 ./qbyterun/run.bc --display short --root .
# $ jbuilder exec ./qbyterun/run.bc --display short

View File

@ -1,4 +1,4 @@
$ $JBUILDER build -j1 test.exe .merlin --display short --root . --debug-dependency-path
$ jbuilder build test.exe .merlin --display short --debug-dependency-path
ocamllex lexers/lexer1.ml
ocamldep lexer1.ml.d
ocamldep test.ml.d
@ -13,6 +13,6 @@
ocamlopt .test.eobjs/test.{cmx,o}
ocamlopt foo.{a,cmxa}
ocamlopt test.exe
$ $JBUILDER build -j1 @bar-source --display short --root .
$ jbuilder build @bar-source --display short
#line 1 "include/bar.h"
int foo () {return 42;}

View File

@ -1,4 +1,4 @@
$ env OCAMLFIND_CONF=$PWD/etc/findlib.conf $JBUILDER build --display short --root . -j1 -x foo file @install
$ env OCAMLFIND_CONF=$PWD/etc/findlib.conf jbuilder build --display short -x foo file @install
ocamldep bin/blah.ml.d [default.foo]
ocamldep lib/p.ml.d [default.foo]
ocamlc lib/.p.objs/p.{cmi,cmo,cmt} [default.foo]

View File

@ -1,10 +1,10 @@
$ $JBUILDER build --root . -j 1 --display quiet @x
$ jbuilder build @x
Hello, world!
$ $JBUILDER build --root . -j 1 --display quiet @x
$ jbuilder build @x
Hello, world!
$ $JBUILDER build --root . -j 1 --display quiet @x
$ jbuilder build @x
Hello, world!
$ $JBUILDER build --root . -j 1 --display quiet @x
$ jbuilder build @x
Hello, world!
$ $JBUILDER build --root . -j 1 --display quiet @x
$ jbuilder build @x
Hello, world!

View File

@ -1,3 +1,3 @@
$ $JBUILDER build --display short --root . -j 1
$ jbuilder build --display short
File "jbuild", line 3, characters 24-28:
Warning: Module Fake is excluded but it doesn't exist.

View File

@ -1,22 +1,22 @@
$ $JBUILDER clean -j1 --display short --root .
$ $JBUILDER exec --no-build ./foo.exe -j1 --display short --root .
$ jbuilder clean --display short
$ jbuilder exec --no-build ./foo.exe --display short
Error: Program "./foo.exe" isn't built yet you need to buid it first or remove the --no-build option.
[1]
$ $JBUILDER exec ./foo.exe -j1 --display short --root .
$ jbuilder exec ./foo.exe --display short
ocamldep foo.ml.d
ocamlc .foo.eobjs/foo.{cmi,cmo,cmt}
ocamlopt .foo.eobjs/foo.{cmx,o}
ocamlopt foo.exe
Foo
$ $JBUILDER exec --dev ./foo.exe -j1 --display short --root .
$ jbuilder exec --dev ./foo.exe --display short
ocamlc .foo.eobjs/foo.{cmi,cmo,cmt}
ocamlopt .foo.eobjs/foo.{cmx,o}
ocamlopt foo.exe
Foo
$ $JBUILDER exec dunetestbar --no-build -j1 --display short --root .
$ jbuilder exec dunetestbar --no-build --display short
Error: Program "dunetestbar" isn't built yet you need to buid it first or remove the --no-build option.
[1]
$ $JBUILDER exec dunetestbar -j1 --display short --root .
$ jbuilder exec dunetestbar --display short
ocamldep bar.ml.d
ocamlc .bar.eobjs/bar.{cmi,cmo,cmt}
ocamlopt .bar.eobjs/bar.{cmx,o}

View File

@ -1,4 +1,4 @@
$ $JBUILDER external-lib-deps --root . -j1 --display quiet @install
$ jbuilder external-lib-deps @install
These are the external library dependencies in the default context:
- a
- b
@ -6,8 +6,8 @@
Reproduction case for #484. The error should point to src/jbuild
$ $JBUILDER build --root . -j1 --display quiet @install
$ jbuilder build @install
File "src/jbuild", line 4, characters 16-17:
Error: Library "a" not found.
Hint: try: jbuilder external-lib-deps --missing --root . @install
Hint: try: jbuilder external-lib-deps --missing @install
[1]

View File

@ -1,12 +1,12 @@
$ $JBUILDER clean -j1 --display short --root .
$ $JBUILDER runtest -j1 --display short --root .
$ jbuilder clean --display short
$ jbuilder runtest --display short
ocamldep f.ml.d
ocamlc .f.eobjs/f.{cmi,cmo,cmt}
ocamlopt .f.eobjs/f.{cmx,o}
ocamlopt f.exe
f alias runtest
Foo Bar
$ $JBUILDER runtest -j1 --display short --root .
$ $JBUILDER runtest --force -j1 --display short --root .
$ jbuilder runtest --display short
$ jbuilder runtest --force --display short
f alias runtest
Foo Bar

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest -j1 --display short --root .
$ jbuilder runtest --display short
ocamldep bar.ml.d
ocamldep foo_byte.ml.d
ocamlc .foo_byte.objs/foo_byte.{cmi,cmo,cmt}

View File

@ -1 +1 @@
$ $JBUILDER build -j1 .merlin --display short --root .
$ jbuilder build .merlin --display short

View File

@ -1 +1 @@
$ $JBUILDER build -j1 @install --display short --root . --debug-dependency-path
$ jbuilder build @install --display short --debug-dependency-path

View File

@ -6,19 +6,19 @@ problem. So jbuilder shouldn't crash because of "plop.ca-marche-pas"
We need ocamlfind to run this test
$ $JBUILDER build -j1 @install --display short --root . --only hello
$ jbuilder build @install --display short --only hello
ocamlc .hello.objs/hello.{cmi,cmo,cmt}
ocamlopt .hello.objs/hello.{cmx,o}
ocamlopt hello.{a,cmxa}
ocamlopt hello.cmxs
ocamlc hello.cma
$ $JBUILDER build -j1 @install --display short --root . --only pas-de-bol 2>&1 | sed 's/[^ "]*findlib-packages/.../'
$ jbuilder build @install --display short --only pas-de-bol 2>&1 | sed 's/[^ "]*findlib-packages/.../'
ocamldep a.ml.d
File ".../plop/META", line 1, characters 0-0:
Error: Library "une-lib-qui-nexiste-pas" not found.
-> required by library "plop.ca-marche-pas" in .../plop
Hint: try: jbuilder external-lib-deps --missing --root . --only-packages pas-de-bol @install
Hint: try: jbuilder external-lib-deps --missing --only-packages pas-de-bol @install
ocamldep b.ml.d
ocamlc .pas_de_bol.objs/pas_de_bol.{cmi,cmo,cmt}
ocamlopt .pas_de_bol.objs/pas_de_bol.{cmx,o}

View File

@ -1,4 +1,4 @@
$ $JBUILDER exec ./main.exe --root . -j1 --display short
$ jbuilder exec ./main.exe --display short
echo main.ml
ocamldep main.ml.d
ocamlc .main.eobjs/main.{cmi,cmo,cmt}

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest --display short -j1 -p lib1 --debug-dependency-path
$ jbuilder runtest --display short -p lib1 --debug-dependency-path
ocamldep test1.ml.d
ocamldep lib1.ml.d
ocamlc .lib1.objs/lib1.{cmi,cmo,cmt}

View File

@ -1 +1 @@
$ $JBUILDER build --root . -j1 --display quiet b/b.cma
$ jbuilder build b/b.cma

View File

@ -1,11 +1,11 @@
$ $JBUILDER runtest --root . -j 1 --display quiet
$ jbuilder runtest
File "jbuild", line 4, characters 20-42:
Error: Library "ppx_that_doesn't_exist" not found.
Hint: try: jbuilder external-lib-deps --missing --root . @runtest
Hint: try: jbuilder external-lib-deps --missing @runtest
[1]
These should print something:
$ $JBUILDER external-lib-deps --root . -j 1 --display quiet @runtest
$ jbuilder external-lib-deps @runtest
$ $JBUILDER external-lib-deps --root . -j 1 --display quiet --missing @runtest
$ jbuilder external-lib-deps --missing @runtest

View File

@ -1,4 +1,4 @@
$ $JBUILDER build --display short --root . -j 1
$ jbuilder build --display short
File "jbuild", line 2, characters 0-15:
Error: Recursive inclusion of jbuild files detected:
File a.inc is included from c.inc:2

View File

@ -1,26 +1,26 @@
$ env -u OCAMLRUNPARAM $JBUILDER runtest simple -j1 --display quiet --root .
$ env -u OCAMLRUNPARAM jbuilder runtest simple
run alias simple/runtest (exit 2)
(cd _build/default/simple && ./.foo_simple.inline-tests/run.exe)
Fatal error: exception File "simple/.foo_simple.inline-tests/run.ml", line 1, characters 10-16: Assertion failed
[1]
$ $JBUILDER runtest missing-backend -j1 --display quiet --root .
$ jbuilder runtest missing-backend
File "missing-backend/jbuild", line 3, characters 2-16:
Error: No inline tests backend found.
[1]
$ $JBUILDER runtest too-many-backends -j1 --display quiet --root .
$ jbuilder runtest too-many-backends
File "too-many-backends/jbuild", line 17, characters 2-16:
Error: Too many independant inline tests backends found:
- "backend_tmb1" in _build/default/too-many-backends
- "backend_tmb2" in _build/default/too-many-backends
[1]
$ $JBUILDER runtest many-backends-choose -j1 --display quiet --root .
$ jbuilder runtest many-backends-choose
run alias many-backends-choose/runtest
backend_mbc1
$ $JBUILDER runtest dune-file -j1 --display quiet --root .
$ jbuilder runtest dune-file
(dune
1
((inline_tests.backend

View File

@ -1,4 +1,4 @@
$ $JBUILDER build @install -j1 --display short --root .
$ jbuilder build @install --display short
ocamldep a1/a.ml.d
ocamlc a1/.a.objs/a.{cmi,cmo,cmt}
ocamlopt a1/.a.objs/a.{cmx,o}

View File

@ -1,6 +1,6 @@
Successes:
$ $JBUILDER build --display short --root foo -j1 --debug-dep 2>&1 | grep -v Entering
$ jbuilder build --display short --root foo --debug-dep 2>&1 | grep -v Entering
ocamldep test/bar.ml.d
ocamldep foo.ml.d
ocamlc .foo.objs/foo__.{cmi,cmo,cmt}
@ -20,7 +20,7 @@ Successes:
Errors:
$ $JBUILDER build --display short --root a -j1 foo.cma 2>&1 | grep -v Entering
$ jbuilder build --display short --root a foo.cma 2>&1 | grep -v Entering
File "jbuild", line 2, characters 1-13:
Warning: Some modules don't have an implementation.
You need to add the following field to this stanza:
@ -30,16 +30,16 @@ Errors:
This will become an error in the future.
ocamlc .foo.objs/foo.{cmi,cmo,cmt}
ocamlc foo.cma
$ $JBUILDER build --display short --root b -j1 foo.cma 2>&1 | grep -v Entering
$ jbuilder build --display short --root b foo.cma 2>&1 | grep -v Entering
File "jbuild", line 3, characters 34-37:
Warning: The following modules must be listed here as they don't have an implementation:
- y
This will become an error in the future.
ocamlc .foo.objs/foo.{cmi,cmo,cmt}
ocamlc foo.cma
$ $JBUILDER build --display short --root c -j1 foo.cma 2>&1 | grep -v Entering
$ jbuilder build --display short --root c foo.cma 2>&1 | grep -v Entering
File "jbuild", line 3, characters 35-36:
Error: Module X doesn't exist.
$ $JBUILDER build --display short --root d -j1 foo.cma 2>&1 | grep -v Entering
$ jbuilder build --display short --root d foo.cma 2>&1 | grep -v Entering
File "jbuild", line 3, characters 35-36:
Error: Module X has an implementation, it cannot be listed here

View File

@ -1,4 +1,4 @@
$ $JBUILDER build -j1 --display short --root . --dev bin/technologic.bc.js @install lib/x.cma.js lib/x__Y.cmo.js bin/z.cmo.js
$ jbuilder build --display short --dev bin/technologic.bc.js @install lib/x.cma.js lib/x__Y.cmo.js bin/z.cmo.js
ocamlc lib/stubs.o
ocamlmklib lib/dllx_stubs.so,lib/libx_stubs.a
ocamlopt .ppx/js_of_ocaml-ppx/ppx.exe
@ -34,7 +34,7 @@
use it
break it
fix it
$ $JBUILDER build -j1 --display short --root . bin/technologic.bc.js @install
$ jbuilder build --display short bin/technologic.bc.js @install
ocamlc lib/.x.objs/x__.{cmi,cmo,cmt}
ocamlc lib/.x.objs/x__Y.{cmi,cmo,cmt}
ocamlc lib/.x.objs/x.{cmi,cmo,cmt}

View File

@ -1,3 +1,3 @@
$ $JBUILDER build -j1 @runtest --display short --root . --debug-dependency-path 2>&1 | sed "s/ cmd / sh /"
$ jbuilder build @runtest --display short --debug-dependency-path 2>&1 | sed "s/ cmd / sh /"
sh alias runtest
sh alias runtest

View File

@ -1,4 +1,4 @@
$ $JBUILDER build --display short --root . -j 1 a
$ jbuilder build --display short a
true x
true y
Dependency cycle between the following files:
@ -11,14 +11,14 @@ This second example is slightly more complicated as we request result1
but the cycle doesn't involve result1. We must make sure the output
does show a cycle.
$ $JBUILDER build --display short --root . -j 1 result1
$ jbuilder build --display short result1
Dependency cycle between the following files:
_build/default/result2
--> _build/default/input
--> _build/default/result2
[1]
$ $JBUILDER build --display short --root . -j 1 result1 --debug-dependency-path
$ jbuilder build --display short result1 --debug-dependency-path
Dependency cycle between the following files:
_build/default/result2
--> _build/default/input

View File

@ -1,4 +1,4 @@
$ $JBUILDER build -j1 src/test.exe --display short --root . --debug-dependency-path
$ jbuilder build src/test.exe --display short --debug-dependency-path
ocamllex src/lexer1.ml
ocamldep src/lexer1.ml.d
ocamllex src/lexer2.ml

View File

@ -1,4 +1,4 @@
$ $JBUILDER build @print-merlins -j1 --display short --root .
$ jbuilder build @print-merlins --display short
ocamldep sanitize-dot-merlin/sanitize_dot_merlin.ml.d
ocamlc sanitize-dot-merlin/.sanitize_dot_merlin.eobjs/sanitize_dot_merlin.{cmi,cmo,cmt}
ocamlopt sanitize-dot-merlin/.sanitize_dot_merlin.eobjs/sanitize_dot_merlin.{cmx,o}

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest --force -j1 --display short --root .
$ jbuilder runtest --force --display short
description = "contains \"quotes\""
requires = "bytes"
archive(byte) = "foobar.cma"

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest -j1 --display short --root .
$ jbuilder runtest --display short
File "jbuild", line 65, characters 21-44:
Warning: Directory dir-that-doesnt-exist doesn't exist.
diff alias runtest

View File

@ -1,6 +1,6 @@
This test checks that there is no clash when two private libraries have the same name
$ $JBUILDER build -j1 --display short --root . @doc-private
$ jbuilder build --display short @doc-private
ocamldep a/test.ml.d
ocamlc a/.test.objs/test.{cmi,cmo,cmt}
odoc _doc/_odoc/lib/test@a/test.odoc

View File

@ -1,2 +1,2 @@
$ $JBUILDER runtest --force -j1 --display short --root .
$ jbuilder runtest --force --display short
ocaml syntax

View File

@ -1,4 +1,4 @@
$ $JBUILDER exec ./test.exe -j1 --debug-dep --display short --root .
$ jbuilder exec ./test.exe --debug-dep --display short
File "jbuild", line 1, characters 0-0:
Warning: Module "Lib" is used in several stanzas:
- jbuild:8
@ -13,7 +13,7 @@
- <internal location>
[1]
$ $JBUILDER build src/a.cma -j1 --debug-dep --display short --root .
$ jbuilder build src/a.cma --debug-dep --display short
File "src/jbuild", line 1, characters 0-0:
Warning: Module "X" is used in several stanzas:
- src/jbuild:4

View File

@ -1,5 +1,5 @@
Duplicate mld's in the same scope
$ $JBUILDER build @doc -j1 --display short --root ./same-scope 2>&1 | grep -v Entering
$ jbuilder build @doc --display short --root ./same-scope 2>&1 | grep -v Entering
odoc _doc/_html/odoc.css
ocamlc lib1/.root_lib1.objs/root_lib1.{cmi,cmo,cmt}
odoc _doc/_odoc/lib/root.lib1/root_lib1.odoc
@ -12,7 +12,7 @@ Duplicate mld's in the same scope
Duplicate mld's in different scope
$ rm -rf diff-scope/_build
$ $JBUILDER build @doc -j1 --display short --root ./diff-scope 2>&1 | grep -v Entering
$ jbuilder build @doc --display short --root ./diff-scope 2>&1 | grep -v Entering
odoc _doc/_html/odoc.css
ocamlc scope1/.scope1.objs/scope1.{cmi,cmo,cmt}
odoc _doc/_odoc/lib/scope1/scope1.odoc

View File

@ -1,4 +1,4 @@
$ $JBUILDER build @doc -j1 --display short --root .
$ jbuilder build @doc --display short
ocamldep bar.ml.d
ocamlc .bar.objs/bar.{cmi,cmo,cmt}
odoc _doc/_odoc/lib/bar/bar.odoc
@ -20,7 +20,7 @@
odoc _doc/_html/foo/index.html
odoc _doc/_html/foo/Foo_byte/.jbuilder-keep,_doc/_html/foo/Foo_byte/index.html
odoc _doc/_html/foo/Foo2/.jbuilder-keep,_doc/_html/foo/Foo2/index.html
$ $JBUILDER runtest -j1 --display short --root .
$ jbuilder runtest --display short
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
@ -40,7 +40,7 @@
</body>
</html>
$ $JBUILDER build @foo-mld -j1 --display short --root .
$ jbuilder build @foo-mld --display short
{1 Library foo}
This library exposes the following toplevel modules:
{!modules:Foo Foo2}
@ -48,7 +48,7 @@
This library exposes the following toplevel modules:
{!modules:Foo_byte}
$ $JBUILDER build @bar-mld -j1 --display short --root .
$ jbuilder build @bar-mld --display short
{1 Library bar}
This library exposes the following toplevel modules:
{!modules:Bar}

View File

@ -1,4 +1,4 @@
$ $JBUILDER build -j1 --root . --display short @all
$ jbuilder build --display short @all
ocamldep test.ml.d
ocamlc .test.eobjs/test.{cmi,cmo,cmt}
ocamlc test.bc.o
@ -11,7 +11,7 @@
ocamlopt test.exe
ocamlopt test.so
$ $JBUILDER build -j1 --root . --display quiet @runtest
$ jbuilder build @runtest
static alias runtest
OK: ./static.bc
dynamic alias runtest

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest -j1 --display short --root .
$ jbuilder runtest --display short
ocamldep bar.ml.d
ocamldep foo.ml.d
ocamlc .foo.objs/foo.{cmi,cmo,cmt}

View File

@ -1,4 +1,4 @@
$ $JBUILDER build ./w_omp_driver.exe -j1 --display short --root .
$ jbuilder build ./w_omp_driver.exe --display short
ocamldep ppx/fooppx.ml.d
ocamlc ppx/.fooppx.objs/fooppx.{cmi,cmo,cmt}
ocamlopt ppx/.fooppx.objs/fooppx.{cmx,o}
@ -9,7 +9,7 @@
ocamlc .w_omp_driver.eobjs/w_omp_driver.{cmi,cmo,cmt}
ocamlopt .w_omp_driver.eobjs/w_omp_driver.{cmx,o}
ocamlopt w_omp_driver.exe
$ $JBUILDER build ./w_ppx_driver.exe -j1 --display short --root .
$ jbuilder build ./w_ppx_driver.exe --display short
ocamlopt .ppx/ppx_driver.runner/ppx.exe
ppx w_ppx_driver.pp.ml
ocamldep w_ppx_driver.pp.ml.d
@ -17,4 +17,4 @@
ocamlopt .w_ppx_driver.eobjs/w_ppx_driver.{cmx,o}
ocamlopt w_ppx_driver.exe
This test is broken because ppx_driver doesn't support migrate custom arguments
# $ $JBUILDER build ./w_ppx_driver_flags.exe -j1 --display short --root .
# $ jbuilder build ./w_ppx_driver_flags.exe --display short

View File

@ -1,13 +1,13 @@
public libraries may not have private dependencies
$ $JBUILDER build -j1 --display short --root private-dep 2>&1 | grep -v Entering
$ jbuilder build --display short --root private-dep 2>&1 | grep -v Entering
File "jbuild", line 10, characters 14-24:
Error: Library "privatelib" is private, it cannot be a dependency of a public library.
You need to give "privatelib" a public name.
ocamldep publiclib.ml.d
On the other hand, public libraries may have private preprocessors
$ $JBUILDER build -j1 --display short --root private-rewriter 2>&1 | grep -v Entering
$ jbuilder build --display short --root private-rewriter 2>&1 | grep -v Entering
ocamlc .ppx_internal.objs/ppx_internal.{cmi,cmo,cmt}
ocamlopt .ppx_internal.objs/ppx_internal.{cmx,o}
ocamlopt ppx_internal.{a,cmxa}
@ -21,7 +21,7 @@ On the other hand, public libraries may have private preprocessors
ocamlc mylib.cma
Unless they introduce private runtime dependencies:
$ $JBUILDER build -j1 --display short --root private-runtime-deps 2>&1 | grep -v Entering
$ jbuilder build --display short --root private-runtime-deps 2>&1 | grep -v Entering
File "jbuild", line 16, characters 20-31:
Error: Library "private_runtime_dep" is private, it cannot be a dependency of a public library.
You need to give "private_runtime_dep" a public name.
@ -33,12 +33,12 @@ Unless they introduce private runtime dependencies:
ocamldep mylib.pp.ml.d
However, public binaries may accept private dependencies
$ $JBUILDER build -j1 --display short --root exes 2>&1 | grep -v Entering
$ jbuilder build --display short --root exes 2>&1 | grep -v Entering
ocamldep publicbin.ml.d
ocamlc .publicbin.eobjs/publicbin.{cmi,cmo,cmt}
ocamlopt .publicbin.eobjs/publicbin.{cmx,o}
ocamlopt publicbin.exe
Private dependencies shouldn't make the library optional
$ $JBUILDER build -j1 --display short --root optional 2>&1 | grep -v Entering
$ jbuilder build --display short --root optional 2>&1 | grep -v Entering
[1]

View File

@ -1,30 +1,30 @@
$ printf titi > x
$ $JBUILDER build --display short --root . -j1 --diff-command false @blah 2>&1 | sed 's/.*false.*/DIFF/'
$ jbuilder build --display short --diff-command false @blah 2>&1 | sed 's/.*false.*/DIFF/'
sh (internal) (exit 1)
DIFF
$ cat x
titi
$ $JBUILDER promote --display short --root .
$ jbuilder promote --display short
Promoting _build/default/x.gen to x.
$ cat x
toto
$ $JBUILDER build --display short --root . -j1 --diff-command false @blah
$ jbuilder build --display short --diff-command false @blah
$ cat x
toto
Otherwise this test fails on OSX
$ $JBUILDER clean --display short --root . -j1
$ jbuilder clean --display short
$ printf titi > x
$ $JBUILDER build --display short --root . -j1 --diff-command false @blah --auto-promote 2>&1 | sed 's/.*false.*/DIFF/'
$ jbuilder build --display short --diff-command false @blah --auto-promote 2>&1 | sed 's/.*false.*/DIFF/'
sh (internal) (exit 1)
DIFF
Promoting _build/default/x.gen to x.
$ cat x
toto
$ $JBUILDER build --display short --root . -j1 --diff-command false @blah
$ jbuilder build --display short --diff-command false @blah
$ cat x
toto

View File

@ -1,4 +1,4 @@
$ $JBUILDER build @runtest @install-file -j1 --display short --root .
$ jbuilder build @runtest @install-file --display short
refmt bar.re.ml
ocamldep pp/reasononlypp.depends.ocamldep-output
ocamldep ppx/reasonppx.depends.ocamldep-output

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest -j1 --display short --root . 2>&1 | sed "s/ cmd / sh /"
$ jbuilder runtest --display short 2>&1 | sed "s/ cmd / sh /"
sh stderr,stdout
sh stderr,stdout
diff alias runtest

View File

@ -1,4 +1,4 @@
$ $JBUILDER build -j1 --display short --root . @install
$ jbuilder build --display short @install
ocamldep alib/alib.ml.d
ocamldep alib/main.ml.d
ocamlc alib/.alib.objs/alib__.{cmi,cmo,cmt}

View File

@ -1,4 +1,4 @@
$ $JBUILDER build -j1 --display short --root . @install --debug-dep
$ jbuilder build --display short @install --debug-dep
ocamlc a/ppx/.a.objs/a.{cmi,cmo,cmt}
ocamlopt a/ppx/.a.objs/a.{cmx,o}
ocamlopt a/ppx/a.{a,cmxa}

View File

@ -1,4 +1,4 @@
$ $JBUILDER runtest -j1 --display short --root .
$ jbuilder runtest --display short
ocamldep bar.ml.d
ocamldep bar_no_unix.ml.d
ocamldep bar_unix.ml.d

View File

@ -1,4 +1,4 @@
$ $JBUILDER utop -j1 --display short --root . forutop -- init_forutop.ml
$ jbuilder utop --display short forutop -- init_forutop.ml
ocamldep forutop/.utop/utop.ml.d
ocamldep forutop/forutop.ml.d
ocamlc forutop/.forutop.objs/forutop.{cmi,cmo,cmt}