Skip to content

Commit

Permalink
Merge pull request #850 from nevalang/cli-minor-refactor
Browse files Browse the repository at this point in the history
Cli minor refactor
  • Loading branch information
emil14 authored Jan 25, 2025
2 parents bc412b9 + 9c3afa5 commit ec21aad
Show file tree
Hide file tree
Showing 111 changed files with 265 additions and 255 deletions.
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))
}
}
File renamed without changes.
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

0 comments on commit ec21aad

Please sign in to comment.