diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b40aa696..49a67fa4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -489,6 +489,20 @@ jobs: go install github.com/ashmrtn/allowtags@latest allowtags --allow-key json --allow-key uriparametername ./... + # I could not find a way to install tree-grepper without nix + # https://github.com/BrianHicks/tree-grepper/issues/293 + - uses: cachix/install-nix-action@v22 + - uses: cachix/cachix-action@v12 + with: + name: tree-grepper + - run: nix-env -if https://github.com/BrianHicks/tree-grepper/archive/refs/heads/main.tar.gz + - name: Run trailing comma lint rule + run: | + # Using `grep .` as the exit codes are always true for correct grammar + if tree-grepper -q go '(argument_list "," @no-trailing-comma .)' | grep .; then + echo "No trailing commas for function calls" + exit 1 + fi # ---------------------------------------------------------------------------------------------------- # --- GitHub Actions Linting ------------------------------------------------------------------------- diff --git a/src/cli/backup/groups_e2e_test.go b/src/cli/backup/groups_e2e_test.go index 3c5c946f2..8156fbf8d 100644 --- a/src/cli/backup/groups_e2e_test.go +++ b/src/cli/backup/groups_e2e_test.go @@ -46,8 +46,7 @@ type NoBackupGroupsE2ESuite struct { func TestNoBackupGroupsE2ESuite(t *testing.T) { suite.Run(t, &BackupGroupsE2ESuite{Suite: tester.NewE2ESuite( t, - [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}, - )}) + [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs})}) } func (suite *NoBackupGroupsE2ESuite) SetupSuite() { @@ -101,8 +100,7 @@ type BackupGroupsE2ESuite struct { func TestBackupGroupsE2ESuite(t *testing.T) { suite.Run(t, &BackupGroupsE2ESuite{Suite: tester.NewE2ESuite( t, - [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}, - )}) + [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs})}) } func (suite *BackupGroupsE2ESuite) SetupSuite() { @@ -259,8 +257,7 @@ func (suite *BackupGroupsE2ESuite) TestBackupCreateGroups_badAWSFlags() { "backup", "create", "groups", "--group", suite.its.group.ID, "--aws-access-key", "invalid-value", - "--aws-secret-access-key", "some-invalid-value", - ) + "--aws-secret-access-key", "some-invalid-value") cli.BuildCommandTree(cmd) cmd.SetOut(&suite.dpnd.recorder) @@ -517,8 +514,7 @@ func TestBackupDeleteGroupsE2ESuite(t *testing.T) { suite.Run(t, &BackupDeleteGroupsE2ESuite{ Suite: tester.NewE2ESuite( t, - [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}, - ), + [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}), }) } diff --git a/src/cli/backup/teams_e2e_test.go b/src/cli/backup/teams_e2e_test.go index 40374b928..13bcd82b8 100644 --- a/src/cli/backup/teams_e2e_test.go +++ b/src/cli/backup/teams_e2e_test.go @@ -41,8 +41,7 @@ type NoBackupTeamsE2ESuite struct { func TestNoBackupTeamsE2ESuite(t *testing.T) { suite.Run(t, &BackupTeamsE2ESuite{Suite: tester.NewE2ESuite( t, - [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}, - )}) + [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs})}) } func (suite *NoBackupTeamsE2ESuite) SetupSuite() { @@ -96,8 +95,7 @@ type BackupTeamsE2ESuite struct { func TestBackupTeamsE2ESuite(t *testing.T) { suite.Run(t, &BackupTeamsE2ESuite{Suite: tester.NewE2ESuite( t, - [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}, - )}) + [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs})}) } func (suite *BackupTeamsE2ESuite) SetupSuite() { @@ -254,8 +252,7 @@ func (suite *BackupTeamsE2ESuite) TestBackupCreateTeams_badAWSFlags() { "backup", "create", "teams", "--team", suite.its.team.ID, "--aws-access-key", "invalid-value", - "--aws-secret-access-key", "some-invalid-value", - ) + "--aws-secret-access-key", "some-invalid-value") cli.BuildCommandTree(cmd) cmd.SetOut(&suite.dpnd.recorder) @@ -512,8 +509,7 @@ func TestBackupDeleteTeamsE2ESuite(t *testing.T) { suite.Run(t, &BackupDeleteTeamsE2ESuite{ Suite: tester.NewE2ESuite( t, - [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}, - ), + [][]string{storeTD.AWSStorageCredEnvs, tconfig.M365AcctCredEnvs}), }) }