Jean Privat [Tue, 28 Nov 2017 15:49:10 +0000 (10:49 -0500)]
tests: force a utf8 locale because gradle don't like pure ascii
this should fix the CI tests when people with international names make PR.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Nov 2017 15:02:56 +0000 (10:02 -0500)]
Merge: nitin FFI seems to work
This adds the bad triple-quoted string and bad extern in the lexer to enable continuing in nitin.
Now FFI seems to work.
~~~raw
-->fun hello `{
...puts("Hello, world");
...`}
-->hello
Hello, world
~~~
Pull-Request: #2587
Jean Privat [Mon, 27 Nov 2017 15:02:55 +0000 (10:02 -0500)]
Merge: android: update compiler to use the "new" toolchain
Update the Android support in the compiler to use of the new official Android toolchain based on gradle and CMake, it replaces the old toolchain based on ndk-build and Android.mk files. The use of the new toolchain makes it easier to connect with libraries, it follow the current examples, it is a bit faster to compile, it automatically downloads the SDK files for the target platforms and it has a decent quiet compilation mode!
The new toolchain brings the following changes to the generate Android projects:
* It adds a new project layer above the app layer, this results in moving most of the generated code down in the `app/src/main` folder.
* It moves some settings (API levels, etc.) out of AndroidManifest.xml to a `build.gradle`.
* It replaces the makefiles Android.mk by CMakeLists.txt.
I took advantage of these changes to bring back the GC support for Nit on Android. The new toolchain executes the standard libgc/bdwgc CMakeLists.txt with only small modifications (based on the Unity fork) and the GC works as expected on Android (with thread support). Having a working GC required tweaking some existing Nit code that did not take into account a functioning GC in order to correctly pin references to Nit objects from Java.
I've also updated the full Docker image to support the new toolchain.
Note that the new Android toolchain supports only 64 bits host platforms with Java 8 JDK.
Future work:
* Support more ABIs, incl. arm64 and x86_64, they should be activated only when targetting their minimum supported platform.
* Compile libunwind with its CMakeLists.txt.
* Support adding extra lines to the gradle files, or accept full gradle files from clients.
Pull-Request: #2575
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 24 Nov 2017 00:16:07 +0000 (19:16 -0500)]
Merge: src/doc: Introduce doc commands
There is 3 doc related tools:
* nitdoc
* nitweb
* nitx
Each tool currently uses an ad-hoc way to explore the model, retrieve and present the results.
This PR aims at unifying the process between all the documentation tools by providing a unique API to explore model and entities.
A `DocCommand` represents a query to perform on the model.
Since a command can be used by a wide variety of clients, initialization of DocCommands works in two steps.
First, you pass the data you already have to the command at init:
~~~nit
# var c1 = new CmdEntity(view, mentity_name = "Array")
# var c2 = new CmdEntity(view, mentity = my_entity)
~~~
Then, you call `init_command` to initialize the missing field from the stub data:
~~~nit
var r1 = c1.init_command
assert c1.mentity != null
assert r1 isa CmdSuccess
var r2 = c2.init_command
assert c2.mentity_name != null
assert r2 isa CmdSuccess
~~~
There is a variety of commands that can be used to fulfill the tool objectives:
* `commands_model`: commands related to model and entities
* `commands_catalog`: commands related to catalog and statistics
* `commands_graph`: commands related to visual representations
* `commands_usage`: commands related to classes and methods usage
* `commands_docdown`: commands related to MDoc parsing and markdown features
To make the integration with tools easier some features are added in:
* `commands_parser`: parse commands from string such as `graph: array | pdepth: 1`
* `commands_http`: initialize commands options from HTTP requests
Rendering options:
* `commands_json`: render the command results as JSON
* `commands_html`: render the command results as HTML
A lot of examples can be found in the test modules.
Pull-Request: #2580
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Nov 2017 20:45:09 +0000 (15:45 -0500)]
nitin: add FFI example in the README
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Nov 2017 20:41:50 +0000 (15:41 -0500)]
nitin: continue on bad triple-quoted string and bad extern
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Nov 2017 20:41:02 +0000 (15:41 -0500)]
lexer: add token for bad extern segment, and bad triple quoted string
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Nov 2017 20:40:12 +0000 (15:40 -0500)]
nitin: display syntax error as soon as possible
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Nov 2017 16:13:00 +0000 (11:13 -0500)]
Merge: app.nit: fix issues in examples and calculator
- Fix missing Makefile dependencies by correctly using the -m options in calls to nitls. It would work without the -m for simple programs but misses some files when there are conditional importations.
- Fix crash in `http_request_example` by updating the latest app.nit UI API from #2547. Closes #2577.
- Compile the scientific desktop variant of the calculator with the `all` rule.
Pull-Request: #2579
Jean Privat [Thu, 23 Nov 2017 16:12:59 +0000 (11:12 -0500)]
Merge: interactive nit: main variables are preserved
This hacks (by refinement) the scope and interpretation services to load and save the states of the local variables of the main method.
`nitin` is now usable for everyday usages:
~~~raw
-->var sum=0
-->for i in [0..5[ do
...print i
...sum += i
...end
0
1
2
3
4
-->print sum
10
~~~
Pull-Request: #2584
Jean Privat [Thu, 23 Nov 2017 16:12:58 +0000 (11:12 -0500)]
Merge: gamnit: distinguish between `create_gamnit` and `create_scene`
Intro `create_gamnit` and `create_scene` to replace the use of `on_create` in gamnit. This change keeps separate the OpenGL setup in `create_gamnit`, from the world/menu creation in `create_scene`. This will allow support for reinitializing the OpenGL context when the EGL context is lost, which may happen on Android when the game goes in the background. It may also support creating a gamnit game separately from the main application.
Current gamnit games should still work despite the API change, but they will need updating to work with the incoming Android support.
Pull-Request: #2585
Reviewed-by: Romain Chanoir <romain.chanoir@viacesi.fr>
Alexandre Terrasa [Tue, 21 Nov 2017 22:31:20 +0000 (17:31 -0500)]
tests: fix model serialization tests
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:39:00 +0000 (23:39 -0400)]
doc/commands: introduce docdown related commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Wed, 25 Oct 2017 01:53:24 +0000 (21:53 -0400)]
doc/docdown: render mdoc as markdown
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:43:11 +0000 (23:43 -0400)]
doc/commands: introduce commands group
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:37:44 +0000 (23:37 -0400)]
doc/commands: introduce html rendering for commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Oct 2017 19:01:39 +0000 (15:01 -0400)]
doc/templates: introduce model to html translations
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Wed, 25 Oct 2017 02:01:36 +0000 (22:01 -0400)]
lib/html: bootstrap use optional annotation
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 20:16:56 +0000 (16:16 -0400)]
doc/commands: introduce commands results to json translation
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 20:35:36 +0000 (16:35 -0400)]
doc/commands: introduce command initialization from HTTP requests
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:27:16 +0000 (23:27 -0400)]
doc/commands: introduce commands parser
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 21:51:01 +0000 (17:51 -0400)]
doc/commands: introduce catalog commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:15:49 +0000 (23:15 -0400)]
doc/commands: introduce usage commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:15:35 +0000 (23:15 -0400)]
doc/commands: introduce graph commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 03:15:27 +0000 (23:15 -0400)]
doc/commands: introduce model commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 02:37:22 +0000 (22:37 -0400)]
doc/commands: introduce doc commands
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 20:56:47 +0000 (16:56 -0400)]
nitweb: use catalog_json
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 20:56:34 +0000 (16:56 -0400)]
catalog: introduce catalog to json translation
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 20:56:17 +0000 (16:56 -0400)]
catalog: create a group for catalog modules
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Oct 2017 02:24:51 +0000 (22:24 -0400)]
markdown: reset headlines collection between two processing
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexis Laferrière [Sat, 7 Oct 2017 15:41:21 +0000 (11:41 -0400)]
docker: update for the new Android toolchain and predownload GC and gradle
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Oct 2017 13:31:47 +0000 (09:31 -0400)]
benitlux: fix use of global references from Java FFI
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 27 Sep 2017 14:26:58 +0000 (10:26 -0400)]
android: use global references in `audio` implementation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 7 Apr 2017 15:13:00 +0000 (11:13 -0400)]
android: fix pinning non-local ref to Nit objects from Java
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 24 Oct 2017 21:34:41 +0000 (17:34 -0400)]
android: avoid callbacks in audio implementation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 24 Oct 2017 19:32:52 +0000 (15:32 -0400)]
android: update native_app_glue
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 24 Oct 2017 19:32:37 +0000 (15:32 -0400)]
android: update host setup guide
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Oct 2017 13:31:26 +0000 (09:31 -0400)]
android: activate the GC
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 24 Oct 2017 13:27:39 +0000 (09:27 -0400)]
android: rewrite of the Android support to use the "new" gradle toolchain
This replaces the use of the old ndkbuild toolchain.
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 30 Sep 2017 17:16:05 +0000 (13:16 -0400)]
gamnit: fix error between comment and code in template project
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 5 Oct 2017 11:27:58 +0000 (07:27 -0400)]
gamnit: move camera default settings to create_scene
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 3 Oct 2017 20:14:35 +0000 (16:14 -0400)]
gamnit: check for more errors
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 26 Sep 2017 19:27:46 +0000 (15:27 -0400)]
gamnit: split use of App::on_create between create_gamnit and create_scene
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 26 Sep 2017 17:36:30 +0000 (13:36 -0400)]
gamnit: reset SpriteSet at create to support recreating the GPU context
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 1 Sep 2017 11:52:50 +0000 (07:52 -0400)]
gamnit: fix sprite set management in flat_core
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 1 Sep 2017 11:52:17 +0000 (07:52 -0400)]
gamnit: fix propagation of on_stop
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 21 Nov 2017 17:12:26 +0000 (12:12 -0500)]
nitin: update README with more examples and main variables
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Nov 2017 16:30:39 +0000 (11:30 -0500)]
nitin: save and inject main variable between prompts
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Nov 2017 16:34:32 +0000 (11:34 -0500)]
naive_interpreter: make `InterpreterFrame::map` and `call_commons` public
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Nov 2017 16:27:45 +0000 (11:27 -0500)]
nitin: get the main_method early to simplify the code
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Nov 2017 16:26:34 +0000 (11:26 -0500)]
nitin: show syntactic errors the standard way
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Nov 2017 16:26:01 +0000 (11:26 -0500)]
nitin: keep the line number increasing between prompts
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Nov 2017 16:17:05 +0000 (11:17 -0500)]
nitin: add optional source name in error messages (for tests)
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Tue, 14 Nov 2017 18:12:52 +0000 (13:12 -0500)]
calculator: add the scientific variant to the `all` Makefile rule
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 9 Nov 2017 13:44:02 +0000 (08:44 -0500)]
app.nit examples: fix dependencies by adding the missing -m to nitls calls
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 14 Nov 2017 18:08:57 +0000 (13:08 -0500)]
app.nit examples: update http_request_example to correctly define the root_window
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexandre Terrasa [Sat, 14 Oct 2017 03:12:35 +0000 (23:12 -0400)]
model_collect: fix collect_ancestors
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 13 Oct 2017 17:48:12 +0000 (13:48 -0400)]
model_views: introduce `mentities_by_name` in views
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Mon, 13 Nov 2017 16:03:20 +0000 (11:03 -0500)]
Merge: Model filters: extract filters from ModelVisitor
A list of filters that can be applied on a MEntity
By default ModelFilter accepts all mentity.
~~~nit
var filter = new ModelFilter
assert filter.accept_mentity(my_mentity) == true
~~~
To quickly configure the filters, options can be passed to the constructor:
~~~nit
var filter = new ModelFilter(
min_visibility = protected_visibility,
accept_fictive = false,
accept_test = false,
accept_redef = false,
accept_extern = false,
accept_attribute = false,
accept_empty_doc = false
)
~~~
With this, one can use temporary filters with the model visitors and views:
~~~nit
var default_filter = new ModelFilter(private_visibility)
var view = new ModelView(view, default_filter)
# ...
if view.accept_mentity(mentity) then
# ...
end
# ...
var custom_filter = new ModelFilter(public_visibility)
if view.accept_mentity(mentity, custom_filter) then
# ...
end
~~~
Pull-Request: #2567
Reviewed-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Mon, 16 Oct 2017 23:53:43 +0000 (19:53 -0400)]
nitdoc: protect package access when ModelFilters allows fictive modules
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Sun, 22 Oct 2017 21:08:18 +0000 (17:08 -0400)]
tests: fix tests for model visitor
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 16 Oct 2017 23:52:33 +0000 (19:52 -0400)]
tests: fix tests for model filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 16 Oct 2017 23:44:13 +0000 (19:44 -0400)]
tests: fix tests for model index
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Sun, 22 Oct 2017 21:11:32 +0000 (17:11 -0400)]
nituml: use model filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 19 Oct 2017 00:23:53 +0000 (20:23 -0400)]
nitweb: use model filters
Also introduce new options to control filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 17 Aug 2017 20:07:11 +0000 (16:07 -0400)]
nitdoc: use model filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 7 Nov 2017 17:12:54 +0000 (12:12 -0500)]
nitmetrics: use model filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Nov 2017 17:28:38 +0000 (12:28 -0500)]
model: json use filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 8 Nov 2017 20:34:30 +0000 (15:34 -0500)]
Merge: NLP: More Natural Language Processing features
# Nit wrapper for Stanford CoreNLP
Stanford CoreNLP provides a set of natural language analysis tools which can take
raw text input and give the base forms of words, their parts of speech, whether
they are names of companies, people, etc., normalize dates, times, and numeric
quantities, and mark up the structure of sentences in terms of phrases and word
dependencies, indicate which noun phrases refer to the same entities, indicate
sentiment, etc.
This wrapper needs the Stanford CoreNLP jars that run on Java 1.8+.
See http://nlp.stanford.edu/software/corenlp.shtml.
## NLPProcessor
### Java client
~~~nit
var proc = new NLPProcessor("path/to/StanfordCoreNLP/jars")
var doc = proc.process("String to analyze")
for sentence in doc.sentences do
for token in sentence.tokens do
print "{token.lemma}: {token.pos}"
end
end
~~~
### NLPServer
The NLPServer provides a wrapper around the StanfordCoreNLPServer.
See `https://stanfordnlp.github.io/CoreNLP/corenlp-server.html`.
~~~nit
var cp = "/path/to/StanfordCoreNLP/jars"
var srv = new NLPServer(cp, 9000)
srv.start
~~~
### NLPClient
The NLPClient is used as a NLPProcessor with a NLPServer backend.
~~~nit
var cli = new NLPClient("http://localhost:9000")
var doc = cli.process("String to analyze")
~~~
## NLPIndex
NLPIndex extends the StringIndex to use a NLPProcessor to tokenize, lemmatize and
tag the terms of a document.
~~~nit
var index = new NLPIndex(proc)
var d1 = index.index_string("Doc 1", "/uri/1", "this is a sample")
var d2 = index.index_string("Doc 2", "/uri/2", "this and this is another example")
assert index.documents.length == 2
matches = index.match_string("this sample")
assert matches.first.document == d1
~~~
Pull-Request: #2566
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Nov 2017 20:34:29 +0000 (15:34 -0500)]
Merge: nitcc: add nfa transformation to remove epsilon
A NFA can be transformed to another NFA without epsilon-transition.
This is mostly useless but can make large NFA more readable.
Also add some bugfixes
Pull-Request: #2573
Alexandre Terrasa [Thu, 17 Aug 2017 20:04:48 +0000 (16:04 -0400)]
model: views use filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Sun, 22 Oct 2017 21:06:04 +0000 (17:06 -0400)]
model: visitor uses filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 29 Sep 2017 21:47:43 +0000 (17:47 -0400)]
model: introduce filters
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 29 Sep 2017 21:47:59 +0000 (17:47 -0400)]
model: tag groups as tests
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 6 Nov 2017 19:40:23 +0000 (14:40 -0500)]
contrib/rss_downloader: fix nullable usage for title and link
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexis Laferrière [Fri, 7 Apr 2017 15:13:42 +0000 (11:13 -0400)]
share: update bdwgc sources for Android and drop the custom compile script
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 24 Oct 2017 18:22:50 +0000 (14:22 -0400)]
share: intro gradle wrapper for Android
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Fri, 27 Oct 2017 14:06:42 +0000 (10:06 -0400)]
Merge: model: ModelView uses mainmodule
ModelView uses a mainmodule to flatten mclass hierarchies.
Pull-Request: #2568
Jean Privat [Fri, 27 Oct 2017 14:05:50 +0000 (10:05 -0400)]
Merge: json::dynamic: extend `get` to support arrays and keys with dots
Extend `JsonValue::get` to support arrays and keys containing the '.' character.
As a general cleanup, remove services specific to parsing errors as clients should check errors only once, and update and standardize the documentation.
Pull-Request: #2558
Jean Privat [Fri, 27 Oct 2017 14:03:37 +0000 (10:03 -0400)]
Merge: popcorn: pop_test uses NIT_TESTING_ID to determine test port
This PR modifies the *pop-tests* so they use `NIT_TESTING_ID` to select the listening port.
This should avoid ports conflicts when testing multiple PR at the same time on Jenkins.
Let's try this!
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Pull-Request: #2571
Jean Privat [Fri, 27 Oct 2017 14:03:36 +0000 (10:03 -0400)]
Merge: nitunit: some fixes and improvements for the `before_all`, `after_all` annotations
This PR does three things:
* fixes the importation of `before_all` and `after_all` methods
* allows use of `before_all` and `after_all` methods within classes
* changes the test execution order for imported test suites
### Fix the importation of `before_all` and `after_all` methods
First of all, this PR fixes the behavior of nitunit with multiple test_suite importation.
Be two modules `a` and `b`:
~~~nit
module a is test
class TestA
test
# some test cases
end
fun setup is before_all do # important things
~~~
~~~nit
module b is test
import module a
class TestB
super TestA
test
end
~~~
In this case, because `b` does not introduce any `before_all` method, the method from `a` was not executed.
This is fixed now.
### Class-level `before_all` and `after_all` methods
`before_all` and `after_all` can now be used inside a class definition to indicate methods that must be executed before / after all methods inside the class:
~~~nit
class TestC
test
fun setup is before_all do # something before all test cases of `TestC`
# some test cases
end
~~~
### Tests execution order
Methods with `before*` and `after*` annotations are linearized and called in different ways.
* `before*` methods are called from the least specific to the most specific
* `after*` methods are called from the most specific to the least specific
~~~nit
module test_bdd_connector
import bdd_connector
# Testing the bdd_connector
class TestConnector
test
# test cases using a server
end
# Method executed before testing the module
fun setup_db is before_all do
# start server before all test cases
end
# Method executed after testing the module
fun teardown_db is after_all do
# stop server after all test cases
end
~~~
When dealing with multiple test suites, niunit allows you to import other test suites to factorize your tests:
~~~nit
module test_bdd_users
import test_bdd_connector
# Testing the user table
class TestUsersTable
test
# test cases using the db server from `test_bdd_connector`
end
fun setup_table is before_all do
# create user table
end
fun teardown_table is after_all do
# drop user table
end
~~~
In the previous example, the execution order would be:
1. `test_bdd_connector::setup_db`
2. `test_bdd_users::setup_table`
3. `all test cases from test_bdd_users`
4. `test_bdd_users::teardown_table`
5. `test_bdd_connector::teardown_db`
Pull-Request: #2572
Jean Privat [Fri, 27 Oct 2017 13:17:10 +0000 (09:17 -0400)]
nitcc: generate more intermediate automaton
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Oct 2017 13:16:46 +0000 (09:16 -0400)]
nitcc: add transformation from a NFA to a epsilonless NFA
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Oct 2017 13:16:17 +0000 (09:16 -0400)]
nitcc: remove a truism warning
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Oct 2017 13:15:54 +0000 (09:15 -0400)]
nitcc: to_minimal_dfa is a little faster
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Oct 2017 13:10:27 +0000 (09:10 -0400)]
nitcc: a empty automaton has at least a start state, even if non-terminal
Signed-off-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Thu, 26 Oct 2017 22:18:58 +0000 (18:18 -0400)]
nitunit: update documentation
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Oct 2017 22:05:13 +0000 (18:05 -0400)]
nitunit: fix nitunits within the README
Most of them seem to be nitish since there is a lot a fake modules used.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Oct 2017 21:44:11 +0000 (17:44 -0400)]
nitunit: linearize test execution
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Oct 2017 21:14:05 +0000 (17:14 -0400)]
nitunit: introduce before/after class tests
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Oct 2017 21:13:27 +0000 (17:13 -0400)]
nitunit: do not execute a before/after test twice
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Oct 2017 20:37:34 +0000 (16:37 -0400)]
nitunit: fix `before-all` and `after-all` detection
Before this commit, nitunit did not lookup annotation from parent modules
if no local definition of Sys was found.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 23 Oct 2017 14:05:42 +0000 (10:05 -0400)]
popcorn: pop_test uses NIT_TESTING_ID to determine test port
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 19 Oct 2017 00:27:19 +0000 (20:27 -0400)]
model_json: update ModelView
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 16 Oct 2017 03:18:55 +0000 (23:18 -0400)]
nitweb: update ModelView
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 17 Oct 2017 20:09:26 +0000 (16:09 -0400)]
Merge: core: implement `Float::to_precision` in C without callbacks
Fix #2561, int overflows in `Float::to_precision` with a high float value or a high precision.
The native implementation was removed by
9cb09ccf to support the interpreter. Since then, we added support for the FFI in the interpreter so we can bring back a native implementation.
Pull-Request: #2562
Jean Privat [Tue, 17 Oct 2017 20:09:25 +0000 (16:09 -0400)]
Merge: markdown: merge MDProcessor and MDEmitter
The emitter was unecessary.
Also done some cleaning.
Pull-Request: #2563
Jean Privat [Tue, 17 Oct 2017 20:09:24 +0000 (16:09 -0400)]
Merge: lib/config: fix doc
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Pull-Request: #2564
Jean Privat [Tue, 17 Oct 2017 20:09:23 +0000 (16:09 -0400)]
Merge: lib/markdown: fix `text` for nested markdown blocks
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Pull-Request: #2565
Alexandre Terrasa [Mon, 16 Oct 2017 23:08:44 +0000 (19:08 -0400)]
tests: update tests.sh
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>