Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/cmake-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,8 @@ jobs:
cmake-build-skipped:
needs: [setup]
if: >
needs.setup.result == 'success' && github.event_name != 'workflow_dispatch' &&
!inputs.skip-relevance-check && needs.setup.outputs.is_act != 'true' &&
needs.setup.outputs.has_changes != 'true'
needs.setup.result == 'success' && github.event_name != 'workflow_dispatch' && !inputs.skip-relevance-check &&
needs.setup.outputs.is_act != 'true' && needs.setup.outputs.has_changes != 'true'
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down
13 changes: 10 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ repos:
- id: check-executables-have-shebangs
- id: mixed-line-ending
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.6
rev: v0.15.7
hooks:
- id: ruff-format
types_or: [python, pyi]
Expand All @@ -22,12 +22,19 @@ repos:
hooks:
- id: clang-format
types_or: [c++, c, cuda]
- repo: local
hooks:
- id: fix-header-guards
name: fix C++ header guards
entry: python3 scripts/fix_header_guards.py
language: system
files: \.(h|hpp)$
- repo: https://github.com/BlankSpruce/gersemi
rev: 0.26.0
rev: 0.26.1
hooks:
- id: gersemi
- repo: https://github.com/google/go-jsonnet
rev: v0.21.0
rev: v0.22.0-rc1
hooks:
- id: jsonnet-format
- id: jsonnet-lint
Expand Down
6 changes: 3 additions & 3 deletions test/form/data_products/extra_member/track_start.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

#include <iostream>

#ifndef TRACKSTART_HPP
#define TRACKSTART_HPP
#ifndef TEST_FORM_DATA_PRODUCTS_EXTRA_MEMBER_TRACK_START_HPP
#define TEST_FORM_DATA_PRODUCTS_EXTRA_MEMBER_TRACK_START_HPP

class TrackStart {
public:
Expand Down Expand Up @@ -36,4 +36,4 @@ class TrackStart {

std::ostream& operator<<(std::ostream& os, TrackStart const& track);

#endif //TRACKSTART_HPP
#endif // TEST_FORM_DATA_PRODUCTS_EXTRA_MEMBER_TRACK_START_HPP
6 changes: 3 additions & 3 deletions test/form/data_products/track_start.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

#include <iostream>

#ifndef __TRACK_START_H__
#define __TRACK_START_H__
#ifndef TEST_FORM_DATA_PRODUCTS_TRACK_START_HPP
#define TEST_FORM_DATA_PRODUCTS_TRACK_START_HPP

class TrackStart {
public:
Expand All @@ -28,4 +28,4 @@ class TrackStart {

std::ostream& operator<<(std::ostream& os, TrackStart const& track);

#endif //__TRACK_START_H__
#endif // TEST_FORM_DATA_PRODUCTS_TRACK_START_HPP
6 changes: 3 additions & 3 deletions test/form/test_helpers.hpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef TEST_HELPERS_HPP
#define TEST_HELPERS_HPP
#ifndef TEST_FORM_TEST_HELPERS_HPP
#define TEST_FORM_TEST_HELPERS_HPP

#include "data_products/track_start.hpp"
#include "form/form.hpp"

#endif
#endif // TEST_FORM_TEST_HELPERS_HPP
6 changes: 3 additions & 3 deletions test/form/test_utils.hpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//Utilities to make FORM unit tests easier to write and maintain

#ifndef FORM_TEST_UTILS_HPP
#define FORM_TEST_UTILS_HPP
#ifndef TEST_FORM_TEST_UTILS_HPP
#define TEST_FORM_TEST_UTILS_HPP

#include "storage/istorage.hpp"
#include "storage/storage_associative_container.hpp"
Expand Down Expand Up @@ -124,4 +124,4 @@ namespace form::test {

} // namespace form::test

#endif // FORM_TEST_UTILS_HPP
#endif // TEST_FORM_TEST_UTILS_HPP
6 changes: 3 additions & 3 deletions test/form/toy_tracker.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//A toy PHLEX algorithm that takes a maximum number of TrackStarts to generate and generates random points for them.
#ifndef __TOY_TRACKER_H__
#define __TOY_TRACKER_H__
#ifndef TEST_FORM_TOY_TRACKER_HPP
#define TEST_FORM_TOY_TRACKER_HPP
#include <cstdint>
#include <vector>

Expand All @@ -19,4 +19,4 @@ class ToyTracker {
int32_t random_max = 32768 * 32768;
};

#endif
#endif // TEST_FORM_TOY_TRACKER_HPP
146 changes: 95 additions & 51 deletions test/python/suffix.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,44 @@
"""



def constant_one(i: int) -> int:
"""Constant 1."""
return 1


def constant_two(i: int) -> int:
"""Constant 2."""
return 2


def constant_three(i: int) -> int:
"""Constant 3."""
return 3


def constant_four(i: int) -> int:
"""Constant 4."""
return 4


def observe_one(i: int) -> None:
"""Observe i; expect 1."""
assert i == 1


def observe_two(i: int, j: int) -> None:
"""Observe (i, j); expect (1, 2)."""
assert i == 1
assert j == 2


def observe_three(i: int, j: int, k: int) -> None:
"""Observe (i, j, k); expect (1, 2, 3)."""
assert i == 1
assert j == 2
assert k == 3


def observe_four(i: int, j: int, k: int, ll: int) -> None:
"""Observe (i, j, k, l); expect (1, 2, 3, 4)."""
assert i == 1
Expand All @@ -59,10 +65,12 @@ def PHLEX_REGISTER_ALGORITHMS(m, config):
None
"""
# tests for error handling of input specifications
for input_query in ({"creator": 42, "layer": "event", "suffix": "i"},
{"creator": "input", "layer": 42, "suffix": "i"},
{"layer": "event", "suffix": "i"},
{"creator": "input", "suffix": "i"}):
for input_query in (
{"creator": 42, "layer": "event", "suffix": "i"},
{"creator": "input", "layer": 42, "suffix": "i"},
{"layer": "event", "suffix": "i"},
{"creator": "input", "suffix": "i"},
):
try:
m.transform(constant_one, input_family=[input_query], output_products=["output_one"])
assert not "supposed to be here"
Expand All @@ -71,67 +79,103 @@ def PHLEX_REGISTER_ALGORITHMS(m, config):
assert "or not a string" in str(e)

# transforms with suffix to be used without suffix
m.transform(constant_one, input_family=[
{"creator": "input", "layer": "event", "suffix": "i"},
],
output_products=["output_one"])
m.transform(constant_two, input_family=[
{"creator": "input", "layer": "event", "suffix": "i"},
],
output_products=["output_two"])
m.transform(constant_three, input_family=[
{"creator": "input", "layer": "event", "suffix": "i"},
],
output_products=["output_three"])
m.transform(
constant_one,
input_family=[
{"creator": "input", "layer": "event", "suffix": "i"},
],
output_products=["output_one"],
)
m.transform(
constant_two,
input_family=[
{"creator": "input", "layer": "event", "suffix": "i"},
],
output_products=["output_two"],
)
m.transform(
constant_three,
input_family=[
{"creator": "input", "layer": "event", "suffix": "i"},
],
output_products=["output_three"],
)

# observers without suffix

# test for failing suffix (incorrect type: not a string)
try:
m.observe(observe_one, input_family=[
{"creator": "constant_one", "layer": "event", "suffix": 42},
])
m.observe(
observe_one,
input_family=[
{"creator": "constant_one", "layer": "event", "suffix": 42},
],
)
assert not "supposed to be here"
except TypeError as e:
assert "is not a string" in str(e)
m.observe(observe_one, input_family=[
{"creator": "constant_one", "layer": "event"},
])
m.observe(
observe_one,
input_family=[
{"creator": "constant_one", "layer": "event"},
],
)

# regular
m.observe(observe_two, input_family=[
{"creator": "constant_one", "layer": "event"},
{"creator": "constant_two", "layer": "event"},
])
m.observe(observe_three, input_family=[
{"creator": "constant_one", "layer": "event"},
{"creator": "constant_two", "layer": "event"},
{"creator": "constant_three", "layer": "event"},
])
m.observe(
observe_two,
input_family=[
{"creator": "constant_one", "layer": "event"},
{"creator": "constant_two", "layer": "event"},
],
)
m.observe(
observe_three,
input_family=[
{"creator": "constant_one", "layer": "event"},
{"creator": "constant_two", "layer": "event"},
{"creator": "constant_three", "layer": "event"},
],
)

# test for unsupported number of arguments (remove test once support
# to arbitrary number of arguments becomes available
try:
m.observe(observe_three, input_family=[
{"creator": "constant_one", "layer": "event"},
{"creator": "constant_two", "layer": "event"},
{"creator": "constant_three", "layer": "event"},
{"creator": "constant_four", "layer": "event"},
])
m.observe(
observe_three,
input_family=[
{"creator": "constant_one", "layer": "event"},
{"creator": "constant_two", "layer": "event"},
{"creator": "constant_three", "layer": "event"},
{"creator": "constant_four", "layer": "event"},
],
)
assert not "supposed to be here"
except TypeError:
pass # noqa
pass # noqa

# observers with suffix
m.observe(observe_one, name="observe_one_ws", input_family=[
{"creator": "constant_one", "layer": "event", "suffix": "output_one"},
])
m.observe(observe_two, name="observe_two_ws", input_family=[
{"creator": "constant_one", "layer": "event", "suffix": "output_one"},
{"creator": "constant_two", "layer": "event", "suffix": "output_two"},
])
m.observe(observe_three, name="observe_three_ws", input_family=[
{"creator": "constant_one", "layer": "event", "suffix": "output_one"},
{"creator": "constant_two", "layer": "event", "suffix": "output_two"},
{"creator": "constant_three", "layer": "event", "suffix": "output_three"},
])
m.observe(
observe_one,
name="observe_one_ws",
input_family=[
{"creator": "constant_one", "layer": "event", "suffix": "output_one"},
],
)
m.observe(
observe_two,
name="observe_two_ws",
input_family=[
{"creator": "constant_one", "layer": "event", "suffix": "output_one"},
{"creator": "constant_two", "layer": "event", "suffix": "output_two"},
],
)
m.observe(
observe_three,
name="observe_three_ws",
input_family=[
{"creator": "constant_one", "layer": "event", "suffix": "output_one"},
{"creator": "constant_two", "layer": "event", "suffix": "output_two"},
{"creator": "constant_three", "layer": "event", "suffix": "output_three"},
],
)
Loading