wing icon indicating copy to clipboard operation
wing copied to clipboard

Cloud test fails if root directory contains spaces

Open polamoros opened this issue 9 months ago • 4 comments

I tried this:

create an empty directory with a wing test

// main.test.w

bring cloud;

let bucket = new cloud.Bucket();

test "Bucket is empty" {
  assert(bucket.list().length == 0);
}

and run wing test -t tf-aws main.test.w

This happened:

✔ Compiling main.test.w to tf-aws...

✔ terraform init

✖ terraform apply

Command failed: terraform apply -auto-approve
╷
│ Error: opening S3 object source (assets/Test78LWzuS1GQ_env0_testBucketisempty_Handler_Asset_9A744A14/966A2F55D4BD8FD662E1A92D8BB84CD9/archive.zip): open assets/Test78LWzuS1GQ_env0_testBucketisempty_Handler_Asset_9A744A14/966A2F55D4BD8FD662E1A92D8BB84CD9/archive.zip: no such file or directory
│
│   with aws_s3_object.Test78LWzuS1GQ_env0_testBucketisempty_Handler_S3Object_9FB2AC36,
│   on main.tf.json line 145, in resource.aws_s3_object.Test78LWzuS1GQ_env0_testBucketisempty_Handler_S3Object_9FB2AC36:
│  145:       }
│
╵

✔ terraform destroy


Tests 1 failed (1)
Snapshots 1 skipped
Test Files 1 failed (1)
Duration 0m23.74s

I expected this:

The test to pass.

Is there a workaround?

no

Anything else?

The test passes on the simulator

>_ wing test main.test.w

pass ─ main.test.wsim » root/env0/test:Bucket is empty

Tests 1 passed (1)
Snapshots 1 skipped
Test Files 1 passed (1)
Duration 0m0.30s

Wing Version

0.73.41

Node.js Version

v20.11.1

Platform(s)

MacOS

Community Notes

  • Please vote by adding a 👍 reaction to the issue to help us prioritize.
  • If you are interested to work on this issue, please leave a comment.

polamoros avatar May 13 '24 08:05 polamoros

It worked to me, same version (0.73.41):

wing test -t tf-aws main.test.w


✔ Compiling main.test.w to tf-aws...

✔ terraform init

✔ terraform apply

✔ Setting up test runner...

✔ Running tests...

pass ─ main.test.tfaws.454176 » root/Test.OoU3q9EuIO/env0/test:Bucket is empty
✔ terraform destroy

✔ Snapshot main.test.w.tf-aws.snap.md...


Tests 1 passed (1)
Snapshots 1 new
Test Files 1 passed (1)
Duration 0m51.02s

skyrpex avatar May 13 '24 08:05 skyrpex

it looks like it's happening if the root directory contains a space

polamoros avatar May 13 '24 08:05 polamoros

Maybe we should file an issue anyway?

skyrpex avatar May 13 '24 08:05 skyrpex

I'm able to repro this. Running wing test "dir with spaces/main.w" is fine but wing test -t tf-aws "dir with spaces/main.w" fails with the aforementioned error.

Chriscbr avatar May 13 '24 18:05 Chriscbr

@srinumadhavv it is all yours :)

revitalbarletz avatar May 26 '24 12:05 revitalbarletz

wing compile fails for @thoroc, too, if there's spaces in the cwd.

skyrpex avatar May 27 '24 16:05 skyrpex

Yes unfortunately MacOS has those spaces in certain situations where node tries to use a path on /Users/<USER>/Library/Application Support/ during compile time. In my case, this is due to be using github.com/Schniz/fnm. I have tried to have a peruse at the code for the compile subcommand, but I think it is calling code outside this part of the source code.

Of course the path could be put between quotes or the space escaped to solve this issue, from what I understand.

thoroc avatar May 27 '24 20:05 thoroc

Another user ran into this while compiling on Windows (the parent directory of their project had spaces, causing either compilation to fail or deployment to AWS to fail). Link to the discussion on discord: https://discord.com/channels/1096077994994442281/1258078911749820436

Chriscbr avatar Jul 03 '24 18:07 Chriscbr