Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cli minor refactor #850

Merged
merged 7 commits into from
Jan 25, 2025
Merged
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
6 changes: 3 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ jobs:
uses: actions/setup-go@v5
with:
go-version: '1.23'
- name: build
run: go build -v ./...
- name: install
run: |
go install ./cmd/neva
echo "$GOPATH/bin" >> $GITHUB_PATH
- name: test
run: go test -v -count=1 ./...
# IMPORTANT: "-p 1" is a temporary fix for https://github.com/nevalang/neva/issues/767
# It set's number of packages that can be run in parallel to one (sequentially)
run: go test -v -count=1 -p 1 ./...
14 changes: 0 additions & 14 deletions .vscode/bookmarks.json

This file was deleted.

38 changes: 38 additions & 0 deletions benchmarks/message_passing/bench_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Remember - Go runs benchmark function twice:
// first time for calibration, second time for actual benchmark.
// This might affect working with relative paths!

package test

import (
"os"
"os/exec"
"testing"

"github.com/stretchr/testify/require"
)

func BenchmarkMessagePassing(b *testing.B) {
// Store original working directory
originalWd, err := os.Getwd()
require.NoError(b, err)

// Change to parent directory
err = os.Chdir("..")
require.NoError(b, err)

// Ensure we return to original directory after benchmark
defer func() {
err := os.Chdir(originalWd)
require.NoError(b, err)
}()

// Reset timer after setup
b.ResetTimer()

for i := 0; i < b.N; i++ {
cmd := exec.Command("neva", "run", "message_passing")
out, err := cmd.CombinedOutput()
require.NoError(b, err, string(out))
}
}
1 change: 1 addition & 0 deletions benchmarks/neva.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
neva: 0.30.2
27 changes: 0 additions & 27 deletions benchmarks/simplest_message_passing/bench_test.go

This file was deleted.

5 changes: 4 additions & 1 deletion cmd/neva/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ func main() {

// run CLI app
if err := app.Run(os.Args); err != nil {
fmt.Fprintln(os.Stderr, err)
if _, err := fmt.Fprintln(os.Stderr, err); err != nil {
panic(err)
}
os.Exit(1)
}
}
6 changes: 3 additions & 3 deletions docs/book/program_structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ Module is usually a git-repo but not necessary. Module that isn't published in g

### Manifest File

The manifest defines the module's minimum supported language version and dependencies. Here's an example manifest with a dependency on the Nevalang compiler version `0.30.1` and a third-party module:
The manifest defines the module's minimum supported language version and dependencies. Here's an example manifest with a dependency on the Nevalang compiler version `0.30.2` and a third-party module:

```yaml
neva: 0.30.1
neva: 0.30.2
deps:
github.com/nevalang/x:
path: github.com/nevalang/x
Expand All @@ -51,7 +51,7 @@ The `deps` field is a map where each dependency has an alias. When adding depend
> WIP: CLI tool planned for CI/CD to verify module's backward compatibility

```yaml
neva: 0.30.1
neva: 0.30.2
deps:
github.com/nevalang/x@0-0-12:
path: github.com/nevalang/x
Expand Down
4 changes: 2 additions & 2 deletions docs/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ After installation is finished, you should be able to run the `neva` CLI from yo
neva version
```

It should emit something like `0.30.1`
It should emit something like `0.30.2`

### Hello, World!

Expand Down Expand Up @@ -256,7 +256,7 @@ This structure introduces two fundamental concepts in Nevalang: modules and pack
A module is a set of packages with a manifest file (`neva.yaml`). When we created our project with `neva new`, it generated a basic module with the following manifest file:

```yaml
neva: 0.30.1
neva: 0.30.2
```

This defines the Nevalang version for our project. As your project grows, you can include dependencies on third-party modules here.
Expand Down
2 changes: 1 addition & 1 deletion e2e/99_bottles_verbose/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/add_nums_from_stdin_naive/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/add_nums_from_stdin_with_default_any/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/add_nums_from_stdin_with_err_handling/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/add_nums_from_stdin_with_multuple_senders/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/add_nums_from_stdin_with_sub_components/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/add_nums_verbose/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
8 changes: 2 additions & 6 deletions e2e/array_inport_holes/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,12 @@ import (

func Test(t *testing.T) {
cmd := exec.Command("neva", "run", "main")

cmd.Stdin = strings.NewReader("yo\n")
out, err := cmd.CombinedOutput()
require.NoError(t, err)

out, _ := cmd.CombinedOutput()
require.Equal(t, 1, cmd.ProcessState.ExitCode())
require.Contains(
t,
string(out),
"main/main.neva:4:1: array inport 'printf:args' is used incorrectly: slot 1 is missing\n",
)

require.Equal(t, 0, cmd.ProcessState.ExitCode())
}
2 changes: 1 addition & 1 deletion e2e/array_inport_holes/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
8 changes: 2 additions & 6 deletions e2e/array_outport_holes/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,12 @@ import (

func Test(t *testing.T) {
cmd := exec.Command("neva", "run", "main")

cmd.Stdin = strings.NewReader("yo\n")
out, err := cmd.CombinedOutput()
require.NoError(t, err)

out, _ := cmd.CombinedOutput()
require.Equal(t, 1, cmd.ProcessState.ExitCode())
require.Contains(
t,
string(out),
"main/main.neva:4:1: array outport 'fanOut:data' is used incorrectly: slot 1 is missing\n",
)

require.Equal(t, 0, cmd.ProcessState.ExitCode())
}
2 changes: 1 addition & 1 deletion e2e/array_outport_holes/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/add_floats/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/add_ints/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/add_strings/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/divide_floats/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/divide_ints/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/modulo/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/multiply_floats/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/multiply_ints/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/power/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/subtract_floats/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/arithmetic/subtract_ints/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/bitwise/and/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/bitwise/left_shift/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/bitwise/or/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/bitwise/right_shift/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/bitwise/xor/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/comparison/equal/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/comparison/greater_int/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/comparison/less_int/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/comparison/less_or_equal_int/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/comparison/not_equal/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/logical/and/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/binary_operators/logical/or/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
2 changes: 1 addition & 1 deletion e2e/classify_int/neva.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
neva: 0.30.1
neva: 0.30.2
29 changes: 29 additions & 0 deletions e2e/cli/build_windows/e2e_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package test

import (
"os"
"os/exec"
"testing"

"github.com/stretchr/testify/require"
)

// This function tests `neva build` generates a Windows executable.
func TestBuildWindows(t *testing.T) {
defer func() {
require.NoError(t, os.RemoveAll("src"))
}()

cmd := exec.Command("neva", "new")
require.NoError(t, cmd.Run())

cmd = exec.Command("neva", "build", "--target-os=windows", "--target-arch=amd64", "src")
out, err := cmd.CombinedOutput()
require.NoError(t, err, string(out))
defer func() {
require.NoError(t, os.Remove("output.exe"))
}()

_, err = os.Stat("output.exe")
require.NoError(t, err)
}
1 change: 1 addition & 0 deletions e2e/cli/build_windows/neva.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
neva: 0.30.2
Loading
Loading