ScenicFramework / scenic

Core Scenic library
Apache License 2.0
1.99k stars 137 forks source link

Add basic CI github action #318

Closed axelson closed 1 year ago

axelson commented 1 year ago

Description

Adds GitHub actions as CI to ensure that any pull requests pass all of our CI checks

Tests are run on OTP 24.2 which is the lowest version of OTP that is supported by Ubuntu 22.04 by erlef/setup-beam: https://github.com/erlef/setup-beam#compatibility-between-operating-system-and-erlangotp

Failing tests are successfully found: https://github.com/ScenicFramework/scenic/actions/runs/5231301605/jobs/9445365052?pr=318

There's many warnings printed while running the tests, but I think we can wait and fix those in a followup PR:

Error: 18:13:54.431 [error] GenServer #PID<0.3409.0> terminating
** (ArgumentError) argument error
    (stdlib 3.17) :ets.lookup(#Reference<0.2423467283.3612475393.247207>, "ctU_DlJdXEYBxRzNU77waQ")
    (scenic 0.11.1) lib/scenic/view_port.ex:269: Scenic.ViewPort.get_script/2
    (scenic 0.11.1) lib/scenic/view_port.ex:374: Scenic.ViewPort.put_graph/4
    (scenic 0.11.1) lib/scenic/scene.ex:864: Scenic.Scene.push_graph/3
    (scenic 0.11.1) lib/scenic/component/input/caret.ex:179: Scenic.Component.Input.Caret.handle_cast/2
    (stdlib 3.17) gen_server.erl:695: :gen_server.try_dispatch/4
    (stdlib 3.17) gen_server.erl:771: :gen_server.handle_msg/6
    (stdlib 3.17) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Last message: {:"$gen_cast", :reset_caret}
State: %Scenic.Scene{assigns: %{focused: true, graph: %Scenic.Graph{add_to: 0, animations: [], ids: %{_root_: [0], caret: [1]}, next_uid: 2, primitives: %{0 => %Scenic.Primitive{data: [1], default_pin: {0, 0}, id: :_root_, module: Scenic.Primitive.Group, opts: [], parent_uid: -1, styles: %{}, transforms: %{}}, 1 => %Scenic.Primitive{data: {{0, 4}, {0, 26.0}}, default_pin: {0.0, 15.0}, id: :caret, module: Scenic.Primitive.Line, opts: [], parent_uid: 0, styles: %{hidden: false, stroke: {2, {:color, {:color_rgba, {244, 164, 96, 255}}}}}, transforms: %{}}}}, hidden: false, timer: {:interval, #Reference<0.2423467283.3612344322.239828>}}, child_supervisor: nil, children: nil, id: "ctU_DlJdXEYBxRzNU77waQ", module: Scenic.Component.Input.Caret, parent: #PID<0.3401.0>, pid: #PID<0.3409.0>, stop_pid: #PID<0.3409.0>, supervisor: #PID<0.3400.0>, theme: :dark, viewport: %Scenic.ViewPort{name: nil, pid: #PID<0.3383.0>, script_table: #Reference<0.2423467283.3612475393.247207>, size: {700, 600}}

Motivation and Context

Previously Scenic was using Travis but Travis has severely limited their free plan.

Types of changes

Checklist