Apply reviews, create test directory

This commit is contained in:
Dario Pinto 2021-07-20 15:39:21 +02:00
parent 8565d6dd9a
commit 2c2fa19eda
12 changed files with 54 additions and 57 deletions

View File

@ -39,44 +39,36 @@ let opamlint () =
if current path satisfies minimum requirements, when all sub directories
have been traversed, or predicate is satified, it returns true. *)
let rec check_dir_for_ml_and_dune in_path =
let content =
match Bos.OS.Dir.contents ~dotfiles:true ~rel:true in_path with
| Error _e ->
Utils.error
( "Cant list contents of subdirectory " ^ Fpath.to_string in_path
^ ". (Check_directory.check_dir_for_ml_and_dune)" )
| Ok contents -> contents
in
if
Check_existence.has_file "dune" content
&& List.exists (fun p -> Fpath.has_ext ".ml" p) content
then
true
else
let contents =
List.filter
(fun x ->
match Bos.OS.Dir.must_exist x with
| Ok _p -> true
| Error _e -> false )
content
in
let results = List.map check_dir_for_ml_and_dune contents in
List.exists (fun x -> x) results
match Bos.OS.Dir.contents ~dotfiles:true ~rel:true in_path with
| Error _e -> false
| Ok contents ->
let content = contents in
if
Check_existence.has_file "dune" content
&& List.exists (fun p -> Fpath.has_ext ".ml" p) content
then
true
else
let contents =
List.filter
(fun x ->
match Bos.OS.Dir.must_exist x with
| Ok _p -> true
| Error _e -> false )
content
in
let results = List.map check_dir_for_ml_and_dune contents in
List.exists (fun x -> x) results
(** [check_dir_for_mld_and_dune in_path] takes a Fpath.t returns true if minimum
requirements are met, false otherwise. *)
let check_dir_for_mld_and_dune in_path =
let content =
match Bos.OS.Dir.contents ~dotfiles:true ~rel:true in_path with
| Error _e ->
Utils.error
( "Cant list contents of subdirectory " ^ Fpath.to_string in_path
^ ". (Check_directory.check_dir_for_ml_and_dune)" )
| Ok contents -> contents
in
Check_existence.has_file "dune" content
&& Check_existence.has_file "index.mld" content
match Bos.OS.Dir.contents ~dotfiles:true ~rel:true in_path with
| Error _e -> false
| Ok contents ->
let content = contents in
Check_existence.has_file "dune" content
&& Check_existence.has_file "index.mld" content
(** [minimum_requirement_of directory requirements] takes a directory, converts
it to type [Fpath.t] and applies a given [requirements] function to it. *)

View File

@ -1,16 +1,11 @@
let result_to_html fmt (results, verbose) =
let result_to_html fmt results =
let score, max_score =
List.fold_left
(fun (acc_score, acc_max_score) r ->
match r with
| Ok (msg, max_score) ->
if verbose then (
Format.fprintf fmt "-- %s (%d/%d)<br />" msg max_score max_score;
(acc_score + max_score, acc_max_score + max_score)
) else (
Format.ifprintf fmt "-- %s (%d/%d)<br />" msg max_score max_score;
(acc_score + max_score, acc_max_score + max_score)
)
Utils.log fmt "-- %s (%d/%d)<br />" msg max_score max_score;
(acc_score + max_score, acc_max_score + max_score)
| Error (msg, score, max_score) ->
Format.fprintf fmt "-- %s (%d/%d)<br />" msg score max_score;
(acc_score + score, acc_max_score + max_score) )
@ -18,7 +13,7 @@ let result_to_html fmt (results, verbose) =
in
Format.fprintf fmt "Final score: %d / %d<br />" score max_score
let output fmt result verbose =
let output fmt result =
Format.fprintf fmt
{|<!DOCTYPE html>
<html lang="en">
@ -39,4 +34,4 @@ let output fmt result verbose =
</body>
</html>
|}
result_to_html (result, verbose)
result_to_html result

View File

@ -12,9 +12,9 @@ let html =
let verbose =
let doc =
"By default, orel will only print messages of unsatisfied checks.\n\
\ With flag, all check messages are printed."
\ With this flag, all check messages are printed."
in
Arg.(value & flag & info [ "verbose" ] ~docv:"VERBOSE" ~doc)
Arg.(value & flag & info [ "verbose"; "v" ] ~docv:"VERBOSE" ~doc)
let info =
let doc = "Repository checker, outputs results to HTML format or raw." in
@ -26,10 +26,11 @@ let info =
let check verbose repo html =
let results = Check.check repo in
Utils.set_verbose verbose;
if html then
Html.output Format.std_formatter results verbose
Html.output Format.std_formatter results
else
Raw.output Format.std_formatter results verbose
Raw.output Format.std_formatter results
let orel_t = Term.(const check $ verbose $ repo $ html)

View File

@ -106,5 +106,5 @@ let () =
(fun (p, url) ->
Format.printf "======== CHECKING PACKAGE %s ========@." p;
let results = Orel.Check.check url in
Orel.Raw.output Format.std_formatter results true )
Orel.Raw.output Format.std_formatter results )
packages

View File

@ -1,16 +1,11 @@
let output fmt results verbose =
let output fmt results =
let score, max_score =
List.fold_left
(fun (acc_score, acc_max_score) r ->
match r with
| Ok (msg, max_score) ->
if verbose then (
Format.fprintf fmt "-- %s (%d/%d)@." msg max_score max_score;
(acc_score + max_score, acc_max_score + max_score)
) else (
Format.ifprintf fmt "-- %s (%d/%d)@." msg max_score max_score;
(acc_score + max_score, acc_max_score + max_score)
)
Utils.log fmt "-- %s (%d/%d)@." msg max_score max_score;
(acc_score + max_score, acc_max_score + max_score)
| Error (msg, score, max_score) ->
Format.fprintf fmt "-- %s (%d/%d)@." msg score max_score;
(acc_score + score, acc_max_score + max_score) )

View File

@ -1,3 +1,13 @@
let error msg =
Format.eprintf "error: %s @." msg;
exit 1
let verbose = ref false
let set_verbose v = verbose := v
let log fmt =
if !verbose then
Format.fprintf fmt
else
Format.ifprintf fmt

0
test/content_tests.ml Normal file
View File

0
test/dir_tests.ml Normal file
View File

3
test/dune Normal file
View File

@ -0,0 +1,3 @@
(test
(name orel_tests)
(libraries orel))

0
test/existence_tests.ml Normal file
View File

1
test/orel_tests.ml Normal file
View File

@ -0,0 +1 @@
let () = Format.printf "This will hold all calls to orel's test suite.@."

0
test/repo_tests.ml Normal file
View File