-
Notifications
You must be signed in to change notification settings - Fork 84
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update tests and add mistakenly ignored tests
- Loading branch information
Showing
7 changed files
with
267 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,8 +16,8 @@ | |
obsolete/*.txt | ||
old/ | ||
*.png | ||
satysfi | ||
saphe | ||
/satysfi | ||
/saphe | ||
*.ttf | ||
*.otf | ||
*.ttc | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
(test | ||
(name sapheTest) | ||
(libraries | ||
sapheMain | ||
alcotest)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
|
||
open SapheTestUtil | ||
open SapheMain__ConfigError | ||
open SapheMain__PackageSystemBase | ||
module PackageConfig = SapheMain__PackageConfig | ||
|
||
|
||
let input1 = {yaml| | ||
ecosystem: "^0.0.1" | ||
language: "^0.1.0" | ||
name: "stdlib" | ||
authors: | ||
- "Takashi Suwa" | ||
registries: | ||
- name: "default" | ||
git: | ||
url: "https://github.com/SATySFi/default-registry" | ||
branch: "temp-dev-saphe" | ||
contents: | ||
library: | ||
main_module: "Stdlib" | ||
source_directories: | ||
- "./src" | ||
test_directories: | ||
- "./test" | ||
dependencies: [] | ||
test_dependencies: | ||
- used_as: "Testing" | ||
registered: | ||
registry: "default" | ||
name: "testing" | ||
requirement: "^0.0.1" | ||
|yaml} | ||
|
||
|
||
let expected1 = | ||
ParsedPackageConfig{ | ||
language_requirement = SemanticVersion.CompatibleWith(make_version "0.1.0"); | ||
package_name = "stdlib"; | ||
package_authors = ["Takashi Suwa"]; | ||
external_resources = []; | ||
package_contents = | ||
ParsedLibrary{ | ||
main_module_name = "Stdlib"; | ||
source_directories = [ "./src" ]; | ||
test_directories = [ "./test" ]; | ||
dependencies = []; | ||
test_dependencies = [ | ||
ParsedPackageDependency{ | ||
used_as = "Testing"; | ||
spec = | ||
ParsedRegisteredDependency{ | ||
package_name = "testing"; | ||
registry_local_name = "default"; | ||
version_requirement = SemanticVersion.CompatibleWith(make_version "0.0.1"); | ||
}; | ||
}; | ||
]; | ||
markdown_conversion = None; | ||
}; | ||
registry_specs = [ | ||
("default", GitRegistry{ | ||
url = "https://github.com/SATySFi/default-registry"; | ||
branch = "temp-dev-saphe"; | ||
}); | ||
]; | ||
} | ||
|
||
|
||
let parsed_package_config = Alcotest.of_pp pp_parsed_package_config | ||
let yaml_error = Alcotest.of_pp pp_yaml_error | ||
|
||
|
||
let parse_test_1 () = | ||
let got = PackageConfig.parse input1 in | ||
let expected = Ok(expected1) in | ||
Alcotest.(check (result parsed_package_config yaml_error)) "parse" expected got | ||
|
||
|
||
let test_cases = | ||
Alcotest.[ | ||
test_case "parse 1" `Quick parse_test_1; | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
|
||
open SapheTestUtil | ||
open SapheMain__PackageSystemBase | ||
module Constant = SapheMain__Constant | ||
module PackageConstraintSolver = SapheMain__PackageConstraintSolver | ||
|
||
|
||
let registry_hash_value = | ||
"c0bebeef4423" | ||
|
||
|
||
let language_version = | ||
make_version "0.1.0" | ||
|
||
|
||
let make_dependency ~(used_as : string) (package_name : package_name) (s_version : string) : package_dependency = | ||
PackageDependency{ | ||
used_as; | ||
spec = | ||
RegisteredDependency{ | ||
registered_package_id = RegisteredPackageId.{ package_name; registry_hash_value }; | ||
version_requirement = SemanticVersion.CompatibleWith(make_version s_version); | ||
}; | ||
} | ||
|
||
|
||
let make_dependency_in_registry ~(used_as : string) (package_name : package_name) (s_version : string) : package_dependency_in_registry = | ||
PackageDependencyInRegistry{ | ||
used_as; | ||
package_name; | ||
version_requirement = SemanticVersion.CompatibleWith(make_version s_version); | ||
} | ||
|
||
|
||
let make_impl (s_version : string) (deps : package_dependency_in_registry list) : implementation_record = | ||
ImplRecord{ | ||
version = make_version s_version; | ||
source = NoSource; | ||
language_requirement = SemanticVersion.CompatibleWith(language_version); | ||
dependencies = deps; | ||
} | ||
|
||
|
||
let make_registered_lock (package_name : package_name) (s_version : string) : RegisteredLock.t = | ||
RegisteredLock.{ | ||
registered_package_id = RegisteredPackageId.{ package_name; registry_hash_value }; | ||
locked_version = make_version s_version; | ||
} | ||
|
||
|
||
let make_locked_dependency ~(used_as : string) (package_name : package_name) (s_version : string) : locked_dependency = | ||
{ | ||
depended_lock = Lock.Registered(make_registered_lock package_name s_version); | ||
dependency_used_as = used_as; | ||
} | ||
|
||
|
||
let make_solution ?(explicitly_depended : string option) ?(test_only : bool = false) (package_name : package_name) (s_version : string) (deps : locked_dependency list) : package_solution = | ||
{ | ||
lock = Lock.Registered(make_registered_lock package_name s_version); | ||
locked_source = NoSource; | ||
locked_dependencies = deps; | ||
used_in_test_only = test_only; | ||
explicitly_depended; | ||
explicitly_test_depended = None; | ||
} | ||
|
||
|
||
let check package_context dependencies_with_flags expected = | ||
let got = PackageConstraintSolver.solve package_context dependencies_with_flags in | ||
Alcotest.(check (option (list (of_pp pp_package_solution)))) "solutions" expected got | ||
|
||
|
||
let make_registered_package_impls = | ||
List.fold_left (fun map (package_name, impls) -> | ||
let registered_package_id = RegisteredPackageId.{ package_name; registry_hash_value } in | ||
map |> RegisteredPackageIdMap.add registered_package_id impls | ||
) RegisteredPackageIdMap.empty | ||
|
||
|
||
let solve_test_1 () = | ||
let package_context = | ||
let local_fixed_dependencies = LocalFixedPackageIdMap.empty in | ||
let registered_package_impls = | ||
make_registered_package_impls [ | ||
("foo", [ | ||
make_impl "1.0.0" []; | ||
make_impl "2.0.0" []; | ||
]); | ||
("bar", [ | ||
make_impl "1.0.0" [ make_dependency_in_registry ~used_as:"Foo" "foo" "2.0.0" ]; | ||
]); | ||
("qux", [ | ||
make_impl "1.0.0" [ make_dependency_in_registry ~used_as:"Foo" "foo" "1.0.0" ]; | ||
]); | ||
] | ||
in | ||
{ language_version; local_fixed_dependencies; registered_package_impls } | ||
in | ||
let dependencies_with_flags = | ||
[ | ||
(SourceDependency, make_dependency ~used_as:"Bar" "bar" "1.0.0"); | ||
(SourceDependency, make_dependency ~used_as:"Qux" "qux" "1.0.0"); | ||
] | ||
in | ||
let expected = | ||
Some([ | ||
make_solution ~explicitly_depended:"Bar" | ||
"bar" "1.0.0" [ make_locked_dependency ~used_as:"Foo" "foo" "2.0.0" ]; | ||
make_solution | ||
"foo" "1.0.0" []; | ||
make_solution | ||
"foo" "2.0.0" []; | ||
make_solution ~explicitly_depended:"Qux" | ||
"qux" "1.0.0" [ make_locked_dependency ~used_as:"Foo" "foo" "1.0.0" ]; | ||
]) | ||
in | ||
check package_context dependencies_with_flags expected | ||
|
||
|
||
let solve_test_2 () = | ||
let package_context = | ||
let local_fixed_dependencies = LocalFixedPackageIdMap.empty in | ||
let registered_package_impls = | ||
make_registered_package_impls [ | ||
("foo", [ | ||
make_impl "1.0.0" []; | ||
make_impl "1.1.0" []; | ||
]); | ||
("bar", [ | ||
make_impl "1.0.0" [ make_dependency_in_registry ~used_as:"FooA" "foo" "1.1.0" ]; | ||
]); | ||
("qux", [ | ||
make_impl "1.0.0" [ make_dependency_in_registry ~used_as:"FooB" "foo" "1.0.0" ]; | ||
]); | ||
] | ||
in | ||
{ language_version; local_fixed_dependencies; registered_package_impls } | ||
in | ||
let dependencies_with_flags = | ||
[ | ||
(SourceDependency, make_dependency ~used_as:"Bar" "bar" "1.0.0"); | ||
(SourceDependency, make_dependency ~used_as:"Qux" "qux" "1.0.0"); | ||
] | ||
in | ||
let expected = | ||
Some([ | ||
make_solution ~explicitly_depended:"Bar" | ||
"bar" "1.0.0" [ make_locked_dependency ~used_as:"FooA" "foo" "1.1.0" ]; | ||
make_solution | ||
"foo" "1.1.0" []; | ||
make_solution ~explicitly_depended:"Qux" | ||
"qux" "1.0.0" [ make_locked_dependency ~used_as:"FooB" "foo" "1.1.0" ]; | ||
]) | ||
in | ||
check package_context dependencies_with_flags expected | ||
|
||
|
||
let test_cases = | ||
Alcotest.[ | ||
test_case "solve 1" `Quick solve_test_1; | ||
test_case "solve 2" `Quick solve_test_2; | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
|
||
let () = | ||
let open Alcotest in | ||
run "Saphe Test" [ | ||
("PackageConfig", PackageConfigTest.test_cases); | ||
("PackageConstraintSolver", PackageConstraintSolverTest.test_cases); | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
|
||
let make_version (s_version : string) : SemanticVersion.t = | ||
match SemanticVersion.parse s_version with | ||
| Some(semver) -> semver | ||
| None -> assert false |