Well, I think I found the cause of the fuel smell and fixed it.
I first used a vacuum gun connected to the tubing; there was a slow vacuum leak.
I removed and tested just the tubing, and it didn't leak.
I removed and tested just the solenoid, and it didn't leak. The solenoid is closed when not energized. The coil measured 27 Ohms, but I didn't bother energizing it because a stuck solenoid wouldn't have caused a fuel smell.
I removed the solenoid and saw dirt around the o-ring but the o-ring was in good condition, so I cleaned the orifice and the o-ring and reattached the solenoid to the canister and then reattached the tubing to the solenoid, and there was no longer a leak, but the real problem could simply have been that the solenoid wasn't pushed all the way into the canister in the first place. Drove it on a couple of errands and no longer smelled fuel. Hopefully, there aren't any other problems. By the way, I was surprised to see that there wasn't an external filter on the bottom of the canister, as I've seen on other older GM cars.
'99 Bonneville SLE, white, 112,000 miles
'02 Park Avenue Ultra, white diamond pearl, 88,000 miles