Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
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
11 changes: 11 additions & 0 deletions .clang-format
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
---
BasedOnStyle: LLVM
IndentWidth: 4
ColumnLimit: 120
BreakBeforeBraces: Attach
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
NamespaceIndentation: None
SortIncludes: CaseSensitive
IncludeBlocks: Regroup
7 changes: 7 additions & 0 deletions .clang-tidy
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
---
Checks: '-*'
WarningsAsErrors: '*'
HeaderFilterRegex: '(src/main/(cpp|include)|tests/(support|tempify))/.*'
FormatStyle: none
ExtraArgsBefore:
- '-std=c++23'
141 changes: 140 additions & 1 deletion .github/workflows/ci.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@ name: ci
on:
push:
branches:
- "**"
- main
tags:
- "v*"
pull_request:
Expand DownExpand Up@@ -184,6 +184,145 @@ jobs:
dist/*.rqp
if-no-files-found: error

quality-sanitizers:
name: quality-sanitizers
runs-on: ubuntu-24.04
timeout-minutes: 60
env:
CC: clang-18
CXX: clang++-18
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Linux prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends ninja-build pkg-config zstd clang-18
sudo ln -sf "$(command -v clang-18)" /usr/local/bin/clang
sudo ln -sf "$(command -v clang++-18)" /usr/local/bin/clang++
echo "/usr/local/bin" >> "$GITHUB_PATH"

- name: Bootstrap vcpkg dependencies
run: |
set -euo pipefail
chmod +x scripts/ci/bootstrap_vcpkg_deps.sh
./scripts/ci/bootstrap_vcpkg_deps.sh asan
# shellcheck disable=SC1091
source build-cmake/.vcpkg-asan.env
echo "VCPKG_ROOT=$VCPKG_ROOT" >> "$GITHUB_ENV"
echo "VCPKG_TARGET_TRIPLET=$VCPKG_TARGET_TRIPLET" >> "$GITHUB_ENV"

- name: Run AddressSanitizer tests
run: make sanitize

- name: Run ThreadSanitizer tests
run: make tsan

quality-fuzz:
name: quality-fuzz
runs-on: ubuntu-24.04
timeout-minutes: 45
env:
CC: clang-18
CXX: clang++-18
TEMPIFY_FUZZ_MAX_TOTAL_TIME: 30
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Linux prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends ninja-build pkg-config zstd clang-18
sudo ln -sf "$(command -v clang-18)" /usr/local/bin/clang
sudo ln -sf "$(command -v clang++-18)" /usr/local/bin/clang++
echo "/usr/local/bin" >> "$GITHUB_PATH"

- name: Bootstrap vcpkg dependencies
run: |
set -euo pipefail
chmod +x scripts/ci/bootstrap_vcpkg_deps.sh
./scripts/ci/bootstrap_vcpkg_deps.sh fuzz
# shellcheck disable=SC1091
source build-cmake/.vcpkg-fuzz.env
echo "VCPKG_ROOT=$VCPKG_ROOT" >> "$GITHUB_ENV"
echo "VCPKG_TARGET_TRIPLET=$VCPKG_TARGET_TRIPLET" >> "$GITHUB_ENV"

- name: Run fuzzers
run: make fuzz

- name: Replay fuzz regression corpus
run: make fuzz-regression

quality-coverage:
name: quality-coverage
runs-on: ubuntu-24.04
timeout-minutes: 45
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Linux prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends ninja-build pkg-config zstd g++ python3-pip
python3 -m pip install --break-system-packages 'gcovr>=8.6'

- name: Bootstrap vcpkg dependencies
run: |
set -euo pipefail
chmod +x scripts/ci/bootstrap_vcpkg_deps.sh
./scripts/ci/bootstrap_vcpkg_deps.sh coverage
# shellcheck disable=SC1091
source build-cmake/.vcpkg-coverage.env
echo "VCPKG_ROOT=$VCPKG_ROOT" >> "$GITHUB_ENV"
echo "VCPKG_TARGET_TRIPLET=$VCPKG_TARGET_TRIPLET" >> "$GITHUB_ENV"

- name: Run coverage tests
run: make coverage COVERAGE_MIN_LINE=85
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: build-cmake/coverage/coverage.xml
if-no-files-found: error

quality-analysis:
name: quality-analysis
runs-on: ubuntu-24.04
timeout-minutes: 45
env:
CC: clang-18
CXX: clang++-18
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Linux prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends ninja-build pkg-config zstd clang-18 clang-tidy-18 clang-format-18
sudo ln -sf "$(command -v clang-18)" /usr/local/bin/clang
sudo ln -sf "$(command -v clang++-18)" /usr/local/bin/clang++
echo "/usr/local/bin" >> "$GITHUB_PATH"

- name: Bootstrap vcpkg dependencies
run: |
set -euo pipefail
chmod +x scripts/ci/bootstrap_vcpkg_deps.sh
./scripts/ci/bootstrap_vcpkg_deps.sh asan
# shellcheck disable=SC1091
source build-cmake/.vcpkg-asan.env
echo "VCPKG_ROOT=$VCPKG_ROOT" >> "$GITHUB_ENV"
echo "VCPKG_TARGET_TRIPLET=$VCPKG_TARGET_TRIPLET" >> "$GITHUB_ENV"

- name: Check formatting
run: make format-check

- name: Run static analysis
run: make static-analysis

release:
if: startsWith(github.ref, 'refs/tags/v')
needs: build-test
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,3 +17,5 @@
/compile_commands.json
/scripts/ci/__pycache__/
/tests/test_workspace/
/tests/fault_tolerance/fuzz/corpus/
/build-cmake/
1 change: 1 addition & 0 deletions .reqpack-test/core/install-java-xyz.lua
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@ return {
system = "tempify",
flags = {
"data-root=@tmp/store",
"repo=tempify-default|0|.reqpack-test/fixtures/catalogs/java_xyz/templates.json",
},
packages = {
{ name = "java-xyz" }
Expand Down
17 changes: 17 additions & 0 deletions .reqpack-test/fixtures/catalogs/java_xyz/templates.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
{
"schemaVersion": 1,
"templates": [
{
"id": "java-xyz",
"name": "Java XYZ",
"description": "Small Java starter template",
"version": "0.1.0",
"tags": ["java", "starter"],
"source": {
"type": "git",
"url": "../../repos/java_xyz",
"subdir": ""
}
}
]
}
6 changes: 6 additions & 0 deletions .reqpack-test/fixtures/repos/java_xyz/files/README.md.pbt
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
# {{ project_name }}

Generated from Tempify `java-xyz` starter template.

- Project slug: `{{ project_slug }}`
- Java package: `{{ package_name }}`
27 changes: 27 additions & 0 deletions .reqpack-test/fixtures/repos/java_xyz/questions.lua
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
return {
order = { "Project" },
groups = {
Project = {
{
key = "project_name",
type = "string",
prompt = "Project name",
default = "Java XYZ App",
},
{
key = "project_slug",
type = "string",
prompt = "Project slug",
default = function(ctx)
return slugify(ctx.values.project_name or "java-xyz-app")
end,
},
{
key = "package_name",
type = "string",
prompt = "Java package",
default = "com.example.app",
},
},
},
}
11 changes: 11 additions & 0 deletions .reqpack-test/fixtures/repos/java_xyz/template.lua
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
return {
id = "java-xyz",
name = "Java XYZ",
version = "0.1.0",
description = "Small Java starter template",
source_dir = "files",
output = {
path = "{{ project_slug }}",
overwrite = false,
},
}
Loading
Loading