Skip to content
This repository has been archived by the owner on Aug 3, 2023. It is now read-only.

Allow worker with no routes to be published #2024

Merged
merged 8 commits into from
Aug 27, 2021
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
4 changes: 0 additions & 4 deletions src/deploy/zoned.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@ impl ZonedTarget {
}))
.collect();

if routes.is_empty() {
anyhow::bail!("No routes specified");
}

Ok(Self {
zone_id: zone_id.to_owned(),
routes,
Expand Down
10 changes: 8 additions & 2 deletions src/settings/toml/environment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,22 @@ impl Environment {
&self,
top_level_account_id: Option<String>,
top_level_zone_id: Option<String>,
top_level_workers_dev: Option<bool>,
) -> Option<RouteConfig> {
let account_id = self.account_id.clone().or(top_level_account_id).into();
let zone_id = self.zone_id.clone().or(top_level_zone_id);
let workers_dev = self.workers_dev.or(top_level_workers_dev);

if self.workers_dev.is_none() && self.route.is_none() && self.routes.is_none() {
if self.workers_dev.is_none()
&& self.zone_id.is_none()
&& self.route.is_none()
&& self.routes.is_none()
{
None
} else {
Some(RouteConfig {
account_id,
workers_dev: self.workers_dev,
workers_dev,
route: self.route.clone(),
routes: self.routes.clone(),
zone_id,
Expand Down
26 changes: 22 additions & 4 deletions src/settings/toml/manifest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,11 @@ impl Manifest {
let mut add_routed_deployments = |route_config: &RouteConfig| -> Result<()> {
if route_config.is_zoned() {
let zoned = deploy::ZonedTarget::build(&script, route_config)?;

if zoned.routes.is_empty() {
return Ok(());
}

// This checks all of the configured routes for the wildcard ending and warns
// the user that their site may not work as expected without it.
if self.site.is_some() {
Expand All @@ -240,13 +245,26 @@ impl Manifest {
deployments.push(DeployTarget::Zoneless(zoneless));
}

if !route_config.is_zoned()
&& !route_config.is_zoneless()
&& (route_config.route.is_some()
|| (route_config.routes.is_some()
&& !route_config.routes.as_ref().unwrap().is_empty()))
{
anyhow::bail!(
"Routes specified with no zone, specify `zone_id` in your wrangler.toml"
)
}

Ok(())
};

if let Some(env) = env {
if let Some(env_route_cfg) =
env.route_config(self.account_id.if_present().cloned(), self.zone_id.clone())
{
if let Some(env_route_cfg) = env.route_config(
self.account_id.if_present().cloned(),
self.zone_id.clone(),
self.workers_dev,
) {
add_routed_deployments(&env_route_cfg)
} else {
let config = self.route_config();
Expand Down Expand Up @@ -289,7 +307,7 @@ impl Manifest {
};

if durable_objects.is_none() && deployments.is_empty() {
anyhow::bail!("Please specify your deployment routes or `workers_dev = true` inside of your configuration file. For more information, see: https://developers.cloudflare.com/workers/cli-wrangler/configuration#keys")
StdOut::warn("No deployment routes specified, worker will not be triggered. Please specify your deployment routes or set `workers_dev = true` inside of your configuration file in order to trigger your worker. For more information, see: https://developers.cloudflare.com/workers/cli-wrangler/configuration#keys");
}

Ok(deployments)
Expand Down
108 changes: 68 additions & 40 deletions src/settings/toml/tests/deployments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ const ACCOUNT_ID: &str = "fakeaccountid";

// TOP LEVEL TESTS
#[test]
fn it_errors_on_empty_get_deployments() {
fn it_can_get_empty_deployments() {
let test_toml = WranglerToml::webpack("empty");
let toml_string = toml::to_string(&test_toml).unwrap();
let manifest = Manifest::from_str(&toml_string).unwrap();

let environment = None;

assert!(manifest.get_deployments(environment).is_err());
assert!(manifest.get_deployments(environment).is_ok());
}

#[test]
Expand Down Expand Up @@ -100,7 +100,7 @@ fn it_errors_on_get_deployments_missing_account_id() {
}

#[test]
fn it_errors_on_zoneless_get_deployments_workers_dev_false() {
fn it_can_zoneless_get_deployments_workers_dev_false() {
let script_name = "zoneless_false";
let workers_dev = false;
let test_toml = WranglerToml::zoneless(script_name, ACCOUNT_ID, workers_dev);
Expand All @@ -109,7 +109,7 @@ fn it_errors_on_zoneless_get_deployments_workers_dev_false() {

let environment = None;

assert!(manifest.get_deployments(environment).is_err());
assert!(manifest.get_deployments(environment).is_ok());
}

#[test]
Expand Down Expand Up @@ -285,7 +285,7 @@ fn it_errors_on_single_route_get_deployments_missing_zone_id() {
}

#[test]
fn it_errors_on_single_route_get_deployments_empty_route() {
fn it_can_single_route_get_deployments_empty_route() {
let script_name = "single_route_empty_route";
let pattern = "";

Expand All @@ -295,11 +295,11 @@ fn it_errors_on_single_route_get_deployments_empty_route() {

let environment = None;

assert!(manifest.get_deployments(environment).is_err());
assert!(manifest.get_deployments(environment).is_ok());
}

#[test]
fn it_errors_on_single_route_get_deployments_missing_route() {
fn it_can_single_route_get_deployments_missing_route() {
let script_name = "single_route_missing_route";

let mut test_toml = WranglerToml::zoned_single_route(script_name, ZONE_ID, "");
Expand All @@ -309,7 +309,7 @@ fn it_errors_on_single_route_get_deployments_missing_route() {

let environment = None;

assert!(manifest.get_deployments(environment).is_err());
assert!(manifest.get_deployments(environment).is_ok());
}

#[test]
Expand Down Expand Up @@ -438,7 +438,7 @@ fn it_errors_on_multi_route_get_deployments_missing_zone_id() {
}

#[test]
fn it_errors_on_multi_route_get_deployments_empty_routes_list() {
fn it_can_multi_route_get_deployments_empty_routes_list() {
let script_name = "multi_route_empty_routes_list";
let patterns = [];

Expand All @@ -448,11 +448,11 @@ fn it_errors_on_multi_route_get_deployments_empty_routes_list() {

let environment = None;

assert!(manifest.get_deployments(environment).is_err());
assert!(manifest.get_deployments(environment).is_ok());
}

#[test]
fn it_errors_on_multi_route_get_deployments_empty_route() {
fn it_can_multi_route_get_deployments_empty_route() {
let script_name = "multi_route_empty_route";
let patterns = [""];

Expand All @@ -462,7 +462,7 @@ fn it_errors_on_multi_route_get_deployments_empty_route() {

let environment = None;

assert!(manifest.get_deployments(environment).is_err());
assert!(manifest.get_deployments(environment).is_ok());
}

#[test]
Expand Down Expand Up @@ -536,7 +536,7 @@ fn when_top_level_empty_env_empty() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand All @@ -552,7 +552,7 @@ fn when_top_level_empty_env_has_zone_id() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand All @@ -569,7 +569,7 @@ fn when_top_level_empty_env_workers_dev_false() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -606,7 +606,7 @@ fn when_top_level_empty_zoned_single_route_env() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -636,7 +636,7 @@ fn when_top_level_empty_env_zoned_single_route_zone_id_only() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -678,7 +678,7 @@ fn when_top_level_empty_zoned_multi_route_env_routes_empty() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand All @@ -694,7 +694,7 @@ fn when_top_level_empty_zoned_multi_route_env_route_empty() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -779,7 +779,7 @@ fn when_top_level_zoneless_env_zoneless_workers_dev_false() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -840,9 +840,14 @@ fn when_top_level_zoneless_env_zoned_single_route_zone_id_missing() {
let toml_string = toml::to_string(&test_toml).unwrap();
let manifest = Manifest::from_str(&toml_string).unwrap();

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));
let environment = Some(TEST_ENV_NAME);
let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME)).unwrap();
let expected_deployments = vec![DeployTarget::Zoneless(ZonelessTarget {
account_id: ACCOUNT_ID.to_string(),
script_name: manifest.worker_name(environment),
})];

assert!(actual_deployments.is_err());
assert_eq!(actual_deployments, expected_deployments);
}

#[test]
Expand All @@ -861,15 +866,22 @@ fn when_top_level_zoneless_env_zoned_single_route() {

let expected_name = manifest.worker_name(Some(TEST_ENV_NAME));

let environment = Some(TEST_ENV_NAME);
let expected_routes = vec![Route {
script: Some(expected_name),
pattern: PATTERN.to_string(),
id: None,
}];
let expected_deployments = vec![DeployTarget::Zoned(ZonedTarget {
zone_id: ZONE_ID.to_string(),
routes: expected_routes,
})];
let expected_deployments = vec![
DeployTarget::Zoned(ZonedTarget {
zone_id: ZONE_ID.to_string(),
routes: expected_routes,
}),
DeployTarget::Zoneless(ZonelessTarget {
account_id: ACCOUNT_ID.to_string(),
script_name: manifest.worker_name(environment),
}),
];

assert_eq!(actual_deployments, expected_deployments);
}
Expand All @@ -889,7 +901,7 @@ fn when_top_level_zoneless_env_zoned_multi_route_routes_list_empty() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand All @@ -907,7 +919,7 @@ fn when_top_level_zoneless_env_zoned_multi_route_route_empty() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -935,10 +947,16 @@ fn when_top_level_zoneless_env_zoned_multi_route_route_key_present() {
})
.collect();

let expected_deployments = vec![DeployTarget::Zoned(ZonedTarget {
routes: expected_routes,
zone_id: ZONE_ID.to_owned(),
})];
let expected_deployments = vec![
DeployTarget::Zoned(ZonedTarget {
routes: expected_routes,
zone_id: ZONE_ID.to_owned(),
}),
DeployTarget::Zoneless(ZonelessTarget {
account_id: ACCOUNT_ID.to_string(),
script_name: expected_name,
}),
];

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME)).unwrap();

Expand All @@ -958,9 +976,13 @@ fn when_top_level_zoneless_env_zoned_multi_route_zone_id_missing() {
let toml_string = toml::to_string(&test_toml).unwrap();
let manifest = Manifest::from_str(&toml_string).unwrap();

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));
let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME)).unwrap();
let expected_deployments = vec![DeployTarget::Zoneless(ZonelessTarget {
account_id: ACCOUNT_ID.to_string(),
script_name: manifest.worker_name(Some(TEST_ENV_NAME)),
})];

assert!(actual_deployments.is_err());
assert_eq!(expected_deployments, actual_deployments);
}

#[test]
Expand Down Expand Up @@ -989,10 +1011,16 @@ fn when_top_level_zoneless_env_zoned_multi_route() {
})
.collect();

let expected_deployments = vec![DeployTarget::Zoned(ZonedTarget {
zone_id: ZONE_ID.to_string(),
routes: expected_routes,
})];
let expected_deployments = vec![
DeployTarget::Zoned(ZonedTarget {
zone_id: ZONE_ID.to_string(),
routes: expected_routes,
}),
DeployTarget::Zoneless(ZonelessTarget {
account_id: ACCOUNT_ID.to_string(),
script_name: expected_name,
}),
];

assert_eq!(actual_deployments, expected_deployments);
}
Expand Down Expand Up @@ -1026,7 +1054,7 @@ fn when_top_level_zoned_env_zoneless_workers_dev_false() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down Expand Up @@ -1065,7 +1093,7 @@ fn when_top_level_zoned_env_zoned_single_route_route_empty() {

let actual_deployments = manifest.get_deployments(Some(TEST_ENV_NAME));

assert!(actual_deployments.is_err());
assert!(actual_deployments.is_ok());
}

#[test]
Expand Down
Loading